是什么是模板匹配?

模板就是一副已知的小图像,而模板匹配就是在一副大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像元素,通过一定的算法可以在图中找到目标,确定其坐标位置


模板匹配的参数介绍:

1. 图像金字塔:Numberlever

2. 起始角度:AngleStart

3. 角度范围:AngleExtern

4. 角度步长:AngleStep

5. 优化算法:Optimization

6. 极性:Metric

7. 对比度:Contrast

8. 最小对比度:MinContrast

9. 缩放比:scale(find_scale_shape_model.hdev)


查找模板参数介绍

1. 最小匹配分数:Score 。

2. 匹配最大个数:NumMatches

3. 最大重叠比:MaxOverlap(1 为允许重叠,0 为不允许)

4. 亚像素精度:SubPixel。

5. 搜索时使用的金字塔层数:NumLevels (0 为最高效)。

6. 贪婪度:Greediness(为 0 时慢而安全,为 1 时快而可能匹配失败)。



9.2基于助手的模板匹配步骤

Halcon模板匹配之形状匹配,缩放比匹配,相关性匹配_句柄

Halcon模板匹配之形状匹配,缩放比匹配,相关性匹配_句柄_02

Halcon模板匹配之形状匹配,缩放比匹配,相关性匹配_Image_03

Halcon模板匹配之形状匹配,缩放比匹配,相关性匹配_模板匹配_04

Halcon模板匹配之形状匹配,缩放比匹配,相关性匹配_Image_05


9.3基于形状的模板匹配

1.创建形状模板匹配create_shape_model

算子:

Template  NumLevels AngleStart AngleExtent AngleStep Optimization Metric Contrast MinContrast  ModelID

示例:create_shape_model(ImageReduced, 'auto',0,rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

ImageReduced1(输入对象):输入图像对象

'auto'(输入控制参数1):默认自动获取

0(输入控制参数2):创建模板的起始角度(弧度)

rad(360) (输入控制参数3):创建模板的终止角度(弧度)

'auto'(输入控制参数4):默认自动获取

'auto'(输入控制参数5):缩放最小比例默认自动获取

'use_polarity'(输入控制参数9):设置模板优化和模板创建方法

'auto'(输入控制参数10):默认自动获取

'auto'(输入控制参数11):默认自动获取

ModelID(输出控制参数):输出模板句柄



2.发现模板find_shape_model

算子:find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

示例:find_shape_model(Image, ModelID, 0, rad(360), 0.7, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

Image(输入对象):输入需要找寻的图像

ModelID(输入控制参数1):输入模和句柄

0(输入控制参数2):找寻的起始角度

rad(360)(输入控制参数3):找寻的终止角度

0.7(输入控制参数4):最小匹配分数

0(输入控制参数5):找寻的最大个数

0.5(输入控制参数6):最大覆盖率还可以发现系数值

'least_squares'(输入控制参数7):计算精度的设置

0(输入控制参数8):搜索时金字塔的层数

0.9(输入控制参数9):贪婪度  一般设置为0.9 速度快 容易出现找不到的情况

Row(输出控制参数1):匹配位置的行坐标

Column(输出控制参数2):匹配位置的列坐标

Angle(输出控制参数3):匹配位置的角度

Score(输出控制参数4):匹配位置的得分


3.获取模板的轮廓进行查看get_shape_model_contours

算子:get_shape_model_contours( : ModelContours : ModelID, Level : )

示例:get_shape_model_contours(ModelContours, ModelID, 1)

ModelContours(输出对象):输出模板轮廓

ModelID (输入控制参数):输入模板句柄

1(输入控制参数):输入显示数量


4. 显示找到的结果dev_display_shape_matching_results

算子:dev_display_shape_matching_results( : : ModelID, Color, Row, Column, Angle, ScaleR, ScaleC, Model : )

示例:dev_display_shape_matching_results(ModelID, 'red', Row, Column, Angle, 1, 1, 0))

ModelID(输入控制参数1):输入模型的句柄

'red'(输入控制参数2):设定显示颜色

Row(输出控制参数3):输入显示的行坐标

Column(输入控制参数4):输入显示的列坐标

Angle(输入控制参数5):输入显示的角度

1(输入控制参数6):水平方向的缩放比例

1(输入控制参数7):垂直方向的缩放比例

0(输入控制参数8):找到的模型实例的索引


5. 清除句柄 以免爆内存

算子:clear_shape_model( : : ModelID : )

示例:clear_shape_model(ModelID)

  ModelID(输入控制参数):输入模型句柄


9.4基于相关性的模板匹配

1.基于相似度模板匹配create_ncc_model

算子:create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)

示例:create_ncc_model(ImageReduced, 'auto', rad(0),rad(360), 'auto', 'use_polarity', ModelID)

ImageReduced(输入对象):输入图像对象

'auto'(输入控制参数1):默认自动获取

0(输入控制参数2):创建模板的起始角度(弧度)

rad(360) (输入控制参数3):创建模板的终止角度(弧度)

