linemod算法小结

Linemod算法小结

 

LineMod方法是由Hinterstoisser[1][2][3]在2011年提出,主要解决的问题是复杂背景下3D物体的实时检测与定位,用到了RGBD的信息,可以应对无纹理的情况,不需要冗长的训练时间。

linemod算法小结_第1张图片

图1. linemod特征图解

 

如图1所示,linemod特征采用彩色图像的梯度信息结合物体表面的法向特征作为模板匹配的依据。Linemod可以实现在几千个模板在图片上滑窗搜索达到实时,这与算法的设计以及特征的选取都密不可分,文献[3]详细阐述了算法为何如此高效。

1.计算梯度方向

以彩色梯度为例,Opencv源码先进行了7*7的高斯模糊,然后利用Sobel算子计算了梯度,继而在每个像素点求解出了梯度方向以及幅值,只有超过一定阈值的梯度才会被保留;接着在3*3的领域内统计梯度的方向,数量超过5的梯度方向才会被采用。值得注意的是,这里的方向都是无符号的,也就是只取上一半,Opencv实现的代码里分为了8个方向。如图所示,这种提取特征的方式对于梯度起到了主成分提取和放大的效果。

linemod算法小结_第2张图片

图2. Linemod特征提取效果和方向分割(彩色图)

2.方向扩散

为了使得匹配有一定的容错度,对图像(非模板)提取完方向后得到了特征图(如图3a)后,在一定领域里让这个特征进行扩散,继而利用模板进行滑窗匹配时就有了一定的容错度。图3扩散的范围是T=3个像素,方向的个数n=5。Opencv实现的代码里T=8, n=8。

linemod算法小结_第3张图片

图3. 方向的扩散

 

3.预处理响应图

针对n(=8)个方向和2里得到的扩散图逐个像素进行匹配,匹配的结果是距离最近方向角度的余弦值。值得注意的是,虽然这里有八个方向,但是夹角只有五种情况(算的直线夹角而非射线),故而匹配的结果只有五种,OpenCV里用0,1,2,3,4表示。

这里有8个方向,故而就有8张预处理的图,在利用模板进行匹配的时候就可以直接调用对应方向在对应像素的结果,避免了滑窗时重复的计算。

(很有DP问题解决的味道,用空间换时间)。

linemod算法小结_第4张图片

图4. 针对每个方向遍历图片计算匹配结果

 

4.线性存储3中预处理的结果

在进行滑窗匹配计算匹配度时调用3中的数据都是有规律的,每隔滑窗的步长T采取一次数据,故而文章提出直接将3中的数据拉成N2个“长条”,这样就可以将多个数据融合在一起进行加的操作从而减少算法的运行时间。

上文也提及到了匹配的结果只有0-4四种结果,一个char的长度是8位,最多能融合63个特征相加而不溢出,故而OpenCV实现的代码里最多只支持63个特征。

linemod算法小结_第5张图片

linemod算法小结_第6张图片

图5. 线性内存存储以及模板匹配的说明

 

5.扩展到深度图

如图6所示,深度图类似于彩色图,计算平面的法向,同样分为八个方向,可以融合到上述流程进行计算。

linemod算法小结_第7张图片

图6. 深度图法向特征提取

 

6.算法效果

如图7所示,linemod不仅算法速度很快,效果也很好。两千个模板遍历图片能达到实时。

linemod算法小结_第8张图片

图7. 各数据库实验结果对比

 

OpenCV (3.4.1版本) linemod源码的不足:

1.      金字塔下采样只能每次缩小一半

2.      特征的数量只能小于等于63个

 

相关文献:

1.    Hinterstoisser S, Holzer S, Cagniart C, et al. Multimodaltemplates for real-time detection of texture-less objects in heavily clutteredscenes[C]// International Conference on Computer Vision. IEEE Computer Society,2011:858-865.

2.    Hinterstoisser S, Lepetit V, Ilic S, et al. Model BasedTraining, Detection and Pose Estimation of Texture-Less 3D Objects in HeavilyCluttered Scenes[C]// Asian Conference on Computer Vision. Springer-Verlag,2012:548-562.

3.    Hinterstoisser S, Cagniart C, Ilic S, et al. Gradientresponse maps for real-time detection of textureless objects.[J]. IEEETransactions on Pattern Analysis & Machine Intelligence, 2012,34(5):876-888.


你可能感兴趣的:(opencv,机器学习,-----项目相关-----)