教学工作的资源分享

基于OpenCV和改进的Canny算子的路面裂缝检测-徐欢

教育信息化2.0

教育信息化2.0

2014年12月第三十五卷第十二期计算机工程与设计

COMPUTERENGINEERINGANDDESIGN2014年Vol.35

12号

基于OpenCV和改进的Canny算子的路面裂缝检测徐欢、李振璧、姜媛、黄剑波(安徽理工大学电气信息工程学院,安徽淮南232001 )。

摘要:在路面裂缝检测中,检测的实时性和准确性也同样重要,利用CCD摄像机采集的视频图像,研究了

改进OpenCV开源平台和Canny算子的路面裂缝检测技术。 通过对Canny算子的分析和研究,找出其存在的缺陷,并利用形式状态学滤波改进了传统的滤波方式,采用Ostu算法实现了双阈值的自适应获取。 实验结果表明,改进的Canny算子对在检测路面裂缝时,保证了检测的实时性,且提高了检测的精度。关键词: OpenCV; Canny运算符; 路面裂缝检测; 形态学滤波; Ostu算法

中图法分类编号: TP391.41文献识别编号: a文章编号: 1000-7024(2014 ) 12-4254-05受理日期: 2013-12-03; 修订日期: 2014-02-15基金项目:安徽省高校省级自然科学研究基金项目(KJ2012B062 ) )。

作者简介:徐欢(1989-),男,安徽桐城人,硕士研究生,研究方向为图像识别、图像处理; 李振璧(1959-),男,山东济宁人,硕士、教授、研究方向为计算机视觉、控制理论等领域的姜媛媛(1982-),女,安徽阜阳人,硕士,副教授,研究方向为模式识别、智能诊断及故障预测; 黄剑波(1990-),男,安徽合肥人,硕士研究生,研究方向为物联网技术。 E-mail:xuhuan.009@163.compvementcrackdetectionbasedonopencvandimprovedcannyoperator徐环,李振-毕,江玉安-原,黄建博

(collegeofelectricalandinformationengineering,anhuiuniversityofscienceandtechnology,Huainan232001,China )abstract:inthepavementcrackdetection,the real-timeandaccuracyofdetectionarebothimportant,byusingvideoimagestakenbytheCCDcamera,akindofpavementcrackdetectiontechniquebasedonopencvopensourceplatformsandtheim -provedcannyedgedetectionoperatorwasputforward.byanalyzingthecannyoperator,itsshortcomingswerefoundout.theoriginalfilterwasimprovedbyusingtheadaptivemorphologicalfiltering,andtheostualgorithmwasusedtoachievethedualthreshold gain.theexperimentalresultsshowthattheimprovedcannyoperatoronthepavementcrackdetectionnotonlygua -ranteesthereal-timedetection,butimprovesthedetectionaccuracy。Keywords:OpenCV; Cannyoperator; pavementcrackdetection; morphologicalfiltering; Ostualgorithm0领先

早期人工检测的方式不能保证人员、财产的安全,

而且,大量消耗时间、人、物的力量。 通过计算机的视觉和图像处理技术,准确有效地检测路面裂缝已成为目前的研究的重点和热点。

目前,几乎没有基于计算机视觉的路面裂缝检测方法法同时满足实时性和准确性的要求。 路面本身的纹理和由于光和阴影等外部干扰,路面图像中含有很多噪声,成为原因路面裂缝的检测变得非常复杂。 目前常用的路面裂缝检测该方法基于连通域相关[2]、边缘检测[ 3,4 ]和自适应阈值分删去[5]等。文献[6]针对路面破损图像处理的边缘检测方法研究研究提出了基于形态学和Sobel算子的路面破损判别算法。在此基础上,利用安装在汽车前端的CCD摄像机得到视频图像利用OpenCV函数库,利用OpenCV的改进Canny边缘检测算法实现实时、准确的路面裂缝缝纫检查。1 Canny算子与OpenCV平台

19世纪80年代JohnCanny提出的Canny算子是一个基于优化准则的边缘检测算子。 因为Canny算子很严格的评价标准,良好的抗干扰能力以及较高的检测精度被广

