单应性矩阵计算(相机标定)时点的提取

本文介绍了在相机标定过程中如何选取参考点,特别是通过`findChessboardCorners()`函数自动检测棋盘格角点。接着讨论了如何根据两幅图像找到对应点,并详细阐述了使用`findHomography()`计算单应性矩阵的过程。同时,文章提到了尝试使用`cvSolve()`和SVD解决非方程组的问题,但发现并不适用,最终使用SVD::solveZ()来解决。
摘要由CSDN通过智能技术生成

前言:

本文解决问题:

1、在相机标定,也就是图像矫正过程中,参考点的选取;

2、根据选择出的点,如何计算变换矩阵,两种,调用库函数和解方程的方法

 

一、角点检测

cv::goodFeaturesToTrack()   检测整个图像内的角点  本例子里面无法使用。

参考:https://blog.csdn.net/guduruyu/article/details/69537083

运行后的结果如图所示:

         

使用findChessboardCorners()   自动寻找板内的角点

//! finds checkerboard pattern of the specified size in the image

CV_EXPORTS_W bool findChessboardCorners( 
                                    InputArray image, Size patternSize,
                                    OutputArray corners,
                      int flags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE );

 第一个参数Image,传入拍摄的棋盘图Mat图像,必须是8位的灰度或者彩色图像;

第二个参数patternSize,每个棋盘图上内角点的行列数,一般情况下,行列数不要相同,便于后续标定程序识别标定板的方向;

第三个参数corners,用于存储检测到的内角点图像坐标位置,一般用元素是Point2f的向量来表示:vector<Point2f> image_points_buf;

第四个参数flage:用于定义棋盘图上内角点查找的不同处理方式,有默认值。

用这个函数检测,运行后结果如图:

 

二、根据两幅图像找到对应点

做法同上一步,对两幅图像进行同样的操作,之后可以得到两幅图中一一对应的点,这样坐标就找到了,然后就可以进行H阵的计算。只需要在corners中取相应位置的点即可。如图,取绿色的四个点,然后依据这四个点进行计算。

对两幅图处理,结果如图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值