Halcon——模板匹配之相关性匹配
文章目录
- determine_ncc_model_params(Template : : NumLevels, AngleStart, AngleExtent, Metric, Parameters : ParameterName, ParameterValue)
- create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)
- find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)
- Others
determine_ncc_model_params(Template : : NumLevels, AngleStart, AngleExtent, Metric, Parameters : ParameterName, ParameterValue)
define_ncc_model_params从模型图像模板自动确定NCC模型的某些参数。可以使用参数指定要确定的参数。当create_ncc_model中的各个参数设置为’auto’时,可以使用define_ncc_model_params确定自动确定的相同参数:金字塔等级的数量(Parameters =‘num_levels’)和/或角度步长(Parameters ='angle_step “)。通过在参数中传递上述值的元组,可以确定这些参数的任意组合。如果应确定上述所有参数,则可以传递值Parameters = “ all”。
create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)
参数Metric确定在图像中识别模型的条件。
- 如果Metric =‘use_polarity’,则图像和模型中的对象必须具有相同的对比度。例如,如果模型是深色背景上的明亮对象,则仅当该对象也比背景明亮时才能找到该对象。
- 如果Metric =‘ignore_global_polarity’,则即使对比度全局反转,也会在图像中找到对象。因此,在上面的示例中,如果对象比背景暗,也会找到该对象。在这种情况下,find_ncc_model的运行时间将略有增加。
find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)
-
SubPixel确定是否应以亚像素精度提取实例。如果SubPixel设置为“ false”,则仅以像素精度和用create_ncc_model指定的角度分辨率确定模型的姿势。如果SubPixel设置为“ true”,则以亚像素精度确定位置和旋转。在此模式下,从得分函数中插入模型的姿势。此模式几乎不花费任何计算时间,并且可以实现高精度。因此,通常应将SubPixel设置为“ true”。
-
如果模型表现出对称性,则可能会在图像中找到多个位置相似但旋转不同的实例。如果模型具有重复结构,则可能会在图像的相似位置找到多个旋转相同的实例。参数MaxOverlap确定两个实例最多可以重叠多少分数(即0到1之间的数字),以便将它们视为不同的实例,因此可以分别返回。如果两个实例彼此重叠的距离大于MaxOverlap,则仅返回最佳实例。重叠的计算基于找到的实例的任意方向的最小包围矩形(请参见smallest_rectangle2)。如果MaxOverlap = 0,则找到的实例可能根本不重叠,而对于MaxOverlap = 1,则返回所有实例。

上述公式则为匹配算法公式 可以按到公式以均值和标准差进行计算 它的取值介于-1和1之间。相关的绝对值越大,模板与图像之间的对应程度就越大。具体关系符合下式

由于上述特性,NCC结果对于线性照度变化是不变的。
如果已经使用Metric ='use_polarity’创建了NCC模型,则使用上面定义的NCC。如果已使用Metric ='ignore_global_polarity’创建了模型,则将ncc(r,c)的绝对值用作得分。
但是NCC匹配无法对非线性照度变换进行很好的匹配,局部对比度变换也会造成匹配效果不理想。
Others
-
create_ncc_model 莫名其妙报错问题:有可能是金字塔层数太高导致待匹配图片携带信息过少。
-
选择NumLevels,以使模型仍然可识别,并且在最高金字塔等级上包含足够数量的点(至少八个)。可以使用gen_gauss_pyramid的输出图像的域来检查。
-
可以使用get_ncc_model_params查询自动计算的角度步长。
-
相关性匹配可以很好地适应失焦情况 相关例子find_ncc_model_defocused_precision.hdev

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
