,,
(上海海事大學(xué) 商船學(xué)院航海系,上海 200139)
水尺的測量在水尺計重和安全營運等方面都是重要的手段,是后續(xù)各種實際應(yīng)用的前提條件。對于大型船舶而言,每厘米吃水誤差可能導(dǎo)致載重誤差達到幾十甚至上百噸,這使船貨雙方在商品的結(jié)算、處理索賠、通關(guān)計稅、計算運費等方面帶來很大分歧[1]。
借助機器視覺和圖像處理方法來檢測船舶水尺并推算水尺刻度是一種新穎的方法。周廣程[2]利用圖像處理方法對船舶吃水線進行提取,將獲得的水尺刻度與吃水線之間的距離與人工檢測相結(jié)合,最終得到水尺讀數(shù),并且提出依據(jù)吃水線邊緣的H梯度、S梯度、I梯度、彩色方向距離梯度以及啟發(fā)式邊緣提取中的邊緣搜索次數(shù)這5個屬性的值均應(yīng)較大的特點,采用投票方法,根據(jù)投票結(jié)果選擇了可能的真實吃水線邊緣。
“基于機器視覺的船舶水尺自動識別和檢測方法研究”的目標(biāo)是提出一種基于機器視覺的船舶水尺自動識別和刻度測量方法,使操作人員能夠通過采集船舶水尺圖像數(shù)據(jù)快速準(zhǔn)確地測定船舶水尺,避免操作人員的繁復(fù)勞動,提高船舶水尺測量的穩(wěn)定性和精確性,為建立一套便于攜帶,易于使用的船舶水尺自動識別系統(tǒng)奠定理論基礎(chǔ)。
在船舶水尺自動檢測方法中,船舶吃水線的提取是后續(xù)工作的基礎(chǔ),其結(jié)果的精確與否直接關(guān)系到后續(xù)水尺讀數(shù)判定結(jié)果的準(zhǔn)確性。其中,波浪起伏在船體上形成的水跡線對實際吃水線的提取產(chǎn)生很大的干擾,普通的邊緣檢測方法無法得到正確結(jié)果,為此,本文提出一種基于圖像處理的船舶吃水線自動檢測方法,能準(zhǔn)確地得到吃水線位置。
船舶吃水線自動檢測的目的是去除水尺圖像邊緣檢測后的水跡線干擾。先通過圖像預(yù)處理對圖像進行平滑,然后進行邊緣檢測提取出邊緣像素,利用幾何校正后的圖像通過霍夫變換確定水跡線和吃水線邊緣位置,最后去除水跡線干擾,見圖1。
圖1 基于圖像處理的船舶吃水線自動檢測系統(tǒng)流程
由于連續(xù)的視頻是由一幀一幀的靜態(tài)圖像組成,因此對于視頻的邊緣檢測,可以通過對每幀圖像進行邊緣檢測實現(xiàn)。
Canny算子是先對處理的圖像選擇一定的高斯濾波器進行平滑,抑制噪聲,然后細化平滑后的圖像梯度幅值矩陣,尋找圖像中可能的邊緣點,最后利用雙門限檢測方法,通過雙閾值遞歸尋找圖像邊緣點,完成邊緣提取[3]。
Canny算子具有信噪比大和檢測精度高的優(yōu)點。因此,本文利用Canny算子進行邊緣檢測。
圖像f,像素點的坐標(biāo)為(x,y),由于幾何失真產(chǎn)生了另一幅圖像g,其像素點為(x′,y′)。這個變換為
(1)
式中:r(x,y)、s(x,y)——空間變換。
圖像的傾斜校正包括,傾斜角度測量和圖像旋轉(zhuǎn)。傾斜角度檢測主要對變換域的數(shù)據(jù)進行分析,尋找穿越圖像的近似直線,通過霍夫變換將這幅圖像變換到變換域。圖像中心旋轉(zhuǎn)法對于傾斜校正較為簡單,即在一幅圖像中確定存在圖像信息區(qū)域的中心,依據(jù)檢測出的角度,再圍繞中心旋轉(zhuǎn)變換。圍繞質(zhì)心的旋轉(zhuǎn)方法則需要計算出圖像的質(zhì)心,然后圍繞質(zhì)心完成圖像處理過程。
本文分割出來的字符是傾斜的,需對其進行旋轉(zhuǎn)處理。為盡可能減少處理帶來的干擾,采用圖像圍繞質(zhì)心旋轉(zhuǎn)的方法,旋轉(zhuǎn)公式為[4]
(2)
由于拍攝過程中波浪起伏,以至于被拍攝船舶與攝像機不斷運動,導(dǎo)致圖像中的水尺發(fā)生形變。形變的出現(xiàn)會使字符識別中出現(xiàn)誤差,因此考慮利用放射變換解決此問題。仿射變換時由2×2矩陣給出的線性部分和一個平移部分組成,此處平移部分單獨列出稍顯繁瑣,因此,在原坐標(biāo)基礎(chǔ)上引入第3個數(shù)值為1的坐標(biāo),這樣便有為實現(xiàn)圍繞質(zhì)心旋轉(zhuǎn),計算出圖像質(zhì)心,建立變換域,將質(zhì)心變換到坐標(biāo)原點(0,0),利用旋轉(zhuǎn)矩陣進行圖像變換,然后反變換回原圖像坐標(biāo),插值處理完成旋轉(zhuǎn)。
(3)
霍夫變換是判斷圖像空間xy中點是否共線的檢測,是一種特殊的不同空間之間的變換。設(shè)在圖像空間有一個目標(biāo),其輪廓可用代數(shù)方程表示,利用方程變換實現(xiàn)參數(shù)在不同空間中的轉(zhuǎn)換。
在圖像空間xy中,考慮點(xi,yi)和直線
yi=axi+b
(4)
式中:a——斜率;
b——截距。
通過(xi,yi)的直線有無數(shù)條,見圖2。
圖2 xy平面和參數(shù)空間
然而,參考ab平面將等式寫成b=-xia+yi的形式。在參數(shù)空間中,直線與(xi,yi)相關(guān)的直線相交于(a′,b′)點。其中,a′為斜率,b′為xy平面上包含點(xi,yi)和(xj,yj)的直線截距。
霍夫變換是把圖像空間xy轉(zhuǎn)換成空間ab中是否有共同點的問題。是將參數(shù)空間進一步分割為所謂的累加器單元。(amin,amax)和(bmin,bmax)分別為斜率和截距值期望的范圍。坐標(biāo)(i,j)的單元具有累加值A(chǔ)(i,j),并對應(yīng)于參數(shù)空間坐標(biāo)(ai,bi)相關(guān)的矩形。這些單元最初被置為零,然后,對圖像平面中的每個(xk,yk)帶入等式,令參數(shù)a分別等于對應(yīng)的b值,那么:
A(p,q)=A(p,q)+1
(5)
為解決直線接近垂直時,直線的斜率接近無限大這一問題,可以利用如下公式。
xcosθ+ysinθ=ρ
(6)
與直線不同,極坐標(biāo)公式是ρθ平面上的正弦曲線,共線點集Q生成參數(shù)空間中交于點(ρi,θj)的正弦曲線,見圖3。
圖3 xy平面和參數(shù)空間的細分單元
θ的增加和對應(yīng)ρ的求解,(ρi,θj)決定了單元相關(guān)累加器A(i,j)中Q的輸入[5]。
為了測試本文方法的性能,通過實際拍攝的船舶水尺視頻進行船舶吃水線的檢測實驗。
視頻時長為22 s,幀數(shù)為25f/s,分辨率為720×576(16∶9)。實驗硬件環(huán)境為Intel Pentium1.73 GHz,Windows XP,1 GB內(nèi)存PC機,算法軟件平臺:在VC6.0的環(huán)境下利用OpenCV視覺算法庫完成程序的編寫。
見圖4,各直方圖上呈現(xiàn)明顯的雙峰狀,選取兩峰間的最小灰度級作為閾值可以進行圖像的有效分割。
圖4 圖像切割空間選擇
邊緣檢測前要進行平滑處理,的目是提高信噪比、消除噪聲干擾。經(jīng)過實驗驗證,Canny算子是最優(yōu)的邊緣檢測算子,其利用高斯濾波器進行平滑處理。高斯濾波器為低通濾波器,其對較高頻率信號有抑制作用,因此可以較少假邊緣點的干擾。
此外,Canny算子檢測像素邊緣經(jīng)過邊緣連接,確保邊緣的完整性。通過多次試驗觀察,Canny算子的雙閾值定為(18,54)時,對于R通道的邊緣檢測最為理想,見圖5。
圖5 各算子邊緣檢測比較
幾何校正目的是還原實物本來形狀,見圖6。
圖6 幾何校正
利用霍夫變換檢測到的兩條邊緣線見圖7。
圖7 霍夫變換檢測兩條邊緣線
圖像在經(jīng)過邊緣檢測后會出現(xiàn)若干條邊緣線,而所拍攝的圖像是以水面與水尺為主要對象,因此邊緣檢測后水跡線邊緣和吃水線邊緣通常為最長的兩條線。由于水跡線一定在吃水線上方,因此當(dāng)確定兩條邊緣線位置后去掉位于上方水跡線,即得到吃水線,結(jié)果見圖8。
圖8 通過本文方法找到吃水線
本文提出視頻圖像船舶吃水線自動檢測方法能夠比較有效地解決在船舶吃水線檢測過程中水跡線的干擾問題,從而準(zhǔn)確地檢測出吃水線位置。多次試驗證明,Canny算子在進行圖像邊緣檢測時效果最佳。但此方法對邊緣檢測時的效果要求較高。此外,如果圖像中的邊緣信息比較復(fù)雜,含有大量的干擾信息,如出現(xiàn)多處斷點,會導(dǎo)致檢測誤差,本方法將不再適用。
[1] 劉仁金,高遠飆,郝祥根.船舶吃水線定位分析及算法研究[J].皖西學(xué)院學(xué)報,2009,25(5):1-4.
[2] 周廣程.圖象處理技術(shù)在船舶吃水自動檢測系統(tǒng)中的應(yīng)用[D].南京:南京理工大學(xué),2006.
[3] WANG Bing, FAN Shaosheng. An improved CANNY edge detection algorithm[C]∥2009 Second International Workshop on Computer Science and Engineering,2009:497-450.
[4] 斯蒂格,尤里奇,威德曼.機器視覺算法與應(yīng)用[M].楊少榮,譯.北京:清華大學(xué)出版社,2008.
[5] 董 梁.基于哈夫變換的圖像邊緣連接[J].現(xiàn)代電子技術(shù),2008,(18):149-151.