【问题标题】:How to rotate an Image with nearest neighbor and bilinear interpolations without using any OpenCv library?如何在不使用任何 OpenCv 库的情况下旋转具有最近邻和双线性插值的图像?
【发布时间】:2019-09-22 16:14:14
【问题描述】:

我想知道任何基于数学的基本算法,在不使用 OpenCV 库和 imrotate 的情况下使用最近邻和双线性插值来旋转图像。

旋转后图像不会被裁剪,必须显示完整的图像。

【问题讨论】:

  • Python 中有很多可用的实现,但在此处列出这些超出了 Stack Overflow 的范围,请参阅 help center。如果您想拥有自己的实现,请开始阅读有关插值和旋转的内容,诚实地尝试一下,如果遇到困难,请在此处提出具体问题。

标签: python-3.x image-processing


【解决方案1】:

旋转对应于坐标的仿射变换,并且可以使用矩阵/向量轻松描述。在网上找到公式没什么大不了的。

现在要知道的重要一点是,您必须向后工作,而不是将原始图像的像素映射到转换后的图像。

扫描变换图像的每个像素,并通过应用逆变换,在原始图像中找到相应的坐标。您需要使用真实坐标来执行此操作。

然后

  • 对于最近邻法,将坐标四舍五入,将源像素值复制到目的地;

  • 对于双线性方法,考虑获得的坐标周围的四个像素(您将执行截断为整数)。最后,将目标像素计算为四个源像素的双线性组合,使用坐标的小数部分作为权重来执行插值。

在此处查看数据:http://wtlab.iis.u-tokyo.ac.jp/wataru/lecture/rsgis/rsnote/cp9/cp9-7.htm

【讨论】:

  • 正如 Yves 所说,您必须向后工作的原因是,如果您从没有输入像素的现有图像向前工作,您将在结果图像中得到 "holes"映射到输出像素。我们这些编程过的人都太痛苦了?
  • @MarkSetchell:“太痛苦了”:确认:)
猜你喜欢
  • 2016-06-01
  • 2016-06-06
  • 2020-05-20
  • 2010-12-21
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多