?

復雜光照下的船舶水尺圖像二值化新方法

2021-03-12 08:26喬志凱陳世才蒙子昕史國友
中國航海 2021年4期
關鍵詞:水尺二值字符

喬志凱, 陳世才, 蒙子昕, 史國友

(大連海事大學 航海學院, 遼寧 大連 116026)

船舶水尺位于艏、舯以及艉的左右兩舷,共六處水尺標志。通過測量六面水尺可得到船舶吃水深度進而保障船舶的安全航行。船舶水尺有英制和公制兩種,英制字符為羅馬數字,單位in,字高和相鄰兩字符間隔為1 in;公制字符為阿拉伯數字,單位cm,字高和相鄰兩字符間隔為10 cm。除此之外,有些國家和地區的字符大小和間隔會有略微的改動。

目前,國際間的大宗貨物的商品交易結算、進出口通關和海事索賠都需準確的水尺測量。傳統的水尺測量工作大多依賴人工,水尺人工讀數一般在靠港后才能進行,一方面起伏不平的大風浪會在船體留下彎曲的假水線;另一方面陽光透過水面會產生漫射和折射現象,在船體水尺區域形成大量的光照和陰影,這些都會影響人工讀數的準確性。[1]隨著科學技術的飛速發展,尤其是在人工智能領域,為提高水尺讀數的準確性和科學性,越來越多的海事部門和船舶企業開始使用船舶水尺自動識別系統來測量船舶水尺。船舶水尺自動識別系統通常由水尺定位、水尺字符分割和水尺字符識別等3部分組成。[2]由于水尺字符分割和水尺字符識別都是基于水尺二值化進行的,所以船舶水尺二值化效果的好壞將直接影響整個系統的性能。目前,對于虛假水線造成的光照不均勻與光照折射和漫射形成的陰影問題,已有的船舶水尺自動識別系統大多采用比較傳統的二值化處理方法,對此沒有針對性的解決,處理效果也很不理想。[3]傳統的二值化處理方法主要有以下兩種:

圖1 船舶水尺標志

1) 全局閾值法,這類方法是對圖像整體灰度進行數理分析,然后根據平均灰度值、灰度最大類間方差和灰度方差或灰度均差確定全局閾值,最后對比每個像素點進行二值化賦值。[4]例如OTSU算法、迭代法和平均灰度法。

2) 局部閾值法,這類方法利用選擇窗口遍歷每一個像素點,通過分析窗口中心像素點周圍鄰域內的灰度變化,得到該像素點的局部閾值,小于閾值的像素點賦值為0,大于閾值的像素點賦值為255。例如Bernsen算法、Niblack算法等。

郭秀艷[5]提出在水尺圖像上部3/4的部位,把水尺灰度圖像分行處理,然后尋找每一行的最大灰度值進行求和平均,最后依據這個平均灰度值二值化處理,這種最大灰度平均處理后的全局閾值雖然降低噪聲,但依然解決不了光照不均勻的問題;吳禹辰[6]對彩色水尺圖像進行RGB(Red Green Blue)三通道的灰度圖像處理分析,總結船體背景和水尺字符組合分割規律,然后進行二值化處理,這種方法對圖像灰度直方圖呈現明顯雙峰狀態的圖像表現效果好,但對于實際水況中細節復雜和光照不均勻的圖像處理效果不佳;趙建蕾等[7]提出先采用高低帽增強字符對比度,再進行迭代分塊處理圖像,該算法對字符處理質量要求較高,并且不易選擇合適的高低帽窗口;歐陽慶[8]提出先把原圖進行同態濾波增強處理,再用Bernsen算法求出局部閾值二值化,該方法涉及同態濾波處理,但同態濾波器的截止頻率不易確定,且經過同態濾波后還是不能解決陰影對目標造成的干擾。

