改进canny算子

2024-07-31

改进canny算子(精选7篇)

改进canny算子 篇1

对Canny算子的阈值选取进行改进,对于不同的局部区域单独进行处理,选取与该区域相适应的动态阈值,从而使检测出来的边缘连续,为图像的分割提供一个可靠的基础。

1 Canny算子

Canny把边缘检测问题转换为检测单元函数极大值的问题。其输入是一幅灰度图像,输出图像上记录了输入图像上灰度变化不连续点的位置信息。Canny算法按以下三个步骤对输入图像进行处理:

(1)高斯平滑

高斯函数的一阶微分是对理想滤波器的很好近似。高斯函数由下式给出:

其一阶导数如下:

式(3)给出了二维高斯函数:

这里需要注意输入参数σ是高斯函数的标准差,其决定“平滑度”。

(2)求导

分别在横轴和纵轴方向上对图像求一阶偏导。得到每一点在图像上的梯度值:

象素(x,y)的梯度值代表图像在该点的灰度变化率,而边缘通常是灰度变化率较大的点集。若用各点的梯度值做成一幅平面地势图,则在边缘上会形成一个“山脊”。

最后在“山脊”上遍历,把所有处于“山脊”上最高处的点提取出来得到的就是图像的边缘线。称这一过程是:non_maxmal suppression。为在“山脊”上提取边缘,Canny算子设置了两个阈值:T1,T2,且T1>T2。遍历从“山脊”上某个梯度值大于T1的点P0开始,然后从P0点向四周逐点扩展,一旦某邻接扩展点的梯度值小于T2,则停止扩展。当再没有可扩展的点时,一条边缘线就提取完毕了。Canny算法在这一步骤设置两个阈值,使得提取到的边缘比较完整,如果只用一个阈值提取,则原本是一条完整的边缘极易被噪音点打断而产生一些不连续的线段。

2 动态阈值Canny算法

Canny算法在对具有模糊边缘的图像进行边缘检测时,整幅图像仅仅采用了两个阈值,往往不能兼顾图像各处的具体情况,所以效果是不理想的。因为用固定阈值进行边缘检测很可能导致边缘在模糊处丢失。为了让canny算法能够更精确的检测图像中目标的边界,在对图像进行预处理时,先将其分割成若干子图像;然后针对每幅子图像中的具体情况,选用不同的阈值,最后采用上一步中所选择的阈值对整幅图像进行动态分割。动态阈值算法步骤如下:

(1)对图像进行预处理

对所获得的非标准图像,首先采用线性锐化滤波锐化整幅图像的边缘,然后将图像分割成若干子图像以便于后续处理。分割后的子图像之间要有部分重叠,以便消除在处理后的图像中所存在的边界效应。

(2)顺序选取其中的一个子图像并用高斯平滑滤波器进行平滑。设用I[i,j]表示图像,则该操作可表示为一个卷积过程:

其中:G[I,j,σ]为高斯平滑滤波函数;σ是高斯函数的散布参数,用它控制平滑程度。

(3)子图像增强

使用一阶偏导的有限差分来计算梯度的幅值和方向;幅值与方向角可用直角坐标到极坐标的转换公式来计算[6]:

其中:P[i,j]=(S[i,j+1]-S[i,j]+S[i+1,j+1]-S[i+1,j])/2,

(4)在子图像中选取阈值

动态阈值算法仍然使用双阈值来检测子图像的边缘。但由于目标与背景的灰度值有部分交错,通常希望分割后误差最小,因而该算法采用最优阈值法求出其中的一个阈值:

其中:μ1和μ2分别是背景与目标区域的平均灰度值,σ1和σ2分别是关于均值的均方差,P1和P2分别为背景和目标区域灰度值的先验概率。

(5)检测是否还有子图像未处理,若有则转(2);否则转(6)。

(6)用第4步中选取的多个阈值对整幅图像进行动态分割。

假设在一幅子图像中选用了两个阈值,分别为τ1和τ2,且2τ1≈τ2,从而可以得到子图像的两个阈值边缘图像T1[i,j]和T2[i,j]。其中,由于T2[i,j]使用高阈值得到,因而含有很少的假边缘,但有间断。

(7)采用非极大值抑制来细化边缘

由于在处理时,会使图像的边界产生屋脊带,所以为了细化边缘,算法需要沿着屋脊带的顶部进行跟踪,将那些不是最大值的点值为零。这一过程称为非极大值抑制。

(8)边缘连接

要在T2[i,j]中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在T1[i,j]的8邻点位置中寻找可以连接到轮廓上的边缘,这样,算法不断的在中收集边缘,直到将T2[i,j]连接起来为止。

(9)算法结束。

3 实验结果

图1给出了Canny算子和改进后的Canny算子处理得到的边缘检测效果对比图。

4 结束语

所提出的检测方案,是在原有基础上对Canny算子进行改进。有效地避免了因为用固定阈值进行边缘检测导致边缘在模糊处丢失等问题。

摘要:提出一种改进的Canny算子,其应用动态阈值作为边缘检测的准则,有效地避免了因为用固定阈值进行边缘检测,很可能导致边缘在模糊处丢失等问题。实验中对比Sobel算子和Canny算子,表明改进的Canny算子对于模糊边缘检测效果较好,是一种具有实用价值的边缘检测算法。

关键词:边缘检测,Canny算子

参考文献

[1]J.Canny.A computational approach to edge detection[J].IEEE Trans.on Pattern Anal.Machine.Intell.1986(8):679-698.

[2]V.Torre.T.Poggio.On edge detection[J].IEEE Trans.on Pattern Anal.Machine Intell.1986(8):147-163.

[3]Viceconti M.Cappello A.Massari B.Bertozzi A.Zannoni C.O-ptimal slice positioning for long bone CT reconstruction[J].En-gineering in Medicine and Biology Society.Bridging Disciplines for Biomedicine.Proceedings of the18th Annual International C-onference of the IEEE.1996(2):674-675.

[4]章锍晋.图像分割[M].北京,科学出版社,2001:17-19,9-10.

[5]D.Marr.视觉计算理论[M].姚国正,刘磊,汪云九,译.北京:科学出版社,1988:11-20.

[6]章锍晋.图像处理和分析[M].北京:清华大学出版社,1999.

改进canny算子 篇2

图像边缘蕴含着丰富的内在信息,边缘提取是图像识别领域中一个十分重要的课题。图像边缘主要划分为阶跃状和屋脊状两种类型。阶跃状边缘两侧的灰度值变化明显,屋脊状边缘则位于灰度增加与减少的交界处。传统的图像边缘检测方法大多是从图像的高频分量中提取边缘信息,微分运算是边缘检测与提取的主要手段。由于传统的边缘检测方法对噪声敏感,所以实际运用效果有一定的局限性。近年来,越来越多的新技术被引入到边缘检测方法中,如数学形态学、小波变换、神经网络和分形理论等。

Canny于1986年提出基于最优化算法的边缘检测算子,得到了广泛的应用,并成了与其它实验结果作比较的标准。其原因在于他最先建立了优化边缘检测算子的理论基础,提出了迄今为止定义最为严格的边缘检测的三个标准。另外其相对简单的算法使得整个过程可以在较短的时间内实现。实验结果也表明,Canny算子在处理受加性高斯白噪声污染的图像方面获得了良好的效果[1]。

传统的Canny算法利用固定的高、低阈值进行边缘提取,对不同的图像缺乏自适应性,而且无法消除局部噪声干扰,在检测出伪边缘的同时还会丢失一些灰度值变化缓慢的局部边缘。本文在对传统Canny算法进行分析的基础上,提出了一种基于改进遗传算法的Canny算法,该算法能够针对不同图像自适应地生成动态阈值,有效地解决了阈值选取问题,取得了良好的检测精度和准确度。同时改进算法的算法复杂度不大,保证了实时性。

