?

基于OpenCV的船舶載重量計算

2022-05-30 15:43何浩李文華陳先國黃達張鈞儼
電腦知識與技術 2022年10期
關鍵詞:船舷載重量深度學習

何浩 李文華 陳先國 黃達 張鈞儼

摘要:對于在內河航道上通行的船舶,如何計算出這些船舶的載重量成為一個重要的任務,文章設計了一種基于OpenCV的船舶載重量計算系統,通過深度學習的方式對船舶的船舷和船舶類型進行識別,找出船舷的上下分界線,最后根據船舶類型從類型數據庫取出船舶的基本信息(高度、空載吃水量、滿載吃水量等相關信息) 后進行相關計算得到船舶載重量。

關鍵詞:OpenCV;船舶;船舷;載重量;深度學習

中圖分類號:TP311? ? ?文獻標識碼:A

文章編號:1009-3044(2022)10-0100-02

1 引言

近些年來,隨著物聯網和人工智能等技術的不斷發展與成熟,促進了社會的發展。為了響應國家“十四五”提出的戰略方針(航道建設) ,在以數字航道建設[1]為基礎的前提下,建設高性能數據交換體系,來確保航道的高速發展。在智慧城市中,統計運行在道路上的車輛載重量已經不是什么難題。然而,如何有效地統計出每天甚至每年江面上船舶運載量成為一項重要的任務。

針對這一問題,在考慮低成本的前提下,本文提出了一種現階段最為流行的數字圖像處理技術去計算船舶吃水線[2]的方法,通過對攝像頭采集的視頻圖像進行處理與分析后,從而得到每艘船舶的載重量。使用該方法不僅減少了人力和財力的投入,而且在網絡保證的前提下,本系統可以被廣泛地應用到野外環境。

2 系統框架

2.1 系統硬件設計

