视频压缩、重构方法及对应装置、摄像头及视频处理设备转让专利

申请号 : CN202011047802.X

文献号 : CN111901604B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张发恩董志伟

申请人 : 创新奇智(南京)科技有限公司

摘要 :

本申请涉及视频压缩技术领域,提供一种视频压缩、重构方法及对应装置、摄像头及视频处理设备。其中,视频压缩方法包括:获取原始视频帧序列,并对原始视频帧序列中的视频帧进行目标检测;对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对目标区域内的视频数据进行压缩,获得目标压缩数据;对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对背景帧进行压缩,获得背景压缩数据;保存两种压缩数据。该方法有利于提高视频的压缩率并加快视频的压缩速度,非常适合于在边缘设备上部署,并且有利于视频数据在网络中的传输。

权利要求 :

1.一种视频压缩方法,其特征在于,包括:

获取原始视频帧序列,并对所述原始视频帧序列中的视频帧进行目标检测;

对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,所述目标区域通过将目标检测算法输出的原始目标区域扩展至预设大小后获得;

对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对所述背景帧进行压缩,获得背景压缩数据;

保存所述目标压缩数据和所述背景压缩数据;

其中,所述对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,包括:对于检测到目标的每段视频帧序列,获取其中的每个视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧;

所述对于未检测到目标的视频帧,确定其中的背景帧,包括:

对于未检测到目标的每个视频帧,判断其是否满足背景提取条件,若满足所述背景提取条件,则将该视频帧确定为一个背景帧;

所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,以及,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值,视频帧的光照强度包含在光敏传感器采集的光照数据中。

2.根据权利要求1所述的视频压缩方法,其特征在于,所述方法还包括:保存所述检测到目标的视频帧中所述目标区域的位置信息。

3.根据权利要求1所述的视频压缩方法,其特征在于,所述方法还包括:保存所述检测到目标的视频帧的帧定位信息和所述背景帧的帧定位信息,所述帧定位信息表征视频帧在所述原始视频帧序列中的位置。

4.根据权利要求3所述的视频压缩方法,其特征在于,所述保存所述检测到目标的视频帧的帧定位信息,包括:保存检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。

5.一种视频重构方法,其特征在于,包括:

读取背景压缩数据,并利用第二视频解压缩算法对所述背景压缩数据进行解压缩,获得作为背景帧的未检测到目标的视频帧,所述背景帧为满足背景提取条件的未检测到目标的视频帧,所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,以及,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值;其中,视频帧的光照强度包含在光敏传感器采集的光照数据中;

读取目标压缩数据,并利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据,所述目标区域通过将目标检测算法输出的原始目标区域扩展至预设大小后获得;

通过叠加所述目标区域内的视频数据与所述背景帧,重构出所述检测到目标的视频帧;

其中,所述目标压缩数据包括:对检测到目标的每段视频帧序列中的目标区域内的视频数据进行压缩后得到的数据,所述利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据,包括:利用第一视频解压缩算法,对检测到目标的每段视频帧序列在所述目标压缩数据中对应的压缩数据进行解压缩,获得检测到目标的每段视频帧序列中的目标区域内的视频数据。

6.根据权利要求5所述的视频重构方法,其特征在于,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧中的所述目标区域的位置信息;

根据检测到目标的视频帧中所述目标区域的位置信息,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧。

7.根据权利要求5所述的视频重构方法,其特征在于,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;

根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧;

通过叠加每个检测到目标的视频帧中所述目标区域内的视频数据与对应的背景帧,重构出该检测到目标的视频帧。

8.根据权利要求7所述的视频重构方法,其特征在于,所述根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧,包括:根据检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息以及所述背景帧的帧定位信息,确定与该段视频帧序列中的每个视频帧对应的背景帧;

其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。

9.根据权利要求5-8中任一项所述的视频重构方法,其特征在于,所述方法还包括:通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧。

10.根据权利要求9所述的视频重构方法,其特征在于,所述通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;

根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定未检测到目标且未作为所述背景帧的视频帧及其对应的背景帧;

通过复制每个未检测到目标且未作为所述背景帧的视频帧对应的背景帧,重构出该未检测到目标且未作为所述背景帧的视频帧。

11.一种视频压缩装置,其特征在于,包括:

视频帧获取模块,用于获取原始视频帧序列,并对所述原始视频帧序列中的视频帧进行目标检测;

目标压缩模块,用于对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,所述目标区域通过将目标检测算法输出的原始目标区域扩展至预设大小后获得;

背景压缩模块,用于对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对所述背景帧进行压缩,获得背景压缩数据;

压缩数据保存模块,用于保存所述目标压缩数据和所述背景压缩数据;

其中,所述目标压缩模块获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,包括:对于检测到目标的每段视频帧序列,获取其中的每个视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧;

所述背景压缩模块对于未检测到目标的视频帧,确定其中的背景帧,包括:对于未检测到目标的每个视频帧,判断其是否满足背景提取条件,若满足所述背景提取条件,则将该视频帧确定为一个背景帧;其中,所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,以及,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值,视频帧的光照强度包含在光敏传感器采集的光照数据中。

12.一种视频重构装置,其特征在于,包括:

背景解压缩模块,用于读取背景压缩数据,并利用第二视频解压缩算法对所述背景压缩数据进行解压缩,重构出作为背景帧的未检测到目标的视频帧,所述背景帧为满足背景提取条件的未检测到目标的视频帧,所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,和/或,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值;其中,视频帧的光照强度包含在光敏传感器采集的光照数据中;

目标解压缩模块,用于读取目标压缩数据,并利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据,所述目标区域通过将目标检测算法输出的原始目标区域扩展至预设大小后获得;

目标重构模块,用于通过叠加所述目标区域内的视频数据与所述背景帧,重构出所述检测到目标的视频帧;

其中,所述目标压缩数据包括:对检测到目标的每段视频帧序列中的目标区域内的视频数据进行压缩后得到的数据,所述目标解压缩模块利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据,包括:利用第一视频解压缩算法,对检测到目标的每段视频帧序列在所述目标压缩数据中对应的压缩数据进行解压缩,获得检测到目标的每段视频帧序列中的目标区域内的视频数据。

13.一种摄像头,其特征在于,包括:

存储器、处理器以及拍摄组件,所述拍摄组件用于采集原始视频帧序列;

所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行权利要求1-4中任一项所述的方法;

所述摄像头中还设置有光敏传感器,所述光敏传感器用于采集光照数据,所述处理器用于根据所述光照数据中的光照强度判断未检测到目标视频帧相对于上一个背景帧在光照强度上的变化量是否已经超过了第二阈值。

14.一种视频处理设备,其特征在于,包括:

