欢迎光临散文网 会员登陆 & 注册

【Halcon学习笔记】07.图像匹配

2022-07-06 14:04 作者:Ryou2  | 我要投稿

1.概述

        图像匹配是通过对影像内容、特征、结构、关系、纹理及灰度等对应关系进行相似性和一致性的分析,寻求相似影像目标的方法。匹配过程通常先确定目标,在某张样图中选取目标作为模板,然后在待匹配的图像中分析是否有模板相似区,如果有则进一步确定位姿,因此也被称作模板匹配。

        图像匹配方法包括:基于形状特征的匹配(包括一般形状匹配、比例缩放匹配、局部形变匹配、透视形变匹配)、基于组件的匹配、基于描述符的匹配、基于灰度值的匹配、基于灰度值相关性的匹配。

        本节介绍常用的两种匹配方法——基于相关性的匹配和基于形状特征的匹配。

2.相关概念 

2.1 图像金字塔

         图像金字塔是由一幅图像的多个不同分辨率的子图构成的图像集合。是通过一个图像不断的降低采样率产生的,最小的图像可能仅仅有一个像素点。下图是一个图像金子塔的示例。从图中可以看到,图像金字塔是一系列以金字塔形状排列的、自底向上分辨率逐渐降低的图像集合。


3.基于灰度值相关性的匹配(灰度匹配)

3.1 概述

        直接对原图像和模板图像进行操作,通过区域属性的比较来反映它们之间的相似性。时间复杂度高,对图像尺寸敏感。基于灰度相关的算法,具有不受比例因子误差影响和抗白噪声干扰能力强等优点;通过比较参考图像和输入图像在各个位置的相关系数,相关值最大的点就是最佳匹配位置。

        适用于失焦图像、轻微变形、线性光照变换及轮廓模糊的场景;不适用于杂乱、遮挡、非线性光照变换、尺寸缩放的场景。

3.2 算子

3.2.1 创建

        create_ncc_model()

        Template:模板图像
        NumLevels:金子塔层数
        AngleStart:旋转开始角度
        AngleExtent:旋转角度范围
        AngleStep:旋转角度步长
        Metric:物体极性
        ModelID: 生成的模板ID

3.2.2 匹配          

        find_ncc_model()

        Image:单通道图像,它的区域可被创建为模板

        ModelID:模板句柄

        AngleStart:模板的旋转开始角度

        AngleExtent:模板旋转角度范围

        MinScore:被找到的模板最小分数

        NumMatches:被找到的模板个数

        MaxOverlap:被找到的模板实例最大重叠部分

        SubPixel:亚像素级别标志,true,false

        NumLevels:金字塔层级数

        Row:被找到的模板实例行坐标

        Column:被找到的模板实例列坐标

        Angle:被找到的模板实例的旋转角度

        Score:被找到的模板实例的分数

3.2.3 释放

        clear_ncc_model (ModelID)

        ModelID:模板句柄


4.基于形状特征的匹配(形状匹配)

4.1 概述

        基于形状的模板匹配,也称为基于边缘方向梯度的匹配。该算法以物体边缘的梯度相关性作为匹配标准,原理是提取ROI中的边缘特征,结合灰度信息创建模板,并根据模板大小和清晰度的要求生成多层的图像金字塔模型,再在图像金字塔层中自上而下逐层搜索模板图像,直到搜索到最底层或得到确定的匹配结果为止。

        适用于目标轮廓较清晰的场景;不适用于纹理复杂的场景。

4.2 算子

4.2.1 创建(带缩放的)

        create_scaled_shape_model()

       Template:模板图像(ImageReduced)

        NumLevels:金字塔的层数(auto)

        AngleStart:模板旋转的起始角度(rad(-20))

        AngleExtent:模板旋转角度范围(rad(40))

        AngleStep:旋转角度的步长(auto)

        ScaleMin:缩放的最小尺度(0.9)

        ScaleMax:缩放的最大尺度(1.1)

        ScaleStep:缩放的步长(auto)

        Optimization:模板优化的方法(none)

        Metric:匹配模板的条件(use_polarity:图像中的目标必须和模型具有一样的对比度)

        Contrast:对比度([灰度低阈值,灰度高阈值,最小长度])([20,40,50])

        MinContras:设置最小对比度,灰度的波动范围(5)

        ModelID:输出模板句柄(ModelID)

4.2.2 匹配 (带缩放的)

        find_scaled_shape_model

        ModelID:输入模板句柄(ModelID)

        AngleStart:模板旋转的起始角度(rad(-20))

        AngleExtent:模板旋转角度范围(rad(40))

        ScaleMin:缩放的最小尺度(0.9)

        ScaleMax:缩放的最大尺度(1.1)

        MinScore:最小分数(0.3)

        NumMatches:匹配个数(1)

        MaxOverlap:最大重叠数,多个相似时(0.5)

        SubPixel:亚像素精度(least_squares:能确保运行时间和精度的权衡)

        NumLevels:金字塔的层数(0:使用创建模板时金字塔的层数)

        Greediness:贪婪值,用于控制定位加速,越大越慢(0.8)

4.2.3 释放

        clear_shape_model (ModelID)

        ModelID:模板句柄

4.2.4 显示

        dev_display_shape_matching_results()

        ModelD:匹配模型(ModelID)
        Color:显示颜色('red')
        Row:对应的y值坐标位置(Row1)
        Column:对应的x值坐标位置(Column1)
        Angle:对应的角度(Angle1)
        ScaleR:水平方向的缩放比例(1)
        ScaleC:垂直方向的缩放比例(1)
        Model: 模型句柄(0)

        

5.模板匹配在Halcon中的应用步骤

5.1 从参考图像中选择检测的目标

        read_image (Image, teach.bmp) 

        draw_rectangle2 (3600, Row, Column, Phi, Length, Length) 

        gen_rectangle2(ROI_0, Row, Column, Phi, Length, Length) 

        reduce_domain (Image, ROI_0, ImageReduced)

5.2 创建模板

        create_scaled_shape_model (ImageReduced, 'auto', rad(-20), rad(40), 'auto', 0.9, 1.1, 'auto', 'none', 'use_polarity', [20,40,50], 5, ModelID)

5.3 匹配模板

        read_image (ImageRun, 1.bmp) 

        find_scaled_shape_model (Image, ModelID, rad(-20), rad(40), 0.9, 1.1, 0.6, 1, 0.5, 'least_squares', 0, 0.8, Row1, Column1, Angle1, Scale1, Score1)

5.4 数据处理

        tuple_length (Score1, Length)

        if (Length=0)    

            disp_message (3600, 'NG(产品定位失败)', 'window', 12, 12, 'red', 'true')    

            stop() 

        else      

            gen_rectangle2 (Rectangle1, R, C, Angle1, 250, 200) 

        endif


by Ryou2-

【Halcon学习笔记】07.图像匹配的评论 (共 条)

分享到微博请遵守国家法律