最近邻插值
如上图所示,假设原图大小为H * W,缩放后的图像大小为H' * W',则缩放后的图像中(x', y')位置处的像素值为原图中(x, y) = (x' / W' * W, y' / H' * H)位置处的像素值(如果x' / W' * W或y' / H' * H为浮点数,则四舍五入取整)
双线性插值
还是如上图所示,如果x' / W' * W或y' / H' * H为浮点数,形如(x + u, y + v)(x, y为整数,u,v为[0,1]之间的浮点数),则缩放后的图像中(x', y')位置处的像素值f(x+u, y+v) = (1-u)*(1-v)*f(x, y) + (1-u)*v*f(x, y+1) + u*(1-v)*f(x+1, y) + u*v*f(x+1, y+1) ,如下图所示
实际上在实现时,原图和缩放后的图像在坐标系中并不是左上角对齐,而是几何中心对齐(详见参考),因此缩放后的图像中(x', y')位置对应于原图像中的( (x'+0.5) / W' * W - 0.5, (y'+0.5) / H' * H - 0.5)位置 而不是(x' / W' * W, y' / H' * H)
参考:
OpenCV ——双线性插值(Bilinear interpolation) - Mr.Easy - 博客园



