尝试用Mathematica进行图像的Image rectification几何变换处理

上传一些证件类图片的时候,发现有同学发给我的图片是倾斜视角拍摄的。比如下面这种:
尝试用Mathematica进行图像的Image rectification几何变换处理_第1张图片

如何把它调整正常、又不太浪费时间呢?虽然我知道这是image rectification,就是像素点之间一个线性的几何变换,但是如何找到几何变换(变换矩阵)、如何快速简便实现几何变换得到修正之后的正面的视图呢? 我想到了Mathematica这个老朋友。

当然,要先获取四个交点的像素坐标,我是在XnView中打开上面的图片,鼠标尖端放在相应的像素点处,状态栏自动给出该像素的X,Y坐标值。找到四个这样的点,给出目标图像像素在理想状态下对应的变换之后的坐标值,就能求出3x3的线性变换(二维的射影变换)。下面指示的就是鼠标所停位置的像素坐标,可以选来用。

尝试用Mathematica进行图像的Image rectification几何变换处理_第2张图片下面蓝色四边形的四个顶点,是初始的四个像素点;紫色的矩形四个顶点,对应于希望变换得到的四个像素点。这样四对对应点就选好了,只需要把它们通过鼠标在XnView中悬停、状态栏读取的X,Y像素坐标直接拿来用就行。如下图所示。
尝试用Mathematica进行图像的Image rectification几何变换处理_第3张图片

我选好了四对对应点,然后就可以直接从FindGeometricTransform得到几何变换。再直接用ImagePerspectiveTransformation就可以完成任务了。

代码类似:

{e, t} = FindGeometricTransform[{{0, 2779}, {3186, 2736}, {622,  76}, {2520, 81}}, {{0, 2779}, {3186, 2736}, {0, 40}, {3186, 0}}]

img1 = Import["F:\\Image.jpg"]

ImagePerspectiveTransformation[img1, t, DataRange -> Full]

结果如下:

尝试用Mathematica进行图像的Image rectification几何变换处理_第4张图片看上去效果还是不错的。也就几行代码,工作量很小。 不知道有没有什么其它工具可以使这个过程进一步简化。

你可能感兴趣的:(学习学习)