1 Canny算法

1.1 三个准则

对一幅图像进行边缘检测,一般可分为三步:滤波、增强和检测。Canny算法也是一个具有类似步骤的多阶段的优化算法。Canny[2]给出的评价边缘检测性能的3个指标如下:

(1) 高信噪比准则 输出信号的信噪比大,则非边缘点判断为边缘点或边缘点判断为非边缘点的概率最小,即误检率最低。信噪比(SNR)的数学表达式为:

SNR=|-ωωG(-x)f(x)dx|/[σ-ωωf2(x)dx](1)

其中,f(x)是边界为[-ω,+ω]的滤波器脉冲响应;G(x)为边缘函数;σ为高斯噪声的均方根。

(2) 高定位精度准则 即检出的边缘点与实际边缘点距离最小,使定位精度最高。定位精度的数学表达式为

Localization=-ωωG(-x)f(x)dx/[σ-ωωf2(x)dx](2)

其中,G′(-x)和f′(x)分别为G(-x)和f(x)的一阶导数。Localization的值越大,定位精度越高。

(3) 单一边缘响应准则 即和每个边缘有且只有一个响应,最大限度抑制伪边缘出现。要保证单一边缘响应,检测算子脉冲响应导数的零交叉点平均距离应满足:

D(f)=π[-f2(x)dx/-f2(x)dx]1/2(3)

设高斯二维函数为:

G(x,y)=(1/2πσ2)exp[-(x2+y2)/2σ2] (4)

式(4)即为满足3个准则的最佳逼近函数。Canny以上述指标和准则为基础,利用泛函求导方法导出高斯函数的一阶导数,推导出最优边缘检测算子的一个近似实现:边界点位于图像被高斯函数平滑后的梯度幅度的极大值点。

1.2 实现过程

(1) 平滑图像

利用式(5)所示的一维高斯函数对原始图像进行平滑除噪,从而得到平滑图像I(x,y)。

G(x)=(1/2πσ2)exp(-x2/2σ2) (5)

I(x,y)=[G(x)G(y)]·f(x,y) (6)

其中*表示卷积,f(x,y)是原始图像,σ是高斯函数的散布参数,用它控制平滑程度。

(2) 计算梯度方向和幅值

采用2×2邻域一阶偏导的有限差分计算平滑后的图像I(x,y)的梯度方向和幅值:

Μ(x,y)=gx2(x,y)+gy2(x,y)(7)

O(x,y)=arctan[gx(x,y),gy(x,y)] (8)

fx=[-1/21/2-1/21/2]fy=[1/21/2]

其中,gxgy分别为原图像I(x,y)被滤波器fxfy沿行、列作用的结果。

(3) 对梯度图像进行非极大值抑制

若像素点(x,y)的梯度幅值M(x,y)不小于梯度方向上两个相邻像素点的梯度幅值,则判断该点为可能的边缘点[3]。

(4) 双阈值方法检测和连接边缘

取阈值Lth(低阈值)和Hth(高阈值),对梯度图像进行双阈值化处理,可得到一个高阈值检测结果和低阈值检测结果,再在前者中连接边缘轮廓,连接到端点时,到后者寻找弱边缘点,弥补前者的边缘间隙。

2 遗传算法

2.1 传统遗传算法

遗传算法[4,5]相对于其它的寻优算法而言其优点在于它对目标问题的求解完全依赖于解空间的个体及其适应度,而不需要其它的知识。传统的遗传算法概括起来包括以下几个步骤:

(1) 编码 在利用遗传算法进行迭代搜索之前,首先应对目标解空间进行编码,这是重要的一步,它对后面遗传算法的迭代运算的收敛产生直接的影响;

(2) 初始化种群 在解空间内随机选取N个个体形成初始群体,表示了问题的初始解;

(3)设计适应度函数 适应度函数的选取是实现遗传算法最关键的一步,是遗传算法寻求最优解的基础;

(4) 选择 根据群体中各个个体的适应度,按照一定的策略选取M个最好的个体作为繁殖下一代的群体;

(5) 交叉 对选择产生的M个个体,按照事先设定的交叉概率随机选取两个进行交叉运算,产生新一代群体的两个新个体;

(6) 变异 在交叉运算产生的新的群体中,按照一定的概率从中选取若干个体,按一定的策略进行变异操作;

(7) 检验 检验停止条件是否满足,若满足则停止,否则转到(4)继续进行进化过程。

2.2 改进的遗传算法

传统的遗传算法应用于阈值选取时,存在着收敛速度慢,以及陷入过早收敛而使寻优结果与最优解相差较大的缺陷。故对传统的遗传算法进行了改进,使得在提高收敛速度的同时给出非常接近于最优解的结果。主要思路就是分两次寻求全局最优解,即利用第一次搜寻到的解的结果确定第二次寻优的初始群的选取范围。第一次寻优的结果尽管不是最优的结果,但它肯定是比较好的结果,在此基础上进行第二次寻优,就会得到更好的结果,有利于搜寻到全局最优解。

基于实时性的考虑,我们选取的适应度函数是最大类间方差的计算函数。计算公式为:

σ(t)2=w1(t)[u1(t)-u(t)]2+w2(t)[u2(t)-u(t)]2 (9)

其中t表示用来处理图像的阈值,w1(t)表示图像中灰度值小于阈值的像素的总和,w2(t)表示图像中灰度值大于阈值的像素的总和,u1(t)表示图像中灰度值小于t的像素的平均灰度值,u2(t)表示图像中灰度值大于t的像素的平均灰度值,u(t)为目标图像的灰度均值。通过上面提到的两次寻优遗传算法,找出使得σ(t)2最大的t的值,作为Canny算法的高阈值。算法描述如下:

(1) 采用8位长自然编码方式,随机地在0~255之间以同样的概率生成十个个体A1~A10,作为第一次寻优的初始种群。

(2) 采用轮盘赌的方式选择进行交叉操作的个体,每次选取两个。具体做法是先计算群体中各个个体的适应度总和S,再随机地生成0~S之间的一个随机数Se,然后从第一个个体开始累加,直到累加值大于此随机数,此时最后一个累加的个体便是要选择的个体。选出两个个体后,根据一定的交叉概率Ph随机选取在某一位开始进行交叉运算,生成两个新个体。依此重复直到生成新一代的群体NA1α~NA10 α

(3) 根据一定的变异概率Pm,随机地从NA1α~NA10 α中选择若干个个体,再随机地在这若干个个体中选择某一位进行变异运算,形成群体NA1β~NA10β。为了防止交叉和变异操作破坏上一代群体中的适应度最高的解,我们用上一代群体A1~A10中适应度最高的个体与群体NA1β~NA10β中适应度最低的个体进行比较,若前者比后者的适应度高,则用前者替换后者,否则什么也不做。这样做的目的是防止种群的退化而导致收敛速度过慢,可以显著加快收敛速度。经过这一步,就形成了新一代的群体NA1γ~NA10 γ

(4) 判断停止条件是否满足,若不满足,则以新的群体作为A1~A10,转到(2),否则转到(5)。

(5) 选取第一次寻优最终产生的群体中和适应度最大的个体Amax作为第二次寻优初始群体的产生区间的中心,在Amax-A~Amax+A中以同等概率生成第二次寻优的初始种群B1~B10。

(6) 重复步骤(2)~(4),直到最终生成满足停止条件的最终的群体。

(7) 将第二次寻优最终生成的群体适应度最大的个体与第一次寻优的Amax进行比较,若前者大,则以前者作为最终的阈值,否则则以后者作为最终的阈值。以保证寻得的是一个较好的准最优解。

3 改进的Canny算法

