Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在不使用任何OpenCv库的情况下使用最近邻和双线性插值旋转图像?_Python 3.x_Image Processing - Fatal编程技术网

Python 3.x 如何在不使用任何OpenCv库的情况下使用最近邻和双线性插值旋转图像?

Python 3.x 如何在不使用任何OpenCv库的情况下使用最近邻和双线性插值旋转图像?,python-3.x,image-processing,Python 3.x,Image Processing,我想知道任何基于数学的算法,在不使用OpenCV库和imrotate的情况下,使用最近邻和双线性插值旋转图像 旋转后,图像不会被裁剪,必须显示完整图像。旋转对应于坐标的仿射变换,并且很容易使用矩阵/向量进行描述。在网上找到公式没什么大不了的 现在需要知道的重要一点是,与其将原始图像的像素映射到变换后的图像,不如反向工作 扫描变换图像的每个像素,通过应用逆变换,在原始图像中找到相应的坐标。你需要用真实坐标来做这件事 然后 对于最近邻法,将坐标四舍五入,只需将源像素值复制到目标 对于双线性方法,考

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


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

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

现在需要知道的重要一点是,与其将原始图像的像素映射到变换后的图像,不如反向工作

扫描变换图像的每个像素,通过应用逆变换,在原始图像中找到相应的坐标。你需要用真实坐标来做这件事

然后

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

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


查看此处的图:

Python中有大量可用的实现,但此处列出的实现超出了堆栈溢出的范围,请参阅。如果你想有自己的实现,开始阅读插值和旋转,进行诚实的尝试,然后在这里问一个具体的问题,如果你卡住了。正如Yves所说,你必须反向工作的原因是你会得到“洞”如果从没有输入像素映射到输出像素的现有图像向前工作,则在结果图像中。我们这些编程的人只是太痛苦地意识到@MarkSetchell:“太痛苦地意识到”:已确认:)