find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)
- Image : 你所要搜索兴趣物的图象(图像路径是文件的全路径,用海康威视拍摄出来的图像后缀为.bmp)
- ModelID : 模板句柄
- AngleStart :搜索时的起始角度(旋转模板);AngleExtent : 模板旋转角度范围 ;AngleStep :旋转角度的步长(越小匹配时间越长,范围:0<= α <= pi/16)
- MinScore : 越大搜索的就越快。如果模板在图像中没有被遮挡,MinScore可以设置为0.8,甚至为0.9
- NumMatches : 模板上能找到模板的最大个数
- MaxOverlap : 意思是允许的最大重叠区域,像下图这样 → 这里推荐一篇关于这个参数的详解
- SubPixel : 确定找到的目标是否使用亚像素精度提取。如果其值为‘none’ / ‘false’,模板位置仅仅是像素精度和在create_shape_model中定义的角度分辨率。如果其值为 ‘interpolation’ / ‘true’,位置和角度都是亚像素精度的。在这种模式下模板的位姿是在匹配分数函数中插值运算得到的,这种模式耗费时间较少且精度足够。但是,在精度要求极高的应用中,模板的位姿应该通过最小二乘法确定,即模板点到相关图像点的距离最小。其值分别有'least_squares', 'least_squares_high', 'least_squares_very_high'。其级别越高,耗时越长。一般情况下,使用’least_squares’能达到时间和精度的平衡
- NumLevels : 金字塔级别。当NumLevels=0时,使用创建模板时的金字塔级别。另外,NumLevels还可以包含第二个参数,这个参数定义了找到匹配模板的最低金字塔级别。例如:NumLevels=[4,2]表示在第4层开始匹配,在第2层找到匹配(其默认值为1),这种方式降低运行时间,但是这种模式下的位姿参数是精度较低的
- Greediness : 确定搜索时的 “贪婪程度”。如果Greediness=0,使用一个安全的启发式搜索,该方式总能找到模板,但耗时较长。一般情况下,将Greediness=0.9,这样几乎所有的情况,总能够找到模板 →关于以上三个参数如果想做进一步探索这里推荐一篇文章
- Row,Column, Angle, Score : 输出匹配位置的行和列坐标、弧度、得分。 注意:弧度和角度不是一个东西!角度=180°×弧度/pi。Halcon算子 tuple_deg 可以将弧度转角度! → 关于Row、Column之间的关系这里推荐一篇博客