3.1 平滑后对图像作灰度拉伸

平滑后灰度的变化范围变窄,一些边缘变得比较平缓,从而在后续的边缘检测中容易丢失边缘。为改变这种情况,在平滑后,对图像做灰度拉伸,增大图像的灰度分布的动态变换范围,增强对比度和边缘灰度的变换速率。

g(x,y)={00f(x,y)<a[Μg/(b-a)][f(x,y)-a]af(x,y)<bΜgbf(x,y)Μf(9)

其中,对于灰度级为256的图像来说,Mg=Mf=255。ab为常数,不同情况下灰度拉伸的ab的取值要根据具体的条件进行选择。

3.2 遗传算法求取阈值

从Canny算子的原理可以看出,影响算法性能的两个重要因素是σ和阈值Hth、Lth的选取。对于灰度平坦的图像,用较小的σ可以取得很好的平滑效果,但如果图像复杂度增加,σ也要有相应的增加。这会导致高斯平滑模板相应的增大,平滑的速度也大幅度变慢。本文实验中,σ取固定值1。

一幅在光照条件不好的情况下拍摄的图像,很可能会出现灰度分布的不均匀。这时,如果选择高阈值的Canny算子进行检测,图像的某些部分会丢失边缘;而选择低阈值Canny算子进行检测,又会出现很多虚假的边缘。可见,虽然双阈值法使Canny算子提取的边缘更具有鲁棒性,但阈值的选择对结果影响很大,而对不同的图像确定不同的阈值又较困难。

本文采用二次寻优的遗传算法迭代求取最优阈值,作为Canny算子的高阈值Hth。对于低阈值的选择,通过选择为高阈值的一定比例因子实现,一般取Lth=k·Hth,其中比例因子k取1.5~2.5。

4 仿真结果

为了验证算法的结果,采用米粒图和Lena图进行实验。实验用的计算机配置为P4 2.9G CPU,512Mb内存。其步骤是:

在用遗传算法寻取阈值时,编码方式采用8位长自然编码,对于交叉率Ph和变异率Pm,根据实验分别选取为0.85和0.02。停机条件为:如果达到设定的迭代最大次数,或是新群体的平均适应度与上一代群体的平均适应度的比值在1.0~1.005之间,则停机。而第二次寻优初始种群的生成范围为第一次寻优结果的半径为50的邻域内即A=50。

为了能客观地比较图像的边缘检测结果,采用检测图像的品质系数[6]R来评估算法的性能:

R=(1max{m,n})i=1n[1/(1+αd2(i))](10)

其中,m是真实边缘数;n是检测出的边缘数;d(i)表示第i条边缘与响应的检测边缘的距离,α为比例常数,可取为0.1,当R=1时是检测的理想状况。

图1和表1分别是米粒图的仿真实验结果和相应品质系数,可以看出,本文方法所得边缘图像的品质系数明显高于传统Canny方法。

图2是Lena图的仿真实验结果。可以看出,传统Canny方法存在一些假边缘,同时丢失了一些真边缘。而本文算法使得检测准确性得到较大的提高,伪边界显著减少,真边缘基本上全部检出,取得较好的效果。

采用的二次寻优遗传算法求取阈值,每次都能给出接近全局的准最优解,并在此基础上进行少量的局部搜索,就能得出全局最优解。本算法迭代的次数少,一般不超过7次。计算适应度不超过10(7+1)=80次,比起直接用最大类间方差计算公式所需的256次适应度的计算量大大减少,保证了算法的实时性。

5 结 论

本文对传统的Canny算法进行了改进,改善了对差分背景的图像边缘检测的效果,在进行灰度拉伸的基础上,通过二次寻优的遗传算法产生的阈值适应性好,自动化程度高。同时因为二次寻优的遗传算法迭代次数少,算法的开销不大,显著提高了阈值选取的速度。虽然算法的运算复杂度和运算时间要稍大于普通的Canny算子,但对实时性影响不大。

参考文献

[1]Zhang Bin,He Saixian.Improved Edge-detection Method Based on Canny algorithm[J].Infrared Technology,2006,28(3):165169.

[2]Canny J.A Computational Approach to Edge Detection[J].IEEE Trans on PAMI,1986,8(6):679698.

[3]Meer P,Georgescu B.Edge Detection with Embedded Confidence[J].IEEE Trans on PAMI,2001,23(120):13511365.

[4]Ren Ping.Genetic algorithm(an overview)[J].Journal of Engineering Mathematics1999,216(1):18.

[5]Chen Jianan,Guo Dawei,Xu Naiping,et al.A review on the theory for the genetic algorithm[J].Journal of Xidian University,1998,25(3):263368.

改进canny算子 篇3

身份鉴别是一个永恒的课题。与传统的身份鉴别方法相比, 一种基于人自身所具有的生物特征识别技术, 以其方便性和可靠性而受到广泛的研究。虹膜一词最先源于古罗马时代, 出现虹膜进行身份辨别的假设最早出现于十九世纪八十年代左右, 其原理是通过虹膜的几何纹理的不同来辨别身份。据此, 最早提出“自动虹膜识别”的概念是美国的Leonard Flom和Aran Safir, 但尚未有系统能实际运用。1993年John Daugman完成了高性能自动虹膜识别的系统, 而今多数的自动虹膜识别系统都是以Daugma为中心算法演变的。Daugman的算法中, 首先用Gabor滤波器对虹膜纹理进行一种相对简单的粗量化和编码, 识别的准确率很高。虹膜的纹理在其他方向尤其是是径向, 有着大量的纹理信息。

虹膜的定位与提取是整个虹膜识别中重要的前期工作, 目前已有的方法包括灰度分割、Robert算子、拉普拉斯算子以及传统Canny算子。这些方法被分别应用于虹膜的内外边缘检测, 其中灰度分割用于虹膜内边缘定位, 由于虹膜与瞳孔边界的灰度变化较明显, 利用这一特征, 可以很好地把瞳孔与虹膜分离。其余的算子常用于虹膜外边缘检测, 但是出于准确度、速度、噪声排除、虚假边缘和双像素边界等干扰因素考虑, Canny算子可谓其中较为优秀的边缘检测方法。

Canny算子是一个性能优良的算法, 它以其受噪声和弱边缘干扰很小的特点, 在图像处理领域里应用十分广泛。其基本原理是:对待测目标图像通过Gauss滤波器进行平滑滤波, 然后计算局部梯度极大值来提取图像的边缘, 其中用高斯滤波器的导数计算梯度最大值。当采用两个阈值时, 能同时检测出强边缘与相邻的弱边缘。受噪声和弱边缘的干扰影响是非常小的, 相对于其他基本方法更能够检测到真正的虹膜弱边缘。

本文提出了一种可以自适应的动态阈值法, 这个方法可以根据当时的环境以及摄像头的配置自适应地选择每个子图像的高、低两个阈值。

1 Canny算子

Canny算子在众多基础边缘检测算子中性能较为优良, 实用性广。主要是先用Causs滤波器对目标图像进行平滑滤, 然后计算感兴趣部分的图像梯度极大值来确定阈值, 然后提取图像边缘。采用两个阈值来检测图像强边缘和弱边缘。受噪声和弱边缘干扰影响很小, 相对上述其他基本方法更够准确检测到弱边缘。

边缘检测方法也有线性方法和非线性方法。以线性算子为基础的有梯度算子和拉普拉斯算子, 作用类似于高斯滤波, 一般只起到锐化图像边缘的作用, 检测的效果不理想[2]。非线性算子有Sobel算子、Robert算子等等, 因方向是各向异性, 导致对部分图像的边缘检测不完整。Canny属于一阶算子, 利用高斯函数的梯度来近似。图3.7为几种常见微分算子对虹膜图像进行边缘检测的结果。

Canny算子在虹膜图像边缘检测方面有较好的效果, 但是也存在一些不足。近年来, 不少个人和研究机构提出了很多种基于Canny算子的改善算法[3,4,5,6]。从试验应用中可以发现, 因各种干扰因素, 图像中会存在噪声、模糊的边缘或整幅像片范围内对比度不相同等干扰因素或问题。Canny算子在处理这些干扰较大的图片时初期设定的阈值参数有效性大大降低, 另一方面无法消除局部噪声干扰, 在检测出假边缘的同时还会丢失一些灰度值变化缓慢的局部边缘。

2 改进型Canny算子 (开关型中值滤波器自适应的动态阈值方法)

由于实际的目标图像存在光强度以及相机本身未知等问题, 传统Canny算子很难设定实际中的两个高、低阈值, 针对这个问题本文提出了一种基于自适应动态阈值方法, 依据非极大值抑制之后的输出结果, 自适应地选择每个子图像的高、低两个阈值。

2.1 梯度直方图

把图像中感兴趣的部分分割为大小一致的子区域, 子区域之间同时也存在少部分相互重叠, 设比例参数θ为重叠的区域与子图像区域的比值, 然后进行非极大值抑制, 依据输出的结果动态地确定每一个子区域的高低阈值。

参考相关文献和多次实验, 设梯度的最值不大于4×E (E为灰度图像灰度级) , 按照上述思想, 先对统计图像进行非极大值抑制处理。然后统计图像中边缘像素位不为0的梯度幅值数量。依据统计出来的结果可得梯度直方图。

2.2 子图像梯度直方图的分类

在梯度直方图的特性上, 尝试一种用自动识别并分割非边缘区域和边缘区域的方法。先依据梯度直方图中的形态特征对梯度直方图进行分类, 子图像梯度直方图可大致分为三类1) 全部是背景:如果子图像和原图像中的非边缘区域完全对应, 而没有含任何边缘, 则把子图像区域的边缘数目设置为0, 这样动态阈值产生的局部噪声便会受到抑制;2) 全部是边缘:不可能存在这一情况;3) 背景和边缘并存:大部分图像属于这一情况, 包含了大量背景与少量边缘。

