findChessboardCorners()角点检测详解

转载请注明出处。
文章地址:https://blog.csdn.net/duiwangxiaomi/article/details/115333784?spm=1001.2014.3001.5501

函数简介

    在相机标定过程中,如采用棋盘格标定板进行标定,则需找到棋盘格内角点,根据棋盘格内角点在像面中的像素坐标和各点对应的棋盘世界坐标,拍摄多个位置下的棋盘格,多点求解相机内外参。OpenCV中的findChessboardCorners()函数即用于棋盘格角点检测。

参数说明

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

功能
    找到标定板内角点位置(标定板是专用器具,需要有严格的规格控制,标定板的制作精度直接影响标定精度;角点是指黑白色相接的方块定点部分;内角点是不与标定板边缘接触的内部角点)
参数

  1. 输入的图像矩阵,必须是8-bit灰度图或者彩色图像,在图像传入函数之前,一般经过灰度处理,还有滤波操作。
  2. 内角点的size,表示方式是定义Size PatSize(m,n),将PatSize作为参数传入。这里是内角点的行列数,不包括边缘角点行列数;行数和列数不要相同,这样的话函数会辨别出标定板的方向,如果行列数相同,那么函数每次画出来的角点起始位置会变化,不利于标定。
  3. 存储角点的数组,一般用 vector<vector<point2f>>
  4. 标志位,有默认值。
        CV_CALIB_CB_ADAPTIVE_THRESH:函数默认方式,根据图像的平均亮度值进行图像 二值化,设立此标志位的含义是采用变化的阈值进行自适应二值化;
        CV_CALIB_CB_NORMALIZE_IMAGE:在二值化之前,调用EqualizeHist()函数进行图像归一化处理;
        CV_CALIB_CB_FILTER_QUADS:二值化完成后,函数开始定位图像中的四边形(这里不应该称之为正方形,因为存在畸变),这个标志设立后,函数开始使用面积、周长等参数来筛选方块,从而使得角点检测更准确更严格。
        CALIB_CB_FAST_CHECK:快速检测选项,对于检测角点极可能不成功检测的情况,这个标志位可以使函数效率提升。
        注意:标志位可组合使用。CALIB_CB_FAST_CHECK一般用于快速检测,很有可能检测不成功,特别是棋盘光线不均匀时。总体来说,CV_CALIB_CB_ADAPTIVE_THRESH是最可能检测到棋盘格的方式(个人亲测,如有问题,可在评论区讨论),组合使用推荐CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_NORMALIZE_IMAGE,如果默认方式或这个组合方式检测不到角点,基本就需要重新采图了。

总结
    该函数的功能就是判断图像内是否包含完整的棋盘图,如果能够检测完全,就把他们的角点坐标按 顺序(逐行,从左到右)记录下来,并返回非0数,否则返回0。 这里对size参数要求非常严格,函数必须检测到相同的size才会返回非0,否则返回0,这里一定要注意。
  该函数检测的角点的坐标是不精确的,获得角点精确坐标,可使用 cornerSubPix()函数,进行角点亚像素提取,使用方法可见我的另一篇博客角点检测及优化函数使用
  参考链接
  感谢各位朋友的:点赞、收藏和评论~

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
问题: HARRIS角点检测算法用于什么应用领域? 回答: HARRIS角点检测算法主要用于目标匹配、目标跟踪和三维重建等应用领域。角点是常见的点特征,具有旋转不变性、光照不变性和视角不变性等特点,适用于在这些应用中使用。常见的点特征提取算法包括Harris角点检测算法、FAST特征检测算法、SIFT特征检测算法和SURF特征检测算法等,其中Harris算法是其中一种常用的角点检测算法。 HARRIS角点检测算法对亮度和对比度的变化不敏感,并具有旋转不变性,但不具有尺度不变性。它使用角点附近的区域灰度二阶矩矩阵进行计算,可以通过特征椭圆的变化来判断角点响应值的变化,从而实现角点的检测。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【CV】Harris角点检测算法-点特征提取](https://blog.csdn.net/bhdnjngjmfgjm/article/details/106918418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Harris角点检测算法详解](https://blog.csdn.net/woxincd/article/details/60754658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值