?

基于場景自適應的船舶吃水值計算方法

2024-03-05 07:35杜京義梁大明
無線電工程 2024年3期
關鍵詞:水尺伽馬字符

付 豪,張 渤,杜京義,梁大明

(1.西安科技大學 通信與信息工程學院,陜西 西安 710054;2.西安科技大學 電氣與控制工程學院,陜西 西安 710054)

0 引言

海運船舶通常采用水尺計重的方式獲得貨物質量[1],通過卸貨前后的六面水尺讀數獲得吃水深度的變化來計算船舶載運貨物的質量。獲得六面水尺讀數常見的方式為人工觀測,這種傳統的方式受主觀性和環境的影響,容易造成較大的讀數誤差。除人工觀測的方法外,還有通過傳感器等輔助儀器測量的方法和圖像處理的方法。蓋志剛等[2]提出固定傳感器激光測量到水面的距離的方法。吳俊等[3]提出聲吶傳感器獲得輪廓線的方法。管利廣等[4]提出壓力傳感器與陀螺儀結合獲得載重量的方法。以上的外載輔助儀器容易受場景限制、海水腐蝕,因此更多的學者提出圖像處理的方法。在傳統的圖像處理方法中,吳海[5]提出透明水體邊緣檢測,采用霍夫直線檢測水線,渾濁水體分析顏色分量確定感興趣區域(Region of Interest,ROI),邊緣檢測挑選合適分量,水平投影定位水線,彩色圖像RGB分割字符,采用平方差和(Sum of Squared Differences,SSD)相似度計算獲得匹配區域,然后仿射變換動態匹配視頻。李錦峰[6]提出雙向提取的字符區域采用背景色填充,利用K-means聚類算法分割圖像,定位吃水線。但這些傳統的方法在遇到水尺受損、水面有浪花等復雜環境時表現較差。在采用深度學習方法中,吳禹辰[7]提出采用Faster R-CNN算法固定大小錨框標定水尺位置,采用最小二乘法和3次樣條插值擬合,設計了傾斜和非傾斜2種方法計算吃水線。此方法面對有浪花、船體斑駁等情況,對吃水線的定位精度會有所下降。張鋼強[8]采用語義分割的方法,分割水體與船體定位吃水線,采用單一灰度圖像最大穩定極值區域(Maximally Stable Extremal Regions,MSER)與CIElab的L通道的MSER提取候選區域合并,選取blob特征分析對字符裁剪進行識別。這種方法對吃水線的定位有顯著提升,但針對水尺字符傾斜角度較大的情況表現較差,其性能和魯棒性會較差。針對圖像的矯正,薛銀濤[9]提出手動旋轉第一幀視頻圖像,之后的每一幀旋轉同樣的角度,但該方法自動化程度不高且只適用于固定位置拍攝的情況。安鴻波[10]提出對二值化圖像進行形態學處理,通過獲得字符與吃水線的走勢計算斜率進而矯正圖像。然而,在夜間和船體受損的情況下,該方法效果表現不佳。

針對船體表面彎曲程度不同、水尺拍攝時間段不一、水尺標志區域受損且存在傾斜等問題,本文提出一種基于場景自適應的船舶吃水精確檢測方法,水尺計重會根據不同船型的彎曲程度有相應公式修正,因此重點解決后兩點的場景問題,首先采用不同閾值的修正型伽馬矯正,改善夜間拍攝圖像的質量,接著采用語義分割定位字符和吃水線排除水尺標志區域受損的影響,再結合字符和吃水線的定位信息矯正圖像,然后裁剪字符進行識別和精確定位,最后根據字符信息計算獲得吃水深度。本文方法解決了夜間拍攝識別困難的問題,對不同場景的拍攝都有較好的矯正效果,排除了水尺標志區域受損的干擾,實現吃水深度的精確測量。

1 船舶吃水值計算方法流程