傳統方法都不能很好地保留字符目標和消除復雜光照下的船體背景噪聲。傳統OTSU算法經常導致像素點強制二值化,造成細節目標丟失;Niblack算法對局部窗口中每個像素計算局部均值和方差,然后去確定局部閾值,會產生偽影現象且對光照不均問題處理效果和速度不如Bernsen算法;Bernsen算法處理復雜細節和光照不均勻問題效果較好,但會有大量的背景細節,導致圖像二值化后產生目標斷裂或偽影。1個閾值分割圖像過于籠統,考慮使用2個閾值,所以采用OTSU和Bernsen兩種算法相結合。

本文針對全局閾值法容易出現強制二值化的問題,提出分塊OTSU思想避免灰度變化劇烈區域強制二值化,大大減少了處理時間;針對局部閾值法細節保留過于豐富,存在大量光照噪聲點,提出一種高斯平滑濾波后Bernsen法的方法。通過調節相關參數能有效地減少光照陰影和船體鐵銹等造成的噪聲,同時能克服光照不均勻造成的目標偽影和字符斷裂。

1 幾種常見二值化算法分析

常見的二值化算法只對特定情況下的圖像二值化效果較好。在處理不同類型或不同需求的圖像時,需結合多種二值化算法處理,下面介紹幾種比較常見的二值化算法。

1.1 OTSU算法

OTSU算法是一種自適應閾值二值化方法,又稱大津法。[9]其核心思想是通過整體分析圖像的灰度特性,計算整體像素點灰度的最大類間方差,即目標和背景分割概率的最大值,此時這個值就是OTSU閾值,最后把小于OTSU閾值的像素點賦值為0;大于OTSU閾值的像素點賦值為255。一般情況下,OTSU最優閾值為圖像灰度直方圖的雙峰之間的最低點。

1) 對于一幅圖像,設前景像素點占圖像總像素點比例為w0,均值為u0;設背景像素點占圖像總像素點比例為w1,均值為u1;則該圖的灰度均值為

u=w0×u0+w1×u1

(1)

2) 建立灰度圖像的最大類間方差目標函數為

g(t)=w0×(u0-u)2+w1×(u1-u)2

(2)

式(2)中:當g(t)最大時,圖像背景和目標分離概率最大,分離效果最好,此時的t即為OTSU最佳閾值。

1.2 Bernsen算法

Bernsen算法是一種典型的局部閾值二值化算法,其在細節優化處理方面性能較強,能很好的保留有效目標。[10]其核心思想是用一個選擇窗口遍歷全圖每個像素點,使其根據鄰域的灰度變化決定當前像素點的閾值。

1) 設窗口的大小為(2w+1)×(2w+1);窗口的中心像素點為f(x,y);窗口在x方向的增量為l;窗口在y方向的增量為k;圖像的Bernsen算法最優解為

(3)

2) 對f(x,y)的像素點進行比較,若當前灰度值大于T,則賦值為1;若當前灰度值小于T,則被賦值為0。最終得到的二值化圖像為

(4)

1.3 Niblack算法

Niblack算法是一種結合局部標準差和局部均差提出來的局部閾值二值化算法。[11]對于某一像素點(i,j),設該點為局部窗口中心,局部窗口為b×b,則對此像素點的閾值T,Niblack算法的表達式為

T=m(i,j)+k×s(i,j)

(5)

式(5)中:T為該點的閾值;m(i,j)為以f(i,j)為中心點的窗口所有像素點的局部均差;s(i,j)為以f(i,j)為中心點的窗口所有像素點的局部標準差;k為關系調節系數(默認值為-0.2),k的取值對于Niblack的二值化效果起決定性作用。

1.4 各算法對比分析

常見的二值化算法對比見表1。

表1 常見的二值化算法對比

2 基于雙閾值的船舶水尺二值化新方法

在船舶水尺圖像上,不同位置的光照分布會隨著船舶表面的狀況和照明環境的不同而發生變化。在這種情況下,傳統的二值化方法并不總能產生很好的結果。

2.1 二值化新方法的核心思想

為解決光照不均勻的問題,特別是光照陰影,提出一種基于雙閾值的船舶水尺二值化新方法,其主要包括用圖像分塊優化OTSU算法、選擇高斯濾波優化Bernsen算法和運用雙閾值二值化。

