最近学习了双线性插值,根据Wiki中的描述,感觉双线性插值只能用于整数倍放大,例如给定4x4分辨率的图像,通过双线性插值只能放大到8x8、12x12、16x16 ……等等,但是不能放大到9x9、13x13……就因为9、13这样的数字不能被4整除,对吗?如果不对,如何通过双线性插值将其放大到 n 倍,其中 n 不是整数?
问问题
1369 次
1 回答
2
不,这是不对的。您可以从任何正分辨率调整到任何其他分辨率。因此,假设源图像是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
) 以避免访问冲突。
于 2017-02-24T08:47:08.570 回答