本文提出一種基于場景自適應的船舶吃水值計算方法,主要分為四部分。首先,進行圖像預處理,利用亮度公式確定是否需要增強圖像,并對需要增強的圖像采用修正型伽馬校正,以提升夜間拍攝圖像的質量;其次,進行圖像分割,利用改進的語義分割算法對水體、水尺字符和船體進行分割,定位吃水線和水尺字符;然后,進行圖像矯正,結合水體分割圖像信息和水尺字符圖形信息,計算斜率并設計對應坐標,采用投影變換對水尺進行矯正;最后,進行吃水值計算,利用矯正后的字符分割圖像的輪廓信息裁剪水尺字符,對大M字符二值化后進行字符識別獲得數值信息,對小字符進行邊緣檢測,結合數值信息,利用吃水值的計算公式得到吃水值。吃水值計算流程如圖1所示。

圖1 吃水值計算流程Fig.1 Draft value calculation process

本文數據來源于海南某港口電廠,采集圖像時通常為電廠人員乘坐小艇在全天任意時間段拍攝,如圖2所示。在夜間采集時,通常為手電照射水尺區域,然后采集圖像,采集到的圖像如圖2(a)所示,圖像出現光照不均勻,且水尺標志出現高亮。此外,由于船只受海水腐蝕和靠岸側船體刮擦,工作人員的拍攝角度也受到限制,因此拍攝的圖像可能存在水尺區域缺失、白色字符脫色、水尺標志傾斜和水面有浪花等情況。這些因素都會對船舶吃水值的計算造成很大困難。拍攝圖像時存在諸多不利因素,例如光線環境變化、水尺損傷和傾斜等,多數拍攝圖像存在字符傾斜的情況,因此需要一種算法來自適應不同的場景。

(a)夜間拍攝

(b)船體銹蝕

(c)浪花干擾

(d)字符缺損

2 圖像預處理及分割

受港口環境和拍攝方式的限制,采集到的水尺圖像往往需要進行預處理。觀察可知,夜間拍攝和白天拍攝的圖像存在明顯的亮度差異,字符區域不清晰。因此,本文采用亮度公式判定圖像是否需要進行亮度增強。首先,計算圖像RGB三通道的像素均值;然后,利用式(1)求得圖像的亮度表達值。針對多張白天與夜間拍攝的圖像分別進行計算并分析二者亮度表達值的分布情況,如圖3所示。由于夜間拍攝也存在光照良好情況,所以設置亮度表達值的閾值為100,將小于此閾值的圖形進行亮度增強,提高較暗區域的亮度,使得水體和字符能夠更加突出。

圖3 夜間與白天拍攝圖像的亮度分布Fig.3 Brightness distribution of images taken at night and during the day

亮度公式如下:

Y=0.299×R+0.587×G+0.114×B,

(1)

式中:R、G、B為圖片的顏色分量,Y為求得的亮度表達值。

針對圖像的亮度增強,常見的方式如下:

方式1是對圖像的HSV顏色分量中的V分量進行直方圖均衡化[11],壓制圖像高亮區域,提亮圖像暗區域,這種方式對于亮度表達值較小的圖像會出現嚴重的色彩失真,對后續的圖像分割任務有重要影響。

方式2是對圖像采用伽馬校正,通過非線性變換,解決圖像過暗和過亮問題。其中,伽馬值為最重要的參數,當伽馬值大于1時,用于校正較亮的圖像;小于1時,用于校正較暗的圖像。手動調節伽馬值可以通過觀測找到最佳校正的伽馬值,但不適用于大批量的圖像處理。文獻[12]提出的自適應伽馬校正,通過假設正常圖像的像素均值為0.5,計算目標圖像的平均亮度,并分別對其取對數相除,以獲取伽馬值,使得目標圖像的直方圖向中心靠近。這種方式對于不太暗的圖像可以獲得的較好校正效果,但是對于太暗的圖像校正結果會出現偏色。

因此,提出了一種修正型的伽馬校正,采用分段函數對小于0.5的伽馬值進行上調,大于0.5的不進行修改,用上述RGB三通道得到的亮度表達值歸一化后代替原公式中用圖像灰度化求均值得到的平均亮度,使其計算值更準確。圖像預處理結果如圖4所示。經實驗,修正后伽馬值對整體圖像校正效果更好,適應性增強。

