其他分享
首页 > 其他分享> > halcon-find_shape_model形状模板匹配

halcon-find_shape_model形状模板匹配

作者:互联网

形状匹配原理:模板创建后,会根据模板中的边缘等关系去图像中进行搜索,可以理解成提取模板中的灰度发生变化的那些点,然后再去图像中匹配,这样的效果是对干扰比较稳定,匹配速度快,并且即使边缘发生部分遮挡,匹配效果依旧较好

 

 

在HDevelop中

dev_close_window ()
read_image (Image, 'D:/bb/tu/3.jpg')
rgb1_to_gray (Image, GrayImage)

****截取模板图像:B字母****
gen_rectangle1 (Rectangle, 16, 120, 69, 172)
reduce_domain (GrayImage, Rectangle, ImageReduced)

create_shape_model (ImageReduced, 'auto', -0.2, 0.2, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*创建形状模板
*参数1:模板图像(reduce_domain后)
*参数2:金字塔的最大层级--层级越高搜索越快
*      值列表:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'
*参数3:模板旋转的起始角度--弧度
*参数4:模板旋转的终止角度--弧度
*参数5:角度步长
*       限制:角度步长>=0和角度步长<=pi/16
*参数6:设置模板优化和模板创建方法
*       'auto'
*       'no_pregeneration'
*       'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium', 'pregeneration'
*参数7:匹配方法设置
*       'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'use_polarity'
*参数8:设置对比度
*参数9:设置最小对比度
*参数10:模板句柄


find_shape_model (GrayImage, ModelID, -0.2, 0.2, 0.5, 3, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*形状模板匹配
*参数1:输入图像--单通道图像
*参数2:模板句柄
*参数3:搜索时的起始角度
*参数4:搜索时的终止角度,必须与创建模板时的有交集
*参数5:被找到的模板最小分数--大于等于这个值才能被匹配
*      默认值:0.5      建议值:0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0
*      典型值范围:0≤MinScore ≤ 1
*      最小增量:0.01       建议增量:0.05
*参数6:要找到的模板最大实例数
*参数7:要找到的模型实例的最大重叠
*      默认值:0.5       建议值:0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0
*      典型值范围:0≤ MaxOverlap≤ 1      最小增量:0.01     建议增量:0.05
*参数8:计算精度的设置
*        'none', 'interpolation', 'least_squares', 'least_squares_high', 'least_squares_very_high'
*        'max_deformation 1', 'max_deformation 2', 'max_deformation 3', 'max_deformation 4'
*        'max_deformation 5', 'max_deformation 6'
*参数9:搜索时金字塔的层级
*参数10:贪婪度,搜索启发式,一般都设为0.8,越高速度快,容易出现找不到的情况
*       0≤ Greediness ≤ 1   
*最后4个:输出匹配位置的行和列坐标、角度、得分 【中心坐标】

 

 


在QtCreator中

  HObject  ho_Image, ho_GrayImage, ho_Rectangle;
  HObject  ho_ImageReduced;
  HTuple  hv_ModelID, hv_Row, hv_Column, hv_Angle;
  HTuple  hv_Score;
  ReadImage(&ho_Image, "D:/bb/tu/3.jpg");
  Rgb1ToGray(ho_Image, &ho_GrayImage);

  //***截取模板图像:B字母****
  GenRectangle1(&ho_Rectangle, 16, 120, 69, 172);
  ReduceDomain(ho_GrayImage, ho_Rectangle, &ho_ImageReduced);

  CreateShapeModel(ho_ImageReduced, "auto", -0.2, 0.2, "auto", "auto", "use_polarity", 
      "auto", "auto", &hv_ModelID);
  //创建形状模板
  //参数1:模板图像(reduce_domain后)
  //参数2:金字塔的最大层级--层级越高搜索越快
  //     值列表:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'
  //参数3:模板旋转的起始角度--弧度
  //参数4:模板旋转的终止角度--弧度
  //参数5:角度步长
  //      限制:角度步长>=0和角度步长<=pi/16
  //参数6:设置模板优化和模板创建方法
  //      'auto'
  //      'no_pregeneration'
  //      'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium', 'pregeneration'
  //参数7:匹配方法设置
  //      'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'use_polarity'
  //参数8:设置对比度
  //参数9:设置最小对比度
  //参数10:模板句柄


  FindShapeModel(ho_GrayImage, hv_ModelID, -0.2, 0.2, 0.5, 3, 0.5, "least_squares", 
      0, 0.9, &hv_Row, &hv_Column, &hv_Angle, &hv_Score);
  //形状模板匹配
  //参数1:输入图像--单通道图像
  //参数2:模板句柄
  //参数3:搜索时的起始角度
  //参数4:搜索时的终止角度,必须与创建模板时的有交集
  //参数5:被找到的模板最小分数--大于等于这个值才能被匹配
  //     默认值:0.5      建议值:0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0
  //     典型值范围:0≤MinScore ≤ 1
  //     最小增量:0.01       建议增量:0.05
  //参数6:要找到的模板最大实例数
  //参数7:要找到的模型实例的最大重叠
  //     默认值:0.5       建议值:0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0
  //     典型值范围:0≤ MaxOverlap≤ 1      最小增量:0.01     建议增量:0.05
  //参数8:计算精度的设置
  //       'none', 'interpolation', 'least_squares', 'least_squares_high', 'least_squares_very_high'
  //       'max_deformation 1', 'max_deformation 2', 'max_deformation 3', 'max_deformation 4'
  //       'max_deformation 5', 'max_deformation 6'
  //参数9:搜索时金字塔的层级
  //参数10:贪婪度,搜索启发式,一般都设为0.8,越高速度快,容易出现找不到的情况
  //      0≤ Greediness ≤ 1
  //最后4个:输出匹配位置的行和列坐标、角度、得分 【中心坐标】

 

 

 

 

 

标签:--,auto,hv,步长,halcon,shape,ho,model,模板
来源: https://www.cnblogs.com/liming19680104/p/16057570.html