陳華偉,吳祿慎,袁小翠
(南昌大學 機電工程學院,江西 南昌330031)
隨著中國鐵路事業(yè)的發(fā)展,軌道缺陷檢測要求越來越高,傳統(tǒng)的人工巡道作業(yè)效率低,危險性大,難以滿足鐵路事業(yè)高速發(fā)展的要求。針對鋼軌表面缺陷 (裂紋、掉塊等)的線路檢修作業(yè),國內(nèi)外均專注于機器視覺和圖像處理[1,2]相結(jié)合的自動檢測技術研究。
鋼軌的裂紋、掉塊等缺陷規(guī)律性不強,采用圖像方法處理時,一般使用邊界跟蹤方法。自Freeman提出圖像的鏈碼表示法[3,4],鏈碼技術已在圖像處理的各領域得到了廣泛應用。鏈碼跟蹤算法 (又稱Freeman 算法)實現(xiàn)簡單、變形容易、處理速度快、基于邊界鏈碼表示,還可對圖像的區(qū)域特征做深入分析,是基于機器視覺的分揀計數(shù)、缺陷檢測等特征識別領域的基礎算法。鏈碼算法一般是基于像素的,受圖像的預處理方法的影響較大,常存在漏跟蹤、重復跟蹤[5-8]等問題,面向鋼軌表面缺陷識別等具體應用還有較大的改進余地。
鏈碼是一種用邊界方向作為編碼依據(jù)的邊界表示法,但為了簡化邊界描述,一般只記錄有序排列的邊界點集。常有4連通鏈碼和8連通鏈碼之分,后者方位信息更為全面,能夠準確描述中心像素點與鄰接點的信息,因而最為常用。如圖1為8連通鏈碼。
圖1 8連通鏈碼
考慮到圖像存貯和顯示中主要是采用逐行掃描的方式進行,設定自上而下為行掃描的正方向,自左向右為列掃描正方向 (如圖1坐標系所示)。根據(jù)正掃描順序,設定起始點 (0方向)為左上角點,則順時針鏈碼搜索方向 (0-7方向)坐標可表示為集合:
DIR8 [8] [2]= {{-1,-1}, {0,-1}, {1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}}
即搜索方向序列為0→1→2→3→4→5→6→7。
它表示8方向序列:左上→上→右上→右→右下→下→左下→左。
為了存貯邊界點集,并表達邊界走向,最好的辦法就是使用鏈表結(jié)構(gòu)記錄邊界信息,為此設計以下鏈節(jié)點結(jié)構(gòu)體:
從NODE節(jié)點結(jié)構(gòu)體定義可以看出,它既表示了邊界中的各節(jié)點坐標和方向、下一節(jié)點信息,還表示了整個邊界即連通區(qū)域的周長、面積、外接矩形等基本特征信息。
變量定義中,NODE 為節(jié)點對象,一個NODEList指針代表一條區(qū)域邊界鏈。
對每條邊界,采用尾插法,將新的邊界點插入鏈表尾端,最終形成一條完整的邊界鏈,以下為尾插法的偽代碼表示:
假設二值圖像中,灰度值255 表示白色,為背景,灰度值0表示黑色,為目標。由于圖像邊界的像素點,沒有完整的8個鄰域點,為了規(guī)避邊界點的干擾,算法中常直接將邊界點置為背景點。
接下來,采用逐行逐列掃描法進行搜索。
(1)置初始搜索方向為0,鏈長length=0,邊界所圍(或區(qū)域)面積area=0;
(2)當找到一個目標點 (灰度值為0)時,置該點為邊界起始點,鏈長length+1,區(qū)域面積area+1;
(3)在其8鄰域內(nèi)搜索下一個目標點。如果找到一個點,其當前方向點為背景點,下一方向點為目標點,則認定該目標點為下一邊界點;
(4)照此方法繼續(xù)搜索。
條件1:當搜索到的邊界點回到了起始邊界點時,說明當前邊界已成閉合鏈,此時應結(jié)束本鏈搜索。這是鏈碼搜索的基本結(jié)束條件;
條件2:每個節(jié)點處限定搜索次數(shù)nSearchTime≤8。當邊界搜索無法回到起點,如出現(xiàn)開鏈結(jié)構(gòu)時,為了避免死循環(huán),就需要補充本結(jié)束條件。
基本搜索算法可用于簡單圖形的測試和對鏈碼的理解,但是實際圖形處理中的孤立點、單列鏈、局部鏈、開鏈等特殊情況常常引起基本算法的失效。
情況1:孤立點
描述:孤立點的8鄰域搜索均沒有目標點,按基本算法會出現(xiàn)死循環(huán)。
處理:一種方法是進行預處理,去除孤立點;第二種方法是控制搜索次數(shù)nSearchTime≤8,大于8次則提前結(jié)束搜索。
情況2:單列鏈
描述:如圖2所示 (圖中線段和箭頭表示搜索路徑;①②表示搜索起點),當邊界節(jié)點從橫向進入單列排列的目標點時,在不對已處理節(jié)點進行標記 (2.2節(jié))的情況下,如果每次搜索都從0方向開始,則會在圖中圈定區(qū)域 (本列的第2-3像素點處)形成死循環(huán)。該問題即使采用后退兩步搜索法 (2.3節(jié)),也會在圖中圈定區(qū)域出現(xiàn)死循環(huán)。
圖2 單列現(xiàn)象
處理:其實質(zhì)是已搜索節(jié)點的重入 (重復搜索)問題,可通過節(jié)點標記解決該問題。
情況3:局部鏈
描述:單列兩點經(jīng)過兩次搜索 (搜索路徑分別為①②),即可回到起點,從而提前結(jié)束本鏈搜索 (如圖3 (a)所示)。單列兩點會導致局部鏈問題的出現(xiàn),如圖3 (b)所示,如果始終從0方向開始搜索,并且已搜索邊界點不做標記的話,會導致圖中圈定兩點為局部封閉鏈。
圖3 局部鏈問題
處理:對已搜索邊界點進行標記。圖3 (b)為標記后搜索沿著正確方向前進。
情況4:非閉合鏈
描述:如圖4 (a)所示 (圖中1-4為節(jié)點編號,箭頭表示節(jié)點的進入方向,即從箭頭方向搜索到箭頭所指節(jié)點),如果固定起始搜索方向為0方向,最大搜索方向為7方向,將會導致節(jié)點4 的八鄰域無法搜索到新的邊界點,鏈無法閉合的情況。
處理:該問題是由于固定了起始搜索方向為0方向引起的,采用自適應的后退兩步搜索法 (adaptive two-steps back search,ATSBS)可解決該問題。
圖4 非閉合鏈
為了避免節(jié)點重入,應對已搜索邊界點進行標記,即通過改變其灰度值的辦法,將其從目標點集合中刪除,使其在后續(xù)搜索中 “不可見”。但是為了基本搜索結(jié)束條件,應對邊界起點不做標記或做特殊標記,待再次搜索回到起點時,再做標記。
此外,已搜索區(qū)域的內(nèi)部節(jié)點也存在重入問題。一個區(qū)域搜索結(jié)束后,將轉(zhuǎn)入外圍循環(huán)的逐行掃描進行新的區(qū)域搜索,如果已搜索區(qū)域內(nèi)部節(jié)點不做標記,則會在新的區(qū)域搜索中被認定為目標點,這與實際不符。一種近似的解決辦法是:確定搜索區(qū)域的外接矩形 (box屬性),遍歷box區(qū)域內(nèi)所有節(jié)點,如果節(jié)點灰度值為目標節(jié)點灰度,則用本區(qū)域標記值進行標記。
8位灰度圖的標記中還存在一個特殊問題:在8位灰度圖中標記值一般取自然數(shù),但8 位圖中的最大標記值為28-1=255。當標記區(qū)域太多 (如圖5 所示),超過255時,則存在無標記值可用的情況,因此需要對連通區(qū)域太多的情況加以限制。實際情況是,如果二值處理后的目標區(qū)域太多,則會導致目標區(qū)域特征模糊化,難以識別,這主要是由于未采用恰當?shù)亩祷撝翟斐傻?。對此,而可以根?jù)具體的應用環(huán)境,設定一個最大的標記區(qū)域數(shù) (標記值)Lmax,當連通區(qū)域數(shù)超過Lmax 時退出圖片掃描。假設圖片中目標對象數(shù) (如一張圖像中的缺陷區(qū)域數(shù))不超過N 個,則可設定最大標記值Lmax∈ [2*N,255]。
圖5 閾值分割對鏈碼搜索的影響
ATSBS算法是將前一次鏈碼方向后退兩步作為當前搜索的起始方向。該方法以前一次搜索方向作為本次搜索的依據(jù),因而優(yōu)先保證了目標邊界方向的連續(xù)性和目標區(qū)域形狀的凸包性,是一種自適應方向 (自旋)的鏈碼搜索方法。
ATSBS算法中后退兩步可能帶來負方向問題,可置搜索方向為最大搜索方向7,設搜索至前一節(jié)點時的搜索方向為prePOS,當前節(jié)點的起始搜索方向curPOS,則起始搜索方向設置的偽代碼表示為:
curPOS =prePOS-2;
if(curPOS<0)then curPOS=7;
接下來,沿八方向curPOS→7→0→curPOS-1搜索下一邊界點。
圖4 (b)中,ATSBS算法執(zhí)行過程如下:
在節(jié)點1處,從方向5搜索到節(jié)點2;
在節(jié)點2處,起始搜索方向為5-2=3,依次沿方向3→4→5→6→7→0搜索才能搜索到節(jié)點3;
在節(jié)點3處,起始搜索方向0-2=-2,出現(xiàn)負方向,此時置起始搜索方向為7,沿方向7正好能找到本鏈起始節(jié)點0,從而結(jié)束本鏈搜索。
在鋼軌表面缺陷的圖像檢測中,需要對軌面裂紋、掉塊等缺陷類型進行識別,這些缺陷區(qū)域特征明顯,可以采用鏈碼方法提取邊界,進而通過周長、面積、長寬比、圓形度、幾何矩 (不變矩)等特征參數(shù)[9,10]的計算獲得缺陷區(qū)域的定量描述,進而對缺陷的類型和嚴重性進行分類和管理。
如前所述,鏈碼搜索適用于邊界特征明顯的圖像,其預處理二值化閾值和方法的選擇將直接影響鏈碼算法的執(zhí)行效率和效果。使用常規(guī)邊緣檢測方法,例如使用Canny算子獲取二值化的梯度圖像,則會導致圖像中邊緣線出現(xiàn)雜亂、斷線等復雜情況。使用大津法自動閾值化,獲得的目標 (黑色)區(qū)域太多,目標缺陷區(qū)域則已模糊 (圖5)。這兩種方法都違背了鏈碼使用的邊界特征明確的要求,難以直接使用鏈碼進行邊界搜索求解。
為了說明不同閾值對鏈碼搜索的影響,減少搜索范圍和區(qū)域,為提高搜索效率提供參考,本文設計了迭代閾值法:
(1)設定閾值上下限,理論上下限是 [1,255]。二值處理中,閾值很小時,圖片全為背景 (全白),相反,則全為目標 (全黑);
(2)設定閾值變化步長,默認為1,為了提高搜索速度,可適當加大該步長;
(3)針對每個閾值,做二值化處理,獲得二值圖像;
(4)使用鏈碼算法,收集目標區(qū)域;
(5)當目標區(qū)域數(shù)過大 (超過Lmax)時,結(jié)束圖片掃描;
(6)后置處理:對所有初識別區(qū)域,計算特征參數(shù),獲得面積和周長較大的區(qū)域2-3 個,進一步根據(jù)經(jīng)驗值(裂紋長度、寬度等),從中剔除非缺陷區(qū)域,從而獲得目標缺陷。
圖5中,設定閾值上下限為 [30,200],步長為10,如果設定Lmax=100,則搜索將在T=40 時結(jié)束,此時L=16。后置處理中對16個標記區(qū)域進行過濾刪除,最終可獲得本實例中的具有最大周長和面積的裂紋缺陷。
鋼軌圖像中缺陷數(shù)量有限,采用最大區(qū)域數(shù)限定的節(jié)點標記法能夠有效識別較大缺陷,提高了搜索速度。在標記過程中提出的自適應后退兩步搜索法解決了常規(guī)標記算法中易出現(xiàn)的孤立點、單列鏈、局部鏈、開鏈等錯誤跟蹤問題。
閾值迭代法采用迭代方式能夠逐步顯現(xiàn)目標區(qū)域的變化趨勢,為有效閾值化方法的確定提供了依據(jù)。但是該方法本身效率較低,在實際應用中,可將其作為先導方法測試圖像的最佳閾值,然后在此基礎上再采用改進最大熵方法[9,10]等方法快速確定閾值。
鋼軌缺陷檢測實驗結(jié)合了上述方法,并采用簡單的參數(shù)計算獲得了顯著缺陷的幾何特征,達到了缺陷識別的目的。
[1]XU Guiyang,SHI Tianyun,REN Shengwei,et al.Development of the on-board track inspection system based on computer vision [J].China Railway Science,2013,34 (1):139-144(in Chinese).[許貴陽,史天運,任盛偉,等.基于計算機視覺的車載軌道巡檢系統(tǒng)研制 [J].中國鐵道科學,2013,34(1):139-144.]
[2]Li QY,Ren SW.A real-time visual inspection system for discrete surface defects of rail heads[J].IEEE Transactions on Instrumentation and Measurement,2012,61 (8):2189-2199.
[3]Freeman H.Techniques for the digital computer analysis of chain-encoded arbitrary plane curves [J].Proceedings of National Electronics Conference,1961,17:421-432.
[4]Park J,Chisty KMM,Lee J,et al.Image retrieval technique using rearranged freeman chain code [C]//Proceedings of 1st International Conference on Informatics and Computational Intelligence,2011:283-286.
[5]Banerjee J,Ray R,Shome SN.A novel approach for freeman chain coding with prior modification using cubic interpolation[C]//IEEE International Conference on Computational Intelli-gence and Computing Research,2012.
[6]LI Wen.Research on chain code in region contour representation and reconstruction [D].Lanzhou:Lanzhou University,2012 (in Chinese).[李雯.鏈碼在區(qū)域輪廓表示與重建中的應用研究 [D].蘭州:蘭州大學,2012.]
[7]Gong Aiping,Chen Ji,Qiu Zhengjun,et al.Quantity qualification of overlapped region for citrus image based on modified Freeman chain code algorithm [J].Nongye Jixie Xuebao Transactions of the Chinese Society of Agricultural Machinery,2012,43 (11):203-208.
[8]WANG Jingxue,SONG Weidong,ZHAO Like,et al.Application of improved freeman chain code in edge tracking and straight line extraction [J].Journal of Signal Processing,2014,30 (4):422-430 (in Chinese). [王競雪,宋偉東,趙麗科,等.改進的Freeman碼在邊緣跟蹤及直線提取中的應用研究 [J].信號處理,2014,30 (4):422-430.]
[9]LIU Hui,ZHANG Yunsheng,ZHANG Yinhui,et al.Curvature computing of BOF flame boundary based on differential chain code[J].Computer Engineering and Application,2013,49 (7):171-175 (in Chinese).[劉輝,張云生,張印輝,等.基于差分鏈碼曲率的轉(zhuǎn)爐火焰邊界彎曲度計算 [J].計算機工程與應用,2013,49 (7):171-175.]
[10]Li Jian,Guo Shuai,Ye Feng.Shape recognition based on freeman chain code [J].Advanced Materials Research,2011,317-319:2490-2496.
[11]Tan Haifeng,Yang Guang,Zheng Nan,et al.An improvement of two-dimensional maximum entropy thresholding segmentation algorithm for SAR image[C]//Proceedings of International Conference on Computer Science and Electronics Engineering,2012:379-382.
[12]ZHANG Xinming,ZHANG Aili,ZHENG Yanbin,et al.Improved two-dimensional maximum entropy image thresholding and its fast recursive realization [J].Computer Science,2011,38 (8):278-283 (in Chinese). [張新明,張愛麗,鄭延斌,等.改進的最大熵閾值分割及其快速實現(xiàn) [J].計算機科學,2011,38 (8):278-283.]