基于3点的图像转换

时间:2019-11-11 09:45:40

标签: python-3.x matplotlib image-processing

我想基于两个重叠图像上标识的3个点来变换(平移,旋转和缩放)图像。基于3个点的像素坐标,我想创建一个大的tiff,将两者合并。对于下一个重叠,我想做同样的操作,直到获得合并所有图片的大tiff。有点像地理配准,但是没有使用坐标。问题是我没有matplotlib的经验。 到目前为止,我已经创建了一个脚本,该脚本可以并排显示每对重叠的图像,当我关闭窗口时,接下来的一对会打开等。我还设法从这些图像上的单击点获取像素坐标。但是现在我必须基于3点开始转换,而我只是不知道从哪里开始。对可用功能等有帮助吗?

编辑:这些图像是低分辨率的热图像,所以我认为自动转换不会起作用

1 个答案:

答案 0 :(得分:1)

您可以使用wand,它是 ImageMagick 的Python绑定。因此,从这张图片开始:

enter image description here

我们可以像这样将红色顶点(138,80)扭曲到左上角,绿色(43,22)扭曲到左下角,将蓝色(49,125)扭曲到右下角(图像为152x152) ):

#!/usr/bin/env python3

from wand.image import Image

# Open image and distort, giving start x,y and end x,y for 3 points
with Image(filename='start.png') as img:
    points = (138, 80, 0, 0,        # Red vertex
               43, 22, 0,152,       # Green vertex
               49,125, 152,152)     # Blue vertex
    img.distort('affine',points)

    # Save result
    img.save(filename='result.png')

enter image description here


您也可以从命令行在Terminal中执行相同的操作:

magick start.png -distort affine "138,80 0,0 43,22 0,152 49,125 152,152" result.png

关键字:图像处理,Python,扭曲,失真,仿射变换,变换,缩放,旋转,ImageMagick。