本发明涉及视频编码压缩,具体涉及一种用于动物防疫检疫中心的监控视频数据传输方法。
背景技术:
1、动物防疫检疫中心承担了全国动物疫情分析和处理、重大动物疫病防控、畜禽产品置乱安全检测等相关工作,为确保动物防疫检疫中心工作的可回溯性,需将对动物防疫检疫中心各单位的监控视频传输至专门的服务器进行存储。
2、现有的视频压缩算法根据帧间冗余特性将视频分为关键帧、预测编码帧来实现视频的压缩。由于关键帧为一幅完整的图像,因此可对关键帧单独进行压缩,以实现视频的进一步压缩。关键帧中局部像素点具有相似性,因此关键帧中像素值的游程较长。
3、现有的压缩方法如lz编码对数据中不同的字符分配不同的后缀编码,并通过边编码边构建编码字典的方式,将编码字典中的已有的段号与字符的后缀编码组成数据中一个字符或多个字符的码字,以此实现数据的压缩。但lz编码不适合游程较长的字符串的编码,会将一个长游程的字符串编码成多个码字。因此利用lz编码对关键帧进行压缩的压缩效率不高。
技术实现思路
1、本发明提供一种用于动物防疫检疫中心的监控视频数据传输方法,以解决现有的问题。
2、本发明的一种用于动物防疫检疫中心的监控视频数据传输方法采用如下技术方案:
3、本发明一个实施例提供了一种用于动物防疫检疫中心的监控视频数据传输方法,该方法包括以下步骤:
4、根据动物防疫检疫中心监控视频中关键帧获取第一像素值序列以及第二游程长度序列;根据第一像素值序列以及第二游程长度序列对第一像素值序列以及第二游程长度序列进行更新;根据第一像素值序列以及第二游程长度序列获取每种游程长度的后缀编码以及每种像素值的后缀编码;根据第一游程长度序列获取第一像素值序列中单个像素值以及像素组,构成待编码序列;
5、构建一个空的编码字典;将待编码序列中的第一个元素作为待编码元素,根据待编码元素进行编码操作,包括:
6、s1:当待编码元素在编码字典中不存在时,根据像素值以及游程长度的后缀编码获取待编码元素的码字;将待编码元素以及待编码元素的码字添加到编码字典中;将待编码元素在待编码序列中下一个元素作为新的待编码元素;
7、s2:当待编码元素在编码字典中存在时,将待编码元素作为前缀;对前缀在待编码序列中下一个元素进行判断操作,包括:
8、s201:当前缀在待编码序列中下一个元素为像素组时,获取前缀的码字;将前缀以及前缀的码字添加到编码字典中;将前缀在待编码序列中下一个元素作为新的待编码元素;
9、s202:当前缀在待编码序列中下一个元素为单个像素值时,将前缀在待编码序列中下一个元素作为后缀,将前缀与后缀拼接成的像素串作为待编码像素串;对待编码像素串进行判断操作,获取新的待编码元素;
10、s3:重复根据新的待编码元素进行编码操作,直到待编码序列中所有元素都已遍历时停止迭代;
11、将编码字典中所有码字对应的二进制串构成的序列作为压缩帧;对压缩帧进行传输。
12、优选的,所述根据动物防疫检疫中心监控视频中关键帧获取第一像素值序列以及第二游程长度序列,包括的具体步骤如下:
13、获取动物防疫检疫中心监控视频中的关键帧,将关键帧上所有像素点对应的像素值组成第一像素值序列;从第一像素值序列中第一个像素值开始,对第一像素值序列中的像素值进行游程统计,得到第一游程长度序列;将第一游程长度序列中的所有1与所有2删除,得到第二游程长度序列。
14、优选的,所述根据第一像素值序列以及第二游程长度序列对第一像素值序列以及第二游程长度序列进行更新,包括的具体步骤如下:
15、将第二游程长度序列中游程长度的种类数记为n,将第一像素值序列中像素值的种类数记为m;
16、当m+n+1<256且0不在第一像素值序列中时,无需对第一像素值序列以及第二游程长度序列进行更新;当m+n+1<256且0在第一像素值序列中时,无需对第二游程长度序列进行更新,将关键帧中所有像素值为0的像素点的像素值调整为1,并重新获取第一像素值序列;
17、当m+n+1≥256时,若0在第一像素值序列中,将关键帧中所有像素值为0的像素点的像素值调整为1;若0不在第一像素值序列中,此时对关键帧不进行调整;根据关键帧中每种像素值的频率绘制像素值直方图,当像素值直方图中一个像素值的频率小于预设阈值,且其相邻10个像素值范围内存在频率大于该像素值频率的像素值时,获取像素值直方图中距离该像素值最近的且频率大于该像素值的像素值作为该像素值对应的合并像素值,将该像素值在关键帧中对应的像素点的像素值修改为合并像素值;根据修改后的关键帧重新获取第一像素值序列;当更新后的第一像素值序列的像素值种类数m满足m+n+1<256的条件时,无需对第二游程长度序列进行更新;当更新后的第一像素值序列的像素值种类数m不满足m+n+1<256的条件时,统计第二游程长度序列中每种游程长度的频率,获取频率最小的(m+n-255)种游程长度,作为拆分游程长度,将每个拆分游程长度拆分成两个第二游程长度序列中其他游程长度,根据拆分结果对第二游程长度序列进行更新。
18、优选的,所述根据第一像素值序列以及第二游程长度序列获取每种游程长度的后缀编码以及每种像素值的后缀编码,包括的具体步骤如下:
19、获取所有位于(0,255]范围内但不属于第一像素值序列中的整数,构成第二像素值序列;为第二游程长度序列中每种游程长度在第二像素值序列中随机无放回的选择一个像素值,将所选择的像素值转换为八位二进制数,作为对应的游程长度的后缀编码;将第一像素值序列中出现的每种像素值的8位二进制数作为每种像素值的后缀编码。
20、优选的,所述根据第一游程长度序列获取第一像素值序列中单个像素值以及像素组,构成待编码序列,包括的具体步骤如下:
21、根据第二游程长度序列中每个游程长度将第一像素值序列中对应的多个相同的像素值划分为一个像素组,将所有未划分为像素组的单个像素值以及所有像素组构成待编码序列。
22、优选的,所述当待编码元素在编码字典中不存在时,根据像素值以及游程长度的后缀编码获取待编码元素的码字,包括的具体步骤如下:
23、当待编码元素在编码字典中不存在且待编码元素为单个的像素值时,将0与待编码元素的后缀编码构成待编码元素的码字;当待编码元素在编码字典中不存在且待编码元素为像素组时,将像素组中像素值的后缀编码与像素组对应的游程长度的后缀编码构成待编码元素的码字。
24、优选的,所述当前缀在待编码序列中下一个元素为像素组时,获取前缀的码字,包括的具体步骤如下:
25、将前缀在编码字典中的段号与0构成前缀的码字,所述段号为前缀在编码字典中的行号。
26、优选的,所述对待编码像素串进行判断操作,获取新的待编码元素,包括的具体步骤如下:
27、当待编码像素串在编码字典中不存在时,将前缀在编码字典中的段号与后缀的后缀编码构成待编码像素串的码字;将待编码像素串以及待编码像素串的码字添加到编码字典中;将后缀在待编码序列中下一个元素作为新的待编码元素;
28、当待编码像素串在编码字典中存在时,将待编码像素串作为新的前缀,重复对后缀在待编码序列中下一个元素进行判断操作,直到获得新的待编码元素或后缀为待编码序列中最后一个元素时停止迭代。
29、优选的,所述将编码字典中所有码字对应的二进制串构成的序列作为压缩帧,包括的具体步骤如下:
30、将编码字典中每个码字两个部分的内容对应的二进制数拼接成一个二进制串,将所有码字对应的二进制串构成的序列作为压缩帧。
31、本发明的技术方案的有益效果是:现有的压缩方法如lz编码会将一个长游程的字符串编码成多个码字,由于关键帧中像素值的游程较长,利用lz编码对关键帧进行压缩的压缩效率不高,本发明结合游程对lz编码进行改进,根据关键帧中像素值的种类,为第二游程长度序列中的游程长度分配后缀编码,确保了每种游程长度的后缀编码与像素值的后缀编码的长度一致但内容不同,使得结合游程长度的后缀编码对关键帧进行压缩时,得到的码字数量减少,且码字长度不会增加,从而提升了压缩效率;又由于编码得到的码字数量减少,使得编码字典中的行数减少,进一步使得所有码字中第一部分的内容都较小,从而使得码字中第一部分的内容转换为二进制数后的长度变小,即最终得到的码字对应的二进制串的长度变小,从而进一步提升压缩效率,确保了动物防疫检疫中心监控视频数据可快速传输。