泛应用于图像边缘检测[7]。OpenCV (opensourcecomputervisionlibrary)是由一系列 C函数和少量 C++构成的开源计算机视觉库,实现了在图像处理和计算机视觉方面的诸多算法,其中就包 括 Canny算 子。它的设计目标是执行速度快,主要关注 实 时 应 用,能够充分发挥多核处理器的 优势,涵盖了如 医 学 成 像、特 征 检 测、运动识别与跟踪、机器人和3D重建等计算机视觉应用领域[8]。DOI:10.16208/j.issn1000-7024.2014.12.037第35卷 第12期   徐欢,李振璧,姜媛媛,等:基于OpenCV和改进Canny算子的路面裂缝检测2 基于 OpenCV函数库的路面裂缝检测

针对路面图像的复杂性,本文结合 OpenCV及其函数库的优点,分步实现了路面裂缝检测,其主要包括以下步骤:(1)视频图像的采集:当 CCD 摄相机作为输入设备时,可以通过一种便捷的方式来处理实时读入的视频流,即 OpenCV 中 的 函 数 cvCreateCameraCapture (intindex),可以通过index的参数确定要使用的摄像机,当只有一个摄

像机时,参数取0。如果读入成功,将返回一个指向已经初始化的cvCapture结构的指针,随后就可以读入视频帧。(2)获取视频中的图像序列帧:创 建 一 个 有 效cvCap-ture结构之后,就可以开始读视频帧。本 文 利 用cvQuery-Frame (cvCapture*capture)函 数,该 函 数 以cvCapture*指针为参数,帧读入成功时返回 (1),否则读入0。然后将

视频帧复制到一个由 OpenCV 管理的内存空间。(3)对视频图像序列帧灰度化:为了使方案满足实时性的要求,提高图像处理速度,对其预处理的是灰度化 处理,使之成为8位 的 灰 度 图 像,以此来减少处理路面图像的数 据 量[9]。 这 个 转 换 过 程 可 以 用 OpenCV 中 的 函 数cvCvtColor ()函数来实现。

(4)路面图像裂缝 检 测:本 文 通 过 Canny算 子 对 路 面裂缝进行检测,利 用 OpenCV 中 的 CVCanny ()函 数。函数采用 Canny算子发现输入图像的边缘而且在输出图像中标识这些边缘。将上述流程通过 OpenCV2.4进行实现,实验结果如图1所示。

图1 路面裂缝检测实验结果

迎新系统

迎新系统

下文将对 Canny边缘检测算子的原理进行分析与研究,找出 Canny边缘检测算子存在的问题,以期找出解决问题的方法。3 Canny算子的原理与缺陷

Canny边缘检测算子首先通过高斯滤波函数对图像进行滤波去噪,然后对去噪后的图像进行梯度幅值计算,之后进行梯度幅值方向上非极大值抑制,最后通过双阈值处理实现边缘点检测及边缘连接。3.1 Canny边缘检测算子实现原理(1)图像的高斯平滑滤波

以二维高斯函数构建滤波器,通过滤波模板与原图像的卷积可实现平滑图像。二维高斯函数表达式为G(x,y)= 12πσ2ex2+y2

2σ

2 (1)其梯度矢量为

G = G/x[ ] G/y(2)

为得到更高的处理速度,如 下 式 将 G 中 的 两 个 滤 波卷积模板进行分 解 后,得到了两个更为简单的一维行列滤波器,从而实现了提高速度的目的G

x=kxex22σ2ey

2σ

2 =h1(x)h2(y) (3)Gy=kyey2

2σ2ex22σ

2 =h1(y)h2(x) (4)

式中:k为常数。σ为方差,人为设置的平滑参数,控制图像平滑的程度。(2)梯度幅值和方向的计算

为得到高斯平滑滤波后图像的梯度方向和幅值,Canny边缘检测算子利用邻域一阶偏导的有限差分来进行计算。图像I(i,j)在x方向的偏导数为P(i,j),在y方向上的偏导数为Q(i,j)P(i,j)=I[i,j+1]-I[i,j]+I[i+1,j+1]-I[i+1,j]2

(5)

Q(i,j)=I[i,j]-I[i+1,j]+I[i,j+1]-I[i+1,j+1]2(6)

则图像每个像素点的梯度幅值 M 、方向θ为

M(i,j)= P(i,j)2 槡 +Q(i,j)2 (7)θ(i,j)=arctan(Q(i,j)/P(i,j)) (8)(3)图像进行梯度方向上的非极大值抑制为了得到精准而细化的图像边缘,在 对 图 像 梯 度 方 向和幅值进行计算 之 后,还必须对图像结果进行非极大值抑· 5524 ·计算机工程与设计 2014年