'auto'(输入控制参数8):默认自动获取

'use_polarity'(输入控制参数9):设置模板优化和模板创建方法

ModelID(输出控制参数):输出模板句柄


2.发现模板find_ncc_model

算子:find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)

示例:find_ncc_model (Image,ModelID, rad(0),rad(360), 0.8, 0, 0.5, 'true', 0, Row, Column, Angle, Score)

Image(输入对象):输入需要找寻的图像

ModelID(输入控制参数1):输入模和句柄

0(输入控制参数2):找寻的起始角度

rad(360)(输入控制参数3):找寻的终止角度

0.8(输入控制参数4):最小匹配分数

0(输入控制参数5):找寻的最大个数

0.5(输入控制参数6):最大覆盖率还可以发现系数值

'true'(输入控制参数7):亚像素级别标志

0(输入控制参数8):搜索时金字塔的层数

Row(输出控制参数1):匹配位置的行坐标

Column(输出控制参数2):匹配位置的列坐标

Angle(输出控制参数3):匹配位置的角度

Score(输出控制参数4):匹配位置的得分


3. 清除句柄 以免爆内存clear_ncc_model

算子:clear_ncc_model( : : ModelID : )

示例:clear_ncc_model(ModelID)

ModelID(输入控制参数):输入模型句柄


9.5基于缩放比的模板匹配

1.创建缩放比模板匹配create_scaled_shape_model

算子:create_scaled_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast,MinContrast : ModelID)

示例:create_scaled_shape_model(ImageReduced1, 'auto', 0, rad(360), 'auto',  0.2,  1.5, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

ImageReduced1(输入对象):输入图像对象

'auto'(输入控制参数1):默认自动获取

0(输入控制参数2):创建模板的起始角度(弧度)

rad(360) (输入控制参数3):创建模板的终止角度(弧度)

'auto'(输入控制参数4):默认自动获取

0.2(输入控制参数5):缩放最小比例

1.5(输入控制参数6):缩放最大比例

'auto'(输入控制参数7):默认自动获取

'auto'(输入控制参数8):默认自动获取

'use_polarity'(输入控制参数9):设置模板优化和模板创建方法

'auto'(输入控制参数10):默认自动获取

'auto'(输入控制参数11):默认自动获取

ModelID(输出控制参数):输出模板句柄


2.发现模板find_scaled_shape_model

算子:find_scaled_shape_model(Image : : ModelID, AngleStart, AngleExtent, ScaleMin, ScaleMax, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness :Row, Column, Angle, Scale, Score)

示例:find_scaled_shape_model(Image, ModelID, 0, rad(360),  0.2, 1.9, 0.8, 4, 0.8, 'least_squares', 0, 0.9, Row, Column, Angle, Scale, Score)

Image(输入对象):输入需要找寻的图像

ModelID(输入控制参数1):输入模和句柄

0(输入控制参数2):找寻的起始角度

rad(360)(输入控制参数3):找寻的终止角度

0.2(输入控制参数4):找寻的最小缩放比

1.9(输入控制参数5):找寻的最大缩放比

0.8(输入控制参数6):最小匹配分数

4(输入控制参数7):找寻的最大个数

0.8(输入控制参数8):最大覆盖率还可以发现系数值

'least_squares'(输入控制参数9):计算精度的设置

0(输入控制参数10):搜索时金字塔的层数

0.9(输入控制参数11):贪婪度 一般设置为0.9 速度快 容易出现找不到的情况

Row(输出控制参数1):匹配位置的行坐标

Column(输出控制参数2):匹配位置的列坐标

Angle(输出控制参数3):匹配位置的角度

Scale(输出控制参数4):默认值Score(输出控制参数5):匹配位置的得分


3.获取模板的轮廓进行查看get_shape_model_contours

算子:get_shape_model_contours( : ModelContours : ModelID, Level : )

示例:get_shape_model_contours(ModelContours, ModelID, 1)

ModelContours(输出对象):输出模板轮廓

ModelID (输入控制参数):输入模板句柄

1(输入控制参数):输入显示数量




4. 显示找到的结果dev_display_shape_matching_results

算子:dev_display_shape_matching_results( : : ModelID, Color, Row, Column, Angle, ScaleR, ScaleC, Model : )

示例:dev_display_shape_matching_results(ModelID, 'red', Row, Column, Angle, 1, 1, 0))

ModelID(输入控制参数1):输入模型的句柄

'red'(输入控制参数2):设定显示颜色

Row(输出控制参数3):输入显示的行坐标

Column(输入控制参数4):输入显示的列坐标

Angle(输入控制参数5):输入显示的角度

1(输入控制参数6):水平方向的缩放比例

1(输入控制参数7):垂直方向的缩放比例

0(输入控制参数8):找到的模型实例的索引

4. 显示找到的结果dev_display_shape_matching_results



5. 清除句柄 以免爆内存

算子:clear_shape_model( : : ModelID : )

示例:clear_shape_model(ModelID)

       ModelID(输入控制参数):输入模型句柄