从上述可知, 图像中非边缘所占比绝大多数。我们把直方图的峰顶所对应像素的集合称为非边缘像素集合。Hmax为最值梯度 (梯度直方图中占有最多像素数值的梯度值) , Pmax为像素最值梯度方差。Hmax反映是非边缘区域分布的中心位置, 而Pmax则反映梯度分布相对于Hmax的离散程度。

式中, k为像素数不为0时的梯度的最大值, N为像素总数。

当梯度直方图只存在一个峰值, Hmax附近的像素梯度值的密度最高, Pmax是非常小的。非边缘像素梯度存在一个峰值和存在边缘像素梯度的分布时, 边缘像素梯度一般分布在距离Hmax比较远的位置, 所以造成Pmax的值很大, 根据这个现象设定门限进行判断。在梯度方差小于门限时, 自动判定子图像全部为背景, 并把对应梯度幅值[i, j]设置为零, 降低了计算复杂度, 节省了运算时间;当最值梯度方差值比门限大时, 自动判定子图像包含背景和边缘, 需要再进一步处理计算。

2.3 自动选取阈值

本文尝试使用自适应地来设置一个高阈值Γh的门限, 像素最值梯度Hmax反映了梯度直方图中非边缘区域的中心位置, 而像素最值梯度方差Pmax则反映出梯度直方图中的梯度分布相对于Hmax的离散程度 (相对于非边缘区域的离散程度) , 因此通过Hmax和Pmax计算得出非边缘区域的范围, 当高阈值Γh大于Hmax一倍Pmax时, 可认为Γh在非边缘区域之外, 可以有效地防止轮廓图中出现假边缘, 其中计算Γh的公式为

自适应动态阈值是相对固定阈值而言的, 以全局最优为前提, 根据不同的子图像梯度直方图的特征, 确定出每个子图像不同的阈值。再以全局阈值作为基础, 利用子图像梯度分布的特征, 对其进行不同程度的调整, 最后得到的阈值为动态自适应阈值。对任意图像, 设ΓH和ΓL分别为上述描述方法确定的整幅图像的全局高阈值和低阈值, 而Γh和Γl为子图像区域上述方法确定的局部高阈值和低阈值, 最后分割得出子图像的高、低阈值分别为

上式中, 0<β<1为阈值调整率。

假若β=0, 表示不需要调整, 依据全局梯度直方图所显示的特征来分割图像;若β=1, 表示完全依照子图像局部特征进行分割, 体现了动态阈值算法能够不丢失局部细节和兼顾整体最优。在实际应用中, β的取值也是根据需要来确定的, 而子图像的大小可适当地选择。高阈值参数表示梯度幅值小于ΓHigh的像素所占有的比例, 由ΓHigh还可以进一步计算出αh。

3 对虹膜图像进行边缘检测的结果

试验用计算机配置为Intrl (R) Core (TM) i3-21303.4GHz CPU, 256MB显存, 3.74MB内存, 用Matlab编程实现。设图像为M行N列L级灰度, 以传统Canny算法、其他改进算法和改进型的Canny算法作为比较, 处理结果如图1, 算法耗时的比较如表1所示。图1为传统Canny算子、其他改进算法和改进型Canny算子分别对虹膜图像进行边缘检测的结果。

分析得出对虹膜图像的边缘检测的结果表明改进型Canny算子包在原有数据的基础上, 能检测出更多的边缘, 对边缘的检测能力比传统Canny算子好, 而且其纹理检测能力也比传统的Canny算子和基于Otsu算法的Canny算子更胜一筹, 这有利于特征的提取, 能提高其匹配的准确度。另外其耗时也小于传统Canny算子和基于Otsu算法的自适应阈值选取Canny算子, 对于一些需要快速检测的虹膜系统, 可应用此改进型的Canny算子。

4 结论

本文以传统的Canny算法为基础, 提出了一种基于Canny理论的自适应边缘检测方式。通过对比实验得到以下结论:自适应边缘检测得出的图像边缘信息比传统算法得出的图像边缘细节要完整, 噪声干扰不明显, 算法本身的复杂程度也较小;结果得到的虹膜图像的边缘信噪比高, 连通性明显较好, 并且能够自适应地生成高阈值和低阈值检测图像边缘, 智能化程度较高。对虹膜图像边缘检测实现快速、全面和真实是研究工作的最终目标, 但由于时间及基础知识的局限性, 上述算法的研究还有较大的完善空间。

摘要:基于使用传统Canny算子检测虹膜图像后, 部分图像抛物线和圆的检测出现细节不完整等问题, 提出一种基于自适应动态阈值的算子。将整幅图像分割为若干个子区域, 令子图像之间有一定区域的重叠, 然后依据非极大值抑制之后的输出结果自适应地选取每个子图像的高、低两个阈值。为了验证改进算法的有效性, 因而对CASIAI虹膜数据库进行实验并对结果进行分析, 得出改进Canny算法相比传统Canny算子不仅计算复杂度有所降低, 而且能够更好地检测边缘信息。

关键词:边缘检测,Canny算子,自适应动态阈值

参考文献

[1]张树忠.基于Canny理论的彩色图像边缘检测[D].成都, 成都理工大学, 2006.

[2]张玲艳.基于Canny理论的自适应边缘检测方法研究[D].兰州:西北大学.

[3]Demigny D, Lorca F G, Kessal L.Evaluation of edge detectorsperformanceswith a discrete expression of Canny’s criteria[A].In:Proceedings of International Conference on Image Processing[C], Los Alamito s, CA, U SA:IEEE, Computer SOC P ress, 1995:169~172.

