产学研创新服务平台(全国)
专利申请类型:发明专利;专利名称:多摄像头融合视频文件拆分为多个单摄像头视频文件的方法
专利类型:发明专利
专利申请号:CN202111133725.4
专利申请(专利权)人:四川效率源信息安全技术股份有限公司
权利人地址:四川省内江市市中区汉渝大道1号
专利发明(设计)人:蒲军,张佳强,许超明,梁效宁
专利摘要:本发明公开了一种多摄像头融合视频文件拆分为多个单摄像头视频文件的方法,包括以下步骤:S101:选择并打开源视频文件;S102:遍历所述源视频文件的各个I帧并计算各个I帧的均值Hash;S103:比较各个I帧的均值Hash,将满足第一汉明距离的I帧划分为同一组,每组各自对应各个不同的摄像头;S104:检查各个损坏的I帧并将各个损坏的I帧各自分别划分至对应的组;S201:根据分组,各自创建各组所对应的视频文件;S202:遍历源视频中所有帧,检查各个帧所属的组,并将各个帧重写至各组所对应的视频文件且无须再次编码;S203:完成遍历并输出每组所对应的视频文件作为拆分后的目标视频文件,完成多摄像头融合视频文件拆分为多个单摄像头视频文件。
主权利要求:多摄像头融合视频文件拆分为多个单摄像头视频文件的方法
技术领域
[0001] 本发明属于视频恢复与电子取证领域,涉及融合视频文件拆分为多个视频文件的方法,尤其一种涉及多摄像头融合视频文件拆分为多个单摄像头视频文件的方法。
背景技术
[0002] 现有技术中,单摄像头的监控视频存储为一个文件,这样一个视频文件只包含一个摄像头的某一段时间的监控视频。因此,该类监控视频在播放、取证、检索方面都比较方便。
[0003] 但是,由于监控视频越来越多的需要,加上当今监控机的技术原因,在存储监控视频文件时采用了视频融合技术。
[0004] 视频融合技术将多摄像头视频流以循环的方式存储,例如用字母A、B、C、D代表4个不同的摄像头,每个摄像头的监控视频数据存储一定时长的监控视频,因此,监控视频文件的内容顺序为ABCDABCDABCD......。该类技术编码时比较简单,即,直接将帧数据顺序存放,这样可能造成各个摄像头镜头切换而未输出I帧(也称关键帧),接着就直接附加P帧,所以,在播放时就会有花屏的情况。可见,该类监控视频播放时也不方便直接定位到指定时间,也无法检索监控视频。
[0005] 现有技术中,尚无相关的工具和处理方法,而现有技术中的技术方案是:人工计算出大致视频时间段的范围,再进行人工播放进行查看,或放弃使用该监控视频。
[0006] 综上所述,一种操作方便、快速的多摄像头融合视频文件拆分方法存在较大的应用价值。
发明内容
[0007] 针对现有技术的技术问题,本发明提供了一种多摄像头融合视频文件拆分为多个单摄像头视频文件的方法:通过使用图像指纹技术,对多摄像头融合视频中的帧图像生成指纹,应用图像Hash技术,对视频中的I帧进行处理,图像指纹差距在一定汉明距离范围内的帧视为相同摄像头的帧,最终将多摄像头融合视频文件分成多个I帧组,重新遍历视频帧,并根据I帧分组情况写入到不同的视频文件中,完成视频拆分工作。本申请涉及的术语做如下解释:
[0008] 帧:是组成视频图像的基本单位。
[0009] I帧(Iframe):关键帧也叫I帧,它是帧间压缩编码里的重要帧;它是一个全帧压缩的编码帧;解码时仅用I帧的数据就可重构完整图像;I帧不需要参考其他画面而生成。I帧又称为内部画面(intrapicture),I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像。在MPEG编码的过程中,部分视频帧序列压缩成为I帧;部分压缩成P帧;还有部分压缩成B帧。
[0010] 图像指纹:与人的指纹一样,是身份的象征,而图像指纹简单点来讲,就是将图像按照一定的哈希算法,经过运算后得出的一组二进制数字。
[0011] 汉明距离:是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量。假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1。因此,汉明距离就是一组二进制数据变成另一组数据所需的步骤数,显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。
[0012] 本发明包括以下步骤:
[0013] S100:预处理源视频文件的各个I帧,包括以下步骤:
[0014] S101:选择并打开源视频文件,所述源视频文件为多摄像头所录制的融合视频文件;
[0015] S102:遍历所述源视频文件的各个I帧并计算各个I帧的均值Hash:采用ffmpeg算法打开所述源视频文件并遍历各个I帧,采用aHash算法计算各个I帧的均值Hash;
[0016] S103:比较各个I帧的均值Hash,将满足第一汉明距离的I帧划分为同一组,每组各自对应各个不同的摄像头;
[0017] S104:检查各个损坏的I帧并将各个损坏的I帧各自分别划分至对应的组,每组各自对应各个不同的摄像头;
[0018] S200:拆分源视频文件,包括以下步骤:
[0019] S201:根据分组,各自创建各组所对应的视频文件:创建与各组一一对应的、且具有与源视频文件相同格式的视频文件头,视频文件头连同后续写入的各个帧作为各组所对应的视频文件,并最终输出为拆分后的目标视频文件;
[0020] S202:遍历源视频中所有帧,检查各个帧所属的组,并将各个帧重写至各组所对应的视频文件且无须再次编码;
[0021] S203:完成遍历并输出每组所对应的视频文件作为拆分后的目标视频文件,完成多摄像头融合视频文件拆分为多个单摄像头视频文件。
[0022] 优选地,步骤S102包括以下步骤:
[0023] S1021:图像灰度化:每个像素用1个字节表示;
[0024] S1022:缩小图像尺寸至8x8像素:采用OpenCV开源算法库的resize函数缩小图像尺寸,其中,插值方式采用像素区域关系进行重采样;
[0025] S1023:计算8x8像素的灰度平均值,其字节长度为1字节:计算64个像素灰度的和并除以64,所得的商作为8x8像素的灰度平均值;
[0026] S1024:逐行逐字节地遍历8x8像素区域,判断当前像素的灰度值是否大于灰度平均值,如果是,执行步骤S1025,否则,执行步骤S1026;
[0027] S1025:将当前像素标记为1,执行步骤S1027;
[0028] S1026:将当前像素标记为0;
[0029] S1027:将当前8x8像素的字节数组,通过步骤S1025及S1026所记录而生成8x8的bit数组,并将所述8x8的bit数组逐行按位合并为一个64bit的Hash值。
[0030] 优选地,所述步骤S103的具体步骤为:比较各个I帧的均值Hash所得到的图像指纹,获取各个I帧之间的汉明距离,将满足第一汉明距离的I帧划分为同一组,每组各自对应各个不同的摄像头。
[0031] 优选地,步骤S104的具体步骤为:判断64bit的Hash值的最后5字节的内容是否相同,如果是,则为损坏的I帧,否则为完整的I帧。
[0032] 优选地,步骤S202包括以下步骤:
[0033] S2021:判断当前帧是否为I帧,如果是,执行步骤S2022,否则执行步骤S2023;
[0034] S2022:在各组中查找当前I帧并获取所在组的编号,将当前I帧写入当前组所对应的视频文件中,执行步骤S2024;
[0035] S2023:将当前帧写入最近一个I帧所在组所对应的视频文件中;
[0036] S2024:判断是否遍历完源视频文件中所有帧,如果是,执行步骤S203,否则,执行步骤S2025;
[0037] S2025:读取下一帧并执行步骤S2021。
[0038] 优选地,所述第一汉明距离为不小于10且不大于15的自然数。
[0039] 本发明具有以下有益效果:
[0040] 1、能够快速识别视频场景,区分是否为多摄像头融合视频。
[0041] 2、能够快速拆分融合视频为多个单摄像头视频文件。
[0042] 3、拆分时不丢帧。
附图说明
[0043] 图1为本发明所提供的方法的总流程图;
[0044] 图2为本发明所提供的方法中计算各个I帧的均值Hash的具体流程图;
[0045] 图3为本发明所提供的方法中将各个帧重写至各组所对应的视频文件的具体流程图。
具体实施方式
[0046] 图1示出了本发明所提供的方法的总流程图。如图1所示,本发明的方法包括以下步骤:
[0047] S100:预处理源视频文件的各个I帧,包括以下步骤:
[0048] S101:选择并打开源视频文件,源视频文件为多摄像头所录制的融合视频文件;
[0049] S102:遍历源视频文件的各个I帧并计算各个I帧的均值Hash:采用ffmpeg算法打开源视频文件并遍历各个I帧,采用aHash算法计算各个I帧的均值Hash。
[0050] 图2示出了本发明所提供的方法中计算各个I帧的均值Hash的流程图。
[0051] 如图2所示,步骤S102包括以下步骤:
[0052] S1021:图像灰度化:每个像素用1个字节表示;
[0053] S1022:采用OpenCV开源算法库的resize函数将图像尺寸缩小至8x8像素缩小图像尺寸,其中,插值方式采用INTER_AREA,即,采用像素区域关系进行重采样;
[0054] S1023:计算8x8像素的灰度平均值,灰度平均值的字节长度为1字节:计算64个像素灰度的和并除以64,所得的商作为8x8像素的灰度平均值;
[0055] S1024:逐行逐字节地遍历8x8像素区域,判断当前像素的灰度值是否大于灰度平均值,如果是,执行步骤S1025,否则,执行步骤S1026;
[0056] S1025:将当前像素标记为1,执行步骤S1027;
[0057] S1026:将当前像素标记为0;
[0058] S1027:将当前8x8像素的字节数组,通过步骤S1025及S1026所标记而生成8x8的bit数组,并将8x8的bit数组逐行按位合并为一个64bit的Hash值。
[0059] S103:比较各个I帧的均值Hash,将满足第一汉明距离的I帧划分为同一组,每组各自对应各个不同的摄像头;
[0060] 具体地,比较各个I帧的均值Hash所得到的图像指纹,获取各个I帧之间的汉明距离,将汉明距离不小于10且不大于15的I帧划分为同一组,每组各自对应各个不同的摄像头。
[0061] S104:检查各个损坏的I帧并将各个损坏的I帧各自分别划分至对应的组,每组各自对应各个不同的摄像头;
[0062] 具体地,判断64bit的Hash值的最后5字节的内容是否相同,如果是,则为损坏的I帧,否则为完整的I帧。
[0063] 由于多摄像头融合视频的技术特点,常常会在编码时产生损坏的I帧。例如,720P视频仅最上面几行图像正常,其余皆为花屏的情况,这样会导致生成的图像指纹与同一摄像头的其它图像生成的图像指纹差距过大(即,汉明距离过大),几乎无法识别、也无法视为相同的摄像头的帧图像,这种情况只能人工判断,再手工调整分组,即人工检查每个组的I帧图像,若I帧图像被损坏且显示不正常,则与其它显示正常I帧进行人工对比,若确认是相同摄像头,则将被损坏且显示不正常的I帧调整到显示正常的I帧相同的分组中。
[0064] S200:拆分源视频文件,包括以下步骤:
[0065] S201:根据分组,各自创建各组所对应的视频文件:创建与各组一一对应的、且具有与源视频文件相同格式的视频文件头,视频文件头连同后续写入的各个帧作为各组所对应的视频文件,并最终输出为拆分后的目标视频文件;
[0066] 例如,假设视频有1至9个I帧,其中1帧可正常显示,属于A摄像头;3帧可正常显示,属于B摄像头;9帧是无法正常显示的I帧,人工识别后分到A摄像头所在组,最终得到2个组,同时生成两个视频文件头A.avi和B.avi。
[0067] S202:遍历源视频中所有帧,检查各个帧所属的组,并将各个帧重写至各组所对应的视频文件且无须再次编码。
[0068] 图3示出了本发明所提供的方法中将各个帧重写至各组所对应的视频文件的流程图。如图3所示,步骤S202包括以下步骤:
[0069] S2021:判断当前帧是否为I帧,如果是,执行步骤S2022,否则执行步骤S2023;
[0070] S2022:在各组中查找当前I帧并获取所在组的编号,将当前I帧写入当前组所对应的视频文件中,执行步骤S2024;
[0071] S2023:将当前帧写入最近一个I帧所在组所对应的视频文件中;
[0072] 在本发明的另一实施例中,假设一共有三个摄像头A、B、C,遍历这三个摄像头的融合视频文件所有帧,第1个I帧到第2个I帧之间的所有帧写入A.avi,第2个I帧到第3个I帧之间的所有帧写入B.avi.......,依次类推。
[0073] S2024:判断是否遍历完源视频文件中所有帧,如果是,执行步骤S203,否则,执行步骤S2025;
[0074] S2025:读取下一帧并执行步骤S2021。
[0075] S203:完成遍历并输出每组所对应的视频文件A.avi、B.avi、C.avi......作为拆分后的目标视频文件,完成多摄像头融合视频文件拆分为多个单摄像头视频文件。
[0076] 通过本发明所提供的方法,解决了现有技术中尚无一种快速拆分多摄像头融合视频为多个单摄像头视频文件的技术问题。
[0077] 应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
专利地区:四川
专利申请日期:2021-09-27
专利公开日期:2023-06-27
专利公告号:CN113873328B