使用find_scaled_shape_models来做模板匹配,发现网上竟然一点都找不到关于这个算子的文章,只有少数的find_scaled_shape_model相关的,
但是我想同时做多个模板匹配,不想一个个来。
接昨天的那个问题,就是配置可接受的最小分数值,这个分数值明明远远低于实际得分,但是就是匹配不上的问题。
后来经过多此测试及重新阅读官方文档发现,多个模板,如果可接受最低分数都是相同的,那么确实可以只写一个值,问题到底在哪里呢?
今天测试发现阈值调整为0.4之后,有不该被匹配上的部分匹配上了,这是非常糟糕的,这部分的得分为4.6左右,一般来说,真正能够匹配上的得分通常在0.8以上。
为了解决这个问题,我决定把阈值重新调整为0.5,不出所料,这一块确实匹配不上了,另几处应该匹配的也匹配不上了,简直是。。。
问题发现过程:
找到了唯一一个halcon提供的包含该算子的例程,发现里面用的分数只有一个,没有用数组,排除这个原因;
Maxoverlap和我设置的不相同,这个参数的涵义是可搜索到的模板实例之间最大的重叠,设置为相同值之后,没有效果;
使用halcon hdevelop中的Matching助手,测试相同的图片和模板,阈值调整为0.5,能够匹配到,这就很奇怪了,助手使用的是find_scaled_shape_model,难道是这两个算子本身其实是不相同的?
为了找到问题,插入代码,一个个参数对比。
最终发现是贪心算法的那个参数可能不恰当。这个参数在0-1之间,越小搜索的越仔细,耗时越久;越大搜索的越不仔细,耗时越短。之前是配置成了0.9,
这是一个官方推荐值,文档上说一般来说得分在0.9以上的,配置成0.9的贪心算法,基本上都能找出来。真是个坑,我有个图得分就有0.92,但是就是没有找出来。
而且官方那个例程上用的都是0.8。
后来通过一点点调小测试,最终确定为0.5,因为对耗时没有那么高的要求,暂定先用这个值,配上0.5的可接受的最低分数,测试一段时间看看效果。
估计这个东西很少人用,我为什么那么看中它呢....