2017-02-24 22 views
0

我最近了解到双线性插值,根据Wiki中的描述,我觉得双线性插值只能用于整数 - 比例放大,例如,给定4x4分辨率图像,通过双线性插值,它只能放大到8x8,12x12,16x16 ...等等,但它不能放大到9x9,13x13 ...只是因为数字像9或13不能被4除,是吗?如果不是正确的话,怎样通过双线性插值将其放大n倍,其中n不是整数?如何在使用双线性插值对图像进行调整时将原始图像放大到n倍,其中n不是整数

回答

0

不,那是不对的。 您可以从任何正分辨率调整为任何其他分辨率。因此,假设源图像是xs0,ys0,目标是xs1,ys1分辨率。

  1. 处理对象图像的所有像素

    所以2嵌套for循环通过x1,y1覆盖xs1,ys1

  2. 针对每个像素计算浮在源图像位置

    x0 = x1*(xs0-1)/(xs1-1) 
    y0 = y1*(ys0-1)/(ys1-1) 
    
  3. 从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)以避免访问冲突。

相关问题