自识别标记(self-identifying marker) -(4) 用于相机标定的CALTag源码剖析(下)

接上篇内容,继续对CALTag源码进行详细剖析~

3、 角点检测

为了方便说明,在此将一个自识别标记,也就是上一步骤保留的连通区域,称为一个quad。下面分析一下如何检测quad的四个角点。
首先找到该quad的外接最小矩形bbox, 二值化掩模mask,然后对mask边界加了3个像素的pad,目的是方便后面做形态学闭运算,运算完再去掉pad。然后找出边界轮廓上的点,计算他们的梯度方向,将这些梯度方向聚成4类,从而获得4个主要的边缘方向。然后分别对每一类的边界点进行线性拟合,得到4条拟合的直线。然后计算它们的交点就是角点。
然后有一个很重要的步骤,就是把这些角点按照逆时针进行排序,这对后面恢复角点、求对应关系至关重要。排序的方法是先求出四个角点的平均坐标,就是该quad的重心。然后分别求每个角点和该重心的向量,将这些向量转化为极坐标系,将极坐标系下的角度按照升序排列就是逆时针角点的顺序。极坐标下的角度如下:
这里写图片描述
上述步骤对应的代码是:

[isq,cnr,cnr0] = fitquad( R(i).BoundingBox, R(i).FilledImage, layout );

这样每个quad就会计算出四个伪角点(下图中四个红色十字),这样每个真实的角点周围就会有四个伪角点,那么如何根据这四个伪角点来计算真实角点坐标呢?
这里写图片描述

首先是根据距离聚类,然后取聚类中心的点作为初始角点saddles_0(下图中绿色圆圈),然后使用和opencv中一样的方法来寻找亚像素级精度的鞍点(下图中绿色十字)。也就是下面几句代码

[saddles] = cornerfinder_saddle_point( flipud(saddles_0), I, 11,11 ); 
[saddles,good] = cornerfinder_saddle_point( saddles, I, 9,9 );
saddles = flipud( saddles(:,good) );  

结果见下图
这里写图片描述

4、 Code/ID提取和验证

要提取标记中的code,首先需要从图片中采样出code的二进制码。流程如下图。首先定义一个理想的单位方形(即代码中的unitSquare),对应下图中左侧的黑色方形。右侧图是图片中真实的quad。首先把unitSquare的四个角点映射到quad的四个角点&

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CALTag是一种高精度的相机标定方法,其原理和应用领域已在参考文献中详细介绍。相机内参标定是指确定相机的内部参数,包括焦距、主点坐标和畸变系数等,以便在图像中进行准确的测量和重建。 如果您想在实际项目中应用CALTag进行自识别标记,您需要设计适合项目特点的图案。根据引用中的介绍,您可以根据项目的要求选择不同的尺寸、数目和排列方式来设计图案。在设计图案时,需要注意以下几点: 1. 尺寸:根据图案在场景中的大小和距离,选择适当的尺寸,以保证标记能够在图像中清晰可见。 2. 数目:根据需要检测和跟踪的目标数量,确定图案中标记的数目。更多的标记可以提供更好的定位精度和鲁棒性。 3. 排列:根据场景中的约束条件和标记的布置方式,确定标记的排列方式。可以考虑使用规则的网格布局或特定的形状布局。 CALTag提供了相关的代码和工具来辅助设计标记图案。引用中提供了关于CALTag的C代码实现和使用MATLAB进行图像处理的信息。您可以根据CALTag的要求和您的具体项目需求,使用MATLAB中的图像处理工具箱进行图案设计和标定操作。 综上所述,CALTag是一种用于相机内参标定的方法,您可以根据项目需求设计自己的标记图案,并利用CALTag提供的代码和工具进行标定操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [自识别标记(self-identifying marker) -(5) 用于相机标定CALTag图案设计](https://blog.csdn.net/electech6/article/details/52497679)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [matlabkmeansc代码-caltag:相机校准标签](https://download.csdn.net/download/weixin_38672812/18976773)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值