[4]Demigny D, Kam le T.Adiscrete expression of Canny’s criteria for step edge detector performances evaluation[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 1997, 19 (6) :1199~1211

[5]Demigny D.Extension of Canny’s discrete criteria to second derivative filters, towards a unified app roach[A].In:Proceedings of International Conference on Image Processing[C].Los Alamitos, CA, U SA:IEEE, Computer SOC Press, 1998:520~524

[6]Worthington P L.Enhanced Canny edge detection using curvature consistency[A].In:Proceedings International Conference on Pattern Recognition[C].LosAlamito s, CA, U SA:IEEE, Computer SOC Press, 2002:596-599.

[7]王春, 叶虎年, 虹膜识别算法的研究[J].贵州工业大学学报:自然科学版, 2000, 6, 29 (3) :48-52.

改进canny算子 篇4

现代计算机网络的发展已经深入到社会经济的各个角落,对社会经济活动的影响是广泛而深入的,人体行为识别是人体运动分析的一种高级形式,对人机交互、安全监控和医疗诊断等领域意义重大。由于人体行为本身是一个复杂的过程,这一复杂程度甚至可以以人体行为艺术来表述,所以如何设计识别模型实现人体行为识别系统的准确行为信息采集和行为信息识别功能,成为人体行为分析系统研究面对的主要问题,因此对基于改进canny算子和神经网络的人体行为识别模型的研究具有鲜明的现实意义。

1 改进的 Canny 算子

1.1 高斯滤波改进

高斯滤波是改进型Canny算子的主要改进技术,通常情况下使用的高斯滤波都是二维滤波形式,滤波函数和图像卷积分别为:

如上述函数所示,二维高斯滤波在改进Canny算子中的应用受σ的影响,σ越小,则函数越集中对噪声的过滤能力就越弱,而σ越大其对边缘数据的过滤能力就会越低,所以在实际应用中高斯滤波改进技术应该根据滤波的实际情况进行调试,确保σ的大小适宜,既能够获得较为理想的过滤效果,同时也能够较为全面的覆盖数据整体。高斯滤波器是一种从数理角度出发对数据信息的一种滤波形式,其本身对几何图形的滤波能力相对较差,所以在实际应用中可以借助形态学滤波器对其滤波效果进行加强,二者的有机结合能够有效的弥补各自的不足,提升滤波效果。

1.2 双阈值法改进

在人体行为分析系统运行过程中,对人体行为信息的采集主要依靠双阈值算法进行,相对于单阈值算法双阈值算法更加灵活对行为信息的采集面更加广阔,但是在实际应用中双阈值的极值,即高阈值T1和低阈值T2的明确存在较大的问题,在实际应用中随着T2的增大,系统去边缘的幅度就会越大,系统对边缘的处理正度就会越大,可以有效的去除边缘的假值,但是过大则会导致边缘值的流失;随着T1的减小,图像的边缘轮廓就会越多图像信息就会越详细,但是过小则会导致图像中虚假边缘过多的问题。

由前文所述,在人体行为分析活动中双阈值存在的缺陷影响重大,所以在改进的Canny算子中,对双阈值法的改进至关重要,在本次试验中采用矩量保持法对Canny算子的双阈值进行最佳取值计算,计算公式如下:

其中M,N是f(x,y)为灰度图像水平和垂直方向上的像素数量。

2 提取人体图像的 Hu 不变矩特征

Hu不变矩是一种优秀的图像处理技术,在人体行为分析系统中的应用具有识别率高、缩放、旋转和评议不变的优点,因此本次研究活动选择Hu不变矩作为人体行为特征信息的采集和分析技术,在实际应用中首先将其输入到BP神经网络中进行学习。假设图像点(x,y)的灰度值为f(x,y)那么整幅图像的(p+q)的阶矩为mpq=

其中p,q=0.1.2···

3 RBF 神经网络的人体行为识别

3.1 RBF 神经网络

RBF神经网络是一种三层结构的网络结构形式,第一层是神经网络的输入层,内部节点数量与输入向量的分量数量相等,第二层是隐含层,其中共含有P个隐藏节点,用于对上一层次的输入数据进行预设分析,第三层是神经网络的输出层,内部含有众多网络节点,节点的数量与输出向量的分量相等。其具体的拓扑结构如图1所示。

3.2 RBF 神经网络人体行为识别步骤

借助RBF神经网络实现的人体行为识别,实际上是以人体行为活动中7个Hu不变矩为媒介的数据输入活动,在行为数据的采集过程中不同的人体行为信息会以7个Hu不变矩的不同排列方式和组合方式呈现出来,这种组织形式和组织结构的不同会在神经网络系统内部转化而成不同的数据信息,根据Hu不变矩的不同形态RBF神经网络就能够实现对人体行为信息的分类,并在进一步分析的基础上形成对人体行为信息的深入了解和识别。

通常情况下RBF神经网络对人体行为信息的识别包括3个内容:1)借助外接数据采集设备将人体轮廓特征组成特征矩阵X=[X1,X2,···XN]作为RBF的输入向量,生成相应的输出矩阵O=[O1,O2···ON]作为每个输入量对应的输出。2)假设隐含层的节点数为P0,采用的k均值聚类算法聚类,计算聚类中心ci以及扩展常数σ1;3)对计算聚类目标函数S进行推算直到输出数据为S<ω(ω为判断聚类活动是否应当结束的目标值,在本次试验活动中ω取值0.7)。

4 仿真实验

4.1 数据集合对比模型

为了检测人体行为识别系统的识别能力,本次试验活动选取了多组仿真样本对系统的识别能力进行仿真检测,检测样本共有十组,每一组都是一种人体行为动作,由九个不同的人分别进行组成一个检测组,在检测活动中为了突出检测的针对性,并保证检测结果的稳定性,检测的背景和检测的视角都相同,基本上排除了人体行为动作识别的其他影响因素。

在具象的模型检测活动中,对九个人完成的诗歌形体动作进行分解组合,共形成了五百个测试样本,其中四百个样本用于对RBF神经系统的学习训练,一百个用于对分析模型的测试,参与测试的共有两个识别系统,一种是传统Canny算子与RBF神经网络组成的识别系统,一种是由改进Canny算子与BP神经网络组成的识别系统,以达到对改进型Canny算子和RBF神经网络性能的测试目的。

4.2 结果与分析

4.2.1 Canny 算子改进前后的识别效果

为了达到对改进型Canny算子的性能检测目的,对改进型Canny算子-RBF系统和Canny-RBF系统进行了分别测试,测试结果如图2所示,改进型Canny算子对五中人体行为的平均识别正确率分别提升了1.52%、2.38%、0.23%、3.89%、2.40%,基于改进型Canny算子对图像的信息进行检测,检测活动生成的检测图像效果要比在传统Canny算子基础上形成的图像完整、精准。

4.2.2 RBF 神经网络和 BP 神经网络的识别效果对比

为了突出RBF神经网路在人体行为识别活动中的优势,选择了改进型Canny-RBF系统和改进型Canny-BP系统进行了对比仿真研究,其平均图像识别率如图3所示,相对于传统的BP神经网络,应用的RBF神经网络对图像信息的识别率有了极高水平的提升。

5 结论

人体行为识别系统是计算机信息技术发展到一定程度形成的先进的人机交互技术,其本身的发展和完善对现代计算机网络技术和社会经济活动的广泛领域都有现实作用,所以对基于改进canny算子和神经网络的人体行为识别模型的研究具有鲜明的现实意义。本文从Canny算子改进技术、RBF神经网络、RBF神经网络对图像信息的识别、实证分析等四个方面对这一问题进行了简要分析,以期能够为基于改进canny算子和神经网络的人体行为识别模型应用水平的提升提供支持和借鉴。

