发明内容
为了解决现有技术中只针对图像中一个方向的像素值分布进行统计,导致即压缩效率受限,并且在对于游程长度对像素值过于敏感,导致少量差异性像素值影响游程长度,造成压缩效率不高,从而影响数据传输的效率的问题,本发明提供一种用于船舶视频回传的卫星传输数据压缩方法,该方法基于相邻相似像素值在比特分层中具有相同比特值的特点,在三个方向进行游程编码,具有更强统计特性的同时,获得更长的游程长度,有效提高了游程编码对数据的压缩率,从而提升了将船舶运行监控视频通过卫星传输至地面控制中心的效率。
本发明的目的是提供一种用于船舶视频回传的卫星传输数据压缩方法,包括以下步骤:
对采集的船舶视频进行分段获取多段视频;
将每段视频中每帧图像与相邻上一帧图像作差获取每帧图像对应的差分图像;
根据每个差分图像进行比特分层获取多层比特平面;
统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,获取每层比特平面中每个像素点对应位置的游程;
将每层比特平面中每个像素点对应位置的游程,从比特分层的最高位开始,按照像素点从左至右的顺序进行排序获取每个差分图像对应的游程序列;依次获取每段视频中每个差分图像对应的游程序列;
将每段视频的第一帧图像与其每个差分图像对应的游程序列进行传输。
在一实施例中,所述统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,包括:
在统计每个像素点对应每层比特平面位置在行方向的相同比特值的数量时,对已统计的位置跳过,继续统计行方向上的游程长度;
在统计每个像素点对应每层比特平面位置在列方向的相同比特值的数量时,对已统计的位置跳过,继续统计列方向上的游程长度。
在一实施例中,所述统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,还包括:
在统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的比特值时,在任一方向的游程边缘上与当前像素点对应位置的相邻位置处构建窗口,其中,与当前像素点对应位置相邻的比特值为窗口上边缘;
通过对构建的窗口进行旋转,若窗口内其他边缘比特值与当前游程边缘相邻,且获取该方向的游程长度的增加量最大时,停止窗口旋转;即获取该方向的游程长度;并获取停止窗口旋转时对应的窗口旋转角度。
在一实施例中,所述构建窗口过程中,包括:
在每层比特平面中的行方向或者列方向上的窗口,在每层比特平面中构建;
在比特分层方向上的窗口,在行方向与比特分层方向组成的平面中构建。
在一实施例中,所述窗口进行旋转的角度包括:0度、90度、180度、270度;
其中,设置窗口的旋转方向为逆时针旋转。
在一实施例中,所述通过对构建的窗口进行旋转的过程中,按照旋转角度从小到大的顺序,进行窗口的旋转,并判断每一次旋转对当前游程长度的增加量,选择当前游程长度增加量最大值对应的窗口旋转角度作为停止窗口旋转时对应的窗口旋转角度。
在一实施例中,还包括:根据传输的每段视频的第一帧图像与其每个差分图像对应的游程序列对其进行解码解压。
本发明的有益效果是:本发明提供的一种用于船舶视频回传的卫星传输数据压缩方法,该方法通过将每段视频中每帧图像与相邻上一帧图像作差获取每帧图像对应的差分图像,即通过相邻帧之间的差异,从而减少相邻帧图像之间相同区域的数据冗余,基于差分图像进行编码压缩;其次,对每个差分图像进行比特分层,通过统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,获取每层比特平面中每个像素点对应位置的游程;主要是在比特分层空间中从三个方向进行游程编码,以对图像进行压缩处理,相比于常规一个方向的游程编码,本发明基于相邻相似像素值在比特分层中具有相同比特值的特点,在三个方向进行游程编码,具有更强统计特性的同时,获得更长的游程长度,有效提高了游程编码对数据的压缩率,从而提升了将船舶运行监控视频通过卫星传输至地面控制中心的效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所针对的情景为:对于船舶视频回传的卫星传输,首先需要进行压缩处理,一般视频的压缩主要针对视频帧之间的重复以及视频帧图像内的重复的统一表示,视频中重复区域越多,压缩效率越高。所以本发明利用对视频帧图像比特分层中进行三维游程编码压缩,并利用窗口旋转提高游程长度,即提高图像压缩效率。
本发明的主要目的是:利用视频帧图像比特分层空间进行三维游程编码压缩,并通过窗口旋转提高游程长度,实现视频高效率的压缩。
本发明提供的一种用于船舶视频回传的卫星传输数据压缩方法,参见图1所示,包括以下步骤:
S1、对采集的船舶视频进行分段获取多段视频;
在本实施例中,采集的船舶视频主要指船舶运行中的监控视频,具体涉及船舶运行监控视频、船员作业监控视频以及船舶安全监控视频。所以一般在船舶甲板、船舱等区域安装摄像头,拍摄船舶视频,作为船舶视频回传的原始数据,然后通过后续步骤对视频进行压缩处理,再由卫星传输到地面监控中心。
对于船舶视频通过卫星进行传输,因为一般卫星传输通道小,所传输的数据量少,所以为了保证传输稳定性,需要对船舶视频进行分段处理,然后对分段视频分别进行压缩。
船舶视频的具体分段方法:设置视频分段长度为K,即以K帧视频帧图像为一段分段视频,本实施例设置K=100,操作者可根据实际场景进行调整。根据后续方法对分段视频进行压缩处理,然后压缩后的分段数据进行分段传输。
S2、将每段视频中每帧图像与相邻上一帧图像作差获取每帧图像对应的差分图像;
需要说明的是,对于视频的压缩主要根据针对视频帧之间相同区域在传输过程的冗余,以及视频帧图像像素值的冗余,一般利用图像之间的关系和像素值之间的关系反应原始信息,实现视频图像的压缩。
在本实施例中,对于监控视频本身具有相邻帧之间相似性的特点,所以长期以来利用相邻帧图像之间的差异以减视频帧的数据量,达到监控视频压缩的目的。根据卫星传输量小的特点,对视频进行分段处理,此时对每一分段视频进行相邻帧作差。将每段视频中每帧图像与相邻上一帧图像作差获取每帧图像对应的差分图像;具体过程为:
已知分段视频中每一帧图像表示为
,
表示第i帧图像,
表示分段视频帧的数量,首先在分段视频中选择第一帧图像为基准图像,其余帧图像中只传输与前一帧图像差值,从而减少数据量;即计算视频帧图像前一帧图像对应像素点之间的像素差值作为当前帧图像的像素值;即为每帧图像对应的差分图像中像素点的像素值;此时分段视频中所有的待传输数据表示为
,
即表示第i帧图像(第一帧图像除外)与i-1帧图像像素值差值,
表示分段视频帧的数量;
也表示第i帧图像对应的差分图像。
至此,获得每个分段视频中待传输的数据;其中,将每帧图像对应的差分图像表示为相邻帧之间的差异,从而减少相邻帧图像之间相同区域的数据冗余,即对视频数据进行压缩处理。
S3、根据每个差分图像进行比特分层获取多层比特平面;统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,获取每层比特平面中每个像素点对应位置的游程;
其中,统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,包括:
将统计每个像素点对应每层比特平面位置在行方向的相同比特值的数量,作为每个像素点对应每层比特平面中的位置在行方向的游程长度;
将统计每个像素点对应每层比特平面位置在列方向的相同比特值的数量,作为每个像素点对应每层比特平面中的位置在列方向的游程长度;
将统计每个像素点对应每层比特平面位置在比特分层方向的相同比特值的数量,作为每个像素点对应每层比特平面中的位置在比特分层方向的游程长度。
另外,可以将每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向统称为每个像素点对应每层比特平面中的位置的三维方向或三个方向。
需要说明的是,利用视频中相邻帧图像进行之间的相似性获得每一帧图像中待传输的数据;对于像素值中存在的数据冗余常常利用游程编码进行压缩,但是一般游程编码仅在一个方向统计相同数值的数据统计,导致游程长度受限,所以本实施例在待传输的图像在多个方向统计游程长度进行游程编码,进行数据的压缩。
在本实施例中,由于在图像中存在较多相邻像素值的较小差异分布的情况,此时对每帧图像对应的差分图像中每个像素点的像素值进行按位读取,将图像分为8层二进制编码,即比特分层;也就是通过对每帧图像对应的差分图像中每个像素点的像素值转化为8位二进制,在8位二进制最高位开始从左往右对应从下往上比特分层,获取8层比特平面;具体就是将差分图像中每个像素点对应的8位二进制数,在8位二进制数的最高位开始从左往右依次放置在从下至上的8层比特平面对应的位置中,从而获取8层比特平面;此时相邻像素值相似时在比特分层中具有较多相同比特值相邻分布的特点,所以本实施例在比特分层中进行比特平面的行方向、列方向以及比特分层方向进行三维游程编码,以获得更长的游程长度,提高压缩率。需要说明的是比特分层方向就是在每层比特平面上的法线方向。需要说明的是,比特分层方向指的是每层比特平面中任一比特值所在位置的竖直向上的方向。
具体的,所述每层比特平面中每个像素点对应位置的游程,包括:
所述比特平面中的行方向、列方向以及比特分层方向分别表示x,y,z;
统计每个像素点对应每层比特平面中的位置分别在x,y,z方向的相同比特值的数量,分别以x,y,z方向的相同比特值的数量为三个方向的游程长度,获取每层比特平面中每个像素点对应位置的游程,即为
;其中,
表示第j个像素点对应每层比特平面中位置的比特值;
,
,
分别表示第j个像素点对应每层比特平面中位置在x,y,z方向的游程长度。参见图2所示,图2以二维比特平面为例;图2可知,对于第一个像素位置为例,在比特分层平面中x方向,即像素行方向相同比特值共有3个,其游程长度为3;y方向,即像素列方向相同比特值共有4个,所以第一个像素位置所获得的游程为
。
需要说明的是,在游程编码的构建中,可能存在某一位置构建游程时行相邻的比特值被前面游程列方向统计,或者列相邻的比特值被前面游程行方向统计,即存在行、列不连续的情况,此时,对于已统计的位置直接跳过,继续统计行或列游程长度。
在本实施例中,所述统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,还包括:
在统计每个像素点对应每层比特平面位置在行方向的相同比特值的数量时,对已统计的位置跳过,继续统计行方向上的游程长度;
在统计每个像素点对应每层比特平面位置在列方向的相同比特值的数量时,对已统计的位置跳过,继续统计列方向上的游程长度。
参见图3所示,为二维比特平面中对已统计的位置跳过,继续统计行或列游程长度的示意图;图3可知,在比特分层平面中构建第3行第2列位置的游程时,其行相邻的第2个比特值已经在第1行第4列位置的游程中统计,此时直接跳过已统计位置,获得当前平面位置的游程
。
同理,获得z方向,即比特分层方向的游程长度,获得最终x,y,z方向的游程长度,以此类推获得整个图像中所有的游程
。
在本实施例中,获取每层比特平面中每个像素点对应位置的游程,也就是根据每个差分图像构建的比特分层空间中从三个方向进行游程编码,以对图像进行压缩处理。相比于常规一个方向的游程编码,本实施例基于相邻相似像素值在比特分层中具有相同比特值的特点,在三个方向进行游程编码,具有更强统计特性的同时,获得更长的游程长度,从而提高游程编码对数据的压缩率。
需要说明的是,基于对差分图像比特分层,并通过三维方向游程编码对数据进行压缩;当前游程编码游程长度针对比特分层的比特值,所有影响游程长度的因素单一,即可能在比特分层中存在少量的几个连续的比特值影响整体的游程长度,此时为提高游程程度,本实施例对影响游程长度的区域进行位置变换,减少少量位置对整体行列游程长度的影响。
在本实施例中,所述统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,还包括:
在统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的比特值时,在任一方向的游程边缘上与当前像素点对应位置的相邻位置处构建窗口,其中,与当前像素点对应位置相邻的比特值为窗口上边缘;
通过对构建的窗口进行旋转,若窗口内其他边缘比特值与当前游程边缘相邻,且获取该方向的游程长度的增加量最大时,停止窗口旋转;即获取该方向的游程长度;并获取停止窗口旋转时对应的窗口旋转角度。
其中,所述构建窗口过程中,包括:在每层比特平面中的行方向或者列方向上的窗口,在每层比特平面中构建;在比特分层方向上的窗口,在行方向与比特分层方向组成的平面中构建。
具体的,所述窗口进行旋转的角度包括:0度、90度、180度、270度;其中,0度表示窗口不进行旋转,并设置窗口的旋转方向为逆时针旋转。
进一步,所述通过对构建的窗口进行旋转的过程中,按照旋转角度从小到大的顺序,进行窗口的旋转,并判断每一次旋转对当前游程长度的增加量,选择当前游程长度增加量最大值对应的窗口旋转角度作为停止窗口旋转时对应的窗口旋转角度。
为了进一步说明通过构建窗口,对影响游程长度的区域进行位置变换,减少少量位置对整体行列游程长度的影响。
在本实施例中,获得一个游程及对应不同方向的游程长度,此时一个游程方向的游程边缘相邻的n个比特值为窗口边缘构建一个
的窗口,本实施例中设置n=3,操作者可根据实际需求进行调整,然后通过窗口旋转以使得窗口内其他边缘比特值与当前游程边缘相邻,以增加游程长度;但是在实际中无法保证每一次窗口旋转都能够增加游程长度,所以首先需要进行旋转角度的确定。
具体的,在比特分层空间中x,y方向旋转窗口在当前比特平面中构建,z方向的旋转窗口在x-z平面中构建。
已知窗口旋转角度设为0度、90度、180度、270度,其中,0度表示窗口不进行旋转,且设置窗口的旋转方向为逆时针旋转。然后按照旋转角度的大小顺序,进行窗口的旋转,并判断每一次旋转对当前游程长度的增加量,即在当前方向游程边缘所增加的与游程相同的比特值数量,选择当前游程长度增加量最大值对应的旋转角度为最终窗口角度。
具体的,按照旋转顺序进行窗口旋转时,在获得游程长度的增加量大于等于3时,即为最佳旋转角度,即停止其他角度的旋转,在不存在增加量大于等于3时,旋转所有角度,获得游程长度增加量最大值对应的旋转角度为最终窗口角度。
参见图4可知,在比特分层第一个像素点对应位置构建游程,此时以当前游程边缘相邻的3个比特值位置为窗口边缘,构建如图4的窗口;对图4所示的窗口进行旋转,逆时针90度,获得如图5所示;在图5所示的窗口旋转结果中,使得x方向游程长度增加到5,即获得新的游程为
。此时不同位置窗口进行不同角度的旋转所反映的原始信息不同,所以需要对游程添加一个窗口特征标识符M,M表示窗口的旋转方式即为旋转的角度,最终获得游程表示为
;其中,
中的M表示窗口的旋转方式即逆时针旋转90度;
表示窗口的位置,即在当前游程中的哪一个位置后,建立了窗口旋转,此处表示的是k=1,在第1个位置后建立的窗口。
至此,利用窗口旋转增加游程编码中游程长度,利用相同的方向,可以在同一方向进行多次窗口旋转,本实施例仅以一个方向一次窗口旋转为例。同理,对比特分层空间中
方向利用相同的方法以增加游程长度,从而进行最终的游程编码进行数据压缩。
为此,对原始数据进行游程编码压缩,其中利用窗口的旋转,有效避免了比特分层中一个方向少量的不相同比特值对整个方向游程长度的影响,有效的增加游程编码中游程长度,提高游程编码的压缩率。
S4、将每层比特平面中每个像素点对应位置的游程,从比特分层的最高位开始,按照像素点从左至右的顺序进行排序获取每个差分图像对应的游程序列;依次获取每段视频中每个差分图像对应的游程序列;
在本实施例中,先从最下层的比特平面中按照像素点从左至右的顺序统计每个像素点对应位置的游程,再依次从下至上的比特平面统计每个像素点对应每层比特平面位置的游程,从而获取游程序列,即将每个差分图像生成对应的游程序列,视为对每个差分图像进行三维游程编码压缩;依次获取每段视频中每个差分图像对应的游程序列;也就是依次对每段视频中每个差分图像进行三维游程编码压缩。
S5、将每段视频的第一帧图像与其每个差分图像对应的游程序列进行传输。
在本实施例中,将的船舶视频中的每段视频中每个差分图像对应的游程序列,即将每段视频中每个差分图像进行三维游程编码压缩数据,利用卫星传输,将压缩后的视频传输到地面监控中心,其中因为卫星传输通道小,传输量小,所以对分段视频进行分段传输,从而实现提升了传输的效率。
在本实施例中,还包括:根据传输的每段视频的第一帧图像与其每个差分图像对应的游程序列对其进行解码解压。
需要说明的是,利用窗口旋转在比特分层中进行游程编码,在实际数据传输对应数据接收,为体现本实施例中压缩的实用性,需要对压缩进行解码解压。
在本实施例中,地面控制中心将接收的每段视频的第一帧图像与其每个差分图像对应的游程序列对其进行解码解压,并将多段视频拼接获得原始的船舶视频。具体如下:
首先构建一个与视频帧图像比特分层等大小的三维空间,然后按照所构建游程的顺序,依次投放在三维空间中;
按照构建游程顺序,从后往前依次在每个游程中获得旋转窗口,然后对其进行顺时针旋转,旋转角度同压缩过程的旋转角度,然后将比特分层重构为传输的视频帧图像;
在分段视频中,根据基准视频帧图像一次获得每一帧图像,即获得原始视频。
本发明提供的一种用于船舶视频回传的卫星传输数据压缩方法,该方法通过将每段视频中每帧图像与相邻上一帧图像作差获取每帧图像对应的差分图像,即通过相邻帧之间的差异,从而减少相邻帧图像之间相同区域的数据冗余,基于差分图像进行编码压缩;其次,对每个差分图像进行比特分层,通过统计每个像素点对应每层比特平面中的位置在行方向、列方向以及比特分层方向的游程长度,获取每层比特平面中每个像素点对应位置的游程;主要是在比特分层空间中从三个方向进行游程编码,以对图像进行压缩处理,相比于常规一个方向的游程编码,本发明基于相邻相似像素值在比特分层中具有相同比特值的特点,在三个方向进行游程编码,具有更强统计特性的同时,获得更长的游程长度,有效提高了游程编码对数据的压缩率,从而提升了将船舶运行监控视频通过卫星传输至地面控制中心的效率。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。