《计算机视觉度量:从特征描述到深度学习》-- 支持局部形变和矫正功能的模板匹配(Local Deformable Model)

在工业生产中,产品的图片对齐一直是决定生产稳定性的大问题。除了硬件保证产品对齐特性外。软件的矫正对齐也很重要。在一些刚性产品生产中,到检测工位,产品表面的轮廓和特征区域基本已经确定。由于来料的不稳定性,和产品自身的加工一致性会存在差异,需要对产品自身根据模板区域进行畸变矫正。下面就是一个基于标准姿态模板定位的方法,输出标准姿态的产品图片,并进行简单的比对,获取缺陷区域。

下面是一个简单的halcon样例:

*读取模板图片
read_image (ModelImage, 'gasket/gasket_model')
*创建模型
create_local_deformable_model (ModelImage, 'auto', [], [], 'auto', 0.9, [], 'auto', 0.9, [], 'auto', 'none', 'use_polarity', 'auto', 'auto', [], [], ModelID)
*循环读取图片
for Index := 1 to 7 by 1
    *读取实时图片
    read_image (Image, 'gasket/gasket_' + Index$'02')
    *进行模板查找
    find_local_deformable_model (Image, ImageRectified, VectorField, DeformedContours, ModelID, rad(-10), rad(20), 1, 1, 1, 1, 0.93, 1, 0.7, 0, 0.4, 'image_rectified', 'deformation_smoothness', 200, Score, Row, Column)
    *两个图片做差
    abs_diff_image (ImageRectified, ModelImage, ImageAbsDiff, 1)
endfor

核心功能:

create_local_deformable_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue : ModelID)

        Template:输入参数,输入图像,用来创建模型。

        NumLevels:输入参数,金字塔(分析法)最大层数。默认'auto',列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。

        AngleStart:输入参数,匹配的起始角度。默认[]。

        AngleExtent:输入参数,匹配的角度范围。默认[]。

        AngleStep:输入参数,角度的步进值。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。

        ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。

        ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。

        ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。

        ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。

        ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。

        ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。

        Optimization:输入参数,提升时间效率的方式(即优化),定义模板定位时使用的特征点的数量,在模板数据量大时有必要降低数据量,以提高定位速度。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。

        Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表

【 

'ignore_color_polarity', 表示匹配过程忽略颜色对比度的变化,一般适用于多通道图像。如果不确定检测时会显示哪个通道的图像,可以选择此项(用在单通道图像上效果与ignore_local_polarity效果相同)。

'ignore_global_polarity',  可以为目标与模板极性完全相反,适用于全局对比度发生变化的情况,表示忽略全局对比度的变化,即匹配过程中的图像对比度可以与模板中的完全相反。例如,模板中是一个暗背景上有一个亮的目标,那么在检索时,即使目标对象很亮而背景很暗,也能匹配成功。

'ignore_local_polarity', 允许部分极性相反,表示忽略局部对比度的变化,如果图像因为光照改变等原因发生局部对比度变化,可以选择这一项。

'ignore_part_polarity',允许不同极性部分之间的变化,极性相同的部分内部不得改变。

'use_polarity'表示匹配得到的图像必须和模板图像的对比度“方向”相同。(即如果使用use_polarity,图像中的对象和模型必须具有相同的对比度。)例如:模板中是一个暗背景上有一个亮的目标,那么在检索时,只有符合匹配条件并且亮度比背景亮的目标才能匹配成功。

其中use_polarity与ignore_globle_polarity仅能用在亚像素精度上。

】。

        Contrast:输入参数,模板图像中对象的对比度设置的滞后阈值。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。

        MinContrast:输入参数,搜索图像中目标的最小对比度。默认'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。

        ParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'min_size', 'part_size'】。

        ParamValue:输入参数,需要设置的参数的值。默认[],列表【[], 'big', 'medium', 'small'】。

        ModelID:输出参数,输出模型句柄

   

find_local_deformable_model(Image : ImageRectified, VectorField, DeformedContours : ModelID, AngleStart, AngleExtent, ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, ResultType, GenParamName, GenParamValue : Score, Row, Column)

        Image:输入参数,输入需要匹配的图像

        ImageRectified:输出参数,输出修正过后的模型图像

        VectorField:输出参数,输出句柄形变模型的变换矩阵

        DeformedContours:输出参数,与模型匹配到的实例

        ModelID:输入参数,输入模型的句柄

        AngleStart:输入参数,匹配的起始角度。默认 -0.39,建议值【-3.14, -1.57, -0.78, -0.39, -0.20, 0.0】。

        AngleExtent:输入参数,匹配的角度范围。默认 0.79,建议值【 6.29, 3.14, 1.57, 0.78, 0.39, 0.0】,范围≥0。

        ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。

        ScaleRMax:输入参数,y值方向的最大缩放比例。默认1.0,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleRMax >= ScaleRMin。

        ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。

        ScaleCMax:输入参数,x值方向的最大缩放比例。默认1.0,建议值【 1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleCMax >= ScaleCMin。

        MinScore:输入参数,最小的匹配得分。最小的匹配得分。默认0.5,建议值【 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围0 ≤ MinScore ≤ 1。

        NumMatches:输入参数,匹配结果的个数。默认1,建议值【 0, 1, 2, 3, 4, 5, 10, 20】。

        MaxOverlap:输入参数,重叠系数。默认1.0,建议值【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。

        NumLevels:输入参数,金字塔层数。默认0,列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10】。

        Greediness:输入参数,贪婪度,查找效率系数。默认0.9,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围 0 ≤ Greediness ≤ 1。

        ResultType:输入参数,结果图像模式。默认 [],列表【 [], 'deformed_contours', 'image_rectified', 'vector_field'】。

        GenParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'angle_step', 'deformation_smoothness', 'expand_border', 'expand_border_bottom', 'expand_border_left', 'expand_border_right', 'expand_border_top', 'scale_c_step', 'scale_r_step', 'subpixel'】。

        GenParamValue:输入参数,需要设置的参数的值。默认 [],列表【[], 'least_squares', 'least_squares_high', 'least_squares_very_high', 'none'】。

        Score:输出参数,输出目标模型匹配得分

        Row:输出参数,匹配结果重心的行坐标

        Column:输出参数,匹配结果重心的列坐标

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值