,,
(上海海事大學 商船學院航海系,上海 200139)
水尺的測量在水尺計重和安全營運等方面都是重要的手段,是后續各種實際應用的前提條件。對于大型船舶而言,每厘米吃水誤差可能導致載重誤差達到幾十甚至上百噸,這使船貨雙方在商品的結算、處理索賠、通關計稅、計算運費等方面帶來很大分歧[1]。
借助機器視覺和圖像處理方法來檢測船舶水尺并推算水尺刻度是一種新穎的方法。周廣程[2]利用圖像處理方法對船舶吃水線進行提取,將獲得的水尺刻度與吃水線之間的距離與人工檢測相結合,最終得到水尺讀數,并且提出依據吃水線邊緣的H梯度、S梯度、I梯度、彩色方向距離梯度以及啟發式邊緣提取中的邊緣搜索次數這5個屬性的值均應較大的特點,采用投票方法,根據投票結果選擇了可能的真實吃水線邊緣。
“基于機器視覺的船舶水尺自動識別和檢測方法研究”的目標是提出一種基于機器視覺的船舶水尺自動識別和刻度測量方法,使操作人員能夠通過采集船舶水尺圖像數據快速準確地測定船舶水尺,避免操作人員的繁復勞動,提高船舶水尺測量的穩定性和精確性,為建立一套便于攜帶,易于使用的船舶水尺自動識別系統奠定理論基礎。
在船舶水尺自動檢測方法中,船舶吃水線的提取是后續工作的基礎,其結果的精確與否直接關系到后續水尺讀數判定結果的準確性。其中,波浪起伏在船體上形成的水跡線對實際吃水線的提取產生很大的干擾,普通的邊緣檢測方法無法得到正確結果,為此,本文提出一種基于圖像處理的船舶吃水線自動檢測方法,能準確地得到吃水線位置。
船舶吃水線自動檢測的目的是去除水尺圖像邊緣檢測后的水跡線干擾。先通過圖像預處理對圖像進行平滑,然后進行邊緣檢測提取出邊緣像素,利用幾何校正后的圖像通過霍夫變換確定水跡線和吃水線邊緣位置,最后去除水跡線干擾,見圖1。

圖1 基于圖像處理的船舶吃水線自動檢測系統流程
由于連續的視頻是由一幀一幀的靜態圖像組成,因此對于視頻的邊緣檢測,可以通過對每幀圖像進行邊緣檢測實現。
Canny算子是先對處理的圖像選擇一定的高斯濾波器進行平滑,抑制噪聲,然后細化平滑后的圖像梯度幅值矩陣,尋找圖像中可能的邊緣點,最后利用雙門限檢測方法,通過雙閾值遞歸尋找圖像邊緣點,完成邊緣提取[3]。
Canny算子具有信噪比大和檢測精度高的優點。因此,本文利用Canny算子進行邊緣檢測。
圖像f,像素點的坐標為(x,y),由于幾何失真產生了另一幅圖像g,其像素點為(x′,y′)。這個變換為

(1)
式中:r(x,y)、s(x,y)——空間變換。
圖像的傾斜校正包括,傾斜角度測量和圖像旋轉。傾斜角度檢測主要對變換域的數據進行分析,尋找穿越圖像的近似直線,通過霍夫變換將這幅圖像變換到變換域。圖像中心旋轉法對于傾斜校正較為簡單,即在一幅圖像中確定存在圖像信息區域的中心,依據檢測出的角度,再圍繞中心旋轉變換。圍繞質心的旋轉方法則需要計算出圖像的質心,然后圍繞質心完成圖像處理過程。
本文分割出來的字符是傾斜的,需對其進行旋轉處理。為盡可能減少處理帶來的干擾,采用圖像圍繞質心旋轉的方法,旋轉公式為[4]

(2)
由于拍攝過程中波浪起伏,以至于被拍攝船舶與攝像機不斷運動,導致圖像中的水尺發生形變。形變的出現會使字符識別中出現誤差,因此考慮利用放射變換解決此問題。仿射變換時由2×2矩陣給出的線性部分和一個平移部分組成,此處平移部分單獨列出稍顯繁瑣,因此,在原坐標基礎上引入第3個數值為1的坐標,這樣便有為實現圍繞質心旋轉,計算出圖像質心,建立變換域,將質心變換到坐標原點(0,0),利用旋轉矩陣進行圖像變換,然后反變換回原圖像坐標,插值處理完成旋轉。
(3)
霍夫變換是判斷圖像空間xy中點是否共線的檢測,是一種特殊的不同空間之間的變換。設在圖像空間有一個目標,其輪廓可用代數方程表示,利用方程變換實現參數在不同空間中的轉換。
在圖像空間xy中,考慮點(xi,yi)和直線
yi=axi+b
(4)
式中:a——斜率;
b——截距。
通過(xi,yi)的直線有無數條,見圖2。

