我是靠谱客的博主 瘦瘦早晨,最近开发中收集的这篇文章主要介绍单应矩阵与透视变换矩阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

透视变换矩阵与单应矩阵

1. 单应矩阵

单应矩阵Wikipedia定义为:

In the field of computer vision, any two images of the same planar surface in space are related by a homography (assuming a pinhole camera model).

在计算机视觉领域,空间同一平面的任意两幅图像被单应矩阵联系着(假设在针孔相机模型中),即一个相机拍摄空间同一平面的两张图像,这两张图像之间的映射关系可以用单应矩阵表示。
在两视几何中,也可以这样理解,两架相机拍同一空间上得到两幅图像A、B,其中图像A到图像B存在一种变换,而且这种变换是一一对应的关系,这个变换矩阵用单应矩阵表示1.
OpenCV中可以用函数findHomography计算得到单应矩阵H。

2. 透视变换矩阵

透视变换矩阵(Perspective Transformation Mat),也称为投影映射矩阵(Porjective Mapping Mat),透视变换保持直线性,仿射变换是透视变换的一种特殊情况(仿射变换保持平行性).
OpenCV中可以用函数getPerspectiveTransform计算得到投影矩阵P

3. OpenCV中相关变换矩阵:

转载自原文
1. estimateRigidTransform():计算多个二维点对或者图像之间的最优仿射变换矩阵 (2行x3列),H可以是部分自由度,比如各向一致的切变。
2. getAffineTransform():计算3个二维点对之间的仿射变换矩阵H(2行x3列),自由度为6.
3. warpAffine():对输入图像进行仿射变换
4. findHomography: 计算多个二维点对之间的最优单映射变换矩阵 H(3行x3列) ,使用最小均方误差或者RANSAC方法 。
5. getPerspectiveTransform():计算4个二维点对之间的透射变换矩阵 H(3行x3列)
6. warpPerspective(): 对输入图像进行透射变换
7. perspectiveTransform():对二维或者三维矢量进行透射变换,也就是对输入二维坐标点或者三维坐标点进行投射变换。
8. estimateAffine3D:计算多个三维点对之间的最优三维仿射变换矩阵H (3行x4列)
9. transform():对输入的N维矢量进行变换,可用于进行仿射变换、图像色彩变换.
10. findFundamentalMat:计算多个点对之间的基矩阵H。

快速解决:

  • 问题1:如何计算3个二维点对之间的仿射变换矩阵?
    答:使用getAffineTransform()。

  • 问题2:如何计算多个二维点对之间的仿射变换矩阵(使用误差最小准则 )?
    答:使用estimateRigidTransform()或者findHomography。

  • 问题3:如何计算4个二维点对之间的透射变换?
    答:使用getPerspectiveTransform()。

  • 问题4:如何计算多个三维点对之间的仿射变换?
    答:使用estimateAffine3D。

  • 问题5:如何对输入图像进行仿射变换?
    答:使用warpAffine()。

  • 问题6:如何对输入图像进行透射变换?
    答:使用perspectiveTransform()。

  • 问题7:如何对输入的二维点对进行仿射变换?
    答:使用transform()。

  • 问题8:如何对输入的三维点对进行投射变换?
    答:使用perspectiveTransform()。


  1. http://blog.csdn.net/LIYUAN123ZHOUHUI/article/details/52024266 ↩

最后

以上就是瘦瘦早晨为你收集整理的单应矩阵与透视变换矩阵的全部内容,希望文章能够帮你解决单应矩阵与透视变换矩阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部