如何在使用双线性插值对图像进行调整时将原始图像放大到n倍,其中n不是整数
问题描述:
我最近了解到双线性插值,根据Wiki中的描述,我觉得双线性插值只能用于整数 - 比例放大,例如,给定4x4分辨率图像,通过双线性插值,它只能放大到8x8,12x12,16x16 ...等等,但它不能放大到9x9,13x13 ...只是因为数字像9或13不能被4除,是吗?如果不是正确的话,怎样通过双线性插值将其放大n倍,其中n不是整数?如何在使用双线性插值对图像进行调整时将原始图像放大到n倍,其中n不是整数
答
不,那是不对的。 您可以从任何正分辨率调整为任何其他分辨率。因此,假设源图像是xs0,ys0
,目标是xs1,ys1
分辨率。
-
处理对象图像的所有像素
所以2嵌套for循环通过
x1,y1
覆盖xs1,ys1
-
针对每个像素计算浮在源图像位置
x0 = x1*(xs0-1)/(xs1-1) y0 = y1*(ys0-1)/(ys1-1)
-
从4个相邻的双线性插入的
x0,y0
点的整数部分,起点和小数部分是你的插补参数
tx,ty
...所以插值源(x0,y0),(x0+1,y0),(x0,y0+1),(x0+1,y0+1)
之间的像素和位于(x1,y1)
在目标图像存储结果。以不同方式处理边缘像素(x0==xs0-1 , y0==ys0-1
)以避免访问冲突。