摘要:人体行为识别是现代计算机人机交互工程的高级形式,本质上是对人体行为信息的一种计算机采集和分类识别系统,在这一系统运行过程中系统对人体行为信息的准确采集和精确识别是实现其功能的关键,本文将立足于人体行为识别的实际,在canny算子和神经网络的基础上对人体行为识别模型进行简要分析。

关键词:canny算子,神经网络,人体行为,识别模型

参考文献

[1]姜莹礁.基于聚类RBF神经网络的人体行为识别[J].计算机应用与软件.2013.

[2]叶德堃.基于图像处理和神经网络的光环境优化控制研究[J].计算机应用研究.2013.

[3]杨大春.基于遗传算法优化BP神经网络的行为识别[D].辽宁科技大学.2012.

[4]王洪斌.基于三轴加速度传感器的人体行为识别研究[D].江南大学.2014.

[5]叶银兰.基于Boosting RBF神经网络的人体行为识别[J].计算机工程与应用.2008.

改进canny算子 篇5

随着电视媒体的快速发展,各界越来越重视对电视节目的监播、搜索和查询,特别是对广告节目和其他重要目标节目的监播和查询。字幕是电视图像中的一个重要特征标识,通过对电视节目字幕的检测,可以有效地判断节目内容。字幕检测的方法很多,最常用的是微分算子边缘检测法。在微分算子中又有Roberts,Prewitt,Sobel,Canny,Log等算子,每个算子的检测性能和效果都不一样,其中,Sobel和Canny算子最为典型。在检测中,算子的选择将直接影响字幕的检测速度和准确性。本文仅将讨论Sobel和Canny这两种边缘检测算子,并对其字幕检测性能进行比较。

1 边缘检测与字幕检测

1.1 边缘检测

边缘是图像中所要提取目标和背景的分界线,图像中的边缘由许多边缘元组成,边缘元可以看作是一个短直线段,每个边缘元都由一个位置和一个角度确定。常见的边缘类型有阶梯型、屋顶型和线性型[1]。边缘检测就是利用数字技术提取出图像像元中具有亮度值(灰度)、空间方向梯度大的边和线。边缘检测的目的就是标识图像中亮度变化明显的点。边缘检测的基本内容包括:首先抽取出反映灰度变化的边界点,然后剔除伪边界点,填补边界间断点,并将这些边界点连接成完整的边缘线。边缘检测的方法很多,但大多数是基于方向导数掩模求卷积的方法。导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点算得的值比较高,因此,可将这些导数值作为相应点的边界强度,通过设置门限(阈值)来提取边界点集。边缘检测有滤波、增强、检测、定位等4个步骤。由于噪声的存在可能会使检测到的边缘发生变化或在某些点处发生间断,因此,有必要使用滤波器来滤掉噪声。在使用滤波器降低噪声的同时也会引起边缘强度的损失,增强图像边缘可以弥补损失。

1.2 字幕检测

字幕检测就是对电视图像中字幕边缘的检测。由于字幕在整个电视图像中所占比例较小,对字幕的检测要比对整个图像的检测容易,所耗资源较小,而且检测速度也要比检测整幅图像的快。字幕检测可以实现:1)通过对目标电视节目中的字幕片段检测,可以有效地判断电视节目的广告段。除插播广告外,电视节目的广告段一般都在上一个节目结束与下一个节目开始之间。通过对字幕片段的检测,可以有效地判断这个时间段。2)通过对目标电视节目中所检测到的字幕与样本字幕的比较,可以准确地判断节目内容。在电视节目中,除底行游走字幕外,一般都有与节目内容相匹配的字幕,通过把检测到的字幕与预先输入的样本字幕进行比较,可以有效地判断当前节目是不是自己所要寻找的目标节目,如在新闻节目中,通过对标注字幕和场景字幕的检测,可以判断出新闻的内容和单元。通过此方法还可判断广告节目的插播。3)通过字幕检测和对比,可以进行节目搜索和查询。对指定区域的字幕进行检测能缩短检测时间,加快检测速度,提高判断的准确性。

2 Sobel算子和Canny算子

2.1 梯度

梯度是函数变化的一种度量。在一维情况下,阶跃边缘同图像的一阶导数局部峰值有关,而一幅图像可以看作是图像强度连续函数的取样点阵列。因此,同一维情况类似,图像灰度值的显著变化可用梯度的离散逼近函数来检测。梯度是一阶导数的二维等效式,定义为向量

向量G(x,y)的方向就是函数f(x,y)增大时的最大变化率方向。梯度的幅值由下式给出

梯度的方向定义为

式中:α角是相对x轴的角度。

对于数字图像,最简单的梯度近似表达式为

式中:j对应于x轴方向,而i对应于负y轴方向。

在计算梯度时,可使用2×2一阶差分模板来求x和y的偏导数

式中:Gx实际上是内插点[i,j+1/2]处的梯度近似值,Gy是内插点[i+1/2,j]处的梯度近似值。

2.2 Sobel算子

Sobel算子是一种梯度算子,在技术上,它也是一离散性微分算子。Sobel算子采用3×3邻域计算梯度值,它包含横向和纵向这2组3×3矩阵,其梯度幅值,其中的偏导数用以下公式计算

式中:常数c=2。Gx和Gy可用卷积模板来实现,表示为

其邻域像素点的标记为

在算法上,Sobel算子把重点放在接近于模板中心的像素点上,采用3×3邻域可以避免在像素之间的内插点上计算梯度,Sobel算子对邻域像素的位置影响作加权,它不仅能检测边缘点,而且还能抑制噪声的影响,对噪声具有平滑作用,但其检测的边缘较宽,边缘定位精度不够高。由于Sobel算子算法比较简单,可以通过卷积模板快速实现,当对精度要求不是很高时,是一种较为实用的边缘检测算子。

2.3 Canny算子

Canny算子是一阶微分算子,它有许多改进形式[2,3],但传统的Canny算子算法是通过在2×2邻域内求有限差分来计算梯度幅值。

Canny算子法实现的方式为:

1)先用2D高斯滤波模板对图像进行卷积以消除噪声。

2)对滤波后图像中的每个像素,计算其梯度的大小和方向。计算可采用以下2×2大小的模板作为对x方向和y方向偏微分的一阶近似

由此得到梯度的大小M和方向θ

通过梯度的方向,可以找到这个像素梯度方向的邻接像素为

3)对梯度幅值进行非极大值抑制。若某个像素的灰度值与其梯度方向上前后2个像素的灰度值相比不是最大的,那么这个像素值置为0,即不是边缘。幅值图像阵列M的值越大,其对应的图像梯度值也越大,但这还不足以确定边缘,为确定边缘,必须细化图像中的屋脊带,这样才会生成细化的边缘;

4)阈值化和边缘连接。对经非极大值抑制的幅值进行双阈值化处理,去掉伪边缘。

Canny算子有3个准则:1)信噪比准则,即不漏检真实的边缘,也不把非边缘点作为边缘点检出,使输出的信噪比最大;2)定位精度准则,即检测出的边缘点尽可能在实际边缘的中心,也就是标记出的边缘位置要和图像上真正边缘的中心位置充分接近;3)单边缘响应准则,即单个边缘产生的多个响应的概率要低,虚假边缘响应能得到最大抑制。

Canny算子是对信噪比与定位乘积进行测度,得到的最优化逼近算子。Canny算法实质是用高斯函数进行平滑图像运算,然后以带方向的一阶微分算子定位导数最大值。Canny算子是一阶传统微分中检测阶跃性边缘效果最理想的算子之一。在算法上,Canny算子比Sobel算子复杂,步骤较多,检测速度比Sobel慢,但它的去噪能力比Sobel算子的去噪能力强,检测出的边缘较为精细,定位精确,检测精度比Sobel高。