1) 將原始水尺圖像分成m×n個塊,然后計算每一個子塊的OTSU閾值,最后通過滑動窗口對每個中心子塊進行OTSU閾值算數平均值計算。每個子塊都有各自的OTSU閾值,這樣可最大程度地聯系整體和部分,避免因強制二值化帶來的水尺圖像大面積目標丟失。

圖像被分為若干子塊,粗線虛線框為滑動窗口,見圖2。由圖2可知:當滑動窗口大于3×3時,二值化結果效果提升不明顯,運算成本也會大幅增加,因此,新算法滑動窗口選擇為3×3?;瑒哟翱诘闹行臑橹行淖訅K,中心子塊的周圍有8個相鄰子塊,中心子塊的OTSU閾值是中心子塊和周邊8個相鄰子塊OTSU閾值的算術平均值。

圖2 圖像分塊示意

2) 改進的Bernsen算法:對各個子塊分別進行傳統Bernsen二值化處理和經高斯平滑濾波后Bernsen二值化處理,最后通過線性比例結合這兩個局部閾值得到一個新的局部閾值。這樣的處理可很好地去除不均勻的光照陰影。

3) 結合全局閾值和局部閾值對各像素點逐個二值化。

2.2 二值化新方法的算法過程

將水尺圖像進行灰度化處理,把其分成m×n個塊。假設每個塊的中心點是f(x,y),大小為(2w+1)×(2w+1),k和l為窗口的參數。二值化新方法的算法流程見圖3。

圖3 二值化新方法的算法流程

1) 計算當前中心子塊的OTSU閾值T1(x,y)為中心子塊和周邊8個相鄰子塊OTSU閾值的算術平均值。由于OTSU算法經常導致像素點強制二值化,造成細節目標丟失。A可取10%~20%,由于水尺圖像存在大量噪聲,新方法取20%。故T1(x,y)應滿足:

(6)

式(6)中:hist[i]為原圖灰度直方圖;A為圖像像素點的總數。

2) 根據Bernsen算法計算f(x,y)的閾值T2(x,y)為

(7)

式(7)中:k和l為窗口的參數。

3) 建立一個高斯濾波器。

s=(2w+1)×(2w+1)

(8)

(9)

式(9)中:σ為高斯分布的標準差[13],σ越小,圖像的平滑效果越不明顯;反之,σ越大,對圖像的平滑效果越明顯。

(10)

(11)

α∈(0,1);β∈(0,1)

式(11)中:α為調整帶高斯濾波器的Bernsen算法與傳統Bernsen算法之間平衡的參數,α∈(0,1),當α為0時,該算法為Bernsen算法,當α為1時,該算法為帶高斯濾波器的Bernsen算法;β為靈敏度調節參數,當圖像灰度值和閾值的差異過大時,經常會出現錯誤結果。為解決這個問題,可將閾值乘以常數β來降低Bernsen算法的靈敏度,根據試驗經驗,一般β值取為0.9,可獲得最佳結果。

6) 利用全局閾值和局部閾值逐點二值化,得到各點的像素b(x,y),有

(12)

式(12)中:γ∈(0.20,0.40),一般取γ=0.25。

如果(1-γ)×T1≤f(x,y)≤(1+γ)×T1

(13)

7) 應用中值濾波[14]去除噪聲。

3 試驗結果及分析

3.1 試驗結果

測試圖片是由大連港口監視設備所拍攝的船舶視頻流中截取的水尺圖像。部分試驗結果見圖4~圖8。約在早上十點正常光照下截取的船舶水尺圖像如圖4所示;處于正常光照但有樹葉陰影的水尺圖像如圖5所示;拍攝于中午暴曬環境下的高亮度水尺圖像如圖6所示;拍攝于傍晚的光照較暗的水尺圖像如圖7所示;不同光照下的新方法部分試驗過程如圖8所示。

圖4 正常光照下的二值化算法對比

圖5 不均勻光照下的二值化算法對比

圖6 光照充足下的二值化算法對比

圖7 光照不足下的二值化算法對比

圖8 不同光照下的新方法部分試驗過程圖

取Niblack算法的關系調節系數k=-0.2

