图像处理的仿射变换和透视变换

转自:http://blog.csdn.net/u012590570/article/details/51355600



图像处理的仿射变换和透视变换

其实一直也没理解“仿射”俩字是啥意思,但是大家都这么叫,其实仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。如果这么命名的话,其实很显然,这俩是一回事,只不过一个是二维坐标(x,y),一个是三维坐标(x,y,z)。也就是:

仿射变换: 
这里写图片描述

透视变换: 
这里写图片描述

从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。透视变换的方程组有8个未知数,所以要求解就需要找到4组映射点,四个点就刚好确定了一个三维空间。

写个程序求解线性方程组相信不是什么难事。

解出方程组之后,就可以按照上面的方程,找到与结果图像上对应的源像素点。然后做插值。

看一下效果啊:

原图: 
这里写图片描述

仿射变换之后: 
这里写图片描述

透视变换之后: 
这里写图片描述

从上图也能看出来区别,仿射变换之后还是平行四边形,透视变换之后就只剩下四边形了。图像的旋转缩放理论上都能用仿射变换来实现(90度、180度、270度的旋转用仿射变换实现不划算)。透视变换的用途可能更多一些,比如: 
你扫到的二维码是这样的: 
这里写图片描述 
这样你直接读二维码信息肯定不行,所以需要透视变换一下,成这样: 
这里写图片描述 
就可以读出信息了。

刚才讲,求解仿射变换需要3组对应的点,求解透视变换需要4组对应的点,如果找到的映射点的数量少于3组或4组就肯定解不出来,但是如果多于3组或4组怎么办?那就要最小二乘法做拟合,找到一个最佳变换方程。这个不细说了。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值