一种基于视频的近岸浪高实时检测系统的制作方法

文档序号:22327582发布日期:2020-09-25 17:57阅读:269来源:国知局
一种基于视频的近岸浪高实时检测系统的制作方法

本发明涉及海浪检测技术,特别涉及一种基于视频的近岸浪高实时检测系统。



背景技术:

目前,我国近海海浪观测采用波浪浮标与人工观测相结合的方式,浮标是对“点”观测,对于港湾复杂地形的准确海浪测量需要高密度部署。采用波浪浮标与人工观测相结合的方式,运行和维护成本高,人工观测是有一定经验的预报员通过目测的方式估计海浪高度,对预报人员的要求高,并且预测频率和精度难以保障。



技术实现要素:

本发明的目的是提供一种基于视频的近岸浪高实时检测系统,检测简便智能化、运行维护成本低、预测频率高预测准确。

本发明的上述技术目的是通过以下技术方案得以实现的:

一种基于视频的近岸浪高实时检测系统,包括有

通过视频采集卡实时接入近海岸监控站点的视频信号并保存至本地的视频接入与保存模块;

对接入的视频信息进行推送的视频流推送模块;

接收推送的视频信息并进行预处理以获得海浪特征的视频预处理模块;

根据接收的视频信息及海浪特征进行浪高检测以获得浪高信息的浪高检测模块;

接收推送的视频信息及浪高信息以进行展示的web前端。

作为优选,所述视频预处理模块包括有通过裁剪缩放对视频信息的图像中干扰因素进行消除的裁剪与尺度变换单元、通过转码以输入进行海浪特征提取的转码单元。

作为优选,所述浪高检测模块包括有用于提取海浪静态特征的第一nin网络模型、提取海浪动态特征的第二nin网络模型,还包括有通过输入海浪动态特征及海浪静态特征进行训练以完成浪高检测的svr模型。

作为优选,所述视频推流模块为rtmp协议进行推流。

一种基于视频的近岸浪高实时检测方法,包括有以下步骤:

将视频采集卡与近海岸监控站点的摄像头对接,以获得实时监控的视频信息,并保存至本地;

通过视频流推送模块将实时监控的视频信息推送至web前端以供用户查看,同时将视频信息推送至预处理模块进行视频信息中图像的预处理;

预处理模块提取包含海浪动态特征的差分帧及海浪静态特征的关键帧,并对提取的视频帧进行裁剪、尺度变化及转码;

通过浪高检测模块检测获取浪高信息,并推送至web前端与实施视频信息同步对应显示。

作为优选,视频信息的接入与保存具体步骤如下:

通过视频采集卡采集近海岸监控摄像头的视频,读取并处理视频信息;

将视频信息拆分为图像帧,对图像帧进行写入并计数,结合摄像头帧频完成视频信息的自动截断保存。

作为优选,视频预处理的具体步骤如下:

间隔预设帧数从视频信息经拆分后的图像帧中提取关键帧,再提取关键帧与相邻关键帧的差分帧;

对连续帧差分后进行累加,生成掩码图像,并据此从关键帧和差分帧中提取海浪区域,以排除遮挡物及礁石对浪高检测的干扰,并对提取图像进行缩放;

将缩放后图像以jpg格式保存至本地,先将图像转换为字节流,并进行字节流编码为tensor类型,对tensor类型图像进行归一化处理;

作为优选,浪高检测模块的具体过程如下

对预处理后的关键帧和差分帧图像分别通过第一nin网络模型及第二nin网络模型分别进行海浪静态特征及海浪动态特征的提取,并将海浪动态特征及海浪静态特征输入svr模型进行训练,完成svr模型的加载。

作为优选,视频推流模块的推流具体过程如下:

对拆分视频信息后的图像帧通过opencvframeconverter进行格式转换,由opencv.mat格式转为javacv.frame格式;

通过ffmpegframerecorder推送至nginx服务器;

在web前端使用videojs播放视频。

综上所述,本发明具有以下有益效果:

