郝真 張曉峰 王善民 王隨
關(guān)鍵詞:裂縫;雙目視覺(jué);C#;軟件設(shè)計(jì)
0 引言
水下結(jié)構(gòu)物因長(zhǎng)期受到水體腐蝕和水力沖刷會(huì)產(chǎn)生結(jié)構(gòu)性損傷,當(dāng)損傷積累到一定程度會(huì)嚴(yán)重影響到水下結(jié)構(gòu)物的使用,最后導(dǎo)致災(zāi)害的發(fā)生。
隨著計(jì)算機(jī)視覺(jué)和圖像處理等相關(guān)技術(shù)的發(fā)展,雙目視覺(jué)技術(shù)被廣泛應(yīng)用于各種領(lǐng)域。白創(chuàng)等[1]利用雙目視覺(jué)技術(shù)測(cè)量車(chē)身尺寸,取得了良好的實(shí)驗(yàn)效果;萬(wàn)至達(dá)等[2]以水壩表面缺陷為研究對(duì)象,對(duì)雙目視覺(jué)測(cè)量進(jìn)行了相關(guān)算法研究。
本文在雙目視覺(jué)算法研究的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了基于C#的水下結(jié)構(gòu)物表面裂縫測(cè)量系統(tǒng)。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,該軟件可以實(shí)現(xiàn)相機(jī)標(biāo)定、圖像采集、圖像預(yù)處理、立體匹配、測(cè)量和記錄等功能,符合軟件設(shè)計(jì)的要求。
1 雙目視覺(jué)技術(shù)簡(jiǎn)介
采用雙目視覺(jué)技術(shù)完成測(cè)量是計(jì)算機(jī)視覺(jué)領(lǐng)域研究的重點(diǎn)課題,該技術(shù)通過(guò)兩臺(tái)不同位置的相機(jī)拍攝同一場(chǎng)景下的物體,并計(jì)算雙目相機(jī)中同一點(diǎn)的視差圖,通過(guò)點(diǎn)的三維還原,即可得到該點(diǎn)在某一相機(jī)為原點(diǎn)的三維空間中的世界坐標(biāo)。雙目視覺(jué)技術(shù)主要由相機(jī)標(biāo)定和立體匹配組成,原理如圖1所示。
1.1 相機(jī)標(biāo)定
通常相機(jī)在生產(chǎn)或者安裝中,不可避免地引入非線性畸變,該畸變會(huì)導(dǎo)致立體匹配誤差被放大,嚴(yán)重影響后續(xù)測(cè)量的準(zhǔn)確性,因此相機(jī)標(biāo)定通常是雙目視覺(jué)技術(shù)的第一步。
雙目相機(jī)標(biāo)定是根據(jù)像素坐標(biāo)系與世界坐標(biāo)系的關(guān)系,利用一定的約束條件,求解雙目相機(jī)內(nèi)外參數(shù)的過(guò)程。傳統(tǒng)的相機(jī)標(biāo)定技術(shù)中,張正友[3]提出了一種基于二維棋盤(pán)格的相機(jī)標(biāo)定方法,該方法靈活且使用方便,是目前最常用的相機(jī)標(biāo)定方法,但是在水中易受到光的折射影響,導(dǎo)致相機(jī)標(biāo)定精度較低。喬金鶴[4]通過(guò)引入高階徑向畸變和不能忽略切向畸變的方法,成功計(jì)算出雙目相機(jī)的內(nèi)外參數(shù),且重投影誤差符合預(yù)期。
1.2 立體匹配技術(shù)
1) 立體校正
雙目相機(jī)拍攝的圖像并不能完全達(dá)到共面且平行,因此在立體匹配前需要對(duì)非共面且行對(duì)準(zhǔn)的兩幅圖像進(jìn)行立體校正:首先通過(guò)相機(jī)標(biāo)定得到的內(nèi)參數(shù)消除畸變,然后使用外參數(shù)進(jìn)行校正。該流程如圖2所示:
通過(guò)立體校正使用Bouguet算法,該算法依賴于相機(jī)的外參數(shù)旋轉(zhuǎn)矩陣R及平移矩陣T。雙目相機(jī)采集的圖像經(jīng)過(guò)立體校正可以大大提高立體匹配的精度,并減少測(cè)量誤差。
1.3 半全局立體匹配
立體匹配算法是雙目視覺(jué)的核心內(nèi)容,根據(jù)約束的作用范圍不同,通常分為局部立體匹配和全局立體匹配。本文測(cè)量對(duì)象為水下結(jié)構(gòu)物,容易受到光線折射的影響,因此本文選擇對(duì)光線不敏感且魯棒性更好的半全局立體匹配。
半全局立體匹配算法是基于一種逐像素匹配的方法,該方法使用互信息來(lái)評(píng)價(jià)匹配代價(jià),并通過(guò)組合很多一維的約束來(lái)近似一個(gè)全局的二維平滑約束,主要有預(yù)處理、代價(jià)計(jì)算、動(dòng)態(tài)規(guī)劃、后處理四個(gè)步驟[5-6]。通常半全局立體匹配可以得到的稠密的視差圖,如圖3(c)所示,為了更直觀反映該像素點(diǎn)距離相機(jī)的深度信息,本文將視差圖中不同的深度信息轉(zhuǎn)化為彩色視差圖,如圖3(d)所示。
通過(guò)選擇視差圖中任意一點(diǎn),即可得到該點(diǎn)在空間坐標(biāo)系中的三維坐標(biāo),最終實(shí)現(xiàn)兩點(diǎn)之間的尺度測(cè)量。
2 裂縫測(cè)量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
本文在雙目視覺(jué)技術(shù)研究的基礎(chǔ)上,設(shè)計(jì)和實(shí)現(xiàn)了裂縫測(cè)量系統(tǒng)軟件。該軟件交互界面由C#搭建完成,算法由VS軟件安裝OpenCV機(jī)器視覺(jué)庫(kù)開(kāi)發(fā)完成,算法實(shí)現(xiàn)后轉(zhuǎn)為dll動(dòng)態(tài)庫(kù)供人機(jī)交互界面調(diào)用,最終實(shí)現(xiàn)人機(jī)交互界面與算法的統(tǒng)一。
2.1 軟件模塊設(shè)計(jì)
本文設(shè)計(jì)的裂縫測(cè)量系統(tǒng)軟件模塊共分為登錄模塊、相機(jī)標(biāo)定模塊、圖像預(yù)處理模塊及裂縫測(cè)量模塊四個(gè)模塊,如圖4所示。
1) 登錄模塊需要主要由用戶名數(shù)據(jù)庫(kù)驗(yàn)證及結(jié)果保存,用戶通過(guò)安全登錄用戶名和密碼才可以進(jìn)入該系統(tǒng)。
2) 相機(jī)標(biāo)定模塊,主要完成水下相機(jī)標(biāo)定。通常相機(jī)的標(biāo)定結(jié)果只受環(huán)境的影響,因此只需一次標(biāo)定即可長(zhǎng)期使用,并且可以實(shí)時(shí)查看相機(jī)標(biāo)定效果。
3) 水下圖像預(yù)處理模塊,主要針對(duì)水下圖像進(jìn)行處理,其中測(cè)量之前需選圖像去噪,勻光處理和圖像增強(qiáng)根據(jù)采集圖像的質(zhì)量人工選擇。
4) 裂縫測(cè)量模塊,該部分是系統(tǒng)的核心內(nèi)容,預(yù)處理后的圖像進(jìn)行立體校正,其次使用改進(jìn)后的半全局立體匹配得到視差圖,在視差圖可以使用自動(dòng)測(cè)量或者手動(dòng)選擇實(shí)現(xiàn)尺度測(cè)量。
2.2 人機(jī)交互界面設(shè)計(jì)
本軟件設(shè)計(jì)的界面共有登錄界面、相機(jī)標(biāo)定界面、水下結(jié)構(gòu)物表面裂縫測(cè)量界面組成。
登錄界面包括登錄名、密碼和賬戶類型組成,并可以登錄或者注銷(xiāo)登錄賬號(hào),如圖5所示。
相機(jī)標(biāo)定可以實(shí)時(shí)采集棋盤(pán)格圖像或者從本地讀取,并輸入角點(diǎn)個(gè)數(shù)和方格大小;標(biāo)定方法可以選擇張正友標(biāo)定法或改進(jìn)張氏標(biāo)定法;最后可以根據(jù)標(biāo)定結(jié)果立即顯示立體校正效果。
測(cè)量界面如圖6所示,該界面共有包括立體校正功能、測(cè)量功能、圖像預(yù)處理功能、日志查詢功能和裂縫測(cè)量顯示區(qū)五個(gè)功能。立體校正主要有讀取標(biāo)定結(jié)果和立體校正功能;測(cè)量功能包括手動(dòng)測(cè)量和自動(dòng)測(cè)量;圖像預(yù)處理包括圖像去噪、勻光處理及圖像增強(qiáng);日志查詢功能可以按時(shí)間查詢時(shí)間范圍內(nèi)數(shù)據(jù)庫(kù)中保存的內(nèi)容;裂縫測(cè)量顯示區(qū)顯示當(dāng)前原始左、右圖像,二值化圖像及立體匹配后的視差圖。
3 軟件測(cè)試與仿真
3.1 相機(jī)標(biāo)定測(cè)試
相機(jī)標(biāo)定可以選擇從相機(jī)實(shí)時(shí)讀取棋盤(pán)格圖像或者從本地路徑中直接讀取,計(jì)算得到的相機(jī)內(nèi)外參數(shù)可保存供直接使用。相機(jī)標(biāo)定現(xiàn)場(chǎng)實(shí)驗(yàn)如圖7所示。
相機(jī)標(biāo)定實(shí)驗(yàn)中,通過(guò)雙目相機(jī)實(shí)時(shí)拍攝棋盤(pán)格圖像統(tǒng)計(jì)、計(jì)算,并根據(jù)雙目相機(jī)內(nèi)外參數(shù)實(shí)現(xiàn)立體校正,如圖8所示。
3.2 水下結(jié)構(gòu)物表面裂縫測(cè)量系統(tǒng)測(cè)試
本文系統(tǒng)測(cè)試環(huán)境選擇在實(shí)驗(yàn)室條件下進(jìn)行,其中水流為靜止?fàn)顟B(tài),水溫20°,水下結(jié)構(gòu)物由水泥制成,裂縫為不規(guī)則的曲線,并加入一定的雜質(zhì),如圖9所示。
本軟件提供兩種測(cè)量方法,手動(dòng)測(cè)量或者自動(dòng)測(cè)量。自動(dòng)測(cè)量通過(guò)二值化圖像中自動(dòng)尋找裂縫最大寬度處的二維坐標(biāo)實(shí)現(xiàn)自動(dòng)測(cè)量,但是一些極端情況,圖像處理不能得到二維坐標(biāo),因此需要通過(guò)手動(dòng)選擇視差圖中的任意兩個(gè)二維點(diǎn)實(shí)現(xiàn)手動(dòng)測(cè)量,測(cè)量實(shí)驗(yàn)如圖10所示。
本軟件可以自動(dòng)設(shè)置匹配窗口大小、閾值、搜索范圍等實(shí)現(xiàn)立體匹配。得到的測(cè)量結(jié)果如圖11所示。
根據(jù)實(shí)驗(yàn)結(jié)果,本軟件可以實(shí)現(xiàn)水下結(jié)構(gòu)物表面裂縫測(cè)量,且測(cè)量誤差小于5%,測(cè)量結(jié)果滿足要求。根據(jù)國(guó)內(nèi)水利水電標(biāo)準(zhǔn),及時(shí)有效分類防治,可以減少事故的發(fā)生。
4 結(jié)束語(yǔ)
本文通過(guò)C#開(kāi)發(fā)工具設(shè)計(jì)并實(shí)現(xiàn)了水下結(jié)構(gòu)物表面裂縫測(cè)量系統(tǒng)。該軟件由登錄功能、相機(jī)標(biāo)定功能、水下圖像預(yù)處理功能和測(cè)量功能組成,能實(shí)現(xiàn)水下結(jié)構(gòu)物表面的裂縫測(cè)量,滿足實(shí)際工程需要。