3 Matlab仿真实验

用Matlab的边缘检测函数[4],对以下两幅电视截屏图像分别作Sobel和Canny仿真字幕检测。一幅为字幕段检测,一幅为字符检测。Matlab边缘检测函数的标准格式为edge(文件名,算子名,阈值,滤波器),不考虑滤波器的格式为edge(文件名,算子名,阈值),其检测程序如下:

上一段程序中:(1)为读入指定路径的文件名为YT1的jpg格式图像,如果不指定路径,默认为当前路径,文件格式可以是jpg,bmp,gif,tif等多种格式;(2)为灰度化原图像,即把原图像二值化;(3)对图像进行Sobel边缘字幕检测;(4)对图像进行Canny边缘字幕检测;(5)显示Sobel字幕检测结果;(6)显示Canny字幕检测结果。

各个实验的结果如图1~图4所示。

以上各仿真实验均未带滤波器,其阈值为观察到检测结果为最优的阈值。图1和图3为原图检测,图2和图4加入了少量的Salt&pepper噪声。可以看出,Sobel和Canny算子都具有平滑作用。Sobel算子对噪声敏感,具有一定的抑噪能力,但定位精度不高。Canny算子具有较强的去噪能力,检测精度较高,边缘检测比较精细。在检测字幕段时,虽然Sobel算子的去噪能力不如Canny算子强,但两者都能完整地检测出图像中的字幕段,对字幕段来说,两种算子的检测结果差别不大。在检测字符时,Canny算子的检测效果明显优于Sobel算子,特别是在加噪检测中,两者的差距更明显。

4 小结

从以上仿真实验和算法分析可以得出,Sobel算子的算法较为简单,容易实现,运算速度较快,但对噪声敏感,在检测字幕段时与Canny算子的检测效果区别不大,可用于电视字幕的快速检测,特别是在检测字幕段时可优先考虑Sobel算子。Canny算子算法复杂,其运算和检测速度都比Sobel慢,但其检测精度和效果明显优于Sobe算子,可用于电视字幕的精确检测,特别是对字符的检测和比较。

参考文献

[1]MOON H,CHELLAPPA R,ROSENFELD A.Optimal edge-based shaped etection[J].IEEE Trans.Image Processing,2002,11(11):1209-1227.

[2]柴俊华,应骏.基于Canny算子的图像轮廓提取的改进方法[J].电视技术,2008,32(S1):48-50.

[3]余洪山,王耀南.一种改进型Canny边缘检测算法[J].计算机工程与应用,2004(20):27-29.

改进canny算子 篇6

测量技术是所有工业技术发展的基础和先决条件, 现代化的工业生产对微小尺寸的测量具有越来越高的要求。从尖端科学的热核反应到日常生活中的化学纤维, 都有微小尺寸测量的问题。面对这类的问题, 传统的接触式测量方法已经满足不了工程上的需要了。如今, 基于光电技术发展起来的光电测量, 已逐渐成为人们进行精密测量时的首选。近些年来国内外涌现出了许多新的光电测量方法, 如解调测量法、光学投影法、原子力显微镜 (AFM) 测量法等。然而这些检测方法普遍存在成本高, 测量效率低, 稳定性不足等缺点。本文提出一种基于图像处理的非接触测量技术, 采用一种简便快捷的数字图像处理算法, 对工件尺寸进行测量, 实现了测量的自动化, 大大降低了测量系统的成本, 提高了测量的效率和准确性。

1 测量系统的组成

本测量系统由照明光源、光学系统、CCD成像系统、计算机图像处理系统组成。照明光源发出的光经过准直光路形成平行光后投射到被测工件上。工件经光学系统放大后由CCD相机接收成像, 图像采集卡将图像的信息转变成数字信号后传送给计算机。计算机对这些数字信号进行运算处理来提取目标图像的轮廓特征, 然后根据处理结果计算得到被测工件的几何参数。实验使用Visual++6.0软件平台来进行数字图像的处理。

2 测量算法的设计

在工件几何参数的测量中, 边缘检测是最关键的图像处理技术, 其质量直接关系到测量结果的精确程度。

2.1 图像的滤波处理

由于梯度计算容易受到噪声影响, 因此边缘检测的第一步是用滤波尽量去除噪声。本文采用中值滤波来消除可能出现的随机噪声。

需要注意的是, 降低噪声的平滑能力越强, 边界强度的损失也就越大。

2.2 轮廓的提取

经过滤波处理后的图片就可以通过边缘检测来提取轮廓信息了。

常用的边缘检测的算法很多, 如基于一阶导数的Roberts算子、Sobel算子、Prewitt算子, 基于二阶导数的高斯-拉普拉斯算子等。Canny算子是比一种较新的能在抗噪声干扰和精确定位之间寻求最佳折中的方案。

Canny边缘检测的基本思想就是首先对图像选择一定的Gauss滤波器进行平滑滤波, 然后采用非极值抑制技术进行处理得到最后的边缘图像

在Visual C++6.0平台上用C++语言实现Canny算子的轮廓提取过程, 得到图1所示的处理结果:

可见芯片的边缘清晰, 完整, 完全可以满足后续测量的要求。

2.3几何参数的换算

本文将采取一种简便快捷的算法来进行边长的测量, 尽可能的提高测量效率。

经过Canny算子进行边缘提取后的图像已经是二值化图像了, 像素只有0和1两种取值, 一般用0来表示黑色, 1来表示白色。该算法对图片进行逐行扫描, 直到第一个像素为1的点A并把它的坐标 (m, n) 保存, 然后继续扫描, 找到该行最后一个像素为1的点B并将它的坐标 (k, n) 保存。最后将两个像素点的横坐标相减再乘以像素横向的宽度w, 就计算出了被测芯片的边长L。

3 实验结果与分析

实验采用DH-SV1310FC高分辨率数字CCD工业摄像机, 像素尺寸为6.45μm×6.45μm。以边长为14.040mm的标准量块为测量对象, 进行6次重复测量, 测量结果如表1所示。

由表1可以看出, 测量精度在0.003mm以内。

4 结论

本文对图像处理在尺寸测量中的应用进行了研究。实现了一种用Canny算子来对图像进行轮廓提取, 直接根据轮廓信息来对被测物进行尺寸的测量方法并进行了实验测量。实验结果表明该方法的测量精度在0.003mm以内。

摘要:本文提出了一种基于Canny算子的尺寸测量方法, 利用计算机视觉代替人眼对被测工件参数进行非接触测量, 在VisualC++6.0平台上开发了一种测量软件系统, 实现了测量自动化。通过多次实验进行验证, 结果表明, 这种方法克服了传统人工测量所造成的各种误差, 测量精度达到了0.003mm, 大大提高了测量的准确性和效率。

关键词:图像处理,Canny算子,二值化,亚像素

参考文献

[1]伍尤富.图像处理中边缘检测研究方法[J].舰船电子工程, 2006 (4) :35-38.

[2]王宝光, 吴进保.线阵CCD器件在刀具测量定位中的应用[J].天津大学学报, 1992 (3) :132-136.

[3]冈萨雷斯R.C.李叔梁等译, 数字图像处理[M].北京:北京科学出版社, 1998

改进canny算子 篇7

本文针对夜间只有车灯照射的路面,运用基于Otsu算法的Canny边缘检测算法,结合Hough变换,在斜率约束的基础上提出一种内侧车道线提取算法,并通过实验验证了算法的有效性。夜间车道线的检测为安全辅助驾驶系统和智能车辆在夜间道路上的行驶提供了保障。

1 图像预处理

