王偉 陳新軒 韓敏

摘? 要:該文立足于解決瀝青路面裂縫識別,基于OpenCV函數庫,對該函數庫中Canny算子進行改進,將原始Canny算子高斯平滑濾波器,改進為選擇濾波器。改進后的識別算法,不僅能消除原始圖像中附帶的高斯噪聲,還能消除椒鹽(脈沖)噪聲。基于改進后的算法進行實驗,結果顯示,經過算法改進后,路面裂縫識別更加精準。
關鍵詞:路面裂縫識別? OpenCV? 選擇濾波器
中圖分類號:TP274? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1672-3791(2019)03(b)-0055-02
瀝青路面裂縫是一種早期瀝青路面病害,如不及時處理,會降低路面防水性能,導致大量路面水下滲至路基,破壞路基穩定層結構,降低路基承載能力,引發路基失穩造成更大程度的路面病害。因此,對于路面裂縫,應當及時修補處理。當前,路面修補主要依靠工人操作機械灌縫,工作效率低,灌縫質量取決于操作人員經驗。若要實現自動路面裂縫修補,最關鍵的一步,是要能正確識別路面裂縫,并根據路面裂縫生成引導路徑,從而能夠引導機械自動完成路面裂縫的修補工作。當前,機器視覺技術發展迅速,利用機器視覺解決以上問題可行性極高。該文基于OpenCV,針對原始Canny算子進行改進,提高路面裂縫檢測的效率和準確度。
1? 利用原始Canny算子檢測路面裂縫時的缺陷
OpenCV是圖像識別領域廣泛使用的圖像處理函數庫,使用OpenCV提供的庫函數,可以極大地提升開發速度,降低開發難度。瀝青路面裂縫的檢測,本質上是提取裂縫邊緣的過程,OpenCV對于邊緣提取,有許多成熟的函數,其中,Canny算子就是被廣泛使用的邊緣提取函數。但是,在應用中發現,OpenCV自帶的原始Canny算子,對圖像的預處理,使用的是高斯平滑濾波器,雖能一定程度上抑制圖像噪聲,但是對于諸如椒鹽噪聲在內的其他噪聲,降噪效果不能達到預期,同時,由于該濾波器的局限性,在圖像處理中,往往會將某些沖擊噪聲識別為待檢測邊緣。另一方面,在利用Sobel計算坐標方向時,對噪聲敏感度過高,這也使得該方法很容易將非噪聲信號識別為噪聲,從而丟失細節信息。
2? Canny算子改進
針對原始Canny算子的缺陷,高斯平滑濾波器能較好地消除高斯噪聲和均值噪聲,但對椒鹽噪聲等就顯得無能為力。如果考慮使用中值濾波器,雖能消除高斯平滑濾波不能處理的椒鹽噪聲,且不會對圖像帶來過多的模糊效果,但對高斯噪聲卻處理欠佳。此時,如果能有一種選擇濾波器,根據圖像不同位置的特點,運用不同濾波器處理圖像,就能得到較好的效果。此時,我們可以考慮,設計一種選擇濾波器,選擇性地處理輸入圖像中的噪聲。
選擇濾波器原理:對于輸入的圖像,通過椒鹽噪聲檢測器檢測輸入圖像受到椒鹽噪聲影響的區域,對此類區域利用中值濾波器消除噪聲,其余部分利用中值濾波器濾除。經過上述步驟濾波后,再將它們的結果疊加。對于椒鹽噪聲的檢測,這里有兩個基準。
(1)灰度范圍基準。
假設圖像灰度范圍為[Lmin,Lmax],若圖像中,某一像素灰度值在此區間之外,則該像素很可能受到椒鹽噪聲的影響。
(2)局部像素對比基準。
對于輸入圖像,含有椒鹽噪聲的像素點,灰度值為圖像灰度范圍的兩個極端。考慮每個像素點的8個臨域,若該像素周邊像素與其存在極大的灰度差別,則該像素受脈沖噪聲的影響很大,判別依據為下式。
式中,假設位于處的像素的臨域為N,屬于該臨域的像素為f(s,t),Tv用來判斷目標像素與周邊像素灰度值差別是否足夠大,Tn代表百分比閾值。這里,我們使用兩個準則來判定,是因為如果僅使用灰度范圍基準,可能將原本正常的像素點也判定為是受到了脈沖噪聲干擾的像素點。而如果僅僅使用局部像素對比基準來判定,則可能將邊緣像素判定為受脈沖噪聲污染的像素點。因此,如果將兩者結合使用,就能避免以上問題。
當輸入圖像同時包含高斯噪聲和脈沖噪聲時,可將輸入圖像中的像素點一分為二,其中第一部分為受到高斯噪聲影響的像素,第二部分為受到脈沖信號影響的像素點。因為根據灰度范圍基準,含有脈沖噪聲(椒鹽噪聲)的像素的灰度值取到圖像灰度范圍的兩端極值,因而此像素點高斯噪聲可以忽略不計。為消除脈沖噪聲的影響,可在該像素周邊取樣,即通過該像素周邊未受影響像素的灰度信息和位置信息,通過差值計算,計算出該像素點的理論值,從而以新值代替舊值,消除脈沖噪聲影響。對于另外一部分的像素點,高斯噪聲可利用維納濾波的方法消除。最后將兩部分像素疊加,生成新消除噪聲后的圖像,供后續步驟繼續使用。
3? 實驗及分析
該文實驗環境為MacOS10.14+OpenCV3.4+Python3.6,將原始Canny算子降噪算法部分做上文所述改進后,對路面裂縫進行識別。改進前后識別結果如圖1、圖2、圖3所示。通過對比實驗結果可以看出,改進前識別準確度較低,周邊噪聲也被識別為裂縫標出,只有周邊平滑的圖像,裂縫邊緣識別才比較準確;改進Canny算子,可以更精確地識別出裂縫的邊緣,周邊噪聲對于識別結果的影響不大。
4? 結語
該文針對OpenCV庫中Canny算子圖像噪聲處理部分進行改進,將原始高斯平滑濾波器改進為選擇濾波器,能夠將原始圖片中噪聲進行更好的處理。通過實驗驗證,改進后的Canny算子,對比改進之前,對于輸入的路面裂縫圖像信號,能夠精準識別裂縫區域,排除噪聲信號的影響。
參考文獻
[1] 周慧媛,邱書波,劉海英,等.基于對比度受限自適應直方圖多種路面裂縫檢測與識別[J].齊魯工業大學學報,2018,32(5):27-31.
[2] 豆曉瑜.基于多尺度分析的瀝青路面裂縫自動檢測技術研究[D].長安大學,2010.
[3] 徐歡,李振璧,姜媛媛,等.基于OpenCV和改進Canny算子的路面裂縫檢測[J].計算機工程與設計,2014,35(12):4254-4258.
[4] 吳成茂,胡偉,王輝.小波自適應閾值和雙邊濾波的圖像去噪[J].西安郵電大學學報,2013,18(4):5-8.
[5] 段鎖林,殷聰聰,李大偉.改進的自適應Canny邊緣檢測算法[J].計算機工程與設計,2018,39(6):1645-1652.