圖2 xy平面和參數空間
然而,參考ab平面將等式寫成b=-xia+yi的形式。在參數空間中,直線與(xi,yi)相關的直線相交于(a′,b′)點。其中,a′為斜率,b′為xy平面上包含點(xi,yi)和(xj,yj)的直線截距。
霍夫變換是把圖像空間xy轉換成空間ab中是否有共同點的問題。是將參數空間進一步分割為所謂的累加器單元。(amin,amax)和(bmin,bmax)分別為斜率和截距值期望的范圍。坐標(i,j)的單元具有累加值A(i,j),并對應于參數空間坐標(ai,bi)相關的矩形。這些單元最初被置為零,然后,對圖像平面中的每個(xk,yk)帶入等式,令參數a分別等于對應的b值,那么:
A(p,q)=A(p,q)+1
(5)
為解決直線接近垂直時,直線的斜率接近無限大這一問題,可以利用如下公式。
xcosθ+ysinθ=ρ
(6)
與直線不同,極坐標公式是ρθ平面上的正弦曲線,共線點集Q生成參數空間中交于點(ρi,θj)的正弦曲線,見圖3。

圖3 xy平面和參數空間的細分單元
θ的增加和對應ρ的求解,(ρi,θj)決定了單元相關累加器A(i,j)中Q的輸入[5]。
為了測試本文方法的性能,通過實際拍攝的船舶水尺視頻進行船舶吃水線的檢測實驗。
視頻時長為22 s,幀數為25f/s,分辨率為720×576(16∶9)。實驗硬件環境為Intel Pentium1.73 GHz,Windows XP,1 GB內存PC機,算法軟件平臺:在VC6.0的環境下利用OpenCV視覺算法庫完成程序的編寫。
見圖4,各直方圖上呈現明顯的雙峰狀,選取兩峰間的最小灰度級作為閾值可以進行圖像的有效分割。

圖4 圖像切割空間選擇
邊緣檢測前要進行平滑處理,的目是提高信噪比、消除噪聲干擾。經過實驗驗證,Canny算子是最優的邊緣檢測算子,其利用高斯濾波器進行平滑處理。高斯濾波器為低通濾波器,其對較高頻率信號有抑制作用,因此可以較少假邊緣點的干擾。
此外,Canny算子檢測像素邊緣經過邊緣連接,確保邊緣的完整性。通過多次試驗觀察,Canny算子的雙閾值定為(18,54)時,對于R通道的邊緣檢測最為理想,見圖5。

圖5 各算子邊緣檢測比較
幾何校正目的是還原實物本來形狀,見圖6。

圖6 幾何校正
利用霍夫變換檢測到的兩條邊緣線見圖7。

圖7 霍夫變換檢測兩條邊緣線
圖像在經過邊緣檢測后會出現若干條邊緣線,而所拍攝的圖像是以水面與水尺為主要對象,因此邊緣檢測后水跡線邊緣和吃水線邊緣通常為最長的兩條線。由于水跡線一定在吃水線上方,因此當確定兩條邊緣線位置后去掉位于上方水跡線,即得到吃水線,結果見圖8。

圖8 通過本文方法找到吃水線
本文提出視頻圖像船舶吃水線自動檢測方法能夠比較有效地解決在船舶吃水線檢測過程中水跡線的干擾問題,從而準確地檢測出吃水線位置。多次試驗證明,Canny算子在進行圖像邊緣檢測時效果最佳。但此方法對邊緣檢測時的效果要求較高。此外,如果圖像中的邊緣信息比較復雜,含有大量的干擾信息,如出現多處斷點,會導致檢測誤差,本方法將不再適用。
[1] 劉仁金,高遠飆,郝祥根.船舶吃水線定位分析及算法研究[J].皖西學院學報,2009,25(5):1-4.
[2] 周廣程.圖象處理技術在船舶吃水自動檢測系統中的應用[D].南京:南京理工大學,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] 斯蒂格,尤里奇,威德曼.機器視覺算法與應用[M].楊少榮,譯.北京:清華大學出版社,2008.
[5] 董 梁.基于哈夫變換的圖像邊緣連接[J].現代電子技術,2008,(18):149-151.