透视变换之变换为鸟瞰图

仿射变换:能够将平行四边形变换为另一个平行四边形
透视变换:能够将平行四边形变换为梯形。
仿射变换是透视变换的子集。

先说仿射变换:
仿射变换的数学表达式为



要求出该变换矩阵,需要六个独立的方程,即需要3组不共线的点才能求解。

——————————————————————
再说透视变换:
透视变换(Perspective Transformation)是将成像投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。

透视变换的通用公式为:



其中的变换矩阵各部分负责:


透视变换的数学表达式为:

所以,给定透视变换对应的四对像素点坐标,即原图的坐标和变换后的坐标,联立公式可求得透视变换矩阵;
反之,给定透视变换矩阵,即可对图像或像素点坐标完成透视变换。

图像进行透视变换的2个重要函数:

Mat getPerspectiveTransform(const Point2f src[], const Point2f dst[])

src[]为原图的四个坐标点,dst[]为变换后图像上对应的四个坐标点
函数返回值即为透视变换的矩阵
void perspectiveTransform(InputArray src, OutputArray dst, InputArray m)
src为输入的图片, dst为透视变换后的图片, 
m为变换矩阵,就是用上面的getPerspectiveTransform计算出来的

这是我做的鸟瞰图变换:


原图

透视变换后

可以看到,效果还是不错的。只是远的地方就有些变形了

把近处图像的放大了看,鸟瞰图变换的效果是可以的

图片.png

锥桶太碍事了,拿一个没有锥桶的图变换看看:
(我在图上人为画了些直线,以获得更好的观测效果)


原图
透视变换后

把近处图像放大,鸟瞰图变换还是不错的

放大近处的图像
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容