linemod算法《Gradient Response Maps for Real-TimeDetection of Textureless Objects》

制作模板:

代码地址
GITHUB可以看看讨论区
MIPP对VS2013有BUG,我看的是old code

正文

通过旋转,缩放制作生成变换后的模板,然后对每一个模板进行梯度计算,梯度方向的量化。

具体制作模板步骤如下:

1.首先计算模板的梯度信息,如利用sobel算子计算x方向和y方向模板每个像素梯度值Gx,Gy。梯度的方向θ,还有每个像素点的梯度幅值。
2.梯度幅值大于某个阈值的点,我们认为是边缘点。并只保存边缘点的位置信息(x,y),梯度方向,梯度幅值。
3 .梯度方向的量化。实际用到了8个方向,《Gradient Response Maps for Real-TimeDetection of Textureless Objects》,这篇文章中量化为5个方向(拿5个方向举例)。这篇论文里提到量化梯度方向可以增加鲁棒性。我们拿论文里的梯度量化图举例子。
在这里插入图片描述
0-180°被量化成5个方向,且5个方向分别用二进制来表示。0-10°和180-190°被归为一个梯度方向。
4 .对图像金字塔下采样后的图像进行梯度方向量化的操作
5分别对通过旋转和缩放制作生成变换后的模板进行,1,2,3,4步骤操作。并保存。
在这里插入图片描述
这个是经过训练够生成文件信息。分别代表x,y以及和量化方向值(总共有八个方向用0-7表示)。

匹配过程:

1.对被搜索图像(原图)也要进行梯度的计算,并且对梯度的方向做方向的拓展。论文里说也是增加了梯度方向的鲁棒性。
拿论文里的5个梯度方向图举例子:
在这里插入图片描述
(a)待匹配图的梯度图,在这个的基础上,每个位置结合周边3x3邻域位置下的梯度,并汇总到一起,这样每个位置就包含多个梯度方向如图b所示,把这些方向转换为量化后的二进制数据就得到(c) Binarized Image,这里如果3x3邻域内有相关量化梯度方向,那么该位置的二进制数据在相应位置上为1,否则为0。
2.制作查找表;
这个算法匹配速度快的原因很大原因是制作了查找表。
同样拿论文里的图举例子:
在这里插入图片描述
如A图黑色方框,代表被搜索图像某个像素被扩展后的三个方向,分表代表与模板中某两个点(梯度方向分别为←,↑)计算的最大分值。因为模板图像有5个方向,所以我们共制作了5个查找表Lookup Table。查找表是为了我们后面匹配计算总分数的时候,可以直接在Lookup Table查找,省去计算的麻烦。

查找表的定义
在这里插入图片描述
Ti 中的 i代表,模板中5个方向,i=0,1,2,3,4
L代表被搜索图像中的被扩展后梯度方向的组和。例如上图黑色框里就是L的其中一个方向组合。
( i)代表模板某像素点的方向。
(l)∈L。其中i,l的单位都是弧度。

3制作响应图Response Maps
在这里插入图片描述
个人理解:这张图是被搜索图(原图)各个位置下对应扩展方向的二进制表示,模板图像共有5个方向,那么相应生成5张响应图Response Maps
在这里插入图片描述
这个是←和↑方向下的响应图Response Maps,并且与被匹配图像同尺寸,每个位置是在特定方向下的最大分数(分数范围0-1);
根据文中提到的相似度量衡函数:
在这里插入图片描述
ε(I,T,c)代表相似度分数,I代表被搜索图像,T代表一个邻域33的长度,c代表模板中心在被搜索图像(原图像)的滑动位置(代码里面没太看懂,感觉更应该是模板原点在被搜索图像的滑动位置)。
Ori(O,r),o代表模板图像,r代表模板中某个特征点的位置(例如x5,y=5由制作模板的时候保存)
Ori(I,t)I代表被搜索图像(原图像),t∈R(c+r),R(c+r)代表在被搜索图像c+r位置的上T
T的邻域(这个其实是搜索T*T邻域内各个方向)
P代表模板图像各个特征位置
举个计算的例子:假设模板图像某特征点位置X=5,Y=5,方向↑,此时模板滑动到被搜索图像(原图像)X=50,y=50的位置,
那么在↑的Response Maps图中搜x=55,y=55的位置搜索最大余弦值即可。
模板滑动到被搜索图像X=50,y=50的位置,累加计算模板图像上各个特征值。即可得到在X=50,y=50的位置分数ε(I,T,c)。

线性存储
用到了线性储存,也是为了避免重复计算,获得加速效果。
参考:
《Gradient Response Maps for Real-TimeDetection of Textureless Objects》
https://blog.csdn.net/zmdsjtu/article/details/79933822
https://blog.csdn.net/zmdsjtu/article/details/79933822
https://blog.csdn.net/haithink/article/details/88396670

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值