(a)原圖

(b)方式1

(c)方式2

(d)本文方法

本文采用的修正型伽馬校正公式如下:

(2)

(3)

式中:Y/255為亮度表達值歸一化,γ為未修正的伽馬值,伽馬為采用分段函數進行修正獲得伽馬值。

在水尺深度的測量中,圖像的分割任務尤為重要。傳統的分割方法會受圖像場景變換的影響。沒有風浪、船體無污染以及照充足時拍攝的圖像,傳統圖像分割方法可以準確地定位吃水線以及字符,圖像的矯正工作也會減輕,計算結果相對準確。但實地環境以及船體是多變的,復雜的背景難以取得良好的效果,并進而影響吃水深度的計算。因此,針對船舶水尺圖像中船體和水尺標志損傷,采用傳統的圖像處理技術已經不能滿足要求,對水線和字符的定位工作就難以進行。目前采用語義分割的方式已經在分割船體和水體取得了很好的結果。語義分割的模型眾多,例如FCN[13]、DeepLab[14]、SegNet[15]和PSPNet[16]。本文選用常用于醫學圖像分割的UNet[17]網絡,其采用編碼(encoder)與解碼(decoder)的U型結構,在醫學中的CT掃描影像、顯微圖像等的分割任務中有著出色的表現。針對船舶水尺的水體與字體分割任務中,目標的特征較為單一,但其水尺標志區域受外界因素的影響會有不同程度的損傷,這對目標分割的精細化是一項挑戰。因此,對原UNet進行改進,采用特征提取能力較好的VGG網絡替換原主干網絡。VGG每一層的卷積提取的特征并不一定是關鍵特征,因此在編碼與解碼的跳躍連接中增加混合注意力機制(Convolutional Block Attention Module,CBAM)以提高網絡對字符與水體區域的關注,細化目標區域的特征提取。修改損失函數,采用Focal Loss作為損失函數,讓網絡更注重解決相對難分割的字符樣本,提高分割的精度。改進后的UNet網絡結構圖如圖5所示。

圖5 改進后的UNet網絡結構Fig.5 Diagram of the improved UNet network structure

CBAM為融合通道注意力(Channel Attention Model,CAM)和空間注意力(Spatial Attention Model,SAM)的混合注意力機制,CBAM結構如圖6所示。在骨干網絡VGG提取的特征層與對應上采樣進行特征融合時,將中間的特征層輸入CAM,獲取其通道上的注意力權重,再將結果傳到SAM獲得特征圖的空間注意力權重。經過CBAM注意力機制處理,網絡更聚焦重要特征區域,抑制無關特征的影響。

圖6 CBAM結構Fig.6 CBAM structure

流程公式如下:

(4)

(5)

式中:F為主干網絡提取特征圖,Mc為CAM特征圖,Ms為SAM特征圖,?表示元素級相乘。

替換原本的損失函數,選用Focal Loss作為本文的損失函數,目的是調整網絡對易分割目標與難分割的權重分配,字符的分割相對于水體為難分割目標,因此選用Focal Loss解決字符的分割問題行之有效。

Focal Loss的公式如下所示,通過對交叉熵損失函數CE引入一個調節因子(1-p′)λ減小容易分類的樣本權重,關注難分類樣本。

(6)

(7)

(8)

式中:p為預測標簽的置信度,λ為調節因子的調節參數。λ≥0,λ的值越大,易分類的loss越小,這就使模型關注難分類樣本。

3 圖像矯正及吃水值計算

由于拍攝角度受限,采集的圖像會出現不同程度的傾斜,傾斜圖像對于后期計算吃水值會有很大影響,若對傾斜圖像進行計算,則需根據不同的傾斜情況設計不同的算法,且精度會有所偏差。所以,由上述得到的水體和字符的分割圖像對原圖像進行矯正可以大大減少后期吃水值的計算難度,并且精度有所提高[18]。通過水體和字符的分割圖像可以計算吃水線和字符的斜率,利用斜率在原圖像上尋找4對相對應的坐標點,采用投影變換對圖像進行矯正。與矯正結果有著直接關系的是斜率的確定,因此針對兩斜率的計算設計如下2個算法流程。

