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

上传一些证件类图片的时候,发现有同学发给我的图片是倾斜视角拍摄的。比如下面这种:
在这里插入图片描述

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

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

在这里插入图片描述下面蓝色四边形的四个顶点,是初始的四个像素点;紫色的矩形四个顶点,对应于希望变换得到的四个像素点。这样四对对应点就选好了,只需要把它们通过鼠标在XnView中悬停、状态栏读取的X,Y像素坐标直接拿来用就行。如下图所示。
在这里插入图片描述

我选好了四对对应点,然后就可以直接从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]

结果如下:

在这里插入图片描述看上去效果还是不错的。也就几行代码,工作量很小。 不知道有没有什么其它工具可以使这个过程进一步简化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值