一种基于改进的Canny算子的亚像素边缘提取方法
文献发布时间:2023-06-19 13:49:36
技术领域
本发明涉及计算机图像处理技术领域,具体涉及一种基于改进的Canny算子的亚像素边缘提取方法。
背景技术
图像的边缘特征是图像最基本的特征之一,边缘存在于图像的不规则结构和不平稳现象中,也存在于信号的突变点处,这些点给出了图像轮廓的位置。图像的边缘特征提取属于计算机视觉中最基本的问题,边缘检测能够大幅度减少数据量,并且剔除不相关的信息,保留图像重要的结构属性。随着计算机视觉和模式识别技术的发展,传统像素级已经无法满足实际应用中的需求,因此亚像素边缘检测的发展可以得到更高的精确度。
亚像素边缘检测是将像素进行细分,通过计算,能将图像边缘定位非整数像素位置。常用的亚像素边缘检测的方法有:基于矩的亚像素边缘检测、基于拟合的亚像素边缘检测、基于插值的亚像素边缘检测。矩的方法不受图像的尺寸和旋转角度的干扰,但是,计算时间长。拟合法的抗扰性强,所检出的边缘点位置较准确,但在抗干扰和检测出复杂形状的边缘之间存在较尖锐的矛盾。同时,为了提高精度和抗干扰能力,拟合需要的点较多,使得计算变得复杂。插值的方法检测精度较高,计算也较拟合的方法简单。但是,插值的检测精度易受到噪声的影响。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种基于改进的Canny算子的亚像素边缘提取方法,利用牛顿多项式插值和Herminte插值实现高进度亚像素边缘检测。
技术方案:本发明提供了一种基于改进的Canny算子的亚像素边缘提取方法,包括如下步骤:
步骤1:对图像进行灰度化、直方图均衡化以及高斯滤波等图像预处理;
步骤2:使用Sobel边缘差分算子计算预处理后图像的像素梯度和幅值;
步骤3:根据梯度和幅值对像素进行非极大值抑制,得到新的梯度矩阵G’;
步骤4:利用OTSU求类间方差的最大值作为高阈值,低阈值为高阈值的二分之一,并根据所取高阈值和低阈值,对步骤3中梯度矩阵G’进行双阈值处理;
步骤5:以待检测像素点为中心选取9*9窗口,对步骤2窗口中边缘梯度方向两端的4个点分别进行牛顿多项式插值,计算新的插值点;
步骤6:利用所述步骤5得到的新的插值点和原中心像素点进行三次Herminte插值,求取Herminte插值函数的二阶导数,计算其零点,所得的点即为亚像素边缘点。
进一步地,所述步骤1的具体步骤为:
步骤1.1:利用彩色图像转灰度化公式对原始图像进行灰度化操作;
步骤1.2:对灰度图采用直方图均衡化进行图像增强,设图像中像素点总数为n,共有l个灰度级,则第a个灰度级出现的概率P
式中:n
步骤1.3:利用二维高斯滤波器对灰度图像进行滤波操作,二维高斯滤波函数如下:
通过对高斯滤波器对原始灰度图像g(x,y)进行卷积,得到滤波后的图像h(x,y)。
进一步地,所述步骤1.3在滤波过程中,取模板为5*5时,高斯模板为:
进一步地,所述步骤2的具体方法为:
步骤2.1:利用Sobel算子分别计算像素点的垂直和水平方向梯度值,所述Sobel算子为:
计算水平和垂直方向的梯度值公式如下:
G
G
步骤2.2:则当前像素点灰度值的梯度赋值G(x,y)和梯度角度θ(x,y)分别为:
θ(x,y)=arctan[G
进一步地,所述步骤3中对像素进行非极大值抑制的具体方法为:
步骤3.1:对于梯度幅值图像上点(x,y),与其周围像素点组成3*3矩阵,矩阵元素如下:
步骤3.2:判断该点是否可能为边缘点,其条件如下:
步骤3.2:当K(x,y)满足上述条件时,证明该点为邻域中的极大值,保留其值,当不满足条件时,将其赋为0,对整幅图像像素进行遍历后,完成对非极大值的抑制,得到新的梯度矩阵G’。
进一步地,所述步骤4中具体方法为:
步骤4.1:在长宽为W*H的灰度图像中的某一点的灰度值为f(x,y),其取值范围为[0,H],灰度值为k的像素点出现的概率为:
步骤4.2:设阈值大小为T,(0 两部分之间的类间方差为: 步骤4.3:对T的所有取值求类间方差,当类间方差g(T)取最大值时对应的T即为最佳阈值,记为T 步骤4.4:对于所述步骤3中梯度矩阵G’中任意一点G’(x,y),大于高阈值时直接取1,小于低阈值时取0; 步骤4.5:当G’(x,y)取值为高低阈值之间时,
进一步地,所述步骤5中对9*9窗口内中心像素(x N(x)=f[x 其中: 进一步地,所述步骤6中的具体方法为: 步骤6.1:将步骤5中所求取的2个插值点与原中心像素点进行Herminte插值计算,已知3个插值点为(x P(x)=f[x 式中A可由P'(x
步骤6.2:计算3次Herminte插值函数的二阶导数,求出其二阶导数为零的点,所得的点即为图像的亚像素边缘点。 有益效果: 1、本发明通过OTSU计算出的高低阈值可以减小人工设立阈值所产生的误差,对粗边缘的检测更加精确。 2、本发明通过牛顿多项式插值与3次Herminte插值结合,提高了图像边缘检测的精度和稳定性,并且耗时相对来说较短,可用于实时监测。 附图说明 图1为基于改进的Canny算子的亚像素边缘提取方法整体流程图; 图2为原始灰度图; 图3为原有Canny算子的边缘提取效果图; 图4为基于改进的Canny算子的亚像素边缘提取效果图。 具体实施方式 下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。 本发明公开了一种基于改进的Canny算子的亚像素边缘提取方法,其具体流程图如附图1所示,具体包括如下步骤: 步骤1:对图像进行灰度化、直方图均衡化以及高斯滤波等图像预处理。 步骤1.1:利用彩色图像转灰度化公式对原始图像进行灰度化操作,灰度化公式如下: Gray=R*0.299+G*0.587+B*0.114 (1) 参见附图2,其为原始的灰度图。 步骤1.2:对灰度图采用直方图均衡化进行图像增强,提高整体对比度,凸显主要边缘部分。设图像中像素点总数为n,共有l个灰度级,则第a个灰度级出现的概率P
式中:n
步骤1.3:利用二维高斯滤波器对灰度图像进行滤波操作,二维高斯滤波函数如下:
通过对高斯滤波器对原始灰度图像g(x,y)进行卷积,得到滤波后的图像h(x,y),运算过程为: h(x,y)=g(x,y)*H(x,y) (5) 在滤波过程中,取模板为5*5时,高斯模板为:
步骤2:使用Sobel边缘差分算子计算预处理后图像的像素梯度和幅值。具体方法为: 步骤2.1:利用Sobel算子分别计算像素点的垂直和水平方向梯度值,Sobel算子如下:
步骤2.2:计算水平和垂直方向的梯度值公式如下:
步骤2.3:则当前像素点灰度值的梯度赋值G(x,y)和梯度角度θ(x,y)分别为:
θ(x,y)=arctan[G 步骤3:根据梯度和幅值对像素进行非极大值抑制,具体方法: 对于梯度幅值图像上点(x,y),与其周围像素点组成3*3矩阵,矩阵元素如下:
步骤3.1:判断该点是否可能为边缘点,其条件如下:
步骤3.2:当K(x,y)满足上述条件时,证明该点为邻域中的极大值,保留其值,当不满足条件时,将其赋为0,对整幅图像像素进行遍历后,完成对非极大值的抑制,得到新的梯度矩阵G’。 步骤4:利用OTSU求类间方差的最大值作为高阈值,低阈值为高阈值的二分之一进行双阈值处理,具体方法为: 步骤4.1:在长宽为W*H的灰度图像中的某一点的灰度值为f(x,y),其取值范围为[0,H],灰度值为k的像素点出现的概率如式(13)所示
步骤4.2:设阈值大小为T,(0
第二部分占整个图像的比例为
第一部分灰度均值为
第二部分灰度均值为
整个图像灰度均值为 δ=λ 两部分之间的类间方差为
步骤4.3:对T的所有取值求类间方差,当类间方差g(T)取最大值时对应的T即为最佳阈值,记为T
步骤4.5:当G’(x,y)取值为高低阈值之间时
步骤5:以待检测像素点为中心选取9*9窗口,对步骤2窗口中边缘梯度方向两端的4个点分别进行牛顿多项式插值,计算新的插值点,具体方法为: 步骤5.1:对中心像素(x
式(22)中:
步骤6:利用新插值点和剩下的中点进行三次Herminte插值,求取Herminte插值函数的二阶导数,计算其零点,所得的点即为亚像素边缘点,具体方法为: 步骤6.1:将步骤5中所求取的2个插值点与原中心像素点进行Herminte插值计算,已知3个插值点为(x
式中A可由P'(x
步骤6.2:计算3次Herminte插值函数的二阶导数,求出其二阶导数为零的点,所得的点即为图像的亚像素边缘点。 通过上述方法将图2中边长10mm的立方体纸盒的原始灰度图进行亚像素边缘提取后得到的效果图参见附图4,而图3为原有Canny算子的边缘提取效果图,通过附图可以明显看出本算法边缘检测效果更好。对图2中的立方体纸盒利用本发明方法进行5次实验,下表为实验数据,通过实验数据,可以看到,本发明方法提取亚像素误差小且耗时短。 表1:实验数据
。 上述实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
- 一种基于改进的Canny算子的亚像素边缘提取方法
- 一种基于灰色关联分析的亚像素边缘提取方法