【摘要】" " 在高速公路裂痕圖像檢測過程中,采集到的路面裂痕圖像容易出現(xiàn)模糊,且路面裂痕本身具有裂痕特征不明顯、雜質干擾大等特點,需要開發(fā)一種高效的方法進行路面裂痕自動檢測工作。根據(jù)路面實際裂痕像素灰度值比背景灰度值低的原理,對路面進行拍照,將得到的圖像進行灰度化處理,進行自適應閾值化和二值化,呈現(xiàn)出比較清晰的黑白圖像。將上述的黑白圖像經膨脹、降噪后,使用open CV獲取輪廓拓撲信息。實驗證明,新提出的方法在處理速度和檢測準確性方面能夠滿足實際需要,能實時、自動檢測出模糊圖像的裂痕。
【關鍵字】" " 裂痕檢測" " 圖像處理" " 自適應閾值化" " 圖像降噪
引言:
路面裂痕檢測的目的是對公路路況進行高速采樣,經處理后提取路面裂痕的信息,為制定公路路面養(yǎng)護計劃提供科學的理論依據(jù)[1]?,F(xiàn)有的裂痕檢測形式包括混凝土裂痕檢測、橋面裂痕檢測等,針對路面的檢測分割方法有許多,如基于局部二進制模式方法,基于熵和有監(jiān)督策略的方法阻引,基于連續(xù)小波變換的方法,基于分形的方法,基于模糊增強,基于模糊數(shù)學的公路路面裂痕檢測技術的方法,以及其他一些圖像分割方法[1]。由于高速公路路況存在傳輸距離長、天氣影響大等情況,實際檢測過程中存在數(shù)據(jù)量大和數(shù)據(jù)偏差高的問題,需要一種響應時間短、計算效率高的方法進行檢測,本文提出的方法對于現(xiàn)行的道路裂痕檢測方式有現(xiàn)實的指導意義。
一、檢測方法概述
裂痕檢測方法主要包括以下幾方面:路面圖像轉換、路面圖像處理、裂痕輪廓檢測。
1.1 路面圖像轉換
裂痕檢測的第一步是轉化視頻圖像。在接收到視頻圖像信息之后,將拍攝的彩色圖像轉化為灰度圖,由于路面的天氣、光照、路況等影響視頻圖像往往會處在局部光照和陰影下,常用的圖像分割算法適用性不強,因此對灰度圖進行自適應局部閾值化處理,去除局部光照和陰影對圖像結果的影響,并將進行優(yōu)化的灰度圖進行二值化處理。
1.2路面圖像處理
將轉化的二值圖進行處理,其中包括對二值化圖像進行膨脹操作,盡量放大凸顯裂縫,由于攝像拍攝和灰度圖轉化等工作可能會使得二值圖的圖像出現(xiàn)噪聲,因此得到的圖像還需進行噪聲消除。
1.3裂痕輪廓檢測
通過調用尋找輪廓函數(shù)對二值圖進行掃描并尋找所有的輪廓,并將輪廓進行提取,提取后的輪廓通過預先確定的固定閾值進行檢測,固定閾值可根據(jù)經驗值選取,經過篩選的結果已經清楚顯示出裂痕特征。
三、 路面圖像轉換
2.1 彩色圖像灰度化
灰度圖像能以較少的數(shù)據(jù)信息表征圖像的大部分特征,因此首先需要對圖像進行灰度化。由于在此三維向一維降維的過程中,信息的丟失是不可避免的。因此如何在灰度圖像中最大限度的保留原彩色圖像的信息成了學者們當前研究的重點[2]。大部分的彩色圖像都是采用RGB顏色模式,處理圖像的時候,要分別對RGB三種分量進行處理。這里采用的是一個簡單的算法——最大值法,將彩色圖像中的每一個像素點的三分量亮度的最大值作為灰度圖的灰度值,算法如下:
Gray(i, j)=max{R(i, j),G(i, j),B(i, j)}
2.2自適應局部閾值化
局部自適應閾值是根據(jù)像素的鄰域塊的像素值分布來確定該像素位置上的二值化閾值。這樣做的好處在于每個像素位置處的二值化閾值不是固定不變的,而是由其周圍鄰域像素的分布來決定的。亮度較高的圖像區(qū)域的二值化閾值通常會較高,而亮度較低的圖像區(qū)域的二值化閾值則會相適應地變小。不同亮度、對比度、紋理的局部圖像區(qū)域將會擁有相對應的局部二值化閾值。圖1的圖像在光照不均勻的情況下,二值化后的圖像如圖2。首先,將圖像分成較小的塊,然后分別計算每塊的直方圖。根據(jù)每個直方圖的峰值,然后為每個塊計算其閾值。每個像素點的閾值根據(jù)相鄰的塊的閾值進行插值獲得。二值化后的圖像如圖3,能比較清晰地展現(xiàn)出信息。
2.3 二值化處理
此時得到的灰度圖進行二值化操作,操作的基本思想是遍歷圖像像素,計算一個移動的平均值。如果某個像素明顯的低于這個平均值,則設置為黑色,否則設置為白色。假設Pn為圖像中位于點n處的像素,把圖像假設成由所有行按順序連接起來的一個單行,fs(n)是點n處后面s個像素的總和,最后的圖像T(n)是1(黑色)或0(白色)則依賴于其是否比其前s個像素的平均值的百分之t的暗:
三、 路面圖像處理
3.1 圖像膨脹操作
得到的二值圖大致能夠顯現(xiàn)出高速公路的基本路面情況,但是由于攝像頭的客觀條件和灰度圖轉化過程中的損失,二值圖中的地面裂痕不清晰,也存在一定的噪點污染,需要采用膨脹操作放大二值圖中的裂痕。腐蝕和膨脹是灰度圖像的初等形態(tài)學運算,膨脹是腐蝕的對偶運算,可定義為對圖像的補集進行的腐蝕運算。集合A被集合B腐蝕,表示為AB,其定義為:
3.2圖像噪聲消除
膨脹操作后的二值圖像放大凸顯裂痕,此時噪聲干擾過多,需要對圖像進行降噪。圖像噪聲的形式眾多,其中包括脈沖噪聲、高斯噪聲等。在圖像處理中出現(xiàn)的噪聲一般為脈沖噪聲、高斯噪聲或兩者疊加混合的噪聲[4]。這里采用的是8鄰域降噪法,這種方法類似均值濾波,對于每個像素點,統(tǒng)計其周圍像素點的灰度值為0或255的個數(shù)。如果一個像素點是干擾因素的一部分,那么這個像素點在二值化結果中其灰度值一定是0即黑色;如果一個像素點是背景,則其灰度值應該是255即白色。因此對于孤立的噪點,其周圍應該都是白色,或者大多數(shù)點都是白色像素點,經過測試,8領域降噪法對于小的噪點的去除是很有效的。
四、 裂痕輪廓檢測
上述處理方法得到的二值圖像需要進行一輪檢測,對放大后的裂痕處進行輪廓提取工作,這里采用的是OpenCV提供findContours()函數(shù)來獲取二值圖像的輪廓拓撲信息[5],其函數(shù)原型如下:
void cv::findContours(InputOutputArray image,OutputArrayOfArrays contours,
OutputArray hierarchy,int mode,int method,Point offset = Point())
其中image表示輸入圖像;Contours用來獲取輪廓,每個輪廓是一系列的點(cv::Point類)集合;Hierarchy用來保存輪廓的層次信息; mode表示輪廓尋找時候的拓撲結構返回。
對于得到輪廓,可以通過下面的API繪制每個輪廓:
void cv::drawContours(InputOutputArray image, InputArrayOfArrays contours,
int contourIdx,const Scalaramp; color,int thickness = 1,
int lineType = LINE_8,InputArray hierarchy = noArray(),
int maxLevel = INT_MAX,Point offset = Point())
其中image為繪制的圖像;contours為輪廓集合,當中每個元素為一個輪廓;contourIdx為繪制contours中序號對應的輪廓,為-1時則表示繪制所有輪廓;color為繪制使用的顏色;thickness為正數(shù)的時候表示繪制該輪廓,為-1表示填充該輪廓。
五、 實驗結果分析
比較傳統(tǒng)的路面裂痕檢測方式,本文提出的方法計算量相對較小,計算時間小,適應于高速公路傳輸圖像量大的情況,為了驗證本文算法的有效性,用python實現(xiàn)的檢測系統(tǒng)軟件對實時采集到的圖像幀進行自動檢測。將拍攝收集到的三段視頻圖像逐幀分析,視頻分辨率為1024×768。使用的是普通雙核CPU性能的計算機,程序運行計算得到待檢測幀的平均檢測時間、圖像幀數(shù)及正確率如下表:
經研究表明,檢測的正確率比較高,響應時間小。實際路面檢測工作中,決定檢測正確率的條件包括室外天氣情況,如雨、雪、大霧等天氣的干擾,光照強度等也對實驗結果有一定的影響。
六、結束語
針對目前我國的道路裂痕檢測現(xiàn)狀提出的問題,本文提供了一種更加方便和高效的方法,對以后的道路檢測提供了新的思路。本方法能快速檢測多數(shù)據(jù)量下的視頻圖像,圖像灰度化及噪聲消除速度較快。
目前的數(shù)字圖像處理方向還在不斷發(fā)展,文中提到的圖像灰度化、二值化處理操作,以及圖像膨脹和降噪的算法,出于對現(xiàn)實中高效性等情況的考慮采取的算法核心相比現(xiàn)有的諸多算法來說偏簡單,在今后的圖像處理發(fā)展過程中將會由于技術的不斷升級得到更新和優(yōu)化,以滿足更多極端天氣下更高的準確率。
參" 考" 文" 獻
[1] 劉益玲,謝書童.基于模糊數(shù)學的公路路面裂痕檢測技術[J].集美大學學報,2014,(5).
[2] 陳鍛生,宋鳳菲.彩色圖像灰度化及其效果的客觀評價方法研究[D].華僑大學,2014.
[3] 高薪,胡月,杜威.腐蝕膨脹算法對灰度圖像去噪的應用[J].北京印刷學院學報,2014,(4).
[4] 黃紅波.一種基于二維小波塊閾值數(shù)字圖像去噪方法[J].湖南理工學院學報:自然科學版,2006,(1):31-33,39.
[5] 秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測試,2011,(7).