APP下载

基于OpenCV的船舶载重量计算

2022-05-30何浩李文华陈先国黄达张钧俨

电脑知识与技术 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与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
乘客载重量对柴油公交车尾气排放影响分析
对新人教版初中物理教材的六点