视频码流压缩方法、系统及装置 【技术领域】
本发明涉及图像技术领域,特别涉及一种视频码流压缩方法、系统及装置。
背景技术
视频压缩得到的码流一般需要通过网络等传输介质进行发送和接收,包括专网、互联网、ADSL、无线移动通信网络等各种不同的情形。根据网络带宽的不同,有可能需要对码流进行调整,以便于在较低的带宽下进行发送。现有的技术有多种调整码流的方式,包括降低空间分辨率、降低帧率(时间分辨率)、降低图象质量等,以实现对码流尺寸的缩减。
例如在较常见的视频监控领域中,监控摄像机以每秒25帧的速率输出720x576像素的画面,经过视频压缩模块后,将码流保存在本地存储介质(例如磁盘阵列)中。当某个远地的工作人员想要通过ADSL网络访问该监控摄像机所录下的码流时,由于720x576像素,25帧/秒压缩后码率超过ADSL的带宽,因此在使当前ADSL网络的情况下无法传输完整的码流。在这种情况下,现有技术中比较简单的方法是丢帧,例如丢掉B帧的数据,或者将不可参考P帧丢弃等,这样丢掉的不可参考P帧不是其他帧的参考帧,因此不会影响其他帧的解码。采用丢帧的方式来降低码率的好处是不需要重新对码流进行压缩。P帧又可称为前向预测帧,其特点是解码时只参考之前已经解码的图像帧。一般而言,P帧解码后的数据是可以被其他帧(例如B帧,或之后的某个P帧)作为参考帧使用的。通过对P帧增加是否为参考图像的标志,可以进一步将P帧分为两类:可被其他帧做参考帧的可参考P帧、以及不可被其他帧做参考帧的不可参考P帧。如果当前P帧是不可参考P帧,则后续帧就不能以该P帧作为参考帧;如果当前帧是可参考P帧,后续帧可以用该P帧作为参考帧。如图1所示,为现有技术中P帧的示意图,从图中可以看出可将不可参考P帧丢弃以降低帧率,以实现缩减视频码率的目的。
现有技术存在的缺点是因为丢帧而损失被监控对象的一些重要的动作细节,将会使监控对象的动作不连贯。
【发明内容】
本发明的目的旨在至少解决上述技术缺陷之一,特别是解决由于丢帧而损失被监控对象的一些重要的动作细节,从而使监控对象的动作不连贯的技术缺陷。
为达到上述目的,本发明一方面提出一种视频码流压缩方法,包括以下步骤:前端设备采集原始图像;所述前端设备从所述原始图像中截取感兴趣区域ROI区域图像和背景区域图像;所述前端设备对所述ROI区域图像和所述背景区域图像进行编码后向视频服务器发送,同时将不可参考的背景区域标注为可丢弃,所述视频服务器在需要缩减视频码流时将所述标注为可丢弃的背景区域的内容丢弃。
作为本发明的一个实施例,所述前端设备对所述ROI区域图像和所述背景区域图像进行编码后向视频服务器发送,同时将不可参考的背景区域标注为可丢弃具体为:所述前端设备对所述ROI区域图像和所述背景区域图像进行编码后向视频服务器发送,同时在不可参考帧的帧头内添加可丢弃标识。
作为本发明的一个实施例,还包括:在所述前端设备对当前帧图象进行帧间运动预测和补偿时,不参考之前重构出的图象中的标记为可丢弃的背景区域数据。
作为本发明的一个实施例,还包括:所述前端设备对当前帧图象进行帧内预测时,不得参考本帧图象中的标记为可丢弃的背景区域数据。
作为本发明的一个实施例,所述视频服务器在需要缩减码流时将所述标注为可丢弃的背景区域的内容丢弃具体包括:所述视频服务器判断是否需要缩减视频码流;如果判断需要缩减视频码流,则所述视频服务器将所述标注为可丢弃的背景区域的内容丢弃后发送给视频客户端;如果判断不需要缩减视频码流,则所述视频服务器将接收到的所述前端设备发送的背景区域和ROI区域图像数据均发送给所述视频客户端。
作为本发明的一个实施例,在所述视频服务器将所述标注为可丢弃的背景区域丢弃之后,还包括,所述视频服务器在所述可丢弃帧的帧头内添加已丢弃标识。
作为本发明的一个实施例,在所述视频服务器将所述标注为可丢弃的背景区域地内容丢弃并发送给视频客户端之后,还包括:所述视频客户端将标注为已丢弃的背景区域的内容补全。
作为本发明的一个实施例,还包括:在所述帧的帧头内增加两个参数,分别表示所述背景区域的内容是否可丢弃,及所述背景区域的内容是否已被丢弃。
作为本发明的一个实施例,所述在不可参考帧的帧头内增加两个参数,分别表示背景区域的内容是否可丢弃,及背景区域的内容是否已被丢弃具体包括:在图象参数集的语法定义中新增如下定义:
pic_parameter_set_rbsp(){ 描述符 pic_parameter_set_id ue(v) seq_parameter_set_id ue(v) entropy_coding_mode_flag u(1) pic_init_qp u(6) if(roi_flag){ num_roi ue(v) if(num_roi>0){ background_discardable u(1) if(background_discardable){
pic_parameter_set_rbsp(){ 描述符 non_roi_skip_flag u(1) } pic_init_qp_forroi u(6) for(iGroup=0;iGroup<num_roi;iGroup++){ top_left[iGroup] ue(v) bottom_right[iGroup] ue(v) } } } Else fixed_pic_qp loop_filter_disable_flag u(1) rbsp_trailing_bits() }
其中,background_discardable表示当前帧背景区域的内容是否可以丢弃,non_roi_skip_flag表示当前帧背景区域的内容是否已被丢弃。
作为本发明的一个实施例,所述不可参考帧由所述前端设备的编码方式决定,或者,根据视频服务器是否实际成功接收该背景区域数据决定,所述是否成功接收由所述视频服务器反馈给所述前端设备。
本发明另一方面还提出一种视频码流压缩系统,包括视频服务器和为所述视频服务器提供视频图像的至少一个前端设备,以及视频客户端,所述前端设备,用于采集原始图像,并从所述原始图像中截取感兴趣区域ROI区域图像和背景区域图像,以及对所述ROI区域图像和所述背景区域图像进行编码后向所述视频服务器发送,同时将不可参考的背景区域标注为可丢弃;所述视频服务器,用于在需要缩减视频码流时,将所述标注为可丢弃的背景区域的内容丢弃后向所述视频客户端发送,并将所述可丢弃的背景区域标注为已丢弃;所述视频客户端,用于接收所述视频服务器发送的背景区域和ROI区域图像数据,并在背景区域标注为已丢弃时将所述背景区域的内容补全。
作为本发明的一个实施例,在不可参考帧中的帧头内增加两个参数,分别表示所述背景区域的内容是否可丢弃,及所述背景区域的内容是否已被丢弃。
作为本发明的一个实施例,所述在不可参考帧中的帧头内增加两个参数通过下述图象参数集中的语法定义实现:
pic_parameter_set_rbsp(){ 描述符 pic_parameter_set_id ue(v) seq_parameter_set_id ue(v) entropy_coding_mode_flag u(1) pic_init_qp u(6) if(roi_flag){ num_roi ue(v) if(num_roi>0){ background_discardable u(1) if(background_discardable){ non_roi_skip_flag u(1) } pic_init_qp_for_roi u(6) for(iGroup=0;iGroup<num_roi;iGroup++){ top_left[iGroup] ue(v) bottom_right[iGroup] ue(v) }
pic_parameter_set_rbsp(){ 描述符 } } else fixed_pic_qp loop_filter_disable_flag u(1) rbsp_trailing_bits() }
其中,background_discardable表示当前帧背景区域的内容是否可以丢弃,non_roi_skip_flag表示当前帧背景区域的内容是否已被丢弃。
本发明还提出一种前端设备,包括图像采集模块、截取模块和编码模块,所述图像采集模块,用于采集原始图像;所述截取模块,用于从所述图像采集模块采集的所述原始图像中截取ROI区域图像和背景区域图像;所述编码模块,用于对所述ROI区域图像和所述背景区域图像进行编码,同时将不可参考的背景区域标注为可丢弃,之后向视频服务器发送,所述视频服务器在需要缩减视频码流时将所述标注为可丢弃的背景区域的内容丢弃。
作为本发明的一个实施例,所述编码模块包括标记添加子模块,用于在不可参考帧的帧头内添加可丢弃标识。
作为本发明的一个实施例,所述不可参考帧由所述前端设备的编码方式决定,或者,根据视频服务器是否实际成功接收该背景区域数据决定,所述是否成功接收由所述视频服务器反馈给所述前端设备。
本发明还提出一种视频服务器,包括接收模块,判断模块和发送模块,所述接收模块,用于接收前端设备发送的背景区域和ROI区域图像数据;所述判断模块,用于判断是否需要缩减视频码流;所述发送模块,用于在所述判断模块判断需要缩减视频码流时,将所述标注为可丢弃的背景区域的内容丢弃后发送给视频客户端;在所述判断模块判断不需要缩减视频码流时,将接收到的所述前端设备发送的背景区域和ROI区域图像数据均发送给所述视频客户端。
作为本发明的一个实施例,还包括标识添加模块,用于在所述可丢弃帧的帧头内添加已丢弃标识。
本发明还提出一种视频码流压缩方法,包括以下步骤:编码器采集原始图像;所述编码器从所述原始图像中截取ROI区域图像和背景区域图像;所述编码器对所述ROI区域图像和所述背景区域图像进行编码,同时将不可参考的背景区域的内容丢弃,并将编码后的背景区域和ROI区域图像数据向解码器发送。
作为本发明的一个实施例,在所述编码器对所述ROI区域图像和所述背景区域图像进行编码,同时将不可参考的背景区域的内容丢弃之后,还包括:所述编码器在不可参考帧的帧头内添加已丢弃标识。
作为本发明的一个实施例,在所述编码器将编码后的背景区域和ROI区域图像数据向解码器发送之后,还包括:所述解码器将标注为已丢弃的背景区域的内容补全。
本发明还提出一种编码器,包括图像采集模块、截取模块、编码模块和发送模块,所述图像采集模块,用于采集原始图像;所述截取模块,用于从所述图像采集模块采集的所述原始图像中截取ROI区域图像和背景区域图像;所述编码模块,用于对所述ROI区域图像和所述背景区域图像进行编码,同时将不可参考的背景区域的内容丢弃;所述发送模块,用于将编码后的背景区域和ROI区域图像数据向解码器发送。
作为本发明的一个实施例,所述编码模块包括标识添加子模块,用于在不可参考帧的帧头内添加已丢弃标识。
本发明在保证缩减视频码率的同时,还能够使接收端在解码时不损失ROI区域内的动作细节。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【附图说明】
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为现有技术中P帧的示意图;
图2为本发明实施例一的示意图;
图3为本发明实施例一的视频码流压缩方法流程图;
图4为本发明实施例一的视频码流压缩系统结构图;
图5为本发明实施例二的视频码流压缩方法;
图6为本发明实施例二的编码器结构图。
【具体实施方式】
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本发明主要在于将背景区域图像的不可参考背景区域标识为可丢弃,在需要缩减视频码率时将具有可丢弃标识的不可参考背景区域的内容丢弃,从而在保证缩减视频码率的同时,还能够使接收端在解码时不损失ROI区域内的动作细节。
实施例一,
在该实施例中描述了一种应用场景,包括视频服务器和为视频服务器提供视频图像的至少一个前端设备,以及视频客户端。各个前端设备采集图像后发送给视频服务器,由视频服务器汇总后再提供给视频客户端。在该实施例中前端设备在对背景区域图像编码时,将不可参考背景区域标识为可丢弃,表示如果丢弃该背景区域的内容不会影响其他帧的解码。从而在视频服务器为视频客户端提供图像时,可以根据可丢弃标识将相应的背景区域丢弃,并指示视频客户端该背景区域的内容已被删除。需要说明的是,在本发明中上述采用视频服务器接收前端设备数据仅为本发明的一种实现方式,在不脱离本发明思想的范围内,达到相同技术效果,起到相同作用的其他任何类似于视频服务器的接收端均应为本发明保护范围所涵盖。
如图2所示,为本发明实施例一的示意图,将整帧图象分为ROI区域(实线框所示)和背景区域(虚线框所示),对感兴趣区域正常编码,即当前P帧ROI区域可以参考前一帧的ROI区域。在前端设备进行编码时,第k,k+2,k+4帧背景区域被标识为不可丢弃;第k+1,k+3帧背景区域被标识为可丢弃。而在视频服务器为视频客户端提供图像时,视频服务器将第k+1,k+3帧背景区域的内容丢弃,并将这些背景区域标识为已被丢弃。
作为本发明的一个实施例,本发明在不可参考帧的帧头内增加两个参数,分别表示背景区域的内容是否可丢弃,及背景区域的内容是否已被丢弃,例如这两个参数为“可丢弃”和“已丢弃”,如果“可丢弃”标记为1,则表示该背景区域的内容在需要时可以丢弃,不影响后续帧解码。如果“可丢弃”标记为0,则表示该背景区域的内容不可以丢弃,否则后续帧解码会出错。如果“已丢弃”标记为1,表示该帧背景区域内容已被丢弃,解码时不需要解背景区域内容。如果“已丢弃”标记为0,表示该帧背景区域内容还在码流中,解码时需要解码得到背景区域图象。这样如上图2所述的示意图,第k,k+2,k+4帧背景区域第k,k+2,k+4帧中的背景区域的“可丢弃”标记被设为0,“已丢弃”标记也被设为0;第k+1,k+3帧中的背景区域的“可丢弃”标记被设为1,“已丢弃”标记被设为0。
更为具体地,本发明提出了一个设置上述参数的具体实施例,如在图像参数集的语法定义中,新增如下定义:
pic_parameter_set_rbsp(){ 描述 符 说明 pic_parameter_set_id ue(v) seq_parameter_set_id ue(v) entropy_coding_mode_flag u(1) pic_init_qp u(6) if(roi_flag){ num_roi ue(v) if(num_roi>0){
pic_parameter_set_rbsp(){ 描述 符 说明 background_discardable u(1) 背景“可丢弃” if(background_discardable){ non_roi_skip_flag u(1) 背景“已丢弃” } pic_init_qp_for_roi u(6) for(iGroup=0;iGroup<num_roi;iGroup++){ top_left[iGroup] ue(v) bottom_right[iGroup] ue(v) } } } else fixed_pic_qp loop_filter_disable_flag u(1) rbsp_trailing_bits() }
其中,background_discardable和non_roi_skip_flag语法元素的语义描述如下:background_discardable:表示当前帧的背景区域是否可以丢弃,如果该值为1,则后续帧编码时不应参考当前帧中的背景区域。non_roi_skip_flag:表示当前帧中的背景区域是否已经被丢弃,如果该值为1,表示码流中不包含当前帧中的背景区域部分。
如图3所示,为本发明实施例一的视频码流压缩方法流程图,包括以下步骤:
步骤S301,前端设备采集原始图像。
步骤S302,前端设备从原始图像中截取ROI区域图像和背景区域图像。
步骤S303,前端设备分别对ROI区域图像和背景区域图像进行编码,得到ROI区域和背景区域图像数据,并将不可参考的背景区域标注为可丢弃,之后将编码后的数据发送至视频服务器。具体地,前端设备在不可参考帧的帧头内添加可丢弃标识。其中,不可参考的背景区域由所述前端设备的编码方式决定,或者根据视频服务器是否实际成功接收该背景区域数据决定,其中是否成功接收由视频服务器反馈给前端设备。作为本发明的一个实施例,在实际操作时还可以将连续多个帧中背景区域的“可丢弃”标记都设为1,这样可以在将来必要时把视频码流缩减到更小。作为本发明的一个实施例,在前端设备对当前帧图象进行帧间运动预测和补偿时,不参考之前重构出的图象中的标记为可丢弃的背景区域数据。或者在前端设备对当前帧图象进行帧内预测时,不得参考本帧图象中的标记为可丢弃的背景区域数据。
步骤S304,视频服务器判断是否需要缩减视频码流。
步骤S305,如果视频服务器判断需要缩减视频码流,则视频服务器将标注为可丢弃的背景区域的内容丢弃后发送给视频客户端。同时,视频服务器在所述可丢弃的背景区域的帧头内添加已丢弃标识。
步骤S306,如果视频服务器判断不需要缩减视频码流,则视频服务器将接收到的前端设备发送的背景区域和ROI区域图像数据均发送给视频客户端。
步骤S307,视频客户端解析接收到数据,如果在帧头中有已被丢弃的指示,则说明该背景区域的内容已被丢弃,则视频客户端将标注为已丢弃的背景区域的内容补全。其中,本发明中可以用不同的方法来补全背景区域的数据,例如,可以从上一次成功解码得到的背景区域复制一份到当前帧的背景区域。
如图4所示,为本发明实施例一的视频码流压缩系统结构图,该系统包括视频服务器100和为视频服务器100提供视频图像的至少一个前端设备200,以及视频客户端300。前端设备200用于采集原始图像,并从采集的原始图像中截取ROI区域图像和背景区域图像,以及对ROI区域图像和背景区域图像进行编码后向视频服务器100发送,同时将不可参考的背景区域标注为可丢弃。视频服务器100用于在需要缩减视频码流时,将标注为可丢弃的背景区域的内容丢弃后向视频客户端300发送,并将可丢弃的背景区域标注为已丢弃。视频客户端300用于接收视频服务器100发送的背景区域和ROI区域图像数据,并在背景区域标注为已丢弃时将背景区域的内容补全。
其中,上述前端设备200包括图像采集模块210、截取模块220和编码模块230。图像采集模块210用于采集原始图像。截取模块220用于从图像采集模块210采集的原始图像中截取ROI区域图像和背景区域图像。编码模块230用于对ROI区域图像和背景区域图像进行编码,同时将不可参考的背景区域标注为可丢弃,之后向视频服务器100发送视频服务器100在需要缩减视频码流时将标注为可丢弃的背景区域的内容丢弃。
作为本发明的一个实施例,编码模块230包括标记添加子模块231,用于在不可参考帧的帧头内添加可丢弃标识。
其中,视频服务器100包括接收模块110,判断模块120和发送模块130。接收模块110用于接收前端设备200发送的背景区域和ROI区域图像数据。判断模块120用于判断是否需要缩减视频码流。发送模块130用于在判断模块120判断需要缩减视频码流时,将标注为可丢弃的背景区域的内容丢弃后发送给视频客户端300;在判断模块120判断不需要缩减视频码流时,将接收到的前端设备200发送的背景区域和ROI区域图像数据均发送给视频客户端300。
作为本发明的一个实施例,视频服务器100还包括标识添加模块140,用于在可丢弃的背景区域的帧头内添加已丢弃标识。
实施例二,
在该实施例中,编码器将不可参考的背景区域的内容直接丢弃之后再发送给解码器。
如图5所示,为本发明实施例二的视频码流压缩方法,包括以下步骤:
步骤S501,编码器采集原始图像。
步骤S502,编码器从原始图像中截取ROI区域图像和背景区域图像。
步骤S503,编码器对所述ROI区域图像和所述背景区域图像进行编码,同时将不可参考的背景区域的内容丢弃,并将编码后的背景区域和ROI区域图像数据向解码器发送。同时,编码器在不可参考帧的帧头内添加已丢弃标识。
步骤S504,解码器解析接收到图像数据,如果在帧头中有已被丢弃的指示,则说明背景区域的内容已被丢弃,则解码器将标注为已丢弃的背景区域的内容补全。
如图6所示,为本发明实施例二的编码器结构图,该编码器包括图像采集模块610、截取模块620、编码模块630和发送模块640。图像采集模块610用于采集原始图像。截取模块620用于从图像采集模块610采集的原始图像中截取ROI区域图像和背景区域图像。编码模块630用于对ROI区域图像和背景区域图像进行编码,同时将不可参考的背景区域的内容直接丢弃。发送模块640用于将编码后的背景区域和ROI区域图像数据向解码器发送。
作为本发明的一个实施例,编码模块630包括标识添加子模块631,用于在不可参考的背景区域帧头内添加已丢弃标识。
本发明在保证缩减视频码率的同时,还能够使接收端在解码时不损失ROI区域内的动作细节。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。