接入近海岸多站点海浪监控摄像头的监控视频信息,通过视频接入与保存模块、视频流推送模块、视频预处理模块、浪高检测模块以及web前端,能够自动化的进行浪高检测,无需人工观测进行估计,检测更加的方便智能化,且通过实时的推送和显示,能够方便人员对浪高信息的实时掌握,预测频率及预测精度高,解决了传统波浪浮标与人工观测相结合方式的不足。

附图说明

图1为本系统的结构示意框图;

图2为视频预处理模块的处理流程示意图;

图3为实例中浪高检测的web界面显示图;

图4为实例中用曲线图表示浪高信息的界面显示图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

根据一个或多个实施例,公开了一种基于视频的近岸浪高实时检测系统,如图1所示,包括有用于接入并保存近海岸监控摄像头拍摄的视频信息的视频接入与保存模块、对视频信息进行视频流推送的视频流推送模块、对推送的视频信息进行预处理的视频预处理模块、对视频信息中的海浪高度进行检测的浪高检测模块,还包括有对推送的视频信息及检测获得的浪高信息进行显示以供用户查看的web前端。还包括有对信息数据进行存储的数据库及对历史浪高数据进行保存后分析的分析模块。

近年来,我国渤海、黄海、东海、南海主要海域管理部门沿我国海岸建设了一批视频监控站点,实现对近海岸海域的24小时连续视频监控,所有监控站点的视频信号集中在所辖海洋局。

国内外学者提出了一些对海浪要素进行检测的新方案,比如基于视觉的波传感方法检测水波的斜率、高度、和频率等相关特性,使用视差法和高程法评估10米到100米的较大空间尺度上的海洋表面位移,利用视频对波浪进行破碎检测,使用神经网络提取海浪视频中的浪高信息等。

现有研究在海浪要素检测上取得了一定的成果,但是将研究成果应用于浪高预报系统的研究较为空缺。事实上,基于视频的智能检测系统已经广泛应用于安防、交通等领域。石明翔等人利用分布式系统架构hadoop、分布式实时计算框架sparkstreaming以及视频关键帧提取,设计实现了基于hadoop的客车超载监测系统,在处理视频方面,使用视频处理库ffmepg将视频文件拆分为视频帧,使用opencv进行人脸检测,对平台中所有运行客车的海量视频进行实时检测和预警超载。雷家翔设计了基于图像处理的机场跑道异物检测系统的软硬件架构及系统,在前端硬件平台中进行目标检测及视频编码,采用rtsp(realtimestreamingprotocol)协议通过ip网络将视频及相关数据传输至后端计算机中,并编写了基于ffmpeg库的流媒体播放器,实现了监控视频的接收与解码播放。茅炎菲提出了在有较好扩展性的实时流传输协议和h.264编码技术的基础上实现的视频监控系统,从视频采集卡获取原始的uyvy视频数据,然后经过视频编码器进行编码压缩,并使用avi封装压缩码流生成存档文件。通过rtsp、rtp(real-timetransportprotocol)、rtcp(real-timetransportcontrolprotocol)协议发送经过压缩的数据包到网络监控端,利用基于directshow框架开发的网络流媒体播放器通过h.264解码器播放监控视频图像,实现远程控制视频监控系统。

本系统中,视频接入与保存模块通过视频采集卡实时接入近海岸监控站点的视屏信息并保存至本地,分为接入视频信息和保存视频信息:

1)接入视频信息:本系统中各检测的视频信息采用来自青岛西海岸各监控站点的高清监控摄像头,所有的监控视频信号集中在北海预报中心,视频信号通过hdmi高清晰多媒体接口线输出,因此使用圆刚gc553视频采集卡将视频接入系统。视频采集卡连接至电脑后,相当于电脑的摄像头设备,接入视频信息需要扫描电脑的摄像头设备。在java中可以通过多种方法捕获摄像头,比如opencv中的videocapture、jmf(javamediaframeworkapi)中的capturedevicemanager和javacv中的framegrabber等,其中jmf是早期javase桌面技术,缺乏对图片处理的支持,opencv是一个跨平台计算机视觉库,包含大量对图片和视频的处理方法,其底层采用c++语言编写,具有轻量且高效的特点,而javacv则基于opencv并内置了更加丰富的视觉库,在视频处理上要比opencv表现更优秀,因此为了保证系统检测浪高的实时性,系统采用javacv中的framegrabber读取摄像头视频,使用opencv库来加速图像处理。

