c++ 多边形平面弧形如何逆时针排序_机器视觉学习笔记:如何检测圆点标定板...

机器视觉学习笔记(2)--如何检测圆点标定板

摄像机标定常用的标定板除了棋盘格,还有圆点标定板,圆点标定板如图1所示。

ca5b90cf53144546e76274637e2bee92.png

图1:圆点标定板

众所周知的是,OpenCV和Matlab没有现成的圆点标定板的检测算法,只有Halcon有该检测算子,遗憾的是,Halcon是商业软件,而且不开源。

为此,小编自己实现了一个稳定性高,可靠性好的算法,分享给各位爱好机器视觉的朋友,圆点检测算法包含以下几个步骤:

1. 阈值化,可以用Otsu阈值化方法或局部平均自适应阈值化方法。这里用了Otsu算法,效果如图2所示。

8a64afa5af7f5771383fd52718eea248.png

图2:Otsu阈值化

2. 定位,找出圆点阵的感兴趣区域,由图可知,感兴趣区域可以通过找四边形的外边框或五边形的内边框,四边形不能确定圆点排序关系,因此使用五边形。

查找轮廓,多边形拟合,去除非五边形轮廓,将边角的长度远小于其他边长作为重要约束,结合面积和角度约束,去除干扰性的五边形。将检测到的五边形显示在原图上,如图3所示。

174e45803b7ebce66ccc5af803185064.png

图3:定位

3. 变换平面,透视变换可以将平面转换到任意方位,如果我们把圆点标定板由倾斜变成正对着,那么圆点标定板的像素与物理关系就可以对应上,检测圆点就相当容易了。透视变换至少要4个点,而我们有了五边形5个点,已经足够了,但由于我们一般知道内边框大小,而边角长度一般不给出,因此我们需要求边角两边长的延展线的交点来形成四边形,结果如图4所示。

2c2525b8143cc13e6982df255d2185e1.png

图4:四边形

将四边形透视变换成正四边形,如图5所示。

c6008b8651e987f8acf7b9bc890f850b.png

图5:正边形

4. 找出透视变换中的圆点中心坐标,根据实际位置和图像位置的比例关系,可以直接得到理想圆点中心位置,效果如图6所示。

e45d8f6ae3c1f90e5548945567ad1fe7.png

图6:理想圆点中心点

从图中可以看出,由于畸变的影响,实际的中心点有了小的偏移,因此需要检测准确的实际中心点,这里不需要采用圆形检测和椭圆检测的方法,只需要用简单的重心法即可。由于实际点偏离理想点较小,可通过理想点选取包含圆点的ROI,用重心法求取中心点,效果图如图7所示。

190de11a542b110f1d5534323f1d234c.png

图7:ROI圆点

求出所有点后,效果如图8所示。

07a58a3b5f21127124fcf891e8e8f646.png

图8:实际圆点中心点

5. 反透视变换,将所有圆点中心点反透视变换,即可完成最终的圆点检测。

-

702ea4b82a0a3003a5180277ebc39960.png

图9:圆点检测

听完小编的解说,是不是觉得圆点标定板的检测也挺简单的呢,那就动起手来,也实现一下吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值