設新方法算法的參數組為

para=[α,β,γ,w]

(14)

圖4的參數組為

para=[0.7,0.9,0.25,3]

(15)

圖5的參數組為

para=[0.6,0.9,0.30,3]

(16)

圖6的參數組為

para=[0.6,0.9,0.25,2]

(17)

圖7的參數組為

para=[0.5,0.9,0.25,2]

(18)

3.2 試驗分析

3.2.1對比樣例分析

為證明新方法算法的有效性,挑選4種不同光照環境下的船舶水尺圖像(即光照正常、光照不均勻、光照充足和光照不足),然后分別對這4種船舶水尺圖像進行OTSU算法、Niblack算法、Bernsen算法和新方法算法二值化處理。其中:OTSU算法屬于全局閾值算法;Niblack算法和Bernsen算法屬于局部閾值算法;新方法算法屬于全局+局部的雙閾值算法。

由圖4b~圖7b可知:對于在不同光照下的船舶水尺圖像,OTSU算法整體處理效果較差。水尺字符和船板背景能很好的分離如圖7b所示;兩種大塊的船體背景或大量的陰影會對OTSU閾值的選取造成干擾,從而錯誤分離目標和背景。通常對于細節較多的圖像,全局閾值法二值化效果較差,因此考慮用局部閾值法進行試驗。局部閾值法會根據每個像素點鄰域灰度變化分別進行處理,從而把這種局部細節變化精確地表現出來。[15]

由圖4c~圖7c可知:Niblack算法對區域性的目標細節保留較好,但對光照陰影的消除效果較差,字符區域能夠比較準確的分割出來,但無法克服光照陰影造成的影響如圖4c和圖5c所示;光照過足和不足時Niblack算法二值化效果也較差,具體表現為字符區域不夠清晰,周圍孤立噪聲點多如圖6c和圖7c所示;光照反射過亮和虛假水線區域存在大面積的虛假目標??傮w來說,Niblack算法比OTSU算法能更好地識別水尺字符,保留更多的字符信息,但在消除光照陰影方面效果一般。

由圖4d~圖7d可知:Bernsen算法能完整地分割字符,但帶來了周圍背景細節的影響,造成大量的虛假目標和字符尾影,Bernsen算法會把船體凹凸面強化為虛假目標如圖4d和圖6d所示;光線較暗以及暗紅色的船體顏色造成對比度下降,從而形成大量的船體環狀虛假目標和偽影如圖7d所示;正確分離出了水尺字符和刻度,顯著地消除了樹葉陰影,但存在大量小顆粒狀的噪聲點,水尺字符邊緣和周圍的噪聲形成尾影如圖5d所示。

由圖4e~圖7e可知:新方法算法對于復雜光照條件下的水尺圖像二值化效果好,通過調節參數可解決光影、光照過量以及光照不足等問題??朔w凹凸面引起的局部光照不均,水尺字符清晰且細節保留完好如圖4e所示;消除樹葉陰影如圖5e所示,被遮蓋字符44、46和50也能精確地分割出來如圖5d所示;分割字符周圍沒有成片偽影出現,船體周圍大量的噪聲點也大量消除,水尺字符清晰明亮如圖6e和圖7e所示。

由圖4~圖8可知:分塊OTSU算法比OTSU算法保留更多字符,能消除樹影,適應不同光照條件;然后對原圖灰度圖像進行高斯濾波處理,能消除大量的噪聲,為后續的Bernsen局部細節處理做好準備;最后結合兩者得到最終的二值化圖像。

為驗證上述結論準確性,選取50張不同的水尺圖像進行二值化算法對比,得出其識別率(即90%以上目標像素點成功識別)和算法運行時間,見表2。由表2可知:對在復雜光照條件下,OTSU算法識別率低,耗時少;Niblack算法和Bernsen算法識別率較高,耗時高,時效性差;新方法算法識別率高,耗時較少,時效性好。

表2 4種二值化算法的識別率和耗時

3.2.2新方法參數分析

