1 方法一 在合适的金字塔层数上,低步长旋转角度,逐层缩小旋转范围,达到提高匹配速度的效果
- 金字塔越高,模版越模糊,但是只要模版不会被降级很严重,那么模版的边缘方向不会受到太大的影响。
- 高层级别的金字塔分为两种,一种是高层但可看清楚轮廓,第二种是高层但不可见轮廓。前者基本保留了模版的位姿,因此即便是最高层依旧需要步长很短的旋转匹配。比如10°。
- 相反当我们在最高层找到了模版,那么下一层只需要在上层的旋转角度theta±20°左右,来缩小匹配范围,这样会是更好的选择。
2 方法二 在高层金字塔上,采用低置信度的方式,将所有可能的匹配对象都找到,再逐层去删选掉不合格的对象。
- 有论文中提出越高层的模版需要的旋转步长越长。这种观点在于高层模版匹配将置信度放到很低,这样会把一些错误的信息匹配到,但错误的信息匹配到之后,在下一层中会被更精细的匹配删选掉错误信息,直到没有错误信息。
论文大部分都在描述第二种方法,因此本研究将依据第二种方式进行展开。
3.查看一下金字塔的层数对于图像特征的影响情况
3.1 三层金字塔
templateImage = cv2.imread("Template.jpg") # 读取模板图像templateImage = dowmgrade(templateImage,2)searchImage = cv2.imread("Search2.jpg") # 读取待搜索图片searchImage = dowmgrade(searchImage,2)templateImage = np.uint8(templateImage)searchImage = np.uint8(searchImage)
- 难以置信我们的时间降低到了1.8秒。从(79s->1.9s),仅仅是因为做了金字塔。第3层金字塔直接将速度提升了这么多。
3.2 四层金字塔
四层金字塔直接将时间缩短到了0.3秒
如何提高边缘拟合的精度呢?
我们发现模型的轮廓边缘是真的差劲,各种噪声点影响很大。我们尝试用降噪的方式
- 中值滤波
滤波虽然可以去除噪声点,但也把特征点去除了。效果不是很理想。