存储器、处理器以及通信组件,所述通信组件用于接收摄像头采集的原始视频帧序列或压缩视频帧序列;其中,所述压缩视频帧序列是所述摄像头对采集到的原始视频帧序列进行压缩后得到的;

所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行权利要求1-4中任一项所述的方法。

15.一种视频处理设备,其特征在于,包括:

存储器以及处理器;

所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行权利要求5-10中任一项所述的方法。

说明书 :

视频压缩、重构方法及对应装置、摄像头及视频处理设备

技术领域

[0001] 本发明涉及视频压缩技术领域,具体而言,涉及一种视频压缩、重构方法及对应装置、摄像头及视频处理设备。

背景技术

[0002] 现有的视频压缩算法基本上是基于视频帧的数据压缩,即利用视频帧之间在内容上的相似性实现压缩,目前已经有一些成熟的视频压缩标准,如H.264、H.265等。但现有的视频压缩算法压缩率并不高,因此在部署到一些边缘设备(如摄像头等靠近物或数据源头的一侧的设备)上时,因边缘设备的存储能力有限,将导致算法部署困难。

发明内容

[0003] 本申请实施例的目的在于提供一种视频压缩、重构方法及对应装置、摄像头及视频处理设备,以改善上述技术问题。
[0004] 为实现上述目的,本申请提供如下技术方案:
[0005] 第一方面,本申请实施例提供一种视频压缩方法,包括:获取原始视频帧序列,并对所述原始视频帧序列中的视频帧进行目标检测;对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对所述背景帧进行压缩,获得背景压缩数据;保存所述目标压缩数据和所述背景压缩数据。
[0006] 在上述方法中,对原始视频帧序列中目标和背景分别进行压缩,由于目标之间具有较高的相似性,背景之间也具有较高的相似性,因此分别压缩有利于消除信息冗余,提高压缩率。并且,由于参与压缩的目标区域并非整个视频帧,参与压缩的背景帧也并非原始视频帧序列中所有的视频帧,所以参与压缩的数据量更少,从而也能够提高压缩率并加快压缩速度。
[0007] 该方法因其压缩产生的数据量较少,压缩过程中的运算量也较小,因此非常适合于在运算存储能力都十分有限的边缘设备上部署(当然也可以部署于非边缘设备)。此外,由于该方法的数据压缩率较高,因此压缩后的视频数据在进行传输时,对于网络带宽的占用也较少。
[0008] 在第一方面的一种实现方式中,所述对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,包括:对于检测到目标的视频帧,获取目标检测算法输出的包含有目标的原始区域;将所述原始区域的面积扩展至预设的大小,获得所述目标区域。
[0009] 若一些现有的压缩算法(如H.264、H.265)要求被压缩的视频帧(这里相当于目标区域内的视频数据)必须具有相同的尺寸,在上述实现方式中,通过扩展原始区域的面积使得各帧中的目标区域具有相同的大小,从而可以应用这些现有的压缩算法。
[0010] 在第一方面的一种实现方式中,所述对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,包括:对于检测到目标的每段视频帧序列,获取其中的每个视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0011] 检测到目标的不同视频帧序列,其包含的目标也有极大的可能是不同的,因此目标区域内的视频数据在内容上也存在比较大的区别,从而可以分开进行压缩,这样还更方便并行处理。
[0012] 在第一方面的一种实现方式中,所述对于未检测到目标的视频帧,确定其中的背景帧,包括:对于未检测到目标的每个视频帧,判断其是否满足背景提取条件,若满足所述背景提取条件,则将该视频帧确定为一个背景帧;其中,所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,和/或,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值。
[0013] 以上两个条件都表明,在选择背景帧时,应尽可能选择那些包含了较明显变化的视频帧作为背景帧。
[0014] 在第一方面的一种实现方式中,所述方法还包括:保存所述检测到目标的视频帧中所述目标区域的位置信息。
[0015] 保存目标区域的位置信息有利于视频重构时准确还原目标在视频帧中的位置。
[0016] 在第一方面的一种实现方式中,所述方法还包括:保存所述检测到目标的视频帧的帧定位信息和所述背景帧的帧定位信息,所述帧定位信息表征视频帧在所述原始视频帧序列中的位置。
[0017] 保存检测到目标的视频帧的帧定位信息和背景帧的帧定位信息,有利于在视频重构时理清各视频帧之间的先后关系,从而实现精确的重构。
[0018] 在第一方面的一种实现方式中,所述保存检测到目标的视频帧的帧定位信息,包括:保存检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0019] 对于检测到目标的一段视频帧序列,若已知其中的第一个视频帧和最后一个视频帧的帧定位信息,则这段视频帧序列中视频帧的数量以及每个视频帧的帧定位信息都可以推算(已知帧率时)。进一步的,由于每个检测到目标的视频帧中的目标区域内的视频数据都会被压缩,所以对于检测到目标的一段视频帧序列,其包含的视频帧的数量是已知的,所以即使只知道其中的第一个视频帧或最后一个视频帧的帧定位信息,也可以推知该段视频帧序列中其他视频帧的帧定位信息。因此,上述实现方式有利于减少保存的帧定位信息的数量。
[0020] 第二方面,本申请实施例提供一种视频重构方法,包括:读取背景压缩数据,并利用第二视频解压缩算法对所述背景压缩数据进行解压缩,获得作为背景帧的未检测到目标的视频帧;读取目标压缩数据,并利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据;通过叠加所述目标区域内的视频数据与所述背景帧,重构出所述检测到目标的视频帧。
[0021] 上述视频重构方法利用第一方面提供的压缩后的视频数据重建原始视频帧序列,该方法操作简单,重构误差较小。特别是对于背景变化不大的拍摄场景,即使只利用少量背景帧重构检测到目标的视频帧,重构结果也具有良好的质量。
[0022] 在第二方面的一种实现方式中,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧中的所述目标区域的位置信息;根据检测到目标的视频帧中所述目标区域的位置信息,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧。
[0023] 在第二方面的一种实现方式中,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧;通过叠加每个检测到目标的视频帧中所述目标区域内的视频数据与对应的背景帧,重构出该检测到目标的视频帧。
[0024] 在第二方面的一种实现方式中,所述根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧,包括:根据检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息以及所述背景帧的帧定位信息,确定与该段视频帧序列中的每个视频帧对应的背景帧;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0025] 在第二方面的一种实现方式中,所述方法还包括:通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧。
[0026] 在第二方面的一种实现方式中,所述通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定未检测到目标且未作为所述背景帧的视频帧及其对应的背景帧;通过复制每个未检测到目标且未作为所述背景帧的视频帧对应的背景帧,重构出该未检测到目标且未作为所述背景帧的视频帧。
[0027] 第三方面,本申请实施例提供一种视频压缩装置,包括:视频帧获取模块,用于获取原始视频帧序列,并对所述原始视频帧序列中的视频帧进行目标检测;目标压缩模块,用于对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;背景压缩模块,用于对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对所述背景帧进行压缩,获得背景压缩数据;压缩数据保存模块,用于保存所述目标压缩数据和所述背景压缩数据。
[0028] 第四方面,本申请实施例提供一种视频重构装置,包括:背景解压缩模块,用于读取背景压缩数据,并利用第二视频解压缩算法对所述背景压缩数据进行解压缩,重构出作为背景帧的未检测到目标的视频帧;目标解压缩模块,用于读取目标压缩数据,并利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据;目标重构模块,用于通过叠加所述目标区域内的视频数据与所述背景帧,重构出所述检测到目标的视频帧。
[0029] 第五方面,本申请实施例提供一种摄像头,包括:存储器、处理器以及拍摄组件,所述拍摄组件用于采集原始视频帧序列;所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
[0030] 在第五方面的一种实现方式中,所述摄像头中还设置有光敏传感器,所述光敏传感器用于采集光照数据,所述处理器用于根据所述光照数据中的光照强度判断未检测到目标视频帧相对于上一个背景帧在光照强度上的变化量是否已经超过了第二阈值。
[0031] 第六方面,本申请实施例提供一种视频处理设备,包括:存储器、处理器以及通信组件,所述通信组件用于接收摄像头采集的原始视频帧序列或压缩视频帧序列;其中,所述压缩视频帧序列是所述摄像头对采集到的原始视频帧序列进行压缩后得到的;所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
[0032] 第七方面,本申请实施例提供一种视频处理设备,包括:存储器以及处理器;所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第二方面或第二方面的任意一种可能的实现方式提供的方法。
[0033] 第八方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面、第二方面或这两方面的任意一种可能的实现方式提供的方法。