制。其具体过 程 是:遍 历 图 像,利 用 计 算 得 到 的 图 像 梯 度幅值和方向,通过梯度方向上像素幅值的比较来判断是否为边缘点;若某一像素点的幅值小于梯度方向上两个像素幅值中的任一 个,则表示这一像素点不是边缘点,将 该 点的幅值设置为0;反之则表示图像中这一像素点为可能的边缘点。(4)阈值检测和连接边缘

图像经过非极 大 值 抑 制 后,将梯度值不为零的点连接成边缘,则边缘检测的结果必然会有大量的虚假边缘。Canny算法会对图像进行双阈值处理来消除虚假边缘以及连接断续边 缘。具 体 方 法 是:选 择 高 低 两 个 阈 值,作 用 于非极大值抑制图 像,利用高阈值得到的图像虽然有较少的

假边缘,但是存在有较多的间断;同时通过低阈值得到 的图像有着较为全面的边缘信息,但是存在的虚假边缘也较多。因此,利用高、低阈值分别处理过的两幅图,在 高 阈值处理过的图像中把图像可能的边缘连成轮廓,当 遇 到 轮廓的断点时,在低阈值图像对应位置的8领域内寻找边缘点,并将找到的点集成到高阈值图像的边缘上。如此重复,直到得到较为连续的边缘。3.2 Canny边缘检测算子存在的缺陷

有上述算 法 流 程 可 知,平 滑 滤 波 方 差、高 低 阈 值 这 3个人工设定的参数是图像提取的关键。在图像的平滑过程中,σ设置过大会使通频带较窄,在避免假边缘 出 现 的 同 时也会丢失有用的边缘信息;σ过小虽然保留了图像的更多细

节,但对噪声 的 抑 制 下 降,容易出现假边缘。最 后 一 步 的双阈值处理也存在同样的问题,阈 值 设 置 过 高,会 造 成 边缘断裂、不连 续;阈 值 过 低 会,导 致 边 缘 出 现 较 多 的 伪 边缘。因此,传统 的 Canny算法不具备适应性和实时 性,在图像处理的应用中存在较大的局限性。4 Canny边缘检测算子的改进

通过上文对 Canny边缘检测算子的原理和缺陷进行分

析,结合路面裂缝 图 像 的 特 点,下 文 对 Canny算 子 进 行 了可行、高效的改 进。在图像去噪方面使用多尺度形态学 滤波代替原有 高 斯 滤 波;在 高、低 阈 值 获 取 方 面,抛 弃 传 统的人工设置,通过 Otsu算法,实现双阈值的自适应获取。4.1 多尺度灰度形态学滤波

形态学中 的 开 运 算 是 对 图 像 先 腐 蚀,后 膨 胀 处 理[10]。开运算可以断开狭窄的间断和消除细突出物。闭 运 算 是 对图像先膨胀,后 腐 蚀 处 理,能消除狭窄的间断和长细的 鸿沟,消除小的 孔 洞,并 填 补 轮 廓 线 的 裂 痕。开、闭 操 作 都可使图像的轮廓 变 得 光 滑。膨胀和腐蚀是形态学处理的基础,设F(m,n)代表输 入 图 像,其 中 (m,n)为 图 像 上 的像素坐标。B(s,t)为 结 构 元 素 集 合。图像的膨胀和腐蚀定义如下:F 被B 膨胀

报名招生

报名招生

(FΘB)(m,n)= min{F(m+s,n+t)-B(s,t)}(10)灰度开运算和闭运算

FB = (FΘB)⊕B (11)F·B = (F ⊕B)ΘB (12)则多尺度灰度形态学滤波运算公式如下

Ki = (((FBi)·Bi)Bi)·Bi...... (13)式中:Ki ———滤波后的图像,i———结构元素B 的半径,i=1,2......n。经过多尺度形态学滤波之后,图像取得了良好的平滑降噪效果,同时保留了更多的图像边缘细节。4.2 Otsu方法自适应设定阈值

最大类间方差法 (Otsu算 法)是一种在类间方差最大的情况下,自适应确定 阈 值 的 方 法[11]。其基本思想是把图像像素分为背景和目标两类,通 过 搜 索、计 算 类 间 方 差 最大值,得到最 优 阈 值[12]。最大类间方差法因其计算简单、适应性强的特点,成为目前广泛使用的阈值自动选取方法。将非极大值抑制后的图像像素分为三类,梯 度 幅 值 分为l级:H0 为非边缘像素,H1 为可能的边缘点像素,H2 为边缘点像素。设 N 为图像的像素总数,梯 度 幅 值 为i的 像素数量为ni ,占整个图像比率为Pi 为Pi = ni