本系統由攝像頭(??低暎?、邊緣計算機(Jetson Nano) 、中央服務器(Linux) 構成。由于邊緣計算機具有尺寸小巧,處理效果較佳等優點,可以滿足本地視頻圖像處理的速度要求,邊緣計算機將接收到的流數據通過解碼操作還原成圖像后,利用相關技術手段對圖像進行處理與分析得到船舷高度,再結合相關的參數計算出載重量,邊緣計算機解決了將大量視頻流數據通過網絡傳輸到中央服務器這一過程中的所帶來的高帶寬、網絡延時和丟包等相關問題。實現了數據本地化處理,將最終的處理結果送至中央服務器中,減少了因網絡故障造成系統長時間無響應的影響。硬件數據流向如圖1所示。

2.2 系統軟件設計

該系統是基于arm架構上使用VS Code集成開發環境(IDE),c/c++語言編程實現,流程框圖如圖2所示。

(1) 獲取攝像頭數據

獲取攝像頭數據主要有兩種方式。第一種是使用GB28181[3]方式獲取攝像頭實時流數據,通過該方式獲取攝像頭數據的前提是需要自己實現視頻服務平臺,并且要遵循國標GB28181協議,該方式的優點可以對接任意品牌的攝像頭,缺點是通過網絡協議進行數據傳輸時受帶寬影響會出現網絡延時和網絡擁塞等情況,出現丟包現象,甚至可能造成長時間無法取到視頻流數據。第二種是使用RTSP[4]協議直接連接攝像頭獲取數據,減少了中轉服務中專數據過程,加快了數據獲取速度。

(2) 幀數據還原成圖片

不管是通過GB28181協議的方式獲取視頻流數據還是通過RTSP協議的方式獲取視頻流數據,視頻編碼的格式都是采用H264方式進行壓縮傳輸的,解碼的時候使用FFmpeg[5]進行了圖像解碼,眾所周知的是在數字圖像中存在著空間冗余、時間冗余、視覺冗余、知識冗余、信息熵冗余、結構冗余,如果將原始大小的圖片進行傳輸,這將占用大量的帶寬,增加了成本的投入。在H264中,定義了三種幀,關鍵幀(I幀,解碼出來就是一幅完整的圖像) 、前向預測編碼幀(P幀) 、雙向預測內插編碼幀(B幀) ,其中P幀與B幀解碼成圖像需要依賴于I幀,為了減少帶寬、降低流量,只需要傳輸I幀(44K左右) ,獲取壓縮后的I幀原始數據如左圖所示,根據H264方式編碼進行相應的解碼得到的是YUV格式,需要進一步轉換才能得到RGB格式的圖像。如圖3所示,左圖為待解碼的數據,右圖為解碼后的圖像。

(3) 圖像處理及分析

將上述還原后的圖像送至檢測器中可以粗略地提取出圖像中船舷的位置,這里檢測器使用人工智能、深度學習的方式實現,通過OpenCV將檢測器框出的船舷位置進行切割(只保留框選處的位置,下圖的數字即是該矩形框的邊界) 處理后,這將大大減少圖像中其他因素對最終結果產生的干擾,再結合OpenCV邊緣檢測、霍夫曼直線檢測等技術手段,找出船舷的上邊距與下邊距位置。

根據船舶類型從船舶類型數據庫取出船舶參數,假定:型深H、空載吃水h0、空載重量T0,滿載吃水hn、滿載重量Tn。如圖5所示,綠色線為空載吃水線、紅色線為滿載吃水線、藍色虛線為當前吃水線。同時假設:空載時船面積為S0,滿載時船面積為Sn,船底面積為Sb,船頂面積為St,則有以下關系式:

空載時載重T0 = (S0 + Sb) / 2 * h0 (1)

滿載時載重Tn = (Sn + Sb) / 2 * hn (2)

船頂面積為St可以通過激光雷達測量,假設Sn = α*St,α根據不同船舶類型指定,如:0.9。式1與2聯合,可以計算出S0和Sb。

通過側視攝像機檢測出船舷離水面的高度為h,則:

船舶載重吃水 dh = H - h - h0 (3)

船舶載重面積 St : S = h + dh : dh,則 S = (St * dh) / (h + dh) (4)

最后計算出船舶載重量dT = (S0 + S) / 2 * dh (5)

3 實驗結果

采用上述所提出的方案,將解碼后的圖像送至檢測器中,提取出靠近船舷部分的局部區域,減少周邊物體的干擾,可以測出船舷上邊界與下邊界的距離(distance) 、系統檢測所消耗的時間(detection time) 等相關信息,從下列結果可以看出,檢測的效果較佳,更加有利于在實際生產環境中使用。

4 結論

本文提出了一種基于OpenCV計算船舷的高度,從而計算出船舶載重量的方法。在整個系統中,從硬件層面看,系統中所使用的硬件設備可以滿足系統的需求,邊緣計算機保證了系統的穩定性和持久性,實時有效地對視頻流信息進行處理與分析后,只需要將最終的處理結果上傳到中央服務器即可,從軟件架構方面看,使用c/c++方式實現軟件層架構,加快了系統的響應速度。采用邊緣化的方式部署該系統,一方面減少了因網絡故障而導致整個系統癱瘓的問題,另一方面與傳統方式對比,該系統擴展性強、獨立性強、耦合度低。

參考文獻:

[1] 房新玉,孫艷軍,劉昔,等.淺談內河航道數字化建設的意義[J].科技創新導報,2014,11(30):225-226.

[2] 朱學海,張帥,張東星,等.基于機器視覺與深度學習的船舶水尺智能識別技術研究與應用[J].檢驗檢疫學刊,2019,29(2):101-104,110.

[3] 王冰洋,劉玉梅,孫瓊芳,等.基于GB/T 28181和WebRTC技術的移動視頻監控系統設計[J].電子測量技術,2020,43(18):112-116.

[4] 章民融,徐亞鋒.基于RTSP的流媒體視頻服務器的設計與實現[J].計算機應用與軟件,2006,23(7):93-95.

[5] 辛長春,婁小平,呂乃光.基于FFmpeg的遠程視頻監控系統編解碼[J].電子技術,2013,40(1):3-5.

【通聯編輯:梁書】

收稿日期:2021-11-16

作者簡介:何浩(1996—) ,男,湖北人,在讀碩士,研究方向為計算機應用技術、數字圖像處理、計算機視覺;李文華(1965—) ,男,湖北人,副教授,研究方向為軟件工程、網絡數據庫技術、GIS技術。

猜你喜歡
船舷載重量深度學習
船舶擱淺對船舷外部結構損傷的數值計算研究
小型玻璃鋼漁船船舷工藝研究
帶貨物權重車輛路徑問題的研究現狀
排隊論在減載移泊系統中的應用
MOOC與翻轉課堂融合的深度學習場域建構
大數據技術在反恐怖主義中的應用展望
乘客載重量對柴油公交車尾氣排放影響分析
對新人教版初中物理教材的六點
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合