(1)針對水體分割圖像

① 采用形態學處理,去除分割產生的雜點和填充細小的孔洞;

② 對①結果進行canny邊緣檢測,獲得吃水線的邊緣;

③ 對②結果采用輪廓檢測得到吃水線的點集;

④ 對③結果采用最小二乘法擬合得到水線的斜率。

對于吃水線斜率算法設計,采用canny邊緣檢測[19]算法對二值圖像的邊緣查找要好于其他邊緣檢測算法,不會出現吃水線邊緣未檢測到和邊緣存在大空洞的情況。沒有對圖像直接進行輪廓檢測獲取吃水線點集,是因為輪廓會包含圖片的邊框,需設計另外的算法對其進行去除,適應性差且圖像處理速度變慢。

(2)針對字符分割圖像

① 采用形態學處理,去除分割產生的雜點和填充細小的孔洞;

② 對①結果中字符的每個連通區域進行最小外接矩形擬合獲得連通區域的中心坐標;

③ 對②中心坐標的集合進行外接矩形擬合,獲得穿過中心坐標點最多的直線;

④ 計算②獲得的所有中心坐標到③獲得直線的距離,采用大于距離集合均值剔除的算法,去除離群點;

⑤ 采用最小二乘法擬合④的結果點集,獲得字符的斜率。

對于字符的斜率算法設計,采用連通區域的外接矩形中心點再次進行外接矩形擬合,可以很好地獲得所有中心點的大體走向,再利用距離信息剔除離群的點,最后采用最小二乘法擬合直線,可以得到更加精準的斜率,相對于直接對中心坐標進行最小二乘法擬合直線,效果要更好。算法的結果和比較如圖7所示,其中圖7(e)中的實線為剔除離群點的結果,虛線為直接擬合直線的結果。

(a)原圖

(b)水體分割圖

(c)字符分割圖

(d)字符連通區域中心點擬合

(e)字符2種擬合直線結果

(f) 最終擬合斜率

最小二乘法是一種數學優化技術,通過最小化誤差的平方和尋找數據的最佳函數匹配。假設一組坐標樣本為((x1,y1),(x2,y2),…,(xn,yn)),對樣本進行直線擬合,直線公式設為y=kx+b。通過使損失函數值最小,求得k和b的值如下:

(9)

(10)

根據吃水線和字符的斜率,采用投影變換對圖像進行矯正,投影變換是將圖像投影到一個新的視平面,即正面拍攝水尺圖像的效果。投影變換需要4組兩兩對應的坐標,通過計算得到變換矩陣[20],對原圖進行矯正,由于矯正后的圖像會出現圖像缺失,因此為保證圖像的字符較好地保留下來,對坐標的選定為圖7(f)中白線與圖片的邊框的交點和以白線的交點為十字中心的正十字線與圖片的邊框的交點作為4組對應點。圖像矯正結果如圖8所示,矯正之后可以很好地保留圖像的有效區域且結果較為準確,便于后續吃水值的計算。

圖8 圖像矯正結果Fig.8 Image correction results

投影變換算法公式如下:

(11)

(12)

式中:(x0,y0)為原圖像中的坐標點,(X,Y,Z)為變換后的目標點,通過4組對應的坐標點即可求出矩陣中a11,a12,…,a33的值,其中a33=1。

吃水值的計算,需要大M字符的數值和字符與水線的位置。水線的位置信息在圖像矯正的過程已經獲得,因此只需獲得字符的位置信息和靠近吃水線的大M字符的數值。

(1)大M字符數值的確定

在矯正原圖的同時對字符的分割圖像進行矯正,對字符的矯正結果進行輪廓檢測,通過獲得的輪廓信息裁剪原圖中的大M字符,將裁剪的左側大米數的字符進行大律法二值化,再對二值化圖像進行字符識別,獲得字符的數值。采用大律法可以更好地得到描述字符特征的二值圖像,相對于原圖,裁剪后的圖像二值化效果更佳。

(2)字符位置的確定

