opencv圆形环状标记点检测

时间:2024-03-31 07:23:57

最近在做圆形环状标记点检测问题,做个记录。此文是根据《Circular Coded Landmark for Optical 3D-Measurement and Robot Vision》论文实现的。

大概流程是

1 转灰度图

2 otsu转二值图

3 获取所有轮廓信息(我看好多人用的canny算法,我没有,此后有时间在做测试)

4 找到符合条件的mark的轮廓(论文中提供了很多限制条件,我只用了很小一部分,以后需要都加上,必须加上)

5 将mark轮廓拟合成椭圆

6 根据椭圆参数 仿射变换成300直径的圆(300直径主要是为了显示用,也可以变成任意直径,随你)

7 同样将所有mark内部的一级子轮廓进行仿射变换

8 获取mark和所有子轮廓的质心

9 根据质心位置关系和标记点的逻辑关系,确定二进制数

10 旋转二进制数,找到能组合出最小数值的排列组合作为mark数值

源代码下载https://download.csdn.net/download/ljx_yy/10563191

(包含源码,标记点测试图,和标记点设计图,测试图是标准A4,可以直接打印)

 

标记点说明

内部点分为2层,外面代表高位,里面代表低位,各6位。高位和低位都是6边形,交叉摆放,每两个点之间的夹角是30度,

在使用时,高位和低位必须都同时存在。

opencv圆形环状标记点检测

 

PS:

标记点图:

 

opencv圆形环状标记点检测

轮廓图:

opencv圆形环状标记点检测

结果:

opencv圆形环状标记点检测