2)保存视频:为了方便以后的进一步研究,需要对近海岸监控视频进行保存,因此在检测浪高的同时还需将监控视频实时保存到本地。framegrabber类可以将来自摄像头的视频信息拆分为图像帧,然后使用videowriter将每一帧图像写入到以站点和时间戳命名的mp4视频文件中,通过对图像帧的计数,结合摄像头的帧率,可以控制每个视频文件的时长,从而实现对监控视频的自动截断保存。

视频流推送模块对接入的视频信息进行推送,包括有将保存至本地的视频信息推送至web前端供人员查看,以及推送至预处理模块进行后续视频信息的处理以进行浪高检测。为了使用户有较好的体验,在对来自监控摄像头的视频进行浪高检测的同时,要将监控视频推送到web前端供用户查看,本系统使用目前主流的直播推流协议,将视频拆分为图像帧,在进行浪高检测之前将图片帧推到nginx服务器,在web前端使用相应的播放控件进行播放。当前主流的推流协议有rtmp(realtimemessagingprotocol)、webrtc(webreal-timecommunication)和基于udp(userdatagramprotocol)的私有协议,webrtc协议底层基于srtp(securereal-timetransportprotocol)和udp,通信双方延时低,但是传统cdn(contentdeliverynetwork)没有提供类似的服务;基于udp的私有协议更具灵活性,支持更多空间进行定制优化,但是开发成本高且对cdn不友好;rtmp是目前主流的流媒体传输协议,广泛应用于直播领域,延时较低并且适合长时间播放,结合本系统长时间运行且实时性较高的特点,选择使用rtmp协议进行推流。将视频拆分为图像帧后,使用opencvframeconverter将图像帧由opencv.mat格式转为javacv.frame格式,并使用ffmpegframerecorder将其推送到nginx服务器,在web前端使用videojs播放视频。

本系统使用tensorflow训练了第一nin网络及第二nin网络,分别用于提取海浪静态特征和海浪动态特征,然后将海浪静态特征和海浪动态特征输入到svr模型进行训练,因此在生产环境中需要加载三个模型文件。对于第一nin网络及第二nin网络,调用importgraphdef函数传入模型保存的路径即可完成模型的加载,而sklearn的跨平台则需要通过pmml来实现。pmml是数据挖掘的一种通用的规范,它用统一的xml格式描述生成的机器学习模型,当在java环境下部署pmml的模型的时候,使用jpmml来加载pmml模型文件。与加载tensorflow模型文件不同,加载pmml模型需要先将模型文件转换为字节流,然后再使用pmmlutil中的unmarshal将字节流编码,最后将其实例化为evaluator对象,完成模型的加载。

视频预处理模块包括有通过裁剪缩放对视频信息的图像中干扰因素进行消除的裁剪与尺度变换单元、通过转码以输入进行海浪特征提取的转码单元。将来自近海岸监控摄像头的视频信息拆分为图像帧后,每隔n个帧抽取一个帧作为关键帧,对关键帧进行预处理后输入到预设的nin网络来提取海浪的动态特征和静态特征,然后将融合后的特征输入到预设的svr模型中进行浪高检测。此处的间隔帧数n决定了浪高检测的频率,可根据所需进行设置调整。对关键帧的预处理需要解决两个问题,一是如何消除图像中遮挡物和礁石对检测精度产生的影响;二是如何保证在svr模型训练阶段与生产阶段,图像的编码方式一致。针对这两个问题,通过尺度设置的裁剪与尺度变换单元及转码单元进行处理,具体如下:

1)裁剪与尺度变换单元:首先消除图像中遮挡物或礁石对检测精度产生的影响。根据差分图像能够区分动态和静态对象的原理,对连续帧差分后图像进行累加,再进行阈值二值化生成掩码图像,掩码图中遮挡物区域值为零,将掩码图与视频关键帧点乘提取海浪区域,并进行裁剪。然后对裁剪图像进行缩放,加快数据处理速度。

