背景技术
在机器视觉中,为进行目标定位、测量、检测或几何特征提取等都需要对目标进行亚像素精度的边缘提取。例如在目标定位中采用几何特征的模板匹配方法需要对模板和目标进行亚像素精度的边缘提取;在测量应用中需要精确检测到物体的边缘才能进行准确地测量;在检测应用中,如光学字符验证OCV、边缘缺陷检测等都需要稳定地检测到物体的亚像素边缘。
常用的边缘提取算法有Roberts算子、Sobel算子、Prewitt算子、拉普拉斯算子及Canny算子等。亚像素精度的边缘提取算法有空间矩法、灰度矩法、Zernike矩法及数字相关法等。其它亚像素精度的边缘提取算法还包括多项式拟合法、椭圆拟合法、高斯曲面拟合法、Sigmoid曲线拟合法等,李帅等提出了一种基于高斯曲面拟合的亚像素检测算法,孙成秋等在《一种亚像素精度的边缘检测方法》中提出采用贝塞尔边缘模型进行亚像素边缘提取,张舞杰等提出了一种基于Sigmoid函数拟合的亚像素边缘检测的方法。专利文献1(中国专利公开号CN10465002A)公开了一种基于Sobel边缘提取的椭圆目标亚像素边缘定位方法,通过像素边缘计算椭圆几何参数,通过像素边缘计算出亚像素边缘。
专利文献2(中国专利公开号CN102737377A)公开了一种改进的亚像素边缘提取算法,先进行像素精度的粗定位,利用边缘图像裁剪目标图像缩小查找范围,然后在缩小后的范围内提取亚像素边缘。专利文献3(中国专利公开号CN103530878A)公开了一种基于融合策略的边缘提取方法,采用三种传统的边缘提取算法的结果获得反映属于边缘可能程度的投票权重,然后分析像素点与邻域的最大亮度差和最小亮度差的差值,获取描述亮度突变程度的差值权重;统计去中心邻域方差分布,获取所有像素点的边缘分布权重,进行边缘决策,输出边缘图像。专利文献4(中国专利公开号CN103886589A)公开了一种面向目标的自动化高精度边缘提取方法,包括模型训练阶段和边缘提取阶段。专利文献5(中国专利公开号CN103955911A)公开了一种基于相对变分的边缘检测方法,包括图像预处理及基于神经网络方法的边缘检测。专利文献6(中国专利公开号CN104268857A)公开了一种快速亚像素边缘检测和定位方法,基本思路是首先获得像素级边缘位置,然后采用余弦查表法计算亚像素边缘点。专利文献7(中国专利公开号CN104268872A)公开了一种基于一致性的边缘检测方法。专利文献8(中国专利公开号CN104732536A)公开了一种基于改进形态学的亚像素边缘检测方法,采用改进的形态学边缘检测算子平滑图像边缘信息,在物体边缘轮廓中利用Canny算子获得像素级的边缘,然后将像素级边缘拟合为产品的亚像素边缘。专利文献9(中国专利公开号CN105005981A公)开了一种的亚像素精度的激光光条中心提取方法,通过在平滑后的图像中定位初始光条中心,然后利用高斯函数拟合获得光条宽度,再利用拟合高斯函数的方差及高斯卷积核等参数计算Hessian矩阵,依据Hessian矩阵计算出激光光条的亚像素中心位置。在Hessian矩阵方法的使用上与本发明相同,但在像素精度位置计算方面存在本质的区别,也导致两个方法的适用性完全不同。
然而在工业环境应用中,图像受到各类因素的干扰导致图像质量降低,包括强噪声、边缘模糊等,如何在低质量的图像中稳定地检测出亚像素精度的边缘特征并没有很好地解决。传统的像素精度的边缘提取算法在工业自动化应用如3C自动化装备、电子制造、工业机器人视觉等应用中并不能满足精度要求。空间矩法、灰度矩法、Zernike矩法及数字相关法等亚像素边缘提取算法在检测精度、计算速度和抗噪声能力方面均存在各自的不足,很难适应工业环境中严苛的检测工况。
专利文献1只能提取椭圆目标的亚像素位置,通用性不足,且不能处理模糊目标的边缘提取问题。专利文献3公开的方法中分布利用了Sobel、Canny和LoG算子进行边缘检测,然后将三种算子检测的结果进行加权投票统计,根据投票的权重矩阵得到亚像素坐标,该方法存在的问题是速度慢、精度依赖于权重矩阵、不能解决强噪声、模糊等图像的边缘提取问题。专利文献4和专利文献5公开的方法采用Canny和相对变分的结果,采用机器学习的方法进行边缘提取,其方法速度较慢、不能在低质量图像中进行稳定的边缘提取。专利文献6公开的方法在像素坐标粗定位的基础上,在8个梯度方向上进行亚像素边缘检测,该方法具有很好的计算速度,但没有考虑强噪声和模糊图像的处理。专利文献7和专利文献8也存在计算效率不高,不能处理强噪声、模糊图像的边缘提取问题。专利文献9公开的方法采用多级高斯卷积运算,算法复杂度高,对光照变化等原因形成的不同区域非线性阴影变化无法实现鲁棒的光条中心线提取,该方法只适用于激光光条中心线提取,无法实现通用的图像边缘特征提取。
发明内容
本发明的目的在于提供一种基于图像边缘信息的高速、高精度模板匹配定位方法,该方法能同时输出模板图像在目标图像中亚像素精度的位置、旋转角度和缩放比例因子,针对目标图像出现位移、旋转、缩放、部分遮挡、光照明暗变化,光照不均匀、杂乱背景等都能实现快速、稳定、高精度的定位和识别。本发明可以应用于需要通过机器视觉进行目标定位和识别的场合:如机器人引导、半导体封装、电子制造、自动化装配、产品视觉检测、视觉测量、视频跟踪等领域。
本发明公开的方法能够在低质量图像中稳定地检测出亚像素精度的边缘特性。
为达上述目的,本发明通过以下技术方案实现:
一种具有广泛适应性的图像亚像素边缘提取方法,包括以下步骤:步骤1:采用可变尺度图像模糊平滑滤波对图像预处理;步骤2:对预处理后的图像计算一阶导数,首先确保得到的梯度幅值满足该点错误率小于设定值αp,图像一阶导数通过目标核卷积图像空间得到;图像的边缘线在图像一阶导数的脊线处,其中,脊线是梯度图像内相邻连续的局部极大值的集合;步骤3:在边缘候选点筛选过程中应用到链式阈值的边缘提取及选择原理,实现像素级边界位置提取,高低阈值采用两种方式获得:外部参数输入或者自适应阈值计算;步骤4:在得到梯度图像后,为方便并快速找到脊线的单像素宽位置,结合像素点的梯度方向信息对梯度图像执行局部极大中心值选择操作;步骤5:局部梯度幅值的极值是否为边缘点,需要结合特定阈值来判断,大于某给定阈值的标记为边缘点,小于某给定阈值判定为噪声点或背景点;步骤6:计算亚像素精度的边缘位置;步骤7:将边缘点连接成曲线,构成一组有向连续点的集合。
作为本发明的进一步改进所述步骤2中,设图像I(x,y)被执行边缘提取操作后得到边界点错误率为αI,图像大小为n=w×h,则单点检测错误的概率为αp=1-(1-αI)1/n,其中αI范围在0到1.0间,图像I(x,y)只有高斯噪声且噪声信号方差为sn;利用卷积的分步特性,有如下等式:
得到各点的梯度幅值为使得各点梯度幅值的错误率低于设定值αp,即满足等式:M(x,y,σ)≥c(σ),其中,
上式中的变量为尺度变量σ,其它变量为全局设定参数。
作为本发明的进一步改进,所述步骤3中计算高低阈值具体为:首先找到直方图曲线的峰值点(i,Hi)、最后一个直方图中非零累积值坐标点为(j,Hj),0≤i<j≤255且0≤Hj<Hj<1.0,将上述两点连接起来,得到一条直线ax+by+c=0;在i到j间查找直方图曲线坐标点到直线的最大距离位置dmax,即满足dmax=arg maxk|ak+bHk+c|,该点坐标(k,Hk)的横坐标即为第一个阈值Tlow=k;接着从该点出发,至直线末端点(j,Hj)再连接成一条直线αx+βy+λ=0,在直方图曲线的区间k到j上,查找曲线到直线(α,β,λ)的最大距离位置Dmax,同样满足Dmax=arg maxt|αt+βHt+λ|,该点坐标(t,Ht)的横坐标标记为第二个阈值Thigh=t。
作为本发明的进一步改进,所述步骤4具体为:任意像素位置的梯度方向为θ=tan-1(fy/fx),相切与脊线的走势方向;以任意像素位置为原点,建立一个相对坐标,取该点周围八邻域像素为局部极大中心值选择数据样本,根据梯度方向得到邻域的比较结果,确定当前像素位置是否为边界点候选位置。
作为本发明的进一步改进,所述步骤5采用Canny的双阈值设定(Tlow,Thigh);当局部极值G0高于Thigh时,点p0是边缘点;G0低于阈值Tlow表示当前点为非边界点属性;当G0介于高低阈值之间时,链式效应发生作用,即p0点的八邻域中存在边界点,则当前位置确认为边界点。
作为本发明的进一步改进,所述步骤6采用基于Steger曲面拟合方法的Hessian矩阵法求取边缘点的亚像素位置,在像素级边缘点的小区域内执行曲面拟合的内插值算法f(r,c)=k0+k1r+k2c+k3r2+k4rc+k5c2;对曲面方程的各未知数求取一阶及二阶导数,组合成Hessian矩阵;求解Hessian矩阵的特征值及各自的特征向量,其中最大绝对特征值所对应的特征向量即为边缘点的法线方向(nx,ny);利用法线方向及曲面方程的泰勒展开,计算边缘点的亚像素位置。
作为本发明的进一步改进,所述步骤7的边缘连接过程中需要注意的边界连接要保持的一个原则是选择最近且尽可能形成直线或光滑曲线的走势,同时还要避免形成互相连接的两条曲线,对于波浪曲线有且只能存在唯一的一条曲线。
具体实施方案
下面通过具体实施方式结合附图对本发明作进一步详细说明。
边缘检测是图像处理中被广泛使用的算法,机器视觉技术中非常多算子都需要基于良好的边缘提取结果,如几何模板匹配、直线检测、圆检测、字符识别、缺陷检测、尺寸测量等。本发明提供了一种能稳定检测强噪声图像或模糊尺度变化强烈图像边缘的方法,该方法能给出亚像素精度的边缘位置、边缘点的连接关系、边缘点的长度信息。边缘检测效率极为高效,非常适于在机器视觉实时***中应用。本发明能为机器视觉中的定位、测量技术提供重要基础。
本发明的方法流程图如附图1所示,包括以下步骤:步骤1:图像预处理,对图像平滑滤波;步骤2:尺度状态一阶离散核卷积图像;步骤3:自适应高低阈值计算;步骤4:近似梯度方向计算并局部极大中心值选择;步骤5:像素边界点判定选择;步骤6:计算亚像素精度的边缘位置;步骤7:相同属性边界点次序连接。
下面对各步骤进行具体说明。
1.图像预处理
在查找边缘点之前,需建立一个满足特定条件的边缘模型。绝大多数边缘检测算法,如Marr、Hildreth、Poggio、Canny等,定义的边缘位置在图像灰度突变的位置,即一阶导数幅值数据高于一定阈值的位置或是二阶导数等于零同时不是平坦拐点(flatinflection point),满足条件g′(x,y)gm(x,y)<0。附图2中g(s)为一维灰度分布,图中g′(s)为一维灰度分布的一阶导数曲线,g″(s)为一维灰度分布的二阶导数曲线。一阶、二阶导数都能表示图像边缘特征,但一阶导数具有计算速度快、抗噪能力强的优点,本发明中采用一阶导数作为判断边缘的依据。
附图2显示的曲线g(s)表示原始数据,由该图可以假定阶跃边缘模型为ku(x)+h,其中k为未知的梯度幅值,h表示背景图像的灰度数值,u(x)是灰度分布曲线方程。在边缘提取中使用预处理的目的是将所有可能的边缘位置都处理后接近附图2的边缘模型g(s),也是方法流程中步骤①的处理要求。图像预处理通过高斯滤波完成,而处理的对象包括:不确定类型噪声干扰图像、不同原因及程度的模糊图像、非阶跃边缘模型。二维图像的高斯模糊核定义如下:
其中的未知可变尺度信息是曲线方差σ参数。为适应于不同类型的图像,保证可以解决附图3中遇到的问题,可变尺度图像模糊平滑滤波被用来做图像的预处理手段。需要解决的即是在满足部分区域边缘点性能时,另外部分边缘点被检测出非单像素宽边界点。
2.一阶尺度高斯核求导图像边缘梯度
在图像预处理操作后,根据边缘点存在于图像灰度值突变处的定义,同时边缘线也是在图像一阶导数的脊线(ridge)处,如附图4所示。脊线是梯度图像内相邻连续的局部极大值的集合,同时也是边缘曲线的所在。
图像在生成时,由于各种原因会造成边界模糊(如镜头透镜对光的不同折射、非平行光线于边界处形成阴影、边缘自身过渡模糊等)或是引入噪声信号(如高斯噪声),本发明能克服上述问题获得单像素宽边缘点。设定图像I(x,y)被执行边缘提取操作后得到边界点错误率为αI,图像大小为n=w×h,则单点检测错误的概率为αp=1-(1-αI)1/n;其中αI范围在0到1.0间。在计算图像一阶导数时,首先确保得到的梯度幅值满足该点错误率小于设定值αp。图像一阶导数通过目标核卷积图像空间得到,利用卷积的分步特性,有如下等式:
各点的梯度幅值为
设图像I(x,y)只有高斯噪声且噪声信号方差为sn,函数U表示高斯函数的正区间半函数,其偏导数表达式为:
其中图像信号方差和滤波信号方差的关系为s=||G′(x,y,σ)||2sn,函数f是微分同胚映射(diffeomorphism),且有V=f(U),则函数V的偏导数为:
构造函数f(u)=u2,联合(2)式和(3)式,得到如下式子:
结合式(1)中各轴的梯度,并代入函数(4),有如下表达式:
求解(5)式,得到v∈[0,∞)。保证各点的边缘位置发生错误的概率不超过αp,对概率密度函数(5)式做积分处理得到概率值。设定关键参数变量为c,有如下表达式:
高斯函数一阶导数的L2距离为:结合上述相关表达式,参数c的表达式为:
其中式(7)的变量为σ,即是尺度变量,其它变量是全局设定参数。由(5)(6)两式可得,变尺度算法关键在于使得各点梯度幅值的错误率低于设定值αp,即满足等式:M(x,y,σ)≥c(σ)。
3.自适应高低阈值计算
本发明在边缘候选点筛选过程中应用到链式阈值的边缘提取及选择原理,实现像素级边界位置提取,即流程中步骤③。本发明采用两种方式设定高低阈值:外部参数输入及自适应阈值计算。图像梯度信息合成的直方图曲线存在一个明显的峰值点,并在峰值点之后直方图的数值急剧减少直至降到零值。
本发明公开了一种简单快速的查找高低阈值方法。首先找到直方图曲线的峰值点(i,Hi),另外是最后一个直方图中非零累积值坐标点为(j,Hj)(0≤i<j≤255)且0≤Hj<Hi<1.0),将上述两点连接起来,得到一条直线ax+by+c=0。在i到j间查找直方图曲线坐标点到直线的最大距离位置,即满足dmax=arg maxk|ak+bHk+c|。该点坐标(k,Hk)的横坐标即为第一个阈值Tlow=k。接着从该点出发,至直线末端点(j,Hj)再连接成一条直线αx+βy+λ=0,在直方图曲线的区间k到j上,查找曲线到直线(α,β,λ)的最大距离位置,同样满足Dmax=argmaxt|αt+βHt+λ|。该点坐标(t,Ht)的横坐标标记为第二个阈值Thigh=t。计算方式的简易表现如附图5所示。
4.近似梯度方向计算及局部极大中心值选择
在得到梯度图像后,为方便并快速找到脊线的单像素宽位置,结合像素点的梯度方向信息对梯度图像执行局部极大中心值选择操作,即为流程图步骤④。任意像素位置的梯度方向为θ=tan-1(fy/fx),相切与脊线的走势方向。以任意像素位置为原点,建立一个相对坐标,取该点周围八邻域像素为局部极大中心值选择数据样本,根据梯度方向得到邻域的比较结果,确定当前像素位置是否为边界点候选位置。
在边缘提取过程中,非极大值抑制是快速选取局部极大值的有效手段。首先是将梯度方向(0°~180°)以22.5°为步长,分割成若干区域,如图6(a)所示。其中A及A′两者角度互补视为同一组。本发明提供了一种快速梯度方向估计算法,简洁方便的判断出当前点梯度方向在八邻域方向中的朝向。若当前点p0的梯度方向θ为其中变量即为各自梯度导数数值,且角度范围设定在0°到90°间,即只考虑参数为正值的状态。当θ小于22.5°时,ny<nx tan(22.5°),梯度方向坐落在图6(a)的A范围,则p0的八邻域方向为图6(b)中的GR;当θ大于67.5°时,ny>nx tan(67.5°),梯度方向坐落在图6(a)的C范围,则p0的八邻域方向为图6(b)中的GT;当θ范围在22.5°与67.5°间时,ny≥nxtan(22.5°)且ny≤nx tan(67.5°),梯度方向坐落在图6(a)的D范围,则p0的八邻域方向为图6(b)中的GTR。若p0点的梯度方向G0落在图6(a)的A范围内,则将八邻域方向中的GR与GL两个互补方向分别标记为G+和G-。局部极大值的判断标准为:G0>G+且G0≥G-或者是G0≥G+且G0>G-,即当前点p0是一个局部梯度幅值最大值位置。在比较判断中,若两个比较符号都为“>”号,则在相等梯度幅值处,会出现没有极值的情况;若都为“≥”号时,则所有幅值相等的位置都会被确认为极值。
5.像素边界点判定选择
局部梯度幅值的极值是否为边缘点,需要结合特定阈值来判断,大于某给定阈值的标记为边缘点,小于某给定阈值判定为噪声点或背景点,即流程图步骤⑤。Canny的双阈值设定(Tlow,Thigh)在本发明中被采用。当局部极值G0高于Thigh时,点p0是边缘点;G0低于阈值Tlow表示当前点为非边界点属性;当G0介于高低阈值之间时,链式效应发生作用,即p0点的八邻域中存在边界点,则当前位置确认为边界点。
6.计算亚像素精度的边缘位置
一般应用中,像素级的边界点位置精度能满足需求,但是在某些应用中需要更高的边缘精度位置,即亚像素边缘位置,流程图的步骤⑥。采用基于Steger曲面拟合方法的Hessian矩阵法求取边缘点的亚像素位置,在像素级边缘点的小区域内执行曲面拟合的内插值算法f(r,c)=k0+k1r+k2c+k3r2+k4rc+k5c2;对曲面方程的各未知数求取一阶及二阶导数,组合成Hessian矩阵;求解Hessian矩阵的特征值及各自的特征向量,其中最大绝对特征值所对应的特征向量即为边缘点的法线方向(nx,ny);利用法线方向及曲面方程的泰勒展开,计算边缘点的亚像素位置。曲面方程系数的矩阵表达式如下。
7.相同属性边界点顺序连接
直至目前为止,检测到的边缘信息是离散、无序、孤立点,但是很多后期应用需要的是有连续性的边界点集合(曲线),流程图步骤⑦。将边缘点连接成曲线,构成一组有向连续点的集合。边缘连接过程中需要注意的是边界连接要保持的一个原则是选择最近且尽可能形成直线或光滑曲线的走势。同时还要避免形成互相连接的两条曲线,对于波浪曲线有且只能存在唯一的一条曲线。
边缘连接的可用条件为图像空间的边缘点位置及该点八邻域边界点存在与否。曲线起始点从左上角开始搜索,检测到首个边缘点即定义为开始位置。该点搜索方向的次序为优先查找正方向(即如附图7的GR,GB,GL,GT)上是否有满足条件的边界点,否则查找偏方向(附图7中的其它方向)。同类方向(正方向,偏方向)中,候选点的挑选的按照逆时针的次序。设P0是当前点,{Pi}i=R,B,T,BR,RT是候选点,各点的亚像素坐标及梯度方向为已知条件。给定一个评价函数选择分值最小的邻域点视为下一个相邻点。循环更改并替换当前点,直至遇到非边缘点或是其它边缘曲线上的边缘点才结束当前曲线的搜索。当前方向搜索完成后,再从曲线起点开始反方向查找,直至终点。
为了验证本发明公开方法的有效性,分布采用强噪声(参见附图8左侧部分)和模糊图像(参见附图9左侧部分)进行边缘提取测试,附图8和附图9的中间部分为传统的边缘检测的结果,右侧部分为本发明检测结果,可以看出本发明公开的方法能够在强噪声和模糊图像中稳定地检测边缘特征。附图10为本发明的方法得到的边缘检测结果与德国商业化机器视觉软件得到的边缘检测结果的对比效果,图中“+”为本发明检测的边缘结果,“ο”为国外商业软件检测结果,从图中可以看出本发明中的方法能够多地检测出图像的边缘信息。
本发明提出了一种在恶劣环境中稳定地提取图像亚像素边缘特征的方法,采用自适应高低阈值计算方法,在得到梯度图像后,为方便并快速找到脊线的单像素宽位置,结合像素点的梯度方向信息对梯度图像执行局部极大中心值选择操作,以任意像素位置为原点,建立相对坐标,取该点周围八邻域像素为局部极大中心值选择数据样本,根据梯度方向得到邻域的比较结果,确定当前像素位置是否为边界点候选位置。局部梯度幅值的极值是否为边缘点,需要结合特定阈值来判断,大于某给定阈值的标记为边缘点,小于某给定阈值判定为噪声点或背景点。采用基于Steger曲面拟合方法的Hessian矩阵法求取边缘点的亚像素位置。最后将将边缘点连接成曲线,构成一组有向连续点的集合。实现了在强噪声和模糊图像中提取亚像素精度的有序边缘特征信息。本发明方法具有极好的实时性,能够应用到机器视觉***的实时应用中。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。