附图说明

[0034] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0035] 图1示出了本申请实施例提供的一种视频压缩方法的流程;
[0036] 图2示出了本申请实施例提供的一种视频重构方法的流程;
[0037] 图3示出了本申请实施例提供的一种视频压缩装置的结构;
[0038] 图4示出了本申请实施例提供的一种视频重构装置的结构;
[0039] 图5示出了本申请实施例提供的一种摄像头的结构;
[0040] 图6示出了本申请实施例提供的一种视频处理设备的结构;
[0041] 图7示出了本申请实施例提供的另一种视频处理设备的结构。

具体实施方式

[0042] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0043] 图1示出了本申请实施例提供的一种视频压缩方法的流程。该方法可由一电子设备执行,如图5中的摄像头500、图6中的视频处理设备600,等等。参照图1,该方法包括:
[0044] 步骤S110:获取原始视频帧序列,并对原始视频帧序列中的视频帧进行目标检测。
[0045] 原始视频帧序列为未压缩的视频帧序列,原始视频帧序列包括多个视频帧,原始视频帧序列的获取途径不限,例如可能是摄像头实时采集的,可能是从网络上下载的测试数据,等等。需要指出,一些设备因自身处理能力有限,在获得视频帧序列后,可能采取抽帧策略,例如每三个视频帧抽一帧进行处理,另外两帧丢弃,对于这种情况,原始视频帧序列应理解为抽帧后产生的视频帧序列。
[0046] 对原始视频帧序列中的每个视频帧都利用目标检测算法进行目标检测,根据需求的不同,这里的目标可以是人、车辆、动物等。
[0047] 在一些实现方式中,可以直接将相邻视频帧对应位置处的像素值相减,并将相减后结果值较大(例如,绝对值大于某个阈值)的像素确定为构成目标的像素,此种目标检测方式非常简单,但检测结果容易受到噪声、杂物等的干扰。
[0048] 在另一些实现方式中,可以使用预训练的神经网络模型进行目标检测,将视频帧输入至神经网络模型,神经网络模型将输出目标的位置、置信度等信息。由于神经网络模型可以在训练过程中学习目标的特征,并且具有良好的泛化能力,因此目标检测效果较好。例如,可以采用Mask RCNN、YOLO等模型。
[0049] 目标检测结果分为两类,一类是在视频帧中检测到目标,一类是在视频帧中未检测到目标。对于检测到目标的视频帧执行步骤S120,对于未检测到目标的视频帧执行步骤S130。
[0050] 步骤S120:对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对目标区域内的视频数据进行压缩,获得目标压缩数据。
[0051] 将检测到目标的视频帧中包含目标的区域称为目标区域,目标区域的面积小于整个视频帧的面积。
[0052] 在一种实现方式中,可以直接将步骤S110中通过目标检测算法输出的包含有目标的区域作为目标区域(例如,用神经网络模型检测目标会输出一个检测框),因此这种确定目标区域的方式简单直接。但该方式在进行视频数据压缩时存在一定问题:若第一视频压缩算法采用一些现有的压缩算法(如H.264、H.265)实现,这些算法往往要求被压缩的视频帧(这里相当于目标区域内的视频数据)必须具有相同的尺寸,但由于目标可能在画面中不断运动,因此每个视频帧中目标的大小未必相同,按照上述方式得到的目标区域大小也会随之变化,从而难以应用某些现有的压缩算法。
[0053] 为解决上述问题,还可以采用另一种确定目标区域的方式:首先获取步骤S110中通过目标检测算法得到的包含有目标的区域,称为原始区域。然后,将原始区域的面积扩展至预设的大小(例如,可以保持原始区域的中心位置不变进行扩展,等等),获得目标区域。此处预设的大小可以比事先估计出的目标在视频帧中占据的最大面积再大一些,使得原始区域扩展后,可以将或者基本上可以将目标包含在内。对于每个检测到目标的视频帧,该预设的大小都是一致的,所以在应用现有的视频压缩算法时不存在障碍。
[0054] 此外,在一些场景中,目标在视频帧中出现的位置总是固定的或者有规律的。例如,视频帧中包括一个位于画面正中央的走廊,行人总是沿走廊行走,即从画面中央的一侧进入画面,并从另一侧离开画面,此时可以直接将一个涵盖该走廊的矩形框确定为目标区域,即目标区域具有固定的位置。在这种情况下,步骤S110中检测到的目标位置并不重要(因为其与确定目标区域无关),步骤S120只关心步骤S110中是否检测到了目标。
[0055] 在原始视频帧序列中,检测到目标的视频帧很可能有多个,如何对这些视频帧的目标区域内的视频数据进行压缩,有不同的实现方式,下面列举两种:
[0056] 方式1:对原始视频帧序列中所有检测到目标的视频帧,将其目标区域内的视频数据放在一起,并利用第一视频压缩算法进行压缩,得到目标压缩数据。例如,若原始视频帧序列有1000帧,目标A出现在其中的第201至300帧,目标B出现在其中的第851至900帧,则将检测到目标的150帧中的目标区域内的视频数据都放在一起进行压缩。
[0057] 方式2:在介绍方式2前,先定义检测到目标的一段视频帧序列为连续检测到目标的至少一个视频帧的集合。例如,若原始视频帧序列有1000帧,目标A出现在其中的第201至300帧,目标B出现在其中的第851至900帧,则检测到目标的视频帧序列共有两段,分别包含
100个检测到目标A的视频帧和50个检测到目标B的视频帧,不妨命名为视频帧序列A和视频帧序列B。
[0058] 方式2的视频压缩过程为:对于检测到目标的每段视频帧序列,获取其中的每个视频帧中的目标区域内的视频数据,并利用第一视频压缩算法对这些目标区域内的视频数据进行压缩,得到目标压缩数据。按照上面的例子,方式2即对视频帧序列A中的每个视频帧中的目标区域内的视频数据进行压缩,得到一部分目标压缩数据,对视频帧序列B中的每个视频帧中的目标区域内的视频数据进行压缩,得到另一部分目标压缩数据,两部分目标压缩数据合起来才是最终的目标压缩数据。这两个压缩过程是独立的,因此也可以并行执行,提高压缩效率。
[0059] 采用方式2的原因在于,检测到目标的不同视频帧序列,其包含的目标也有极大的可能是不同的,因此目标区域内的视频数据在内容上也存在比较大的区别,放在一起压缩并不能提高压缩率,而且也无法进行并行处理。当然,这并非说不能采用方式1进行压缩,因为方式1在逻辑上更加简单一些。
[0060] 此外,针对原始视频帧序列的压缩可能是分段进行的,特别是原始视频帧序列为实时采集的情况,事先也不清楚采集过程何时会结束,因此可以采用每隔一段时间压缩一次的策略,假设每隔5分钟压缩一次,意思是将原始视频帧序列中每5分钟内的视频帧作为一组,对其中检测到目标的视频帧中的目标区域内的视频数据进行压缩,组与组之间的压缩相互独立,上面的方式1和方式2均是针对一个组内的情况。
[0061] 步骤S130:对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对背景帧进行压缩,获得背景压缩数据。
[0062] 在一些实现方式中,可以将所有未检测到目标的视频帧都作为背景帧参与压缩。但发明人长期研究发现,在多数视频拍摄场景中,特别对于一些监控场景,采集到的绝大多数视频帧都是内容完全相同或仅存在细微差别的背景,换句话说存在极大的信息冗余。
[0063] 因此,在另一些实现方式中,只需从未检测到目标的视频帧中选择出少量的视频帧作为背景帧即可,避免大量包含相同或高度相似的内容的视频帧都参与压缩。总体上来说,可以选择那些包含了较明显变化的视频帧作为背景帧,以代表随时间的推移视频拍摄场景中背景发生的变化。
[0064] 例如,一种可能的做法为:对于未检测到目标的每个视频帧,判断其是否满足背景提取条件,若满足背景提取条件,则将该视频帧选为一个背景帧,否则,不将其选为一个背景帧。其中,背景提取条件包括:
[0065] (1)该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值。
[0066] (2)该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值。
[0067] 条件(1)的逻辑是,当前未检测到目标的视频帧距离上一个背景帧经过了足够长的一段时间(时长超过第一阈值),背景的内容很可能已经发生了足够明显的变化,从而可以选择一个新的背景帧,即使背景的内容并没有发生什么变化,每隔第一阈值的时长(实际上可能更长,因为若视频中检测到目标则不会作为背景帧)才选择一个背景帧,也不会产生很多的背景帧。
[0068] 条件(2)的逻辑是,若当前未检测到目标的视频帧相对于上一个背景帧在光照强度上发生了足够大的变化(变化量超过第二阈值),例如房间亮灯、日夜交替等,视频帧中的像素值也将发生明显变化,使得两个视频帧在画面内容上已经存在很大的区别,从而可以选择一个新的背景帧。
[0069] 背景提取条件可以只包括以上两个条件中的一个,也可以同时包括两个条件,即要同时满足以上两个条件才算是满足背景提取条件。另外,以上两个条件中都涉及上一个背景帧,若不存在上一个背景帧,例如,原始视频帧序列的前10帧中都检测到目标,第11帧中才未检测到目标,则可以直接将第11帧作为一个背景帧;又例如,在原始视频帧序列的第1帧中就未检测到目标,则可以将其作为一个背景帧。
[0070] 获取视频帧的光照强度有不同的方式,例如,若采用软件方式,可以根据视频帧中的像素值计算视频帧的平均亮度作为其光照强度;又例如,若采用硬件方式,可以设置一个光敏传感器,该光敏传感器能够采集光照数据,其中包括光照强度。
[0071] 存在一种特殊情况,若原始视频帧序列中的每个视频帧中都检测到目标,按照步骤S130将无法获取到背景帧,这样将会影响视频的重构(具体重构过程见后文)。为解决这一问题,在一些实现方式中,可以事先保存一个与原始视频帧序列在同一位置处采集的、且不包含目标的视频帧,将其作为一个预置的背景帧。
[0072] 步骤S130中的第二视频压缩算法可以和步骤S120中的第一视频压缩算法是同一种算法,也可以不是同一种算法。并且,即使二者采用同一种算法(例如,都采用H.264)也未必要采用相同的压缩参数,例如,若更关注于目标,则可以对目标采用品质较高的压缩,对背景采用品质较低的压缩。另外,若选取的背景帧数量较少(比如,只有几帧),甚至也可以不对背景帧进行压缩,此时第二视频压缩算法可以视为对背景帧做恒等映射。
[0073] 步骤S140:保存目标压缩数据和背景压缩数据。
[0074] 注意,保存目标压缩数据在执行完步骤S120之后就可以进行,并不一定要等到执行完步骤S130之后才进行。步骤S120和步骤S130中的压缩过程本就可以并行执行。
[0075] 目标压缩数据和背景压缩数据可以分别进行保存,也可以统一存储到一个具有固定格式的视频文件中,例如,该文件可以包括三部分:第一部分为文件头,其中记录了视频的相关信息以及其他部分的位置(如第二部分的位置、第三部分的位置)等;第二部分存储目标压缩数据;第三部分存储背景压缩数据。
[0076] 在一些实现方式中,还可以保存检测到目标的视频帧中目标区域的位置信息,如目标区域的坐标。该位置信息在视频重构阶段可能会使用,详见后文阐述。该位置信息不参与压缩,但可以和目标压缩数据以及背景压缩数据一起保存,例如,上面介绍的视频文件中还包括第四部分,用于存储该位置信息。
[0077] 在一些实现方式中,还可以保存检测到目标的视频帧的帧定位信息和背景帧的帧定位信息。其中,帧定位信息表征某个视频帧在原始视频帧序列中的位置。例如,帧定位信息可以是视频帧的时间戳和/或者帧序号。其中,时间戳可以以系统时间为基准,若视频帧的帧率已知,时间戳和帧序号之间可以认为存在一定的换算关系。已知两个视频帧的时间戳或者帧序号,则这两个视频帧之间的先后顺序关系就可以确定,二者之间间隔的帧数以及间隔的每一帧的时间戳和帧序号也可以推算。
[0078] 上述帧定位信息在视频重构阶段可能会使用,详见后文阐述。该帧定位信息不参与压缩,但可以和目标压缩数据以及背景压缩数据一起保存,例如,在上面介绍的视频文件中,帧定位信息可以和位置信息保存在一起(文件的第四部分)。
[0079] 值得注意的是,对于检测到目标的一段视频帧序列(前文在介绍方式2时已给出其定义),若已知其中的第一个视频帧和最后一个视频帧的帧定位信息,则这段视频帧序列中视频帧的数量以及每个视频帧的帧定位信息都可以推算。进一步的,由于每个检测到目标的视频帧中的目标区域内的视频数据都会被压缩,所以对于检测到目标的一段视频帧序列,其包含的视频帧的数量是已知的,所以即使只知道其中的第一个视频帧或最后一个视频帧的帧定位信息,也可以推知该段视频帧序列中其他视频帧的帧定位信息。
[0080] 因此,在一些实现方式中,对于检测到目标的每段视频帧序列,可以只保存其中的第一个视频帧和/或最后一个视频帧的帧定位信息,以减少压缩后的数据量;当然,若愿意保存每个检测到目标的视频帧的帧定位信息也是可以的。
[0081] 上面的位置信息和帧定位信息除了在视频重构阶段使用,也可以直接输出供用户查看,例如,采集原始视频帧序列本来就是出于监控目的,在检测到目标后自然可以输出目标的位置及出现的时间段。其中,若希望输出目标出现的真实时间,则帧定位信息中至少应包含时间戳。
[0082] 综上所述,在本申请实施例提供的视频压缩方法中,对原始视频帧序列中目标和背景分别进行压缩,由于目标之间具有较高的相似性,背景之间也具有较高的相似性,因此分别压缩有利于消除信息冗余,提高压缩率。并且,由于参与压缩的目标区域并非整个视频帧,参与压缩的背景帧也并非原始视频帧序列中所有的视频帧,甚至,在某些实现方式中,若背景变化较少,参与压缩的背景帧很可能只是少量几个未检测到目标的视频帧,所以参与压缩的数据量更少,从而也能够提高压缩率并加快压缩速度。
[0083] 另外,该方法因其压缩产生的数据量较少,压缩过程中的运算量也较小,因此非常适合于在运算存储能力都十分有限的边缘设备上部署(当然也可以部署于非边缘设备)。此外,由于该方法的数据压缩率较高,因此压缩后的视频数据在进行传输时,对于网络带宽的占用也较少。
[0084] 图2示出了本申请实施例提供的一种视频重构方法的流程,所谓重构是指基于压缩后的视频数据重建原始的视频数据(当然,若是有损压缩重建结果会存在一定的误差),以便可以对视频进行回放等操作。图2中的方法可由一电子设备执行,如图7中的视频处理设备700,等等。参照图2,该方法包括:
[0085] 步骤S210:读取背景压缩数据,并利用第二视频解压缩算法对背景压缩数据进行解压缩,获得作为背景帧的未检测到目标的视频帧。
[0086] 关于背景压缩数据的来源,前文已经介绍。若背景压缩数据保存在视频文件中,则可以按照文件的格式进行读取,例如,从文件的第一部分中先查找到第三部分在文件中的位置,然后再从文件的第三部分中读取出背景数据。第二视频解压缩算法与第二视频压缩算法是配对的算法,从而可以对背景压缩数据进行解压缩,解压结果即作为背景帧的未检测到目标的视频帧。可以理解的,由于经过了压缩后再解压的过程,背景帧和解压之前相比可能存在一定的区别,即压缩损失。步骤S210中的解压缩过程也可以视为对背景帧进行重构的过程。
[0087] 步骤S220:读取目标压缩数据,并利用第一视频解压缩算法对目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据。
[0088] 关于目标压缩数据的来源,前文已经介绍,若目标压缩数据保存在视频文件中,则可以按照文件的格式进行读取。第一视频解压缩算法与第一视频压缩算法是配对的算法,从而可以对目标压缩数据进行解压缩,解压结果即检测到目标的视频帧中包含有目标的目标区域内的视频数据。可以理解的,由于经过了压缩后再解压的过程,目标区域内的视频数据和解压之前相比可能存在一定的区别,即压缩损失。
[0089] 步骤S230:通过叠加目标区域内的视频数据与属于背景的视频数据,重构出检测到目标的视频帧。
[0090] 对于检测到目标的视频帧,只有目标区域内的视频数据被压缩,目标区域外的表征背景的视频数据被丢弃,因此要重构这些视频帧必须设法恢复丢弃掉的这部分数据。根据前文内容可知,在多数视频拍摄场景中,背景几乎保持不变或者至少在一段时间内几乎保持不变,从而可以将步骤S210中得到的背景帧近似作为压缩时被丢弃的背景视频数据,再在背景帧上叠加压缩时被保存的目标区域内的视频数据,就可以重构出检测到目标的视频帧。
[0091] 至于要选择哪个背景帧用于重构检测到目标的视频帧,则有不同的策略,例如,可以选择与其在原始视频帧中的位置接近的背景帧,因为这些背景帧中的背景很可能与检测到目标的视频帧中的背景类似,所以重构效果较好。
[0092] 进一步的,根据前文内容,视频压缩时,很可能会在视频帧中的背景发生明显变化时才选择新的背景帧,从而,若检测到目标的视频帧(在重构时指目标区域内的视频数据对应的视频帧)位于两个相邻的背景帧之间,则可以选择前一个背景帧用于重构该检测到目标的视频帧,因为前一个背景帧中的背景是变化发生前的,后一个背景帧中的背景是变化发生后的,若背景中的变化在短时间内发生,则该检测到目标的视频帧中的背景与前一个背景帧中的背景更相似的概率会更高。另外,若检测到目标的视频帧之后没有背景帧,也可以选择该视频帧之前的背景帧用于重构。
[0093] 当然,也不排除选择检测到目标的视频帧之后的、与之在原始视频帧中的位置最接近的背景帧用于重构该检测到目标的视频帧,例如,由于原始视频帧的前100帧中都有目标,直至第101帧才选择了一个背景帧,则为了重构前100个检测到目标的视频帧,可以选择第101帧(指步骤S210重构出的第101帧)用于重构。
[0094] 下面再通过更多的例子介绍视频重构的过程,为简单起见,在重构检测到目标的视频帧时,主要以选择该视频帧之前的、与之在原始视频帧中的位置最接近的背景帧用于重构的情况为例。
[0095] 先考虑一种简单的情况,在视频压缩时,将每个未检测到目标的视频帧都作为背景帧,并将未检测到目标的每段视频帧序列、检测到目标的每段视频帧序列中的目标区域内的视频数据单独压缩、并按照其在原始视频帧序列中的出现顺序存储。举例来说,若原始视频帧序列有1000帧,目标A出现在其中的第201至300帧,目标B出现在其中的第851至900帧,则原始视频帧序列中共有5段视频帧序列,按其出现顺序为:
[0096] 视频帧序列1:第1帧至第200帧,未检测到目标,全都作为背景帧,压缩后得到背景压缩数据1;
[0097] 视频帧序列2:第201帧至第300帧,检测到目标A,压缩后得到目标压缩数据1;
[0098] 视频帧序列3:第301帧至第850帧,未检测到目标,全都作为背景帧,压缩后得到背景压缩数据2;
[0099] 视频帧序列4:第851帧至第900帧,检测到目标B,压缩后得到目标压缩数据2;
[0100] 视频帧序列5:第901帧至第1000帧,未检测到目标,全都作为背景帧,压缩后得到背景压缩数据3。
[0101] 按照上述方式,对这5段视频帧序列压缩后得到的数据按照背景压缩数据1、目标压缩数据1、背景压缩数据2、目标压缩数据2、背景压缩数据3的顺序存储。对视频进行重构时,首先执行步骤S210重构出视频帧序列1、视频帧序列3以及视频帧序列5,然后执行步骤S220得到视频帧序列2中的目标区域内的视频数据以及视频帧序列4中的目标区域内的视频数据。
[0102] 由于目标压缩数据1存储在背景压缩数据1之后,所以重构视频帧序列2中的视频帧时可以选择视频帧序列1中的最后一个视频帧(第200帧),用于与视频帧序列2中的目标区域内的视频数据叠加;类似的,由于目标压缩数据4存储在背景压缩数据3之后,所以重构视频帧序列4中的视频帧时可以选择视频帧序列3中的最后一个视频帧(第850帧),用于与视频帧序列4中的目标区域内的视频数据叠加。
[0103] 在上面的情况中,由于压缩后的视频数据按照其在原始视频帧序列中的顺序存储,所以无需额外的信息也能够完成视频帧重构,但其对数据存储方式限制较多,例如,若背景压缩数据1、背景压缩数据2、背景压缩数据3存储在一起(如视频文件的第三部分),而目标压缩数据1、目标压缩数据2存储在一起(如视频文件的第二部分),则由于并不清楚视频帧序列2与视频帧序列1在原始视频帧序列中的位置关系,所以无法重构视频帧序列2中的视频帧。
[0104] 若在进行视频帧压缩时,保存了检测到目标的视频帧的帧定位信息以及背景帧的帧定位信息,则可以解决上述问题。例如,在视频压缩时,视频帧序列1中的每一帧的帧序号都被保存(因为视频帧序列1中的每一帧都是背景帧),视频帧序列2中的每一帧的帧序号也被保存(因为视频帧序列2中的每一帧都检测到目标A);在视频重构时,对于第201帧,在帧序号小于201的背景帧中查找帧序号与201最接近的背景帧,其结果为第200帧,从而在重构第201帧时可采用第200帧进行重构;类似的,对于第202帧,在帧序号小于202的背景帧中查找帧序号与202最接近的背景帧,其结果为第200帧,从而在重构第202帧时可采用第200帧进行重构;对第203帧至第300帧的重构不再重复阐述。
[0105] 总结来说,在重构视频时,可以首先读取检测到目标的视频帧的帧定位信息以及背景帧的帧定位信息,例如,从视频文件的第四部分读取视频帧序列1对应的序号1至200、视频帧序列2对应的序号201至300。然后,根据检测到目标的视频帧的帧定位信息以及背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧,例如,上面的第201帧至第300帧对应的背景帧均为第200帧。最后通过叠加每个检测到目标的视频帧中目标区域内的视频数据与对应的背景帧,就可以重构出该检测到目标的视频帧,例如,通过叠加第201帧中的目标区域内的视频数据和第200帧就可以重构第201帧。
[0106] 进一步的,前文提到过,在一些实现方式中,对于检测到目标的每段视频帧序列,可以只保存其中的第一个视频帧和/或最后一个视频帧的帧定位信息。这种情况下根据检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息以及背景帧的帧定位信息,也能够确定与该段视频帧序列中的每个视频帧对应的背景帧。
[0107] 例如,在视频压缩时,视频帧序列1中的每一帧的帧序号都被保存,视频帧序列2中只有第201帧和第300帧的帧序号被保存;在视频重构时,根据帧序号201和300,可以确定从第201帧到第300帧均为检测到目标的视频帧,进而可以确定出这100帧对应的背景帧均为第200帧。
[0108] 上面仅讨论了在视频压缩时,将每个未检测到目标的视频帧都作为背景帧的情况,但在很多实现方式中,未检测到目标的视频帧中只有少量的视频帧会被选择为背景帧。对于这些实现方式,在视频重构时,未检测到目标且未作为背景帧的视频帧也需要进行重构,重构的方式是直接复制步骤S210中重构出的背景帧,例如,可以复制该视频帧之前的、与之在原始视频帧中的位置最接近的背景帧用于重构。适当改造上面的例子,为简单起见,只考虑视频帧序列1和视频帧序列2:
[0109] 视频帧序列1:第1帧至第200帧,未检测到目标,其中选择了第1帧、第70帧、第180帧作为背景帧,压缩后得到背景压缩数据1;
[0110] 视频帧序列2:第201帧至第300帧,检测到目标A,压缩后得到目标压缩数据1。
[0111] 其中,第2帧至第69帧、第71帧至第179帧、第181帧至第200帧都是未检测到目标且未作为背景帧的视频帧,重构时可以分别复制第1帧、第70帧以及第180帧。
[0112] 但问题在于,首先需要确定存在多少个未检测到目标且未作为背景帧的视频帧。在一些实现方式中,可以首先读取检测到目标的视频帧的帧定位信息以及背景帧的帧定位信息,例如,从视频文件的第四部分读取视频帧序帧序号1、70、180、201、300,前3个帧序号为背景帧的帧定位信息,后2个帧序号为检测到目标的视频帧的帧定位信息(视频帧序列2中只保存第一帧和最后一帧的帧序号)。然后,根据检测到目标的视频帧的帧定位信息以及背景帧的帧定位信息,确定未检测到目标且未作为背景帧的视频帧及其对应的背景帧。例如,根据两个背景帧的帧序号1和70,可以确定从第2帧至第69帧均为未检测到目标且未作为背景帧的视频帧,并且可以确定这些视频帧对应的背景帧均为第1帧;又例如,根据一个背景帧的帧序号180以及一个检测到目标的视频帧的帧序号201,可以确定从第181帧至第
200帧均为未检测到目标且未作为背景帧的视频帧,并可确定这些视频帧对应的背景帧均为第180帧。最后,通过复制每个未检测到目标且未作为背景帧的视频帧对应的背景帧,就可以重构出该未检测到目标且未作为背景帧的视频帧,例如,通过复制第1帧68次,就可以重构出第2帧至第69帧。
[0113] 上面还没有具体说明步骤S230中叠加的含义,所谓叠加,不仅仅是指目标区域内的视频数据要覆盖背景帧内同等大小的区域内的视频数据,而且要还原目标区域内在检测到目标的视频帧中的位置。例如,视频压缩前,某个目标区域在检测到目标的视频帧中的位置为(20,20,50,50),四个数字分别表示区域左上角的横纵坐标、区域的宽和高,则在重构出的视频帧中,目标区域的位置也应该为(20,20,50,50)。
[0114] 在一些实现方式中,视频压缩时选择的目标区域的位置是固定的(具体见前文走廊的例子),这样在重构时,直接将目标区域内的视频数据叠加到背景帧中该固定的位置处即可重构出检测到目标的视频帧,不需要借助于额外的信息。
[0115] 在另一些实现方式中,视频压缩时选择的目标区域的位置并不是固定的,前文提到此时可以保存目标区域的位置信息。从而,在视频重构时,可以首先读取检测到目标的视频帧中的目标区域的位置信息,然后根据读取出的位置信息,将目标区域内的视频数据叠加至背景帧中与该位置信息对应的位置处,进而重构出检测到目标的视频帧。例如,在视频压缩时保存目标区域的位置(20,20,50,50),在视频重构时首先从视频文件的第四部分读取出该位置信息,然后在背景帧中(20,20,50,50)的位置处叠加目标区域的视频数据即可。
[0116] 本申请实施例提供的视频重构方法操作简单,不需要或者只需要少量的额外信息(帧定位信息、位置信息)即可完成重构,因为并不会导致压缩后的数据显著增加(即除压缩后的视频数据外不会有太多额外的数据),并且该方法重构误差较小。
[0117] 可以理解的,在一些应用场景中,若只关注原始视频帧序列中的目标,也可以只对目标压缩数据进行解压缩,并不重构完整的视频帧;或者,只重构那些检测到目标的视频帧(当然此时背景帧也必须先重构出来)。
[0118] 图3示出了本申请实施例提供的视频压缩装置300的功能模块图。参照图3,视频压缩装置300包括:
[0119] 视频帧获取模块310,用于获取原始视频帧序列,并对所述原始视频帧序列中的视频帧进行目标检测;
[0120] 目标压缩模块320,用于对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;
[0121] 背景压缩模块330,用于对于未检测到目标的视频帧,确定其中的背景帧,并利用第二视频压缩算法对所述背景帧进行压缩,获得背景压缩数据;
[0122] 压缩数据保存模块340,用于保存所述目标压缩数据和所述背景压缩数据。
[0123] 在视频压缩装置300的一种实现方式中,目标压缩模块320对于检测到目标的视频帧,获取视频帧中包含有目标的目标区域内的视频数据,包括:对于检测到目标的视频帧,获取目标检测算法输出的包含有目标的原始区域;将所述原始区域的面积扩展至预设的大小,获得所述目标区域。
[0124] 在视频压缩装置300的一种实现方式中,目标压缩模块320获取视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据,包括:对于检测到目标的每段视频帧序列,获取其中的每个视频帧中包含有目标的目标区域内的视频数据,并利用第一视频压缩算法对所述目标区域内的视频数据进行压缩,获得目标压缩数据;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0125] 在视频压缩装置300的一种实现方式中,背景压缩模块330对于未检测到目标的视频帧,确定其中的背景帧,包括:对于未检测到目标的每个视频帧,判断其是否满足背景提取条件,若满足所述背景提取条件,则将该视频帧确定为一个背景帧;其中,所述背景提取条件包括:该视频帧与上一个背景帧之间的时间间隔已经超过了第一阈值,和/或,该视频帧相对于上一个背景帧在光照强度上的变化量已经超过了第二阈值。
[0126] 在视频压缩装置300的一种实现方式中,压缩数据保存模块340还用于:保存所述检测到目标的视频帧中所述目标区域的位置信息。
[0127] 在视频压缩装置300的一种实现方式中,压缩数据保存模块340还用于:保存所述检测到目标的视频帧的帧定位信息和所述背景帧的帧定位信息,所述帧定位信息表征视频帧在所述原始视频帧序列中的位置。
[0128] 在视频压缩装置300的一种实现方式中,压缩数据保存模块340保存检测到目标的视频帧的帧定位信息,包括:保存检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0129] 本申请实施例提供的视频压缩装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
[0130] 图4示出了本申请实施例提供的视频重构装置400的功能模块图。参照图4,视频重构装置400包括:
[0131] 背景解压缩模块410,用于读取背景压缩数据,并利用第二视频解压缩算法对所述背景压缩数据进行解压缩,重构出作为背景帧的未检测到目标的视频帧;
[0132] 目标解压缩模块420,用于读取目标压缩数据,并利用第一视频解压缩算法对所述目标压缩数据进行解压缩,获得检测到目标的视频帧中包含有目标的目标区域内的视频数据;
[0133] 目标重构模块430,用于通过叠加所述目标区域内的视频数据与所述背景帧,重构出所述检测到目标的视频帧。
[0134] 在视频重构装置400的一种实现方式中,目标重构模块430通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧中的所述目标区域的位置信息;根据检测到目标的视频帧中所述目标区域的位置信息,通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧。
[0135] 在视频重构装置400的一种实现方式中,目标重构模块430通过叠加所述目标区域内的视频数据与所述背景帧,重构出检测到目标的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧;通过叠加每个检测到目标的视频帧中所述目标区域内的视频数据与对应的背景帧,重构出该检测到目标的视频帧。
[0136] 在视频重构装置400的一种实现方式中,目标重构模块430根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定每个检测到目标的视频帧对应的背景帧,包括:根据检测到目标的每段视频帧序列的第一个视频帧和/或最后一个视频帧的帧定位信息以及所述背景帧的帧定位信息,确定与该段视频帧序列中的每个视频帧对应的背景帧;其中,所述检测到目标的每段视频帧序列包括连续检测到目标的至少一个视频帧。
[0137] 在视频重构装置400的一种实现方式中,所述装置还包括:背景重构模块,用于通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧。
[0138] 在视频重构装置400的一种实现方式中,背景重构模块通过复制所述背景帧,重构出未检测到目标且未作为所述背景帧的视频帧,包括:读取检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,所述帧定位信息表征视频帧在原始视频帧序列中的位置;根据所述检测到目标的视频帧的帧定位信息以及所述背景帧的帧定位信息,确定未检测到目标且未作为所述背景帧的视频帧及其对应的背景帧;通过复制每个未检测到目标且未作为所述背景帧的视频帧对应的背景帧,重构出该未检测到目标且未作为所述背景帧的视频帧。
[0139] 本申请实施例提供的视频重构装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
[0140] 图5示出了本申请实施例提供的摄像头500的一种可能的结构。参照图5,摄像头500包括:处理器510、存储器520以及拍摄组件530,这些组件通过通信总线550和/或其他形式的连接机构(未示出)互连并相互通信。
[0141] 其中,存储器520包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。
[0142] 处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器510为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
[0143] 拍摄组件530包括拍摄视频所需的若干元件,包括但不限于光学镜头、图像传感器(如CCD、CMOS、NMOS传感器)等元件,将拍摄组件530采集到的视频数据称为原始视频帧序列。
[0144] 在存储器520中可以存储一个或多个计算机程序指令,处理器510可以读取并运行这些计算机程序指令,以实现本申请实施例提供的视频压缩方法。存储器520还可以存储其他数据,例如视频压缩方法中会用到、由拍摄组件530采集到的原始视频帧序列。
[0145] 继续参照图5,在一些实现方式中,摄像头500中还设置有光敏传感器540,光敏传感器540可通过通信总线550与摄像头500中的其他组件连接。光敏传感器540用于摄像头500的拍摄过程中采集光照数据,光照数据中至少包括光照强度,还可能包括其他光照信息,从而处理器510可以根据光照强度判断未检测到目标视频帧是否应该作为背景帧,具体可参考方法实施例中的相应内容。
[0146] 可以理解,图5所示的结构仅为示意,摄像头500还可以包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。摄像头500往往属于边缘设备,其运算、存储能力可能较弱,但根据前文所述,本申请实施例提供的视频压缩方法具有运算量小、压缩数据占用空间小的特点,因此适于部署在摄像头500上。此外,在一些应用场景中,摄像头500可将压缩后的视频数据通过网络发送给远端设备,由于本申请实施例提供的视频压缩方法对视频数据的压缩率较高,因此在数据传输过程中不会占用过多的网络带宽。
[0147] 图6示出了本申请实施例提供的视频处理设备600的一种可能的结构。参照图6,视频处理设备600包括:处理器610、存储器620以及通信组件630,这些组件通过通信总线640和/或其他形式的连接机构(未示出)互连并相互通信。其中,存储器620和处理器610可能采用的实现方式可参考图5中的存储器520和处理器510,不再详细阐述。
[0148] 通信组件630包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互,通信组件630可以包括具有有线和/或无线通信能力的元件。
[0149] 参照图6,与通信组件630通信的设备至少包括摄像头,该摄像头应理解为普通的摄像头而非类似摄像头500这样部署有本申请实施例提供的视频压缩算法的摄像头。摄像头采集到原始视频帧序列后,可以将其发送给通信组件630,通信组件630可以进一步将原始视频帧序列保存至存储器620,以便执行后续的压缩处理。在一些实现方式中,摄像头也可以先用现有的视频压缩算法(如H.264、H.265)对原始视频帧序列进行压缩,得到压缩视频帧序列,然后再将压缩视频帧序列发送给视频处理设备600,视频处理设备600收到后会对压缩视频帧序列进行解压缩以恢复原始视频帧序列。
[0150] 需注意,摄像头无论是直接向视频处理设备600发送原始视频帧序列还是压缩视频帧序列,其对传输带宽的占用都较大(上文已经说了,图6中的摄像头即使进行压缩,也只会采用现有的视频压缩算法,压缩率并不高),因此在一些实现方式中,视频处理设备600可以设置在摄像头近端,二者之间采用有线连接(例如,通过专用的数据总线、通过局域网的网线连接等)或高速的无线连接,以避免在二者之间形成数据传输的性能瓶颈。
[0151] 在存储器620中可以存储一个或多个计算机程序指令,处理器610可以读取并运行这些计算机程序指令,以实现本申请实施例提供的视频压缩方法。存储器620还可以存储其他数据,例如视频压缩方法中会用到、由摄像头采集的原始视频帧序列(包括从压缩视频帧序列恢复出的原始视频帧序列)。
[0152] 可以理解,图6所示的结构仅为示意,视频处理设备600还可以包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。视频处理设备600可能是一个边缘设备,其运算、存储能力可能较弱,但根据前文所述,本申请实施例提供的视频压缩方法具有运算量小、压缩数据占用空间小的特点,因此适于部署在视频处理设备600上。此外,在一些应用场景中,视频处理设备600可将压缩后的视频数据通过网络发送给远端设备,由于本申请实施例提供的视频压缩方法对视频数据的压缩率较高,因此在数据传输过程中不会占用过多的网络带宽。
[0153] 图7示出了本申请实施例提供的视频处理设备700的一种可能的结构。参照图7,视频处理设备700包括:处理器710以及存储器720,这些组件通过通信总线740和/或其他形式的连接机构(未示出)互连并相互通信。存储器720和处理器710可能采用的实现方式可参考图5中的存储器520和处理器510,不再详细阐述。
[0154] 在存储器720中可以存储一个或多个计算机程序指令,处理器710可以读取并运行这些计算机程序指令,以实现本申请实施例提供的视频重构方法。存储器720还可以存储其他数据,例如视频重构方法中会用到的目标压缩数据、背景压缩数据等。
[0155] 可以理解,图7所示的结构仅为示意,视频处理设备700还可以包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。视频处理设备700可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,视频处理设备700也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
[0156] 本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的视频压缩方法和/或视频重构方法。例如,计算机可读存储介质可以实现为上述存储器520、存储器620或存储器720。
[0157] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。