對裁剪的右側字符進行高斯濾波然后邊緣檢測,通過水平投影的方法獲得頂部位置,由于光照會在字符的左、右下側產生陰影,對字符的頂部沒有影響。因此使用相鄰字符頂部像素距離與實際距離的比值作為像素比例尺,最終計算底部字符到水線的距離通過計算公式得到吃水值。針對有波浪情況下采集的水尺視頻,可對連續的讀數結果進行周期化,之后取平均值,能有效降低波浪對讀數精度的影響;針對字符白色漆料缺失等情況下,采用邊緣檢測可有效避免其造成像素比例無法正確計算和吃水值出現大誤差的問題,算法的適應性更強。吃水值計算過程如圖9所示。

(a)分割字符矯正

(b)大M字符裁剪與二值化

(c)小字符裁剪

(d)邊緣檢測

(e)水平投影

吃水值計算示意如圖10所示,標準船只的小字符的高度為10 cm,假設字符6和8的頂部像素距離為S2,字符6與水線的像素距離為S1,大M字符的下方有2個字符,設吃水值為D,吃水值的計算公式為:

(13)

圖10 吃水值計算示意Fig.10 Schematic diagram of draft value calculation

4 結果與分析

4.1 夜間圖像增強結果

針對夜間圖像的處理結果如圖11所示,從左向右圖像亮度依次降低,V分量直方圖均衡化方法會使圖像出現嚴重偏色,自適應伽馬校正的方法在圖像亮度較低時會出現過度校正,圖像會偏白失真。與二者比較可以看出經過修正后伽馬值校正效果更佳,在圖像不失真的情況下最大可能凸顯水尺標志與水體。

(a)場景1 (b)場景2 (c)場景3

4.2 圖像分割結果

實驗數據經過剔除無效圖像后,包含1 035張白天采集圖像和150張夜間采集圖像。對夜間采集的圖像經過修正型伽馬校正后與白天采集的圖像放在一起,采用百度飛槳提供的半自動打標簽軟件EIseg對所有的圖像進行標注,標注類別為字符和水體。如標注圖像的示意如圖12所示,分為字符的標注區域、水體的標注區域和船體區域。

圖12 圖像標注示意Fig.12 Illustration of the image annotation

數據集中訓練集與驗證集的比例劃分為4∶1,采用Windows 10操作系統實現,硬件環境如下:CPU為Intel(R) Xeon(R) CPU E5-2640 @2.40 GHz、GPU為NVIDIA Quadro P2200,后期可使用更高規格的GPU進一步提高檢測速度。算法采取了凍結網絡主干和解凍訓練結合的方式進行訓練,訓練均采用遷移學習,以加快模型的收斂,特征提取網絡權重均為數據集VOC2007訓練權重,訓練總輪次為300,50次凍結訓練加250次解凍訓練,基本學習率為0.001,下采樣倍數為16,輸入圖像的尺寸為512 pixel×512 pixel,凍結訓練和解凍訓練的batch-size分別為8和4。訓練300次后,訓練集和驗證集的損失值曲線如圖13所示,可以看到模型的迭代已經收斂。

圖13 訓練集與驗證集loss曲線Fig.13 Training loss curves versus validation loss curves

4.2.1 評價指標

采用單個類別的交并比(Intersection over Union,IoU)、召回率(Recall)和精確率(Precision)作為衡量指標,單類別分析更能分析其分割效果。IoU為預測結果與真實標簽交集與并集的比值,示意如圖14所示。

圖14 IoU示意Fig.14 Diagram of IoU

(14)

(15)

(16)

式中:FP為預測為真樣本,實際為假樣本的部分;TP為預測為真樣本,實際為真樣本的部分;FN為預測為假樣本,實際為真樣本的部分。

4.2.2 不同算法對比

為驗證本文改進UNet的優勢,分別對比了幾個主流網絡在分割水體與字符的表現。不同模型分割結果的對比分析如表1所示,不同模型在水體的分割任務中的表現相差并不大,所以水體的分割不作為重點分析對象。不同模型分割結果如圖15所示。對于字符的分割,改進的UNet對比幾個主流的網絡,分割效果最好,對比采用ResNet50為特征提取網絡的UNet,IoU也提升了2.23%。