N ,i=0,2...,l-1 (14)

令 H0 包 含 模 级 [0,...k]的 像 素,H1 包 含 模 级 [k+1,...,m]的像素,H2 包含模级 [m+1,...,l-1]的像素。设E 为总像素的梯度幅值期望值,对 应 H0 、H1 、H2的梯度幅值期望值为e0(k)、e1(k,m),e3(m),则E = ∑l-1i=0

iPi (15)e0(k)=∑k

i=0

i·Pi∑k

i=0Pi

e1(k,m)=∑m

i=k+1i·Pi∑m

i=k+1Pie2(m)=∑l-1

i=m+1i·Pi∑l-1

i=m+1P烅烄

烆 i

(16)

定义P(k)、P(k,m)、P(m)为P(k)= ∑k

i=0

Pi;P(k,m)= ∑mi=k+1

Pi;P(m)= ∑l-1m+1

Pi (17)· 6524 ·

第35卷 第12期   徐欢,李振璧,姜媛媛,等:基于OpenCV和改进Canny算子的路面裂缝检测则评价函数为σ2(k,m)= [e0(k)-E]2·P(k)+ [e1(k,m)-E]2·P(k,m)+ [e2(m)-E]2·P(m)(18)

设所需的两个最佳阈值为:k* 和 m* ,它们是使σ2(k,m)最大的值。我们用下式寻找最佳阈值[13]

σ2(k* ,m* )= max 0<k<m<l-1σ2(k,m) (19)所求的k* 、m* 分 别 为 H0 、H1 、H2 区 间 的 分 界 点,即为 Canny算法的低阈值和高阈值。5 实验结果及分析

为评价上述算法的性能,本文采用的实验平台为 AMD

A62.7G四核处 理 器,4G 内 存,2G 显 存 的 计 算 机,在OpenCV2.4+VS2010开发环境下进行编程实现。对上文中的裂缝图像进行检测,得到的实验结果如图2所示。图2 Canny算子改进后的检测结果本文对其他一些实际采集到的路面裂缝图像也进行了检测,其检测结果如图3所示。图1 (a)中路面纹理明显,图3 (a)-1中光照、阴影干扰较强且裂缝信息微弱,图3 (b)-1中裂缝较为复杂,由实验结果可以看 出,改 进 的 Canny边缘检测算子较之于传统的 Canny算子有着 明 显 的 优 势,有效的去除了虚假边缘,同时保留了必要的边缘细节。利用峰值 信 噪 比 (PSNR)对实验结果进行客观评价,可以更加明确本文改进 Canny 算 子 的 优 势。PSNR 定 义如下

PSNR =10lgM·N·2552∑M-1

i=0 ∑N-1j=0

(f(i,j)-y(i,j))2(20)

式中:f(i,j)和y(i,j)———参考图像和经过处理后的图像像素灰度值,M 和———图像的长宽像素。

对采集到的图1 (a)经过 Canny算子、文献 [6]以及本文改进 Canny算子处理后,其结果的性能比较见表1。图3 改进的 Canny算子与传统的算子结果比较表1 性能比较Canny算子的处理结果

文献 [6]的处理结果

本文改进 Canny算子的处理结果

PNSR 20.208 24.381 30.745综上所述,无论是从视觉效果,还是从客观评价来 看,利用本文算子对路面裂缝图像检测时,能够在确保检测实时性的同时兼顾检测的精度。6 结束语

本文提出了一种 基 于 OpenCV 及 改 进 的 Canny算 子 的路面裂缝检测技 术。通过图像的边缘信息实现路面裂缝的检测,并且在边缘检测时,利用多尺度形态学和 Ostu法对传统的 Canny边缘检测算子进行改进,实 现 了 实 时、准 确的路面裂缝检测,解决了路面裂缝检测时实时性和精确性无法同时满足的 问 题,为后续道路监控和路面裂缝检测奠定了基础。参考文献:

