为什么 skimage rotate 函数接收插值方法作为参数?

Why skimage rotate function receives interpolation method as an argument?

使用 skimage rotate 函数我注意到它有一个可选的插值(顺序)参数但我不明白为什么。
文档没有说明它是如何使用的,我认为旋转图像以简单的索引移位结束。
这是一张图片,旋转了 30 度,同时使用双线性插值和 NN 插值, 我当然不能说出区别。

您正在做的是扭曲图像。

例如,想象一下如果你想旋转上面的图片,但要确保旋转图片的 none 超出范围。你会想要旋转,但也扭曲轴,以便你可以看到整个图像。

有关详细信息和其他用例,请参阅 http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.warp

要以角度 theta 旋转图像,需要将每个像素 P = (x, y) 映射到新点 P' = (x', y')。 P 如何映射到 P' 取决于旋转轴以及 theta 是度数还是弧度,但它会是这样的:

  • x' = x * cos(theta) - y * sin(theta)
  • y'= x * sin(theta) + y * cos(theta)

问题是这会导致非整数值,这就是插值的用武之地。 要填充旋转图像中的像素(x,y),需要使用原始图像的非整数坐标的像素,插值使用附近的点来近似这个非整数点。