前言
opencv的contribute部分中包含了一个初步的linemod算法实现,ROS的ORK工具包中的linemod部分也是一个基于opencv这部分
源码的pipeline,并添加了ICP位姿细化等部分。想要深入理解linemod,阅读理解大神们的实现是很有必要的。
总体结构说明
- Feature类描述了一个特征点,即(x, y) 位置,以及这点的量化梯度方向。
- Template类描述了一个模板,保存有改模板的大小(width, height), 对应的金字塔层级(pyramid_level),以及最重要的特征序列(features)。
- QuantizedPyramid为一个虚基类,抽象了某种模态的尺度金字塔,提供了“量化”接口,“提取模板”接口,“金字塔下采样”接口(这里的模态指的是颜色梯度方向和存在深度信息时提取的法向量方向)。另外,类中以protected静态成员函数的形式实现了特征点选择策略。该类分别被ColorGradientPyramid,DepthNormalPyramid继承,这两个类外部不可见。
- Modality也为一个虚基类,是对模态的抽象,提供了生成各类模态金字塔(QuantizedPyramid)的各类接口,其中create方法的实现有待商榷。该类分别被ColorGradient,DepthNormal继承,这两个类用于设置ColorGradientPyramid,DepthNomalPyramid的生成参数,相当于接口类。
- Match类代表一个有效的模板匹配,包含了匹配的位置,类别及相应的模板等信息。并定义了<&