[1]SUN Zhaoyun, WEN Shiwen,DUAN Zongtao.Researchofasphaltpavementsurfacecracksimageprocessingsystembasedon DSP [J].Computer Engineeringand Design,2010,39(7):1481-1483 (inChinese). [孙 朝 云,温 世 文,段 宗 涛.基于 DSP的沥青路面裂缝图像处理系统研 究 [J].计 算 机 工程与设计,2010,39 (7):1481-1483.][2]LIU Fanfan,XU Guo’ai.Crackingautomaticextractionofpavementbasedonconnecteddomaincorrelatingand Houghtransform [J].JournalofBeijingUniversityofPostsandTele-communications,2009,32 (2):24-28 (inChinese). [刘 凡· 7524 ·计算机工程与设计 2014年

[3]LIGang,HE Yuyao.Edgedetectionforroadcrackimagewithmulti-directionmorphologicalstructuringelements [J].ComputerEngineeringand Applications,2010,46 (1):224-226 (inChi-nese).[李刚,贺昱曜.多方位结构元素路面裂缝图像边缘检测算法 [J].计算机工程与应用,2010,46 (1):224-226.]

[4]LIUYue,LIYibing,XIEHong.Edgedetectionbasedon2Dros-inthreshold methodinroadcrackimages [J].ChinaJournalofHighwayand Transport,2013,26 (3):70-76 (in Chinese).[刘悦,李一兵,谢红.基于二维 Rosin阈值方法的道路裂纹边缘检测 [J].中国公路学报,2013,26 (3):70-76.]

[5]XU Wei,TANGZhenmin,LVJianyong.Pavementcrackde-tectionbased onimagesaliency [J].JournalofImageandGraphics,2013,18 (1):69-77 (inChinese). [徐 威,唐 振民,吕建勇.基于图像显著性的路面裂缝检测 [J].中国图象图形学报,2013,18 (1):69-77.]

[6]LILi,SUN Lijun,CHENZhang.Anedgedetectionmethoddesignedforpavementdistressimages [J].JournalofTongjiUniveraity (NaturalSciernce),2011,39 (5):688-692 (inChinese). [李 莉,孙 立 军,陈 长.适于路面破损图像处理的边缘检测方法 [J].同 济 大 学 学 报 (自 然 科 学 版),2011,39(5):688-692.]

[7]LIU Chao,ZHOU Jiliu,HE Kun.Adaptiveedge-detectionmethodbasedonCannyalgorithm [J].ComputerEngineeringandDesign,2010,31 (8):4036-4038 (inChinese). [刘 超,周激流,何坤.基于 Canny算法的自适应边缘检测方法 [J].计算机工程与设计,2010,31 (8):4036-4038.]

[8]YUShiqi,LIU Ruizhen.LearningOpenCV (Chineseversion)[M].Beijing: Tsinghua University Press,2009 (in Chi-nese).[于仕琪,刘瑞祯.学习 OpenCV (中文 版) [M].北京:清华大学出版社,2009.][9]HUANG Kai, YU Xuecai.Research on railway automaticrecognitionby OpenCV [J].ComputerEngineeringand De-sign,2013,34 (2):574-578 (inChinese). [黄凯,余学才.基于 OpenCV 的铁路导轨自动识别研究 [J].计算机工程与设计,2013,34 (2):574-578.][10] MA Changxia,ZHAO Chunxia.PavementcracksdetectionbasedonNSCTandmorphology [J].JournalofComPutEr-Aided Design & Computer Graph ICS,2009,21 (12):1761-1767 (inChinese). [马 常 霞,赵 春 霞.结 合 NSCT 和图像形态学的路面裂缝检 测 [J].计算机辅助设计与图形学学报,2009,21 (12):1761-1767.]

[11]FENGBin,WANGZhang,SUNJun.Imagethresholdseg-mentationwithOstubasedonquantum-behavedparticle [J].ComputerEngineeringand Design,2008,29 (13):3429-3431 (inChinese).[冯斌,王璋,孙俊.基于量子粒子群算法的 Ostu图像阈值分割 [J].计算机工程与设计,2008,29(13):3429-3431.][12]WANGJigang,CHENJiaxin.Cannymedicalimageedgede-tectionalgorithm based onimprovedfilter [J].ComputerMeasurement & Control,2013,21 (6):1571-1579 (inChinese).[王纪刚,陈家新.基于改进滤波的 Canny医学图像边缘检测算 法 [J].计算机测量与控制,2013,21 (6):1571-1579.][13]RafaelC Gonzalez.Digitalimageprocessing [M].2nded.Beijing:Publishing House of ElectronicsIndustry,2007:463-491.

· 8524 ·

标签

Tag