车道线检测的信息源自卫程V6S型行车记录仪,帧率为30帧/s,获得的图像像素为672×378。车辆所处环境、光线条件、图像传输过程不可避免带入了噪声干扰,图像的边缘比较模糊,影响车道线的良好检测,图像预处理可有效减少图像噪声的干扰,增强车道线边缘,为后续的车道线的精确检测提供良好的基础。本文的图像预处理过程如图1所示。

1.1 图像灰度化

彩色图像中每个像素都有R,G,B三个分量,每个分量的取值范围为(0,255),而灰度图像只有一个分量,像素值的变化范围为(0,255),灰度图像占用内存空间小,考虑到车道线获取实时性的要求,本文采用符合人眼特征的灰度化方法对车载摄像机获取的彩色图像进行处理。由于人眼对绿色的敏感度最高,对蓝色的敏感度最低,因此,对R,G,B三个分量进行加权平均能得到较合理的灰度图像,其灰度值计算如公式(1):

1.2 图像去噪处理和边缘增强

预处理阶段利用高斯滤波进行去噪处理。高斯滤波是对高斯函数进行离散化,以离散点上的高斯函数值为权值,对灰度矩阵的每个像素点做邻域内的加权平均[7],可大大减少噪声对图像中目标检测识别的干扰。

滤波后,对要识别的车道线来讲仍然存在着大量的干扰信息。图像边缘增强的主要目的是根据车道线边缘在灰度图像中的灰度特征,通过一定的边缘强化技术尽量的突出车道线轮廓信息,同时消减其他非车道线物体轮廓带来的干扰作用[8]。经过图像边缘增强之后,使得后续车道线的检测识别更加准确。本文采用基于Laplacian算子的图像边缘增强方法[9]进行车道线边缘的增强。预处理后的图像如图2所示。

2 边缘检测

夜间路面图像受到光照不均的影响,不适合采用专门的阈值分割算法来获取二值图像,而边缘检测算法不需要采用专门的阈值分割算法即可获取二值图像。物体边缘是图像局部亮度变化显著的区域,图像边缘的确定与提取对于整个图像场景的识别与理解是非常重要的,同时也是图像分割所依赖的重要特征,常用的边缘检测算子有梯度算子、Robert算子、Sobel算子、Prewitt算子等[10],各种算子针对不同的场合各有优缺点,本文中车道线的检测采用Canny边缘检测算法,John Canny于1986年提出Canny算子,它与Marr(Lo G)边缘检测方法类似,Canny边缘检测算法能最大限度地识别出图像的真实边缘,且能剔除噪声干扰,图像中的边缘仅被标识一次。

Canny边缘检测算子满足边缘检测的最优准则:信噪比准则、定位精度准则和单边缘响应准则[11]。Canny边缘检测算法运用高斯滤波平滑图像,采用窗口计算灰度梯度的幅值和方向,然后对梯度图像进行非极大值抑制,最后采用双阈值方法从候选边缘中检测和连接边缘。

针对Canny边缘检测算法中双阈值无法确定的问题,本文利用Otsu算法[12]求出经过预处理的图像底部1/3区域的最佳阈值TH,Canny的高阈值取为2TH,低阈值取TH。针对不同图像TH的值不同,进而自适应的确定了Canny算法的高低阈值。由图2可以看出夜间路面图像的上半部分几乎都是黑色的,所以此处用图像底部1/3区域求取最佳阈值TH。边缘检测结果如图3所示。

3 车道线检测

Canny边缘检测所得的边缘信息是车道线检测的重要信息,在此基础上,利用Hough变换对直线进行检测。Hough变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的直线映射到另一个坐标空间的一个点上形成峰值,从而把检测直线的问题转化为统计峰值的问题。基于统计概论的霍夫直线检测Houghlines P不仅执行效率较高,而且能检测到直线的两个端点[13]。将图像中的点从(x,y)空间转换到(r,θ)概率投票空间,设定最小投票数、最小线段长度和线段间距离容忍度,实现精确的直线检测。r和θ满足公式(2)的关系:

式(2)中r表示图像空间中直线到原点的距离,θ是直线与x轴的夹角。

车道线的主要信息位于图像的下半部分,为了减轻可能存在前方车辆的影响,本文提取边缘图像底部的1/3区域为感兴趣区域,进行Hough变换直线检测。本文的车道线检测算法只检测车辆所在的车道,且最终车道线的检测结果源自车道线内侧。由于旁侧车道线、隔离带、护栏等可能和车道线有着相近的直线特性,无法排除它们对检测结果的干扰,Hough变换检测的信息中夹杂无关信息,所以需要在Hough检测的基础上改进车道线的检测算法。本文通过对图像的分析,在直线斜率约束的基础上提出内侧车道线检测算法,剔除了其他干扰直线,实现了内侧车道线的提取。

典型的摄像机安装位置为车辆后视镜处,本文以该位置处相机采集的图像为处理样本,通过大量的图像分析可知左侧车道线为15°~80°的直线,右侧车道线为100°~165°的直线。以左上角为原点,x向右,y向下建立直角坐标系,左车道线的斜率范围为:-6<k1<-0.26,右车道线的范围为:0.26<k2<6。通过该斜率约束,可有效排除水平线、垂直线等对车道线拟合的影响。Houghlines P保存了检测到的直线的两个端点,从而易求出直线的斜率,筛选出符合斜率范围的直线,结果如图4所示。从图4可以看出左右车道线各有多条线段被检测出,在此基础上进一步筛选出内侧车道线,最终确定的车道线满足公式(3)。

公式(3)的原理如图5所示,w为图像的宽度,h为图像高度,B、E分别是Hough检测直线的两个端点,(Bx,By)是起始点的坐标,(Ex,Ey)是终止点的坐标,Xh是车道线与图像底边界交点的横坐标,D表示被检测直线与视野中心的距离。D取值最小时,即为车辆所在车道的左右车道线的内侧线,最终检测结果如图6所示。

车道线检测的算法如下:

(1)采集车道线图像信息,用更符合人眼视觉特征的灰度化方法得到车道线的灰度图;

(2)Gaussian滤波并采用基于Laplacian算子的图像边缘增强方法进行车道线边缘的增强;

(3)Otsu算法求取图像底部1/3区域的最佳阈值TH,取高阈值为2TH,低阈值为TH,进行Canny边缘检测;

(4)取图像底部1/3区域为感兴趣区域,采用改进的Hough变换进行直线检测;

(5)采用本文提出的车道线提取方法确定最终的车道线信息。

算法流程图如图7。

4 实验结果与分析

为了验证本文算法的有效性,通过车载摄像机采集了各种夜间车道线(实线、虚线、直道、弯道)图像,并利用Visual Studio2010配置Opencv2.4.9在CPU为2.5 GHz,RAM为4.00 GB的32位Windows操作系统上进行本文提出算法的实验,最终识别的车道线信息用红色实线标注,实验结果如下。

图8、图9、图10和图11是不同路况的车道线检测识别图像,(a)是根据符合人眼视觉信息的灰度化算法提取的图像灰度信息,(b)是Canny边缘检测结果图,可以看出图像的上半部分为黑色区域,中间部分可能存在车辆,所以本文提取图像底部的三分之一信息如图(c)所示,(d)为运用本文算法识别的车道线信息,标注的车道线为车辆所在车道的内侧车道线。

通过以上各种车道线的检测结果得知,本文方法能够稳定地对夜间只有车灯照射路面进行车道线识别,能够排除前方车辆以及旁侧车道线、隔离带、护栏等的干扰,有较强的识别能力。

本文算法在CPU为2.5 GHz,RAM为4.00 GB的32位Windows操作系统上运行平均耗时为165.45 ms,各步所用的平均时间如表1所示。可以看出本文算法的耗时较长,算法有待进一步优化。

5 结论

上一篇:中小企业经营创新探讨论文下一篇:企业内部的伦理管理