发明内容
本发明要解决的技术问题是在保证对有场景变化图像利用目前先进的图像压缩技术的同时,提供一种视频图像压缩方法和相应视频解码方法,在摄像的场景不变或变化非常缓慢时,进一步压缩视频数据并可提高视频质量。
本发明新的压缩方法的构思是在当前先进的压缩方法如MPEG2,MPEG4,H.264,AVS等的基础上,只改变那些满足图像中场景没有变化或者变化很缓慢(文中也称为静态场景)的条件的GOP包的压缩方式。对满足条件的大部分包,以第二个包中的第一帧为参考,采用帧间预测压缩方式(即帧间压缩方式)。为了克服由于的第一帧I2压缩数据出现误码造成误码扩散,只对余下的少部分包采用帧内压缩方式,在帧内压缩时使用与第二个GOP的第一帧I2相同的压缩数据。如果上述条件不能满足,则仍采用当前先进的压缩方法来压缩。
为了解决上述问题,本发明提供了一种视频图像压缩方法,在采用图像组即GOP结构对视频进行压缩的过程中,检测每一个GOP内的帧的运动信息,并比较当前GOP的第一帧与之前的一GOP第一帧的恢复帧的差别,判断出视频中存在的一个或多个静态场景GOP序列,该静态场景GOP序列中的第二个及后续GOP的图像具有静态场景,其中,对所述第二个GOP的第一帧采用帧内压缩方式,对所述后续GOP中至少部分GOP的第一帧,采用以所述第二个GOP的第一帧的恢复帧为参考帧的帧间压缩方式。
进一步地,上述视频图像压缩方法还可具有以下特点:
除所述静态场景GOP序列中第二个GOP及后续GOP的第一帧外,对于其它帧采用具有GOP结构的先进的压缩方法进行压缩,其中对静态场景GOP序列中第一个GOP的第一帧和不属于静态场景GOP序列的GOP的第一帧采用帧内压缩方式,对所有GOP中除第一帧外的其他帧采用帧间或帧内压缩方式。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述具有GOP结构的先进的压缩方法为MPEG1,MPEG2,MPEG4,、H.261,H.263,H.264或AVS。
进一步地,上述视频图像压缩方法还可具有以下特点,判断视频中是否存在静态场景GOP序列的条件包括:
条件一,检测的该GOP各个帧的运动信息显示帧图像无运动;
条件二,该GOP的第一帧与其前一个GOP的第一帧的恢复帧的差别小于或小于等于设定阈值;
条件三,该GOP的第一帧与静态场景GOP序列第二个GOP的第一帧的恢复帧的差别小于或小于等于设定阈值;
相应地,在视频图像压缩过程中对静态场景GOP序列的判定步骤如下:
步骤一,将依次处理的GOP中第一个满足条件一的GOP作为静态场景GOP序列的第一个GOP;
步骤二,对与静态场景GOP序列中第一个GOP相邻的后一个GOP:
如果该GOP满足条件二,则将该当前GOP作为该静态场景GOP序列的第二个GOP,执行步骤三;
如果该GOP不满足条件二但满足条件一,将该GOP作为另一静态场景GOP序列的第一个GOP,返回步骤二继续处理;
如果该GOP对条件一和条件二均不满足,则该GOP不属于任一静态场景GOP序列,返回步骤一继续处理;
步骤三,对与静态场景GOP序列中第n个GOP相邻的后一个GOP,n=2,3,4......:
如果该GOP满足条件三,将该GOP作为静态场景GOP序列的又一个GOP,返回步骤三继续处理;
如果该GOP不满足条件三但满足条件一,将该GOP作为另一静态场景GOP序列的第一个GOP,返回步骤二继续处理;
如果该GOP对条件一和条件三均不满足,则该GOP不属于任一静态场景GOP序列,返回步骤一继续处理。
进一步地,上述视频图像压缩方法还可具有以下特点:
对所述静态场景GOP序列中第二个GOP的第一帧采用帧内压缩方式压缩时,采用的压缩比小于其它帧进行帧内压缩时采用的压缩比。
进一步地,上述视频图像压缩方法还可具有以下特点:
对所述静态场景GOP序列的第三个及后续GOP的第一帧压缩时,采用以下两种处理方式中的一种:
第一种,对所述静态场景GOP序列的第三个及后续GOP中的全部GOP的第一帧,采用以该静态场景GOP序列第二个GOP的第一帧的恢复帧为参考帧的帧间压缩方式;
第二种,只对所述静态场景GOP序列的第三个及后续GOP中的部分GOP的第一帧,采用以该静态场景GOP序列第二个GOP的第一帧的恢复帧为参考帧的帧间压缩方式,对其余的部分GOP,直接采用该静态场景GOP序列第二个GOP的第一帧的压缩数据作为本GOP第一帧的压缩数据。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述第二种处理方式中,是对所述静态场景GOP序列中的第4m个或第2m+1个GOP,直接采用该静态场景GOP序列第二个GOP的第一帧的压缩数据作为本GOP第一帧的压缩数据,m=1,2,3,4,..。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述条件一中,将检测的GOP内各个帧的运动矢量和一个预设的阈值比较,在均小于或小于等于该阈值时认为该GOP的帧图像无运动;
所述条件二和条件三中,比较两个帧的差别时,是用两帧中对应位置上像素点的差的绝对值之和或绝对值的平均值来表示。
进一步地,上述视频图像压缩方法还可具有以下特点:
对GOP进行运动检测时,是对该GOP内除第一帧外其余的每一个帧进行运动检测获取运动信息,或者是对该GOP内的每一个帧进行运动检测获取运动信息。
进一步地,上述视频图像压缩方法还可具有以下特点:
在对视频进行压缩的过程中,在每个GOP包头中增加一个静态场景标志,对静态场景GOP序列的第二个及之后的GOP,该标志指示为静态场景,对静态场景GOP序列的第一个GOP及静态场景GOP序列的GOP,该指志指示为非静态场景;或者
在对视频进行压缩的过程中,在每个GOP包头中增加一个静态场景标志,对静态场景GOP序列的第二个及之后的GOP,该标志指示为静态场景,对静态场景GOP序列的第一个GOP及静态场景GOP序列的GOP,该指志指示为非静态场景,在指示为静态场景的GOP包头中还包括一个帧间/帧内指示标志,用于指示该GOP的第一帧采用帧间还是帧内压缩方式。
进一步地,上述视频图像压缩方法还可具有以下特点,该方法应用于固定摄像得到的视频图像压缩。
本发明还提供了一种与上述视频图像压缩方法对应的视频解码方法,在解码时检测GOP包头中的静态场景标志,对于指示为非静态场景的GOP包的帧,其压缩时采用的是同一种方法,解码时采用相应的解压缩方法;对于指示为静态场景的GOP包的第一帧,先根据该帧压缩数据的长度或者GOP包头中的帧间/帧内标志,判断出该帧采用的是帧内压缩还是帧间压缩,然后采用相应的解压缩方法。
为了解决上述技术问题,本发明还提供了一种视频图像压缩方法,在采用图像组即GOP结构对视频进行压缩的过程中,对帧图像中的至少部分标号宏块中的一标号宏块,采用以下方式进行处理:
检测每一个GOP的帧图像中的该标号宏块的运动信息,并比较当前GOP第一帧中该标号宏块与之前的一GOP第一帧的恢复帧图像中该标号宏块的差别,结合预设条件判断出视频中存在的与GOP序列对应的一个或多个该标号静止宏块序列,该标号静止宏块序列对应GOP序列的第二个及后续GOP的第一帧中的该标号宏块图像具有静态场景,对所述第二个GOP中第一帧的该标号宏块采用帧内压缩方式,对所述后续GOP中至少部分GOP的第一帧的该标号宏块,采用帧间压缩方式且以所述第二个GOP第一帧的恢复帧图像中的该标号宏块为参考宏块。
进一步地,上述视频图像压缩方法还可具有以下特点:
对于视频中待压缩的所述标号宏块,除图像具有静态场景的部分该标号宏块外,对于其他图像具有非静态场景的该标号宏块采用具有GOP结构的先进的压缩方法进行压缩,其中对该标号静止宏块序列对应GOP序列的第一个GOP第一帧的该标号宏块和不属于静态场景GOP序列的GOP第一帧的该标号宏块,采用帧内压缩方式,对所有GOP中除第一帧外的其他帧中的该标号宏块,采用帧间或帧内压缩方式。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述具有GOP结构的先进的压缩方法为MPEG1,MPEG2,MPEG4,、H.261,H.263,H.264或AVS。
进一步地,上述视频图像压缩方法还可具有以下特点,所述预设条件包括:
条件一,对GOP帧图像中的该标号宏块的检测均显示该GOP内该标号宏块的图像无运动;
条件二,GOP第一帧图像中的该标号宏块与前一个GOP第一帧的恢复帧图像中该标号宏块的差别小于或小于等于设定阈值;
条件三:GOP第一帧图像中的该标号宏块与第二个GOP第一帧的恢复帧图像中该标号宏块的差别小于或小于等于设定阈值,且所述第二个GOP为该标号宏块所属静止宏块序列对应的GOP序列中的第二个GOP;
相应地,对静止宏块序列及对应GOP序列的判定方法如下:
步骤一,对GOP依次处理,将其帧图像中所述标号宏块满足条件一的第一个GOP作为该标号静止宏块序列对应的GOP序列的第一个GOP;
步骤二,对该标号静止宏块序列对应的GOP序列中第一个GOP相邻的后一个GOP处理时:
如果该GOP第一帧图像中的该标号宏块满足条件二,则将该GOP作为该标号静止宏块序列对应GOP序列的第二个GOP,执行步骤三;
如果该GOP第一帧图像中的该标号宏块不满足条件二但满足条件一,将该GOP作为该标号的另一静止宏块序列对应的GOP序列的第一个GOP,返回步骤二;
如果该GOP第一帧图像中的该标号宏块对条件一和条件二均不满足,则该GOP不属于任一静止宏块序列对应的GOP序列,返回步骤一;
步骤三,对该标号静止宏块序列的第n个GOP相邻的后一个GOP处理时,n=2,3,4......:
如果该GOP第一帧图像中的该标号宏块满足条件三,则将该GOP作为该标号静止宏块序列对应GOP序列的又一个GOP,返回步骤三;
如果该GOP第一帧图像中的该标号宏块不满足条件三但满足条件一,则将该GOP作为该标号的另一静止宏块序列对应GOP序列的第一个GOP,返回步骤二;
如果该GOP第一帧图像中的该标号宏块对条件一和条件三均不满足,则该GOP不属于任一静止宏块序列对应的GOP序列,返回步骤一。
进一步地,上述视频图像压缩方法还可具有以下特点:
对所述静止宏块序列对应GOP序列的第二个GOP中第一帧的所述标号宏块采用帧内压缩方式压缩时,采用的压缩比小于其他宏块进行帧内压缩时采用的压缩比。
进一步地,上述视频图像压缩方法还可具有以下特点:
对所述静止宏块序列对应GOP序列的第三个及后续GOP中第一帧的所述标号宏块压缩时,采用以下两种处理方式中的一种:
第一种,对所述静止宏块序列对应GOP序列的第三个及后续GOP中的全部GOP,对其中第一帧的所述标号宏块采用帧间压缩方式,且压缩时以所述对应GOP序列中第二个GOP第一帧的恢复帧图像中的该标号宏块为参考宏块;
第二种,对所述静止宏块序列对应GOP序列的第三个及后续GOP,只对其中部分GOP的第一帧的所述标号宏块采用所述第一种处理方式中的帧间压缩方式,对其余的部分GOP的第一帧的所述标号宏块,直接采用所述对应GOP序列中第二个GOP第一帧的所述标号宏块的压缩数据作为本标号宏块的压缩数据。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述第二种处理方式中,所述其余的部分GOP是指所述静止宏块序列对应GOP序列中的第4m个或第2m+1个GOP,m=1,2,3,4,..。
进一步地,上述视频图像压缩方法还可具有以下特点:
所述条件一中,是将检测得到的GOP内各个帧的所述标号宏块的运动矢量和一个预设的阈值比较,如均小于或小于等于该阈值时认为该标号宏块的图像无运动;
所述条件二和条件三中,比较两个帧的所述标号宏块的差别时,是用两个帧中所述标号宏块在对应位置上的像素点的差的绝对值之和或绝对值的平均值来表示。
进一步地,上述视频图像压缩方法还可具有以下特点:
对GOP的帧图像中的该标号宏块进行运动检测时,是对该GOP内除第一帧外的其余每一个帧的所述标号宏块进行运动检测,或者是对该GOP内每一个帧的所述标号宏块进行运动检测。
进一步地,上述视频图像压缩方法还可具有以下特点:
在对视频进行压缩的过程中,在GOP包第一帧的每一个标号宏块的压缩数据中增加一宏块静止标志,用于指示该标号宏块的图像是否具有静态场景;或者
在对视频进行压缩的过程中,在GOP包第一帧的每一个标号宏块的压缩数据中增加一宏块静止标志和一帧内/帧间标志,所述宏块静止标志用于指示该标号宏块的图像是否具有静态场景,所述帧内/帧间标志用于指示该标号宏块采用帧内压缩还是帧间压缩。
进一步地,上述视频图像压缩方法还可具有以下特点,该方法应用于固定摄像得到的视频图像压缩。
本发明还提供了一种与上述视频图像压缩方法对应的视频解码方法,在对GOP第一帧中的标号宏块解码时,检测该标号宏块压缩数据中的宏块静止标志,对于指示为非静态场景的标号宏块,其压缩时采用的是同一种方法,解码时采用相应的解压缩方法;对于指示为静态场景的标号宏块,先根据该标号宏块压缩数据的长度或者压缩数据中的帧间/帧内标志,判断出该帧采用的是帧内压缩还是帧间压缩,然后采用相应的解压缩方法。
本发明在满足一定条件时改变原有GOP的第一帧图像的压缩方法,进一步压缩了静态场景下的图像数据,并没有提高其它移动场景下的比特率。当然,考虑到场景中也会有运动物体以及长时间内背景也会有变化,本发明新的压缩方法和装置尽可能地与当前先进的压缩方法兼容。本发明尤其适合于固定摄像的视频监视系统。
具体实施方式
现在讨论本发明新的压缩方法。在当前先进的压缩方法的基础上,本发明保留了GOP结构。但GOP结构的第一帧的定义与当前先进的压缩方法有时是不同的。本发明特别适用于固定摄像方式得到的视频图像压缩,如视频监视系统。
文中也将不变或变化非常缓慢的场景称为静态场景,将其它场景包括具有运动物体或者背景有变化等的场景称为非静态场景。
下面结合附图对本发明的具体实施方式进行详细说明。
第一实施例
本实施例的视频图像压缩方法在满足一定条件时,改变了原有GOP的第一帧图像的压缩方法。假定一个GOP包含15帧视频数据,则2分钟的NTSC视频数据有240个GOP包。如图4所示,该压缩方法包括以下步骤:
S110,对第一个GOP,采用与当前先进的压缩方法相同的方法进行压缩。即对第一帧使用帧内压缩方式,余下的帧采用帧内压缩或帧间预测压缩。压缩时可以进行运动检测获得第一个GOP内的帧的运动信息;
本实施例中,对GOP进行运动检测时,均是对该GOP内除第一帧外其余每帧进行运动检测获取运动信息,但本发明不局限于此,如也可以对GOP中每一个帧都进行运动检测等。
S120,当所述运动信息显示检测的第一个GOP内的所有帧图像均无运动时,再比较第一个GOP的第一恢复帧(recovery frame)I1’(即对第一帧I1压缩后得到的帧)与第二个GOP的第一个输入帧I2的差别,如果两个帧I1’和I2的差别小于或小于等于预设的阈值,则判断第二个GOP的图像具有静态场景,本实施例假定满足这个条件;
上述整个GOP内的帧图像无运动,是指检测的所有帧的运动矢量为零或接近零,可以采用已有的众多运动检测技术中的一种方法来判定,如可以通过将检测的GOP内帧的运动矢量和一个预设的阈值比较,在均小于或小于等于该阈值时认为GOP的帧图像无运动。
两帧I1’、I2的差别可以用两帧中对应位置上像素点的差的绝对值之和(或平均值等)来表示,可以找出所有或部分位置的像素点进行比较。两个帧I1’和I2的差别小于或小于等于预设的阈值即意味着两个帧I1’和I2的图像相同或相近。
S130,对第二个GOP的第一帧仍使用帧内压缩,本实施例还进一步通过减小压缩比以提供更多的比特数,对第二个GOP剩余的帧使用帧间预测压缩或者帧内压缩方法,与当前先进的压缩方法相同;同时获取第二个GOP内的帧的运动信息;
压缩时,为第二个GOP的第一帧提供更多的比特数可以获得高质量视频并减少使用帧间预测压缩的后续帧的压缩数据比特。通常,可以将一个标清电视的该帧数据压缩为6.6Mbit至1Mbit之间,或5.5Mbit至1Mbit之间。本实施例是将一帧数据压缩为2Mbit以获得高质量图像,同时对场景静止图像序列后续14帧的总的压缩数据可以减少到50kbit-10kbit,或者10kbit以下。
GOP中剩余的帧一般使用帧间预测压缩,在出现场景切换时可以采用帧内压缩方法。
S140,对第三个GOP的第一帧进行压缩时,仍假定判断时满足以下条件:检测的第二个GOP的所有帧图像均无运动且第二个GOP的第一恢复帧(recovery frame)I2’(即对第一帧I2压缩后得到的帧)和第三个GOP的第一帧的差别小于或小于等于预设的阈值,即第三个GOP图像仍具有静态场景;
S150,对第三个GOP的第一帧采用帧间预测压缩而不是帧内压缩,与其他帧间预测不同,本实施例第三个GOP的第一帧的参考帧采用第二个GOP中第一帧的恢复帧I2’,预测值P3=I3-I2’,它的恢复帧为I3’;第三个GOP剩余的帧按当前先进的压缩方法使用帧间预测压缩或者帧内压缩。同时获取第二个GOP内的帧的运动信息;
S160,对于后续的GOP仍采用上述方法,即如果检测的前一GOP的所有帧图像均无运动,且第二个GOP的恢复帧I2’和当前GOP的第一帧In(n=3,4,5,...)的差别小于或小于等于设定的阈值,则以I2′为参考帧,对第n个GOP的第一帧In进行帧间预测压缩。对第n个GOP剩余的帧可按当前先进的压缩方法使用帧间预测压缩或者帧内压缩。同时获取第n个GOP内的帧的运动信息。
按上述方式压缩后的帧格式如图2所示,图中的PB是表示一个帧,可以是P帧,也可以是B帧,根据不同的压缩格式而不同。
当然,如果对某个GOP以下称为GOPa判断时上述条件不能满足,则判定该GOPa的图像具有非静态场景,对该GOPa的第一帧也使用与当前先进的压缩方法相同的压缩方法即帧内压缩,同时获取该GOPa内的帧的运动信息。在该GOPa之后的一个GOP以下称为GOPb是否具有静态场景的判断方法与上述第二个GOP类似,如该GOPb具有静态场景,对该GOPb之后的一个GOP以下称为GOPc是否具有静态场景的判断方法与上述第三个GOP类似,依此类推。
归纳一下,在本实施例中认为存在静态场景GOP序列,该静态场景GOP序列可包括一个或多个GOP,其定义见下述步骤一至步骤三。应当注意的是,本文中的静态场景GOP序列中并非所有GOP的图像均具有静态场景,该序列中的第2个及后续GOP的图像具有静态场景,是图像具有静态场景的GOP序列,而第一个GOP可以是非静态场景。
首先定义三个条件:
条件一:该GOP各个帧的运动信息显示整个GOP内的帧图像无运动。
条件二:该GOP的第一帧与其前一个GOP的第一恢复帧的差别小于或小于等于设定阈值。
条件三:该GOP的第一帧与静态场景GOP序列第二个GOP的第一恢复帧的差别小于或小于等于设定阈值。
再定义一下对GOP进行压缩处理的三种方式:
方式一,直接采用当前先进的压缩方法对该GOP进行压缩。
方式二,直接采用当前先进的压缩方法对该GOP进行压缩。但对该GOP的第一帧(使用帧内压缩),压缩比可小于前一个GOP第一帧的压缩比。
方式三,以该GOP所属的静态场景GOP序列的第二个GOP的第一恢复帧(即第一帧的恢复帧)为参考帧,对该GOP的第一帧进行帧间压缩,对该GOP剩余的帧的压缩方式与当前先进的压缩方法相同。
在开始压缩后到压缩完成之前,对GOP的压缩处理包括以下步骤:
步骤一,将依次处理的GOP中第一个满足条件一的GOP作为静态场景GOP序列的第一个GOP(注意这个GOP并不是具有静态场景的GOP),对该GOP按方式一压缩并获取该GOP中帧的运动信息;
步骤二,对与静态场景GOP序列中第一个GOP相邻的后一个GOP(即将其作为当前GOP,下同)处理时:
如果当前GOP满足条件二,则将当前GOP作为静态场景GOP序列的第二个GOP,对该GOP按方式二压缩并获取该GOP中帧的运动信息,执行步骤三;
如果当前GOP不满足条件二但满足条件一,将当前GOP作为另一静态场景GOP序列的第一个GOP,对该GOP按方式一压缩并获取该GOP中帧的运动信息,返回步骤二继续处理;
如果当前GOP对条件一和条件二均不满足,则当前GOP不属于任一静态场景GOP序列,对该GOP按方式一压缩并获取该GOP中帧的运动信息,返回步骤一继续处理;
步骤三,对与静态场景GOP序列中第n个GOP(n=2,3,4......)相邻的后一个GOP处理时:
如果当前GOP满足条件三,则将当前GOP作为静态场景GOP序列的又一个GOP,对该GOP按方式三压缩并获取该GOP中帧的运动信息,返回步骤三继续处理;
如果当前GOP不满足条件三但满足条件一,则将当前GOP作为另一静态场景GOP序列的第一个GOP,对该GOP按方式一压缩并获取该GOP中帧的运动信息,返回步骤二继续处理;
如果当前GOP对条件一和条件三均不满足,则当前GOP不属于任一静态场景GOP序列,对该GOP按方式一压缩并获取该GOP中帧的运动信息,返回步骤一继续处理。
可以看出,本实施例只进一步压缩不变或变化很缓慢的场景的数据,且不增加其他移动场景的比特率。
采用上述实施例的压缩方法的问题是,对于那些不变或变化很缓慢的场景的帧来说,因为第二个GOP之后的后续帧的校正数据依赖于第二个GOP的第一帧的恢复帧I2’,当第二个GOP的第一帧I2的压缩数据在发送或存储过程出错时,错误会扩散到所有这些数据。
为了解决这个问题,在另一实施例中,在一个静态场景GOP序列中,对第4m个(m=1,2,3,4,..)即4,16,64,256.......个GOP使用第二个GOP的第一帧I2的压缩数据直接作为这些GOP第一帧的压缩数据。这样,这些GOP的第一帧的压缩数据和第二个GOP的第一帧I2的压缩数据相同,如图3所示。因为这些GOP的第一帧的压缩数据包括在许多GOP包内,当某个GOP发生错误时,可以根据其他GOP恢复。上述采用静态场景GOP序列第二个GOP的第一帧I2的压缩数据直接作为本GOP第一帧的压缩数据的GOP并不局限于以上的选取方式,如也可以选择为第2m+1个GOP,m=1,2,3,4...来代替,或者采用其它的选择方式都是可以的,均可以达到相应的技术效果。
总之,在当前先进的压缩方法的基础上,本发明压缩方法只需要在满足场景不变或变化非常缓慢即静态场景的条件下,改变GOP包的第一帧的压缩方法,其中大部分采用以第二个包中第一帧的恢复帧为参考帧的帧间预测压缩方式,只有少部分使用与第二个GOP的第一帧I2相同的压缩数据。
现在分析一下上述压缩方法的效率。对于NTSC TV,当两分仲内240个GOP包中的每一个包都满足场景不变或变化很缓慢的条件时,采用当前先进的压缩方法,在压缩数据的比特率为2Mbps时通常需要240Mbit。使用本发明新的压缩方法,包含帧内压缩数据的GOP的数目为5即第1、2、4、16、64个GOP包,其它235个GOP仅包括帧间预测压缩的数据。
第一个GOP有1Mbit数据,包含第二个GOP的第一帧的压缩数据的4个GOP中的每一个包括2.05Mbit数据,其它GOP中每一个GOP包含50kbit数据。所有240个GOP的总的比特数为1+4*2.05+235*0.05=20.95Mbit.与240Mbit数据相比,可在当前先进的压缩方法压缩的基础上再以10倍的压缩比压缩视频数据并且在场景不变或变化很缓慢时获得更好的视频质量。如果场景长时间内不变的或者变化很缓慢,甚至可以20倍的压缩比(2Mbit∶100Kbit)压缩视频数据。
如果进一步地提高静态场景序列中第二个GOP第一帧的数据比特,并降低使用帧间预测压缩的后续帧的数据比特,可以进一步地压缩视频数据。例如,如果在一个GOP内,使用帧间预测压缩的所有帧的压缩数据比特大约为10kbit,对于10分钟不变或变化很缓慢的场景,可以约100倍的压缩比压缩视频数据。
当使用本实施例方法在压缩视频时,需在每个GOP包头中增加1个比特信息来表示GOP图像是否具有静态场景。可以称该比特为静态场景标志。如当该比特值为0时,表示存在运动物体或者场景有变化,当该比特值为1时,表示场景不变或者变化很缓慢,即该GOP图像具有静态场景。
对静态场景GOP序列来说,第二个及之后的GOP中该标志均指示为静态场景,第一个GOP应指示为非静态场景。
在解码(即解压缩)时,对于指示为非静态场景的GOP包,其编码采用的方法都是当前先进的压缩方法,解码时采用相应的解压缩方法即可。对于图像具有静态场景的GOP包,因为静态场景GOP序列第二个GOP包与之后的GOP包压缩方法是不同的,解码时,仅根据这个标志还不能得到唯一正确的解压缩方法。但因为在一个静止序列中帧内压缩数据的比特数远远多于帧间压缩数目的比特数,很容易判断哪个GOP第一帧包含帧内压缩数据,因此可根据该GOP第一帧压缩数据的长度来判断该帧采用的是帧内压缩还是帧间压缩,如果是帧内压缩,则按帧内压缩对应的解压缩方法来解码,如果是帧间压缩,则按帧间压缩对应的解压缩方法来解码。当然,如需要也可以在GOP包头增加一个比特的帧内/帧间标志来区分帧内压缩数据和帧间压缩数据。解码时根据该帧内/帧间标志来识别该GOP包的压缩方式。
第二实施例
因为当前先进的压缩结构的最小的组是宏块,本发明新的压缩方法也可以在宏块中使用。对于GOP的第一帧的每一个宏块,可以有条件地选择帧内或帧间压缩。
对于每一个宏块的处理与上述GOP图像帧的做法相似,图像帧中某一位置的宏块是用以数字进行标号。本实施例认为在图像帧任一位置(标号)上存在静止宏块序列,包括一个或多个连续GOP的各帧图像上具有相同标号的多个宏块,每一标号的静止宏块序列均对应于包含该标号静止宏块序列(即该标号宏块所属的静止宏块序列)的一个GOP序列,为了描述方便,文中也将静止宏块序列对应的GOP序列中的第n个GOP直接称为该静止宏块序列的第n个GOP。某标号静止宏块序列中的第二个及后续的标号宏块图像具有静态场景。
首先定义几个判断条件:
条件一:GOP的运动信息显示该GOP内该标号宏块的图像无运动(所有宏块的运动矢量为零或接近零,可以通过阈值来判断)。
可以对GOP内除第一帧外其余每帧的该标号宏块进行运动检测,或者对GOP中每一个帧的该标号宏块都进行运动检测,获取运动信息,但本发明不局限于此。
条件二:GOP第一帧图像中该标号宏块与前一个GOP的第一恢复帧图像中该标号宏块的差别小于或小于等于设定阈值,如两个宏块对应的全部或部分位置上的像素点之间的差的绝对值之和(或均值等)小于或等于设定的阈值。
条件三:GOP第一帧图像中该标号宏块与所属静止宏块序列的第二个GOP的第一恢复帧图像中的该标号宏块的差别小于或小于等于设定阈值。
再定义一下对GOP中标号宏块进行压缩处理的三种方式:
方式一,直接采用当前先进的压缩方法对当前GOP各帧图像中的该标号宏块进行压缩。
方式二,直接采用当前先进的压缩方法对当前GOP各帧图像中的该标号宏块进行压缩。但对当前GOP第一帧图像中的该标号宏块使用帧内压缩时可减小压缩比。
方式三,以该标号静止宏块序列的第二个GOP的第一个恢复帧图像中的该标号宏块为参考宏块,对当前GOP第一帧图像中的该标号宏块进行帧间预测压缩,对当前GOP剩余帧图像中的该标号宏块的压缩方式与当前先进的压缩方法相同。
在开始压缩后到压缩完成之前,对GOP中每一个标号宏块的压缩处理包括以下步骤:
步骤一,对GOP依次处理,将其帧图像中该标号宏块满足条件一的第一个GOP作为该标号静止宏块序列的第一个GOP,对该GOP各帧图像中的该标号宏块按方式一压缩并获取该标号宏块的运动信息;
步骤二,对该标号静止宏块序列的第一个GOP相邻的后一个GOP处理时,对当前GOP各帧图像中该标号宏块的处理如下:
如果当前GOP第一帧图像中的该标号宏块满足条件二,则将当前GOP作为该标号静止宏块序列的第二个GOP,对该GOP中的该标号宏块按方式二压缩并获取各帧图像中该标号宏块的运动信息,执行步骤三;
如果当前GOP第一帧图像中的该标号宏块不满足条件二但满足条件一,将当前GOP作为该标号的另一静止宏块序列的第一个GOP,对该GOP中的该标号宏块按方式一压缩并获取各帧图像中该标号宏块的运动信息,返回步骤二继续处理;
如果当前GOP第一帧图像中的该标号宏块对条件一和条件二均不满足,则当前GOP不属于任一静止宏块序列,对该GOP中的该标号宏块按方式一压缩并获取各帧中该标号宏块的运动信息,返回步骤一继续处理;
步骤三,对该标号静止宏块序列的第n个GOP(n=2,3,4......)相邻的后一个GOP处理时,对当前GOP各帧图像中的该标号宏块处理如下:
如果当前GOP第一帧图像中的该标号宏块满足条件三,则将当前GOP作为该标号静止宏块序列的又一个GOP,对该GOP中的该标号宏块按方式三压缩并获取该GOP各帧图像中该标号宏块的运动信息,返回步骤三;
如果当前GOP第一帧图像中的该标号宏块不满足条件三但满足条件一,则将当前GOP作为该标号的另一静止宏块序列的第一个GOP,对该GOP中的该标号宏块按方式一压缩并获取该GOP各帧图像中该标号宏块的运动信息,返回步骤二继续处理;
如果当前GOP第一帧图像中的该标号宏块对条件一和条件三均不满足,则当前GOP不属于任一静止宏块序列,对该GOP中的该标号宏块按方式一压缩并获取该GOP各帧图像中该标号宏块的运动信息,返回步骤一。
需注意的是,不同标号宏块所属的静止宏块序列对应的GOP序列可能相同,也可能不同。需要按照上述流程分别进行处理。
为了克服某一标号静止宏块序列中第二个GOP第一帧图像中的该标号宏块误码引起的误码扩散,对该标号静止宏块序列第二个GOP之后的少量(如满足4m,或2m+1,m=1,2,3,4...条件)GOP,对这些GOP第一帧图像中的该标号宏块采用与该标号静止宏块序列第二个GOP第一帧图像中的该标号宏块相同的压缩数据(帧内压缩)。
采用上述针对某一标号静止宏块序列的图像压缩方法,可以对静止宏块和非静止宏块分别进行压缩,可以进一步提高压缩比,因为即使图像帧中有运动物体存在,背景不变或变化缓慢的图像宏块也可以得到压缩。
当采用上述对宏块的压缩方法时,GOP包第一帧图像的每一个标号宏块的压缩数据中都需要增加1BIT的宏块静止标志,来表示该标号宏块的图像是否具有静态场景。如当该比特值为0时,表示存在运动物体或者场景有变化,当该比特值为1时,表示场景不变或者变化很缓慢。对于GOP第一帧中的标号宏块,如果不属于静止宏块序列,其宏块静止标志应指示为非静态场景。对于静止宏块序列,第一个GOP第一帧中标号宏块的宏块静止标志应指示为非静态场景,对于第二个及之后的GOP第一帧中的标号宏块,该宏块静止标志均指示为静态场景。GOP中第二个或之后帧图像中的标号宏块都无需进行标记。因为720×480大小的视频有1350宏块,每个GOP包中只需增加1.35kbit宏块静止标志。
在解码时,对于包含所述宏块静止标志且指示为非静止的标号宏块,或者没有宏块静止标志的标号宏块,解码时采用相应的解压缩方法如当前先进的压缩方法对应的解压缩方法即可。对于包含所述宏块静止标志且指示为静止的标号宏块,因为某一标号静止宏块序列中帧内压缩数据的比特数远远多于帧间压缩数目的比特数,很容易知道哪个GOP第一帧某一标号宏块包含帧内数据,哪个GOP第一帧某一标号宏块包含帧间数据。因此可以根据该标号宏块压缩数据的长度来判断该标号宏块采用的是帧内压缩还是帧间压缩,如果是帧内压缩,则按帧内压缩对应的解压缩方法来解码,如果是帧间压缩,则按帧间压缩对应的解压缩方法来解码。类似的,也可在GOP第一帧的标号宏块中增加一个比特的帧内/帧间标志来区分帧内压缩数据和帧间压缩数据。
因为静止宏块的比特率减少,可以在有运动物体或场景变化的宏块中增加更多的比特。在相同或更低的比特率时运动物体的视频质量也可以提高。而如果一个GOP提供高品质的视频数据,其他相似的GOP只需给出两帧间的不同,就可以得到高品质的静态视频。此外,静态场景标志对于智能图像分析是非常有用的,它能表示哪个场景是固定场景的,哪个场景有运动物体或者场景有变化。进一步地,通过宏块静止标志还能够表示哪个宏块是固定场景的,哪个宏块有运动物体或者场景有变化。当重播压缩数据时,使用静态场景标志和宏块静止标志,还可以只重播变化的场景视频或运动物体视频或宏块,提高重播的速度。
为了不改变现有GOP包(或宏块)所有结构,在上述两个实施例中,可以将上述静态场景标志或静止标志,还可以加上区分帧内压缩数据和帧间压缩数据的标志信息放在用户数据中,并与压缩GOP数据同步储存或传输,从而实现与现有GOP包的兼容。