基于嵌入式ARMS3C2440智能建筑物裂紋實(shí)時(shí)測量系統(tǒng)開發(fā)研究
0 引 言
在建筑業(yè)中,評價(jià)墻體裂紋,地面裂紋是評價(jià)房屋質(zhì)量的一項(xiàng)重要指標(biāo)。由于傳統(tǒng)的利用手工標(biāo)尺進(jìn)行裂紋寬度測量的方法既不準(zhǔn)確又不方便,于是將嵌入式應(yīng)用于自動測量建筑裂紋寬度成為了許多研究者的重要研究內(nèi)容。
本研究將問題劃分為以下兩個(gè)部分:
(1)裂紋寬度測量算法;
(2)將以上所開發(fā)軟件移植到ARM開發(fā)板,并優(yōu)化算法提高軟件運(yùn)行速度。
1 裂紋寬度測量算法
計(jì)算裂縫寬度關(guān)鍵是要利用圖像分割技術(shù)得到裂縫的真正邊緣。雖然已有文獻(xiàn)介紹了多種分割方法,但是未見有針對裂縫測試儀采集到的裂縫圖像進(jìn)行處理的方法。因此,本文針對裂縫圖像,提出了結(jié)合OTSU圖像分割與Sobel邊緣檢測的混合算法進(jìn)行裂紋檢測與寬度測量。
1.1 圖像獲取
圖像獲取過程如圖1所示:被檢測的裂縫通過光學(xué)系統(tǒng)在CMOS圖像傳感器上成像,然后通過USB接口將裂縫圖像輸出到ARM上進(jìn)行處理。
裂縫圖像如圖2所示。裂縫寬度分布范圍較廣,自幾十至幾百像素不等,但遠(yuǎn)遠(yuǎn)小于圖像的寬度值。裂縫周圍有部分噪聲,有的圖像含有大量污染區(qū)域,這成為裂縫位置鎖定的難點(diǎn)。
1.2 OTSU圖像分割
通過與已有圖像分割方法如:直方圖法、OTSU法、區(qū)域分割法等進(jìn)行比較發(fā)現(xiàn),OTSU在最后的效果上占有明顯的優(yōu)勢。因此采用OTSU方法進(jìn)行圖像的分割。[!--empirenews.page--]
圖像分割的結(jié)果如圖3所示。觀察結(jié)果,很容易發(fā)現(xiàn)圖像的邊緣很大區(qū)域被錯(cuò)分為與裂縫一樣。于是直接計(jì)算裂縫寬度時(shí)會導(dǎo)致將錯(cuò)分的區(qū)域計(jì)算成裂縫。因此除了計(jì)算裂縫寬度外,對候選裂縫集合進(jìn)行有效剔除是另一個(gè)重要任務(wù)。對選裂縫集合進(jìn)行有效剔除將會在下一小節(jié)中進(jìn)行討論。
分割完圖像后,計(jì)算所有可能成為裂縫的區(qū)域的寬度。采用從圖像給定行的起始位置開始計(jì)算裂縫寬度,當(dāng)發(fā)現(xiàn)像素灰度由0變?yōu)?55,記為一個(gè)裂縫的左邊緣起始位置;當(dāng)查找到像素灰度由255變?yōu)?,記為一個(gè)裂縫的右邊緣結(jié)束位置。通過這種方法可以獲取給定行的所有可能的裂縫寬度。但是在具體試驗(yàn)中發(fā)現(xiàn),計(jì)算對單行的裂縫進(jìn)行寬度測量還是存在比較大的誤差。于是采用求取給定行上下5行共10行的平均值的方法。這樣可以有效地去除毛刺的干擾。通過這種方法,得到一個(gè)裂縫的候選集合,并且計(jì)算出候選集合中每一個(gè)位置的寬度。
1.3 Sobel邊緣檢測
以上小節(jié)得出了裂縫的候選集合,但是事實(shí)上這個(gè)候選集合含有大量的非裂縫區(qū)域。這一節(jié)中的主要內(nèi)容是設(shè)計(jì)算法剔除這些干擾裂縫,獲取更小的裂縫候選集合。在試驗(yàn)中,由于裂縫具有明顯的邊緣,而干擾圖像區(qū)域有比較模糊的邊緣或者僅有一個(gè)邊緣等,通過分析,提出采用Sobel邊緣檢測的方法進(jìn)行裂縫位置的鎖定。Sobel算子由兩個(gè)卷積核組成,如圖4所示,圖像中的每個(gè)點(diǎn)都用這兩個(gè)核做卷積,一個(gè)核對通常的垂直邊緣相應(yīng)最大,而另一個(gè)對水平邊緣相應(yīng)最大。兩個(gè)卷積的最大值作為該點(diǎn)的輸出位。運(yùn)算結(jié)果是一幅邊緣幅度圖像。
通過對原始圖像采用Sobel邊緣檢測得到如圖5所示結(jié)果。
但是,這個(gè)結(jié)果很明顯存在很多微小的干擾,這些干擾必須予以剔除,否則將對鎖定裂縫邊緣沒有任何效果。通過對邊緣檢測結(jié)果圖像仔細(xì)分析發(fā)現(xiàn),雖然存在微小干擾,但是他們的灰度值普遍偏小,針對這一發(fā)現(xiàn),對緣檢測結(jié)果圖像做與上一節(jié)中一樣的圖像分割,這會將微小的干擾有效地剔除。實(shí)際的實(shí)驗(yàn)結(jié)果也驗(yàn)證了這一點(diǎn),如圖6所示。
同過對分割后的邊緣圖像進(jìn)行觀察,圖像仍然存在一些微小的干擾,但這些干擾相對于未處理的緣檢測結(jié)果圖像已經(jīng)很少,將在后續(xù)的處理中對圖像裂縫添加附加約束,從而取出這些干擾的影響。
1.4 基于裂縫特征的附加約束
通過對大量的裂縫圖像進(jìn)行分析,發(fā)現(xiàn)圖像裂縫有如下特點(diǎn):
(1)裂縫灰度值低于墻體的灰度值。
(2)裂縫的寬度相對于整個(gè)圖像不超過圖像寬度的1/3。
(3)污染的墻體區(qū)域一般呈大的塊狀出現(xiàn),且很多僅含有一個(gè)邊界,另一邊界延伸至圖像外面。
(4)墻體的一些微小的干擾呈小塊狀出現(xiàn)。
(5)裂縫一般為帶狀。
使用ARM處理器處理圖像,由于其速度慢且有實(shí)時(shí)性要求,故不能處理整張的圖像,換句話說,必須處理局部圖像。這就很明顯增加了剔除候選裂縫的難度。該系統(tǒng)顯然是無法使用特點(diǎn)(4)、特點(diǎn)(5)的。因此僅使用了前三個(gè)特點(diǎn),并提出了約束:剔除寬度高于圖像寬度1/3的裂縫候選集,剔除寬度低于1/10的裂縫候選集。[!--empirenews.page--]
通過添加以上約束,實(shí)驗(yàn)效果有了明顯的提高。
圖7是PC機(jī)的結(jié)果,由于同時(shí)使用了5個(gè)約束效果比較好。圖8是ARM系統(tǒng)運(yùn)行的截圖,由于在ARM上不方便分步計(jì)算出每一個(gè)步驟,故直接給出了帶有測量結(jié)果的截圖。
2 基于Linux的QT界面設(shè)計(jì)算法
前文討論的是主要的算法部分,完整的裂紋測量系統(tǒng)還包括用戶接口部分,即圖形界面接口。在ARM上采用QT進(jìn)行界面設(shè)計(jì)已經(jīng)比較成熟,它具有以下主要特點(diǎn):
(1)入門容易、學(xué)習(xí)成本低。了解基本概念后就可以邊查文檔邊寫程序。
(2)跨平臺效果好。本來是Linux下的工具庫,在Windows下默認(rèn)觀感也很好。
3 軟件移植與程序優(yōu)化
由于最終的程序是運(yùn)行在ARM系統(tǒng)上,而由于ARM處理圖像時(shí)的速度慢與裂縫測量儀器的實(shí)時(shí)性要求,必須對程序進(jìn)行優(yōu)化,并將算法移植到ARM系統(tǒng)上,使之可以正確運(yùn)行。
軟件的移植比較容易。由于一開始很注重將PC機(jī)上仿真成功的算法及時(shí)移植到ARM上,故程序的移植變得比較容易。
但是程序的優(yōu)化是一個(gè)問題,雖然現(xiàn)在的ARM速度已經(jīng)提高了很多,但是在處理圖像時(shí)還是很吃力,加上算法中需要對原圖像兩次獨(dú)立處理,相當(dāng)于加倍了ARM的負(fù)擔(dān)。通過對大量裂縫圖像的分析,針對前文中提出的裂縫特點(diǎn)以及結(jié)合ARM本身的運(yùn)算速度條件,提出剔除處理全部圖像的算法。采用了只處理給定行位置上下10行的區(qū)域。通過只處理這20行圖像,極大地提高了程序的運(yùn)行速度。以上方法并行,還采用多線程編程方法,通過將圖像采樣與圖像的處理分為兩個(gè)進(jìn)程完成,有效地提高了程序的運(yùn)行速度。
4 實(shí)驗(yàn)結(jié)果分析
該程序分別在PC機(jī)和ARM開發(fā)板上運(yùn)行,效果如圖7,圖8所示。
通過大量的實(shí)驗(yàn)發(fā)現(xiàn)該算法能較好地檢測出裂縫的分布和寬度。在算法中采用了結(jié)合OTSU圖像分割與Sobel邊緣檢測的混合算法進(jìn)行裂紋檢測與寬度測量。這種算法能分別有效利用邊緣檢測與圖像分割兩種方法各自的優(yōu)點(diǎn)。另外在該算法中加入了一些分析獲得的約束條件,這能極大地彌補(bǔ)邊緣檢測與圖像分割混合方法的不足,從而有效地提高了裂紋位置鎖定與裂縫寬度測量的精度。
5 結(jié) 語
針對墻體裂紋測量,設(shè)計(jì)出了一套適用于裂縫寬度檢測的算法。該算法能較好地檢測出裂縫的分布和寬度。采用邊緣檢測與圖像分割混合的方法并通過對大量圖像進(jìn)行分析,對算法添加了一系列符合圖像裂縫特征的約束條件,極大地提高了算法的準(zhǔn)確性與健壯性。分別將程序運(yùn)行于PC機(jī)系統(tǒng)與ARM系統(tǒng),并針對ARM系統(tǒng)的特點(diǎn)對算法進(jìn)行了一系列優(yōu)化,引入了并行處理技術(shù),在提高ARM運(yùn)行速度的同時(shí),使得ARM系統(tǒng)檢測出的結(jié)果達(dá)到與PC機(jī)系統(tǒng)幾乎同等的效果。