2)转码单元:在预处理过程中,图像以多维矩阵的形式存在,为了获取更快的处理速度,使用org.opencv.core.mat处理图像。由于编码方式的不同,将此格式的图像转为字节流的结果与训练svr模型时使用tf.io.read_file从本地加载图片并将其转为字节流的结果不同,因此需要先将org.opencv.core.mat格式的关键帧图像以jpg格式保存到本地,并使用files.readallbytes将图像转为字节流,然后再将图像的字节流编码为tensor类型,并对tensor类型的图像进行归一化,以此解决图像的编码问题。

浪高检测模块根据接收的视频信息及海浪特征进行浪高检测以获得浪高信息。浪高检测模块包括用于提取海浪静态特征的第一nin网络模型、提取海浪动态特征的第二nin网络模型,还包括svr预测模型,通过输入海浪动态特征及海浪静态特征以完成对svr模型的训练,以便于浪高的预测检测。

根据一个或多个实施例,公开了一种基于视频的近岸浪高实时检测方法,包括有以下步骤:

将视频采集卡与近海岸监控站点的摄像头对接,以获得实时监控的视频信息,并保存至本地;

通过视频流推送模块将实时监控的视频信息推送至web前端以供用户查看,同时将视频信息推送至预处理模块进行视频信息中图像的预处理;

预处理模块对提取包含海浪动态特征的差分帧及海浪静态特征的关键帧,并对提取的视频帧进行裁剪、尺度变化及转码;

通过浪高检测模块检测获取浪高信息,并推送至web前端与实施视频信息同步对应显示。

视频信息的接入与保存具体步骤如下:

通过视频采集卡采集近海岸监控摄像头的视频,读取并处理视频信息;

将视频信息拆分为图像帧,对图像帧进行写入并计数,结合摄像头帧频完成视频信息的自动截断保存。

视频预处理的具体步骤如下:

间隔预设帧数从视频信息经拆分后的图像帧中提取关键帧,再提取关键帧与相邻关键帧的差分帧;

对连续帧差分后进行累加,生成掩码图像,并据此从关键帧和差分帧中提取海浪区域,以排除遮挡物及礁石对浪高检测的干扰,并对裁剪出的海浪区域图像进行缩放;

将缩放后的图像以jpg格式保存至本地,先将图像转换为字节流,并进行字节流编码为tensor类型,对tensor类型图像进行归一化处理。

视频推流模块的推流具体过程如下:

对拆分视频信息后的图像帧通过opencvframeconverter进行格式转换,由opencv.mat格式转为javacv.frame格式;

通过ffmpegframerecorder推送至nginx服务器;

在web前端使用videojs播放视频。

本系统的运行环境要求如表1所示。

表1系统运行环境

部署本系统需要按照以下流程进行操作:

1)开启mysql数据库并导入系统数据库所有表;

2)将opencv的路径添加至系统环境变量;

3)在系统根目录下的application.properties中配置数据库连接信息、模型文件路径、opencvdll文件路径和视频保存路径等。

为表述清楚,现举一实例:

通过视频采集卡接入近海岸监控视频,经过视频预处理模块后,视频流被编码为tensor类型的数据,然后将其输入到浪高检测模块中进行浪高检测,并将检测结果的浪高信息和监控的视频信息实时发送到web前端进行展示。如图3所示,用户成功登录系统后默认进入主监控站点的浪高检测画面,页面左侧为导航栏,以方便用户快速导航,右侧为近海岸监控站点监控视频画面,将实时浪高数据悬浮在监控画面右下侧,既不遮挡监控画面,又可使浪高信息一目了然。浪高值0.5秒更新一次,相比较传统浮标的10分钟更新一次,本系统具有极强的实时性的优点。

系统支持查看历史数据,根据文件名称和监控站点名称进行查询数据,点击查询结果右侧的watch即可查看对应的历史数据,点击delete进行删除视频文件。历史数据为表现直观,因此历史数据展示界面设计使用图表展示历史浪高。在图4所示中可以看到,窗口左侧播放历史监控视频,右侧是当前视频的浪高数据,包括最大浪高、最小浪高和平均浪高,使用曲线图展示每个时刻对应的浪高,查看更加的直观。

本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1