表1 不同模型分割結果對比Tab.1 Comparison of segmentation results of different models

(a)原圖 (b)標簽 (c)HrNet (d)BiSeNetv2 (e)ABCNet (f)UNet (g)本文算法

4.2.3 消融實驗

為驗證特征提取網絡替換,以及添加注意力機制和修改損失函數的有效性,首先對不同的特征提取網絡替換進行了評估,然后對增加注意力機制和修改損失函數進行了評估。消融實驗結果如表2所示,水體的分割結果已滿足檢測需求,因此只列出字符分割的評價指標。

表2 消融實驗Tab.2 Ablation experiment

觀察表2可知,對于字符這種特征較為單一的目標,ResNet的表現并不如VGG,在選用不同深度的VGG特征提取網絡中,VGG16的表現最佳,網絡深度的提升可能會造成梯度消失,對特征的提取效果會降低。字符的分割效果會一定程度影響圖像的校正效果,在添加了注意力機制與修改損失函數后,字符的IoU、Recall和Precision均有所提升,這對后續的圖像校正有著重大的作用。消融實驗證明對UNet所做改進的有效性。

4.3 圖像校正結果

針對水尺標志圖像的矯正的實驗部分結果如圖16所示,將不同場景下的水尺圖像進行實驗對比。傳統方式中,文獻[10]提出的經過mean-shift濾波再自適應閾值分割,針對圖像質量較好的情況有著良好的表現,根據設定的條件可以獲得字符和吃水線的斜率,圖像的矯正效果較好,但對于復雜的環境變化,如水面反光、水尺標志區域受損以及光照條件差等情況,此方法不能取得穩定的表現。本文依靠語義分割,在各種復雜場景都能取得良好效果,通過對輪廓以及邊緣信息的分析,矯正圖像的效果都要優于傳統方式。

(a)水面反光 (b)船體受損 (c)夜間拍攝

4.4 吃水值計算結果

吃水值計算結果如圖17所示,從上往下第2條紅色標注線到第3條紅色標注線的距離為最下方字符到吃水線的像素距離1;第1條紅色標注線到第2條紅色標注線為計算的像素距離2,用來計算像素比例尺;左上角為計算的吃水值。本文算法對于多種場景都有著很好的識別效果,讀數數據如表3所示,算法讀數的準確以船方提供的標準讀數為準,本文的算法識別為像素級別的比例換算,結果達到毫米級別。

表3 讀數數據Tab.3 Reading data

(a)場景1 (b)場景2 (c)場景3

與標準讀數的誤差保持在上下3 cm內,讀數結果優于人眼的直接估算,本文算法與人工讀數的誤差分布圖如圖18所示,人工讀數的穩定性和低誤差性要差于本文算法。

圖18 誤差分布Fig.18 Error distribution

5 結束語

基于場景自適應的船舶吃水值的計算方法,針對采集后的圖像數據,采用圖像亮度增強有效地解決了夜間拍攝圖像難識別的問題,利用深度學習分割圖像,消除了船體有損傷造成的字符和吃水線難定位問題,對分割圖像的后處理,有效地提高了船舶吃水值的計算準確度,這對后續的水尺計重提供了有力的保障。此外,考慮到語義分割對小目標的分割精度會弱一些,因此字符的分割只作為字符初步定位,后續會對字符的分割進一步研究,對算法的整個流程進行優化,使得算法的魯棒性更強。

猜你喜歡
水尺伽馬字符
“拉索”精確測量最亮伽馬暴
宇宙中最劇烈的爆發:伽馬暴
尋找更強的字符映射管理器
淺析國內海洋漁船與海船載重線、水尺標志勘劃的區別
海運電廠船舶靠岸側水尺圖像采集實驗研究*
字符代表幾
一種USB接口字符液晶控制器設計
水尺標志放樣及數控切割解決問題方案
消失的殖民村莊和神秘字符
Understanding Gamma 充分理解伽馬
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合