Canny算子

2024-10-23

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

随着电视媒体的快速发展,各界越来越重视对电视节目的监播、搜索和查询,特别是对广告节目和其他重要目标节目的监播和查询。字幕是电视图像中的一个重要特征标识,通过对电视节目字幕的检测,可以有效地判断节目内容。字幕检测的方法很多,最常用的是微分算子边缘检测法。在微分算子中又有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算子 篇4

测量技术是所有工业技术发展的基础和先决条件, 现代化的工业生产对微小尺寸的测量具有越来越高的要求。从尖端科学的热核反应到日常生活中的化学纤维, 都有微小尺寸测量的问题。面对这类的问题, 传统的接触式测量方法已经满足不了工程上的需要了。如今, 基于光电技术发展起来的光电测量, 已逐渐成为人们进行精密测量时的首选。近些年来国内外涌现出了许多新的光电测量方法, 如解调测量法、光学投影法、原子力显微镜 (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算子 篇5

医学图像分割是医学图像分析领域的一个挑战性的研究课题。而人体肝脏图像的分割又是医学图像分割中的难点,分割结果的好坏直接影响医生对病人的诊断结果。本文重点研究和实现对CT肝脏图像中肝脏区组织结构的分割。基本研究技术路线是:先利用Canny算子边缘检测法实现了对肝脏CT图像的边缘检测,然后为了克服Canny算法对图像的平滑受高斯滤波参数σ的影响,且检测不能达到单像素级和易出现伪边缘等缺点,在以上工作的基础上,实现了一种基于Canny边缘检测Level Set图像分割方法,这种方法的基本思想是通过低维到高维的映射,实现对不均匀的受噪声影响的肝脏CT图像的分割。该方法具有适应性强和精确度高的特点,能准确地提取到目标的边缘,实验也取得比较好的分割结果。

1 水平集的基本理论

水平集(level set)方法是由Osher和Sethian提出的,可应用于对轮廓面或轮廓线的运动跟踪,如曲线演化。曲线演化是利用描述曲线几何特征的两个重要参数———单位法矢和曲率,来研究曲线随时间的变形。单位法矢描述曲线的方向,曲率则表述曲线弯曲的程度。其演化过程可以用如下的偏微分方程表示[1]:

式(1)中,X(s,t)为演化曲线,t是时间,演化其实就是曲线在各个时间上的不同状态。N为单位法矢,V(X)是决定曲线X上每点演化速度的速度函数。图1为曲线演化示意图。

由图1可以看出,任意形状的简单闭合曲线(没有交叉点的曲线),在上述偏微分方程的驱动下,将会逐渐变平滑,并收缩成一个圆点。

通过前面的介绍,已经知道曲线演化主要涉及到两个几何参数,一个是曲线的曲率,一个是曲线的方向矢量,而这两个参数的计算并不是一件容易的事情,水平集方法正好满足这些要求,能够更有效更方便处理曲线的几何参数。

前面提到水平集方法可以对活动轮廓进行跟踪,但是它不直接对轮廓进行操作,跟踪过程还可以用数学方法来表示。其基本思想是:将轮廓看成高一维函数Ψ(x,t)(称为水平集函数)的零水平集,然后写出水平集函数所满足的偏微分方程,求解此方程,推进水平集函数,计算到要求时刻水平集函数的零水平集,得到界面的形状,界面的法向方向,曲率等由水平集函数的偏导数容易算出。那么在任何时候,通过从输出中提取零水平集Γ((X,t)){Ψ(x,t)=0}来得到演化轮廓[2]。

水平集方法主要应用于图像的分割中:首先利用一个闭合曲线圈定图像平面上的检测目标,然后利用图像基本的特征,比如平均灰度、梯度以及边缘信息等来控制曲线演化,使该闭合曲线最终停止目标的轮廓边缘,从而实现对图像的分割[1]。

具体的做法如下:给定待分割图像上的一条闭合曲线,把整个图像划分为两个区域:

(1)曲线的外部和内部区域,如图2所示。

(2)在平面上定义距离函数D(x,y,t)=±d,其中d是平面上的点(x,y)到曲线的最短距离,函数符号取决于该点在曲线内部还是外部,一般定义曲线内部点的距离为负值,t表示时间。

在上面的步骤中要注意的是:曲线是t=0时的曲线,即初始曲线,生成的符号距离函数作为水平集函数的零水平集;点(x,y)是应该是曲线上的点,这里的目标曲线是初始曲线。d是点x到初始曲线的距离。

2 Canny边缘Level Set分割

在利用水平集方法对医学图像进行分割时,很显然,前提是要能获得一个可以圈定分割目标的闭合曲线,即目标边界。在对图像进行基于边界的分割处理时,所要进行的第一步便是对图像进行边缘检测,边缘检测是基于像素灰度的不连续性,那么可以采用对像素求一阶或二阶导数,得到过零点和极值点,来确定目标的边界。在数学中,求导可以近似地表示微分,因此,常用微分算子来进行边缘检测。

但是,医学图像都会受到噪声的干扰,求一阶或二阶导数会扩大噪声,而影响分割的精度及最终的结果。相比传统的微分算子,Canny算子是性能比较优良的边缘检测算子,它是高斯函数的一阶导数[3]。对噪声有很好的抑制力,较好地平衡了信噪比和检测精度这两个分割标准之间的矛盾。

在本次研究中,首先利用Canny边缘检测算法来获取CT图像中肝脏的边界。但是平滑是对整个图像进行的,对边缘也进行了平滑,最终使得分割达不到单像素级,得不到精确定位的边缘。水平集方法可以跟踪活动轮廓,能最终停留在目标的边缘,但是其演化仅依靠图像局部梯度信息,而未考虑空间信息,所以对噪声很敏感,就可能会发生内部空洞和边界泄露现象。针对上述算法特点及问题,可以对Canny边缘检测算法和水平集分割算法相结合,取长补短,来对图像进行分割,得到一个较精确的目标。

具体做法为:

(1)在Canny边缘Level Set分割算法中首先要设计一个滤波器[1]。该滤波器就是使用公式(1)[4]来计算偏微分方程的更新解。

式中,A是水平对流系数,P是传播系数,Z是均值曲率的一个空间调节系数,常数α,β和γ是每个系数在界面运动上相关项的权重。

(2)在算法中定义一个速度系数,用来最小化一幅图像中Canny边缘的距离D。

(3)对步骤(2)所得到的距离进行平方最小化,来构造水平对流系数,如式(2)所示[5]。

(4)在水平对流领域内演化初始水平集,直到它停止在Canny算法检测的图像边缘。

通过前面分析了解到采用Canny边缘检测Level Set算法分割时,需要输入两个图像:一个是初始模板图像,即初始水平集;第二个是待分割的原始图像,从这个图像可以计算出传播系数和曲率系数。具体操作时,需要由用户先定义出待分割对象的初始轮廓,再利用水平集的进化功能,使水平集一直进化到符合待分割对象的解剖结构为止[6]。

初始模板通常由用户给出,在本文中,选用来源于华中科技大学同济医学院附属同济医院的肝脏CT图像序列中的第206号切片来得到初始模板。实现步骤为:

(1)对n=206号图像进行滤波去噪,采用各向异性扩算滤波法,保留边缘信息。

(2)获取初始水平集。采用独立连接阈值法[7]对由步骤(1)得到的滤波后的图像进行分割,由此确定滤波后的图像中肝脏组织的最低阈值Lower Threshold=185和最高阈值Upper Threshold=253。

(3)在由步骤(1)得到的滤波后图像的肝脏区域设置一个种子点。然后采用连接门限阈值法[8],结合步骤(2)得到的阈值区间和种子点,对步骤(1)得到的图像进行分割。得到初始模板图像。

综上所述,Canny边缘Level Set算法的实现流程如图3所示[5]。

3 实验结果与讨论

本文采用上述Canny边缘Level Set分割算法对图4(a)进行分割,分割所采用的参数及结果如表1、图4所示。

通过分割结果可知,虽然得到的初始水平集不是很好,存在空洞,边缘不平滑,有尖角存在,但是采用Canny边缘水平集方法分割得到的最后结果却可以非常精确地提取到平滑的、不受噪声影响的肝脏轮廓。对比Canny边缘检测算法和基于Canny边缘水平集算法,发现Canny边缘检测水平集算法有以下的优点:

(1)能得到最后的用户期望的待分割的区域。而且得到的轮廓线更加准确,没有伪边缘。

(2)受局部噪声的影响较小,局部的噪声点只会对轮廓的扩展过程造成一些影响但不会影响到最终轮廓的形状,能更好地平滑图像而且分割后的图像非常清晰。

(3)该方法能够很好地处理各种拓扑结构复杂的组织器官的分割,可以处理轮廓尖角、轮廓的拼接、融合、分裂等各种情况,非常适合用于医学图像的分割。

当然,该算法也有需要改进的地方,例如,由于迭代次数很大,计算量比较大,使得程序运行时间很长,对硬件的要求要高于Canny算法和区域生长算法。

4 结束语

本文主要研究基于边界的分割算法对人体肝脏CT图像的分割。首先采用了经典的Canny算法,Canny算法是具有高斯平滑功能的边缘检测算法具有信噪比大和检测精度高的优点,但是同时也存在对噪声敏感的缺点,且得不到最终要分割的肝脏轮廓。只能适合作为分割的预处理或者中间环节和其它的分割方法一起使用。水平集方法是基于模型的方法,不需要直接对轮廓进行操作,其基本的思想是低维到高维的映射。这种方法受局部噪声的影响较小,能更好地平滑图像。在综合两种方法的优缺点的基础上,将Canny算法与水平集方法相结合,来得到轮廓清晰、受噪声影响小的分割结果。实验结果证明基于Canny边缘水平集分割算法对肝脏区域的分割效果很好,得到了轮廓线准确,信噪比高、信息丰富且不需要人为设置种子点或者阈值区间从而对结果产生影响的目标区域,还能够较好地处理医学图像中常见的解剖结构和拓扑变化。但是该方法也有其显著的缺点:一是在高一维空间上进行曲面演化,因此数据计算量很大,计算复杂性较高且计算时间较长;二是当两个物体存在嵌入时,不能分割出所有物体。因此,还需要更深入的学习和研究来克服这些困难。

总而言之,不存在一个分割算法对所有类型的医学图像都一样能奏效,最有效的方法就是把很多不同的方法组合起来使用,扬长避短,来求得较理想的分割结果。

摘要:文中主要实现了一种基于Canny边缘检测水平集图像分割方法,这种方法的基本思想是通过低维到高维的映射,实现对不均匀的受噪声影响的肝脏CT图像的分割。该方法具有适应性强和精确度高的特点,能准确地提取到目标的边缘,实验也取得了比较好的分割结果。

关键词:Canny边缘检测,水平集,肝脏CT图像分割

参考文献

[1]李俊.基于曲线演化的图像分割方法及应用研究[D].上海:上海交通大学图书馆,2001.

[2]Ibanze L,Schrader W,Ng L,et al.The ITK Software Guide[M].The Insight Software Consortium.USA:[s.n],2005.

[3]章毓晋.图象分割[M].北京:科学出版社,2001.

[4]Sethian J A.Level Set Methods and Fast Marching Methods[M].Cambridge University Press,1996.

[5]王安明.基于ITK的医学图像分割[D].南昌:南昌大学图书馆,2007.

[6]高琳,罗晓辉,何立新.水平集方法在CT肝脏图像分割中的应用[J].计算机工程与应用,2005(36):201-203.

[7]彭微.基于区域的肝脏病灶CT图像分割及实现[J].信息技术,2011(11):132-133.

Canny算子 篇6

本文针对夜间只有车灯照射的路面,运用基于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 结论

Canny算子 篇7

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

上一篇:工伤事故责任下一篇:逾期档案统计

本站热搜