新方法的參數有α、β和γ以及局部閾值窗口w,在不同光照條件下,調節參數會得到合適的二值化圖像。在該算法中,α和w對處理結果有顯著影響。不同k和l下的試驗結果見圖9。不同α參數下的處理結果見圖10。

1)w:局部窗口大小。傳統的Bernsen算法采用局部窗口的最小最大值作為檢測閾值,k和l是w中的參數。一般圖像分辨率越大,w值越大,但用w分塊的數量一般大于25塊。k:假設k為w的y軸方向變量,l為w的x軸方向變量。為顯示原始陰影圖像如圖9b所示,顯示5種不同k和l取值下的試驗結果。當k和l的值較大時,Bernsen算法的計算非常耗時,并且陰影去除的有效性并不明顯,如圖9所示。k=0或l=0時,只是掃描方向不同,不會影響試驗結果。新方法采用水平掃描,即k=0來實現二值化處理,字符陰影消除明顯如圖9d所示;l:當k=0時,窗口只由l決定。由圖9d和9f可知:發現l的大小影響水尺字符的處理結果。如果l很小,字符可能會被移除,但可能會產生噪聲。l的值通常是由字符寬度內的一個值來定義的,這樣可獲得良好的結果。例如,在圖9中,字符“4”的最大寬度為14像素,最小寬度為4像素;因此,選擇水尺字符平均寬度(9像素)作為l的值。

2)β:Bernsen算法對圖像灰度值和閾值的差異比較敏感。當Bernsen算法的靈敏度為大時,經常會出現錯誤結果。為解決這個問題,可將閾值乘以常數β來降低Bernsen算法的靈敏度。根據試驗經驗,一般β值為0.9,可獲得最佳結果。

3)α:調整傳統Bernsen算法與帶高斯濾波器的Bernsen算法之間平衡的參數。調整不同的α可不同程度地去除陰影,并成功地識別出水尺字符。高斯濾波器不會模糊字符的邊緣,只是處理原始圖像以獲得新的邊緣像素點。因此,高斯濾波器改善了Bernsen算法的消除光照陰影性能。傳統Bernsen算法和高斯濾波Bernsen后的算法的結果,可看到經過高斯濾波去除了大量的陰影噪聲點,水尺字符和船體板框取得很好的二值化效果,但是α過大,會造成部分字符目標的邊緣丟失分別如圖10b和圖10c所示。經過大量試驗,為獲得最佳結果高斯濾波器的尺度σ設置為10,而α設置為0.5,如圖10d所示。

4) 參數γ:γ取值為(0.20,0.40)。參數γ為表征窗口灰度值波動大小的參數值。γ控制所挑選出的區域整體亮度偏小和偏大的程度,γ越大,可控制的區域的整體灰度變化范圍就越大,越有利于挑選出整體灰度波動大的區域,二值化后的圖像細節信息相對減少,噪聲點也減少,反之則增加。

4 結束語

復雜的光照變化經常影響船舶水尺圖像二值化效果,降低船舶水尺識別系統的整體性能。為解決此情況下,船舶水尺圖像二值化存在全局閾值法強制二值化和局部閾值法光照陰影無法去除的問題,提出一種基于雙閾值的二值化新方法。新方法先對每個圖像子塊使用OTSU算法避免強制二值化造成的目標丟失,然后利用高斯濾波預處理后的Bernsen算法消除因光照不均產生的光照陰影,最后動態調節雙閾值參數能適應不同類型的船舶水尺圖像。試驗結果表明:該方法能有效地消除光照陰影、屏蔽絕大部分背景噪聲且保留更多的水尺字符細節。

猜你喜歡
水尺二值字符
淺析國內海洋漁船與海船載重線、水尺標志勘劃的區別
支持CNN與LSTM的二值權重神經網絡芯片
海運電廠船舶靠岸側水尺圖像采集實驗研究*
字符代表幾
一種USB接口字符液晶控制器設計
水尺標志放樣及數控切割解決問題方案
HBM電子稱與西門子S7-200系列PLC自由口通訊
基于二值形態學算子的軌道圖像分割新算法
消失的殖民村莊和神秘字符
基于稀疏表示的二值圖像超分辨率重建算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合