单应性矩阵的理解

单应性矩阵就是一个平面到另一个平面的投影矩阵,这里可以简单理解为用来描述物体在世界坐标系像素坐标系之间的位置映射关系 ,即它同时包含了相机的内参和外参,假设标定平面放置在Z=0的位置,可以得到:

其中即为单应性矩阵。

单应性矩阵主要用于图像校正、图像拼接、相机位姿估计、视觉SLAM等领域。

1. 图像校正

下图中的校正至少需要4对对应点对

2. 视角变换

单应性矩阵可以转换图像视角,左图的平视图可以转换为右图的俯视图

3. 图像拼接

可以将两幅不同角度下拍摄的图像转换到同一视角下,实现图像的拼接。

计算单应性矩阵

单应性矩阵主要是根据两幅图像中的对应点的关系建立得到的。假设,两张图像中的对应点对齐次坐标为(x',y',1)和(x,y,1);其对应的单应性矩阵H为:

那么可以得到对应点的转换关系为:

列为多项式方程可以得到

其为自由度=8的矩阵,(此处可以上下同除h33,将h33化简并不影响等式结果)。

将等式展开可以得到:

进一步移项化简:

这时候,将所采集到的特征点坐标代入,列为矩阵形式可以得到:

这里至少需要4组对应点,这样可以得到8组等式方程用于求解8个自由度。尽可能多的对应点对则可以获得相对鲁棒的结果。

OpenCV+C++中对应的函数为

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )

srcPoints源平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector<Point2f>类型
dstPoints目标平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector<Point2f>类型
method计算单应矩阵所使用的方法。不同的方法对应不同的参数,具体如下:
  • 0 - 利用所有点的常规方法
  • RANSAC - RANSAC-基于RANSAC的鲁棒算法
  • LMEDS - 最小中值鲁棒算法
  • RHO - PROSAC-基于PROSAC的鲁棒算法
ransacReprojThreshold

将点对视为内点的最大允许重投影错误阈值(仅用于RANSAC和RHO方法)。如果

则点被认为是个外点(即错误匹配点对)。若srcPoints和dstPoints是以像素为单位的,则该参数通常设置在1到10的范围内。

mask

可选输出掩码矩阵,通常由鲁棒算法(RANSAC或LMEDS)设置。 请注意,输入掩码矩阵是不需要设置的。

maxItersRANSAC算法的最大迭代次数,默认值为2000。
confidence可信度值,取值范围为0到1.

https://blog.csdn.net/lyhbkz/article/details/82254893

 

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值