halcon的模板匹配可以归为三类: 1、基于灰度:灰度,互相关ncc 2、基于形状:形状,组件 3、基于描述符:描述匹配 应用场合:定位对象内部的灰度值没有大的变化,没有缺失部分,没有干扰图像和噪声的场合。 1.创建模板:create_template() 2.寻找模板:best_match() 3.释放模板:clear_template() 应用场合:搜索对象有轻微的变形,大量的纹理,图像模糊等场合,速度快,精度低。 1.创建模板:create_ncc_model() 2.寻找模板:find_ncc_model(),find_ncc_models() 3.释放模板:clear_ncc_model() 4.get_ncc_model_region (ModelRegion, ModelID) smallest_rectangle2 (ModelRegion, Row3, Column3, Phi, Length1, Length2) 应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。 算法步骤: 1.获取组件模型里的初始控件 gen_initial_components() 参数: ModelImage [Input] 初始组件的图片 InitialComponents [Output] 初始组件的轮廓区域 ContrastLow [Input] 对比度下限 ContrastHigh [Input] 对比度上限 MinSize [Input] 初始组件的最小尺寸 Mode[Input] 自动分段的类型 GenericName [Input] 可选控制参数的名称 GenericValue [Input] 可选控制参数的值 2.根据图像模型,初始组件,训练图片来训练组件和组件相互关系 train_model_components() 3.创建组件模型 create_trained_component_model() 4.寻找组件模型 find_component_model() 5.释放组件模型 clear_component_model() 应用场合:定位对象内部的灰度值可以有变化,但对象轮廓一定要清晰平滑。 1.创建形状模型:create_shape_model() 2.寻找形状模型:find_shpae_model() 3.释放形状模型:clear_shape_model() 应用场合:搜索对象有轻微的变形。 1.创建模板:create_local_deformable_model() 2.寻找模板:find_local_deformable_model() 3.释放模板:clear_deformable_model() 应用场合:搜索对象有轻微的变形,透视的场合,根据一些描述点的位置和灰度值来进行匹配。 1.创建模板:create_calib_descriptor_model() 2.寻找模板:find_calib_descriptor_model() 3.释放模板:clear_descriptor_model()