发明内容
有鉴于此,本发明的目的在于提供一种三维视频编解码方法及装置,用于提高三维视频的编码和压缩效率,特别是用于提升三维监控视频的编码压缩效率。
本发明的实施例提供了一种三维视频的编码方法,包括:
输入一帧图像,所述一帧图像包括同一时刻多个不同视点的图像纹理信息和深度信息,构成多个视点的深度像素图;
将各个视点的深度像素图映射到主视点上,并对主视点视图的图像大小进行扩展,所述主视点的选择按照预先约定;
通过运动目标检测方法从所述纹理信息中得到运动信息,利用深度信息和/或运动信息将映射后的深度像素图中所有深度像素点重建为一个背景图层图像及一个或一个以上前景图层图像,并对背景图层图像进行时域累积操作;
将所述背景图层图像及前景图层图像分别进行编码,其中深度信息和纹理信息分别编码,并在编码中实现图层间的相互参考。
本发明的实施例还提供了一种三维视频解码方法,包括:
获取待解码的输入码流;
对所述输入码流解析并熵解码,获取编码信息;
依次对背景图层图像及前景图层图像进行解码,得到各图层的重建图像,并生成各图层的参考图像;
根据所述各图层的重建图像和摄像机参数,生成指定视点的输出图像。
本发明的实施例还提供了一种三维视频的编码装置,包括:
视频输入单元,用于实现视频信号的采集或读入;
图层分解单元,用于将输入视频中的图像分解成前景图层图像和背景图层图像;
图层编码单元,用于基于各图层的重建图像对所述前景图层图像和背景图层图像进行编码;
图层重建图像生成单元,用于生成对应图层的一整幅的重建图像;
码流形成单元,用于将图层编码单元生成的数据组合成一个符合语法规则的码流;
码流输出单元,用于实现对所述码流的输出。
本发明的实施例还提供了一种三维视频解码装置,包括:
码流输入单元,用于从硬盘读入视频流;
码流解析单元,用于对输入的视频码流进行解析,分离出背景图层码流和前景图层码流;
图层解码单元,用于基于各图层的重建图像对背景图层图像和前景图层图像进行解码;
图层重建图像生成单元,用于生成对应图层的重建图像;
视点图像生成单元,用于根据各图层的重建图像和摄像机参数,生成指定视点的输出图像;
图像输出单元,用于将重建图像传送至输出接口输出。
由于实际场景中的某个点可能被多个视角观测到,因此不同视点序列间存在大量重复信息。将多视点的图像映射到同一个主视点上,可以找出这些重复信息,并能够在图层重建操作中通过像素合并操作除去这种视间冗余,提高三维视频编码和压缩的效率。同时,对主视点图像范围的扩展,能够解决传统图层编码中生成视图边沿处的成片空洞问题,提高了解码输出图像的质量。
其次,适当的图层分割,特别是利用了运动信息的图层分割,能够保证同一深度层次及同一对象上的像素点在同一个图像组中被编码,从而提高预测效率,有利于压缩编码。
进一步地,本发明还对背景图层进行了时域累积操作。通过时域累积操作合成得到的背景图像,将随着输入图像而不断更新,既利用了时域上的信息累积,又利用了多视点的视角信息,从而将背景模型建立得较为准确。使用这样一种合成背景做为参考图像,在使用较少参考缓存的情况下,能更好地减少时域上的信息冗余,特别是在前景运动目标往复运动时,能达到相当大的编码增益。对三维监控视频,其场景一般长期静止,这种背景图层的时域累积方法将尤为有效。
在理想的图层分解状况下,不同图层的信息是完全独立的。但是,在具体实现中,很难做到精确的图层分割,特别是在目标边沿部分,可能会有本应该属于其它图层的像素。深度图边沿的不准确就会导致这种问题,这种情况十分常见。为解决这一问题,本发明使用了图层间的相互参考。层间参考包括层间帧内预测参考和层间帧间预测参考,能够降低对图层分割精度的要求,减小压缩性能对图层分割精度的依赖性,从而提高预测精度和压缩效率,并有助于提升重建图像的质量。
具体实施方式
本发明实施例利用图像映射和图层综合,在不影响图像主观质量的前提下,实现图像数据量的大幅度减少。同时,利用图层间的参考和背景图层的时域合成实现码流的进一步压缩,特别适合于摄像机固定的视频片断、视频会议、三维监控这种存在背景静止的应用场景。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图1所示为本发明实施例提供的一种三维视频编码方法的流程图,该方法包括:
步骤101、通过视频采集、通信或读磁盘(或其它存贮介质)的方式输入一帧图像。这里所述的一帧图像包括同一时刻多个不同视点的图像纹理信息和深度信息,表现为多个视点的深度像素图,后文所述像素点均为深度像素点,每个深度像素点包括其深度信息和纹理信息。若输入多视点视频不含深度信息,则采用深度提取算法计算深度信息,构造出深度像素图。
步骤102、选择最靠近中心的视点为主视点,利用摄像机参数视间映射算法将各个视点的深度像素图映射到主视点上。主视点的大小扩大为能包含所有像素。所述的视间映射算法可以使用立体空间映射矩阵的方法。约定最靠近中心的视点为主视点,有益于映射操作。
步骤103、利用深度信息和/或运动信息将映射后的所有深度像素重建为一个背景图层深度像素图像(简称为背景图层图像)及一个或多个前景图层深度像素图像(简称为前景图层图像)。深度信息由深度像素携带。运动信息由运动目标检测方法从纹理信息中得到。重建的方法为:将映射到主视点的所有深度像素作为一个待分配像素集,然后按如图3所示操作将像素分配到各图层:
步骤1031、合并像素点。针对每个像素位置,将深度值差异在设定阈值TH1内且纹理值差异在设定阈值TH2内的像素点合并为一个像素点,新的像素点的像素值为原像素值的平均,或者取中值。两种阈值可以设为相应最大值的1%~5%。由于实际应用场景中的某个点可能被多个视角观测到,因此不同视点序列间存在大量重复信息。这种像素合并操作可以除去这种视间冗余。
步骤1032、背景图层图像建立。针对每个像素位置,取出待分配像素集中深度最深的像素点P,若有多个,则取他们的平均像素值构成像素点P,与原背景图层图像的像素进行比较:若像素点P的深度更深(大),则以像素点P的像素值替换该背景图层图像像素值;若深度相同,则将像素点P的像素值与原背景图层图像像素值加权平均后替换背景图层图像像素值;若深度更浅(小),则将像素点P放回待分配像素集。这个操作实际上就是背景图层的生成、更新操作,通过深度信息更新背景图层,在图层图像生成上实现了时域累积操作。这里深度相同是指深度值或其等效的视差值的差小于一指定的阈值,这里取TH1。
步骤1033、前景图层图像建立。针对每个像素位置,取出待分配像素集中深度最小的像素的像素值,若该像素位置已无像素值,则置空或置为该位置背景图层像素值,构成第一前景图层图像。
步骤1034、若待分配像素集中还有像素点,则重复执行步骤1033,生成第二、第三等前景图层图像,直至分配完所有像素。将剩余像素点作为一个待分配像素点集合,图层重组操作实际上就是一个像素分配或像素映射的过程。
在步骤1033和1034中,可以利用运动信息对像素进行对象分割,再以对象为单位从待分配像素集中取出像素值,以保证同一对象的像素在同一图层中,提高预测补偿精度。所述对象的分割,可以使用各种传统的图像检测算法检测运动目标,如混合高斯模型法、帧差法、光流法等,再通过深度信息进行目标范围修正。考虑到同一目标的深度往往具有连续性,这种修正操作是指,对目标边沿附近的像素点,除去与相邻像点深度差异超过阈值TH1的点,添加与相邻像点深度差异小于阈值TH1的点,使利用各图层像素值及其深度值重建各视点图像时不出现空洞。同时,深度连续但是不运动的成片区域也作为前景目标。
步骤104、将各图层图像分别送入相应的图层图像组进行编码,其中深度信息和纹理信息分别编码。背景图层作为时域累积图层,前景图层作为非时域累积图层。各图层图像按与解码器约定的编码顺序进行编码,这种顺序将影响帧内层间参考,即先编码的图层无法参考后编码的图层。本实施例先编码时域累积图层,再编码非时域累积图层,对同一性质的图层,按由深到浅(深度由大到小)的顺序进行编码。编码器采用传统的基于块的预测编码器,本实施例采用AVS,并根据本发明的需要添加部分语法元素,对编码流程略作改动,实现多视点视频序列的编码。
语法元素的添加包括:
1、在原序列参数集中,添加摄像机参数;
2、在原图像参数集中,添加图层数量、背景图像宽高等元素;
3、在原宏块数据中,添加参考图层编号。
编码流程的修改包括:
1、对每一帧图像,从背景图层图像开始,对每个图层图像都做相当于原编码器的编码操作,生成片级和宏块级的码流,并对每个图层的重建图像(参考帧)做去块滤波和层间滤波操作。
2、由于背景图层图像帧间的相关性较强,选择一个较长的图像组(包含较多帧),从而降低码率。一般地,背景图层图像组预先设定图像组结构和长度,但在摄像机切换等背景图层内容改变时,可以立即形成新的图像组。针对背景长期静止的三维监控应用场景,背景图层可以只在立即刷新图像帧处编码传输,这样能在保证主观质量的前提下,大幅降低码率。
3、编码宏块时,参考帧除了从本图层参考队列中选择(实现层内帧内预测和层内帧间预测),还可以从其它图层的参考队列中选择,以实现层间参考(包括层间帧内预测和层间帧间预测)。当背景图层图像只在立即刷新图像帧处编码时,背景图层生成的参考图像只用于前景图层的层间参考。此时,背景图层参考图像是一个时域累积参考图像,它由立即刷新图像帧背景图像的重建图像初始化,并被前景图层图像不断更新。这里的更新是指,在一像素位置上,若前景图层图像的深度与背景图层图像的差在一定阈值范围内,则用前景像素值对背景像素值进行加权平均更新。这里阈值采用TH1。
4、在对各图层进行编码时,对不属于该图层的区域不做编码或采用跳过模式编码。例如,以起始位置、长和宽定义的图层矩形区域,以像素或宏块为单位,在对图层编码时,对不属于本图层的图像块可不做编码,重建像素值从其它图层得到,或直接采用跳过模式编码,重建像素值可选择从其它图层得到或通过跳过模式解码得到。
5、在生成背景图层的参考帧时,对每个像素位置,若在本图层重建图像对应位置存在重建像素时,取值为该重建像素值与前一参考帧对应位置像素值的加权平均值;否则取值为前一参考帧对应位置的像素值。加权平均操作实现了参考帧的递归滤波,权重参数由预先设定,在参考帧的生成上实现了时域累积操作。
6、生成各个前景图层的参考帧时,对每个像素位置,若在本图层重建图像对应位置存在重建像素时,取值为该重建像素值;否则取值为背景图层对应位置的像素值。
7、图层深度信息模型化编码。同一物体的表面深度一般具有规律性,可以进行深度建模,很多情况下可以使用平面模型近似,从而实现更有效率的深度编码。使用这种模式时,码流元素里需添加模型化参数。
编码完成后,输出所形成的码流。如:存贮到磁盘、通过网络发送等,或用于与音频等码流复接,形成系统流。
以上编码方法通过立体空间映射的方法,利用深度信息将三维视频的多个序列映射到一个视点上,在深度比较和图像检测之后将所有数据重组为几个图层,最后,对各个图层序列分别进行编码。
这种编码方法与背景技术中其它编码方法的区别,也是其压缩效率的关键在于:将多视点视频序列重组为一个视点上的多个图层,减少数据量;各图层间可相互参考;图层在时域上可以累积信息;同时,各图层可动态扩大视角范围,以提高虚视生成质量。
使用时域累积操作的图层,称之为时域累积图层;不使用时域累积操作的图层,称之为非时域累积图层。对于参考帧的生成,时域累积操作是指该编码图层有一个时域累积参考帧,这个参考帧长期存在于参考队列中,并由解码得到的重建图像进行更新。图层信息在时域上的累积,主要用于背景图像构成的背景图层。对背景图层来说,时域累积操作,具体是指编解码器保存一幅背景图像,这个图像随着输入图像不断更新,实现时域累积。使用这样一种合成背景做为参考图像,在使用较少参考缓存的情况下,能更好地减少时域上的信息冗余。特别是在前景运动目标往复运动时,能达到相当大的编码增益。另外,合成背景既利用了时域上的信息累积,又利用了多视点的视角信息,能够将背景模型建立得较为准确,从而能够更好地生成其它视点的图像,甚至有可能生成源视点范围之外的视点图像。
基于本发明实施例提供的三维视频编码方法,其相应的解码方法如图3所示,包括以下步骤:
步骤301、通过读取磁盘或通信接收获取输入码流。
步骤302、对输入码流解析并熵解码,获取必要的编码信息,如图层数量、背景图像宽高、当前待解码图像块采用了哪种预测方式等。
步骤303、依次对所有图层进行解码,得到各图层的重建图像,并生成各图层的参考图像。各图层的解码方法类同于传统的基于块的预测解码器,如H.264、AVS。本实施例使用AVS进行解码,并根据本发明的需要对解码流程略作改动,实现多视点视频序列的解码。
除了能够解析对应编码流程中添加的语法元素,解码流程的修改还包括:
1、解码宏块时,参考帧除了从本图层参考队列中选择,还可以从其它图层的参考队列中选择,由语法元素中的参考图层决定。与编码器对应,预测模式包括层内帧内预测、层内帧间预测、层间帧内预测和层间帧间预测。
2、背景图层作为时域累积图层,其参考图像生成规则为:对每一个像素位置,在本图层重建图像对应位置存在重建像素时,取值为该重建像素值与前一参考帧对应位置像素值的加权平均,否则取值为前一参考帧对应位置的像素值。
3、前景图层作为非时域累积图层,其参考图像生成规则为:对每个像素位置,若在本图层重建图像对应位置存在重建像素时,取值为该重建像素值;否则取值为背景图层对应位置的像素值。
步骤304、根据各图层的重建图像和摄像机参数,生成指定视点的输出图像。所述生成指定视点输出图像的方法为:利用摄像机参数,采用视间映射算法,将各图层图像映射到指定视点,然后在各像素位置上选择深度最小的像素值。
图4是本发明实施例提供的一种编码器的实现原理图。整个编码器结构的实现和传统编码器相比,主要的不同在于增加了图像映射与图层分解,其中,图层分解是利用深度信息和背景参考帧,将待编码图像分解成前景图层和背景图层,合理分解图层能提高编码效率,在本实施例中采用如前所述的图层分解算法;此外,还将单序列的编码单元扩展为了多图层编码单元(如图中的前景图层编码单元和背景图层编码单元),并在前景图层编码中采用了层间参考模式,在背景图层参考帧生成时采用了时域累积操作。
背景图层编码采用的方法和传统编码器基本一致,包括帧内预测、帧间预测、残差计算、变换量化、反量化反变换、去块滤波等,只是另外增加了一个时域累积操作,利用背景图层重建图像和原背景图层参考图像,生成新的背景图层参考图像。更新原则为,若深度不同,则取深度值大的像素值;若深度相同,则取加权平均值。
前景图层编码相比传统编码器,增加了层间帧内预测和层间帧间预测,即可以采用背景图层重建图像作参考图像。同时,由于前景图层图像不一定在所有像素位置都有信息(即有可能有空洞),在无重建像素值的像素位置,由背景图层图像对应像素位置的像素值填充。
图4中所示的参考图像,下标n表示当前新生成的参考图像,下标n-1表示前一个参考图像。
背景图层编码变换量化后的数据与前景图层编码变换量化后的数据将分别被熵编码,并按语法规则形成输出码流,用于传输或存贮。
基于上述实现原理,图5为本发明实施例提供的三维视频编码装置的结构图,具有视频输入单元、图层分解单元、图层编码单元、图层重建图像生成单元、码流形成单元和码流输出单元。
视频输入单元实现视频信号的采集或读入,如模拟视频信号的采集、CCD或CMOS传感器输出信号的采集、从存贮设备中读取图像、将已压缩的码流进行解码而获得数字视频信号、从网络或其它接口获得数字视频信号等。多视点视频输入单元包含至少两个视点的纹理信号采集设备,以及相应的深度计算单元或深度信息采集硬件设备。深度计算单元采用三维匹配的方法计算各像素点的深度,既可用硬件实现,也可用软件实现。深度信息采集硬件设备可以采用TOF(飞行时间)方法,可以获得比计算出的深度更准确的深度结果。
图层分解单元将输入视频中的图像分解成前景图层图像和背景图层图像,背景图层图像为时域累积图层,前景图层图像为非时域累积图层,分解方法如前所述。
图层编码单元用于对前景图层图像和背景图层图像进行编码,包括前景图层编码单元和背景图层编码单元,二者均包括帧内预测、帧间预测、模式选择、用于预测残差计算的减法器、变换量化、熵编码、反变换反量化、用于重建图像的加法器、参考图像合成与去块滤波、参考帧存等基本单元。其中背景图层编码单元中的参考帧存用于存放背景图层重建图像,包括时域累积参考图像,前景图层编码单元中的参考帧存用于存放前景图层重建图像。背景图层编码单元在做帧间预测时只使用背景图层参考帧存中的图像,而前景图层编码单元可以使用背景图层参考帧存和前景图层参考帧存中的图像,实现了层间参考预测。各图层编码单元的视频编码与一般视频编码器,如H.264、AVS等一致。
图层重建图像生成单元,用于生成对应图层的一整幅的重建图像,经过去块滤波后存入各自帧存,用于以后编码帧的帧间预测参考,生成方法在前面已有介绍,这里不再赘述。
码流形成单元用于将来自背景图层编码单元和前景图层编码单元的数据组合成一个符合语法规则的码流。
码流输出单元实现对码流的输出,可以通过通信接口进行输出。
图6是本发明实施例提供的一种解码器的实现原理图。与传统解码器相比,主要的不同在于增加了图层码流分解,并将单序列解码扩展为了多图层解码(如图中的前景图层解码与背景图层解码),并在前景图层解码中添加了层间预测模式,在背景图层参考帧生成时采用了时域累积。
背景图层解码和传统解码器一致,将熵解码后的残差数据通过反变换反量化恢复出来,并根据预测模式选择和运动矢量信息,选择与编码时相同的预测方式得到其运动补偿预测值,将预测值与残差相加便得到背景图层的重建图像。另外增加了时域累积操作,利用背景图层重建图像和原背景图层参考图像,生成新的背景图层参考图像。更新原则为,若深度不同,则取深度值大的像素值;若深度相同,则取加权平均值。
前景图层解码增加了多种预测,是和编码器相对应的。具体每个单元的预测细节与编码器部分是一致的,数据解码流程与传统解码器也是一致的。
视点图像生成是根据各图层的重建图像和摄像机参数,生成指定视点的输出图像。生成指定视点输出图像的方法如前文所述。
基于上述实现原理,图7为本发明实施例提供的三维视频解码装置的结构图,具有码流输入单元、码流解析单元、图层解码单元、图层重建图像生成单元、视点图像生成单元和解码图像输出单元。
码流输入单元是从硬盘读入视频流的输入接口,或接收视频流的以太网接口,或其它视频输入通信接口。如果输入为包括音频、系统的多媒体数据流,则码流输入单元通过解复接分离出其中的视频流。
码流解析单元用于根据语法规则对输入的视频码流进行解析,包括熵解码和去复接等,分离出背景图层码流和前景图层码流,分别输入背景图层解码单元和前景图层解码单元。
图层解码单元用于对背景图层图像和前景图层图像进行解码,包括背景图层解码单元和前景图层解码单元,二者均包括帧内预测、帧间预测、反变换反量化、参考图像合成与去块滤波、参考帧存、模式选择等基本单元,这与常规的视频解码器是一致的。其中背景图层解码单元的参考帧在背景图层的参考帧存中选取,前景图层解码单元的参考帧在前景图层的参考帧存和背景图层的参考帧存中选取,由语法元素中的参考图层决定。这些帧存分别存放对应图层经去块滤波后的前一帧或几帧解码重建图像,用于帧间预测解码。
图层重建图像生成单元,用于生成对应图层的重建图像,经过去块滤波后存入各自帧存,用于以后编码帧的帧间预测参考,生成方法在前面已有介绍,这里不再赘述。
视点图像生成单元用于根据各图层的重建图像和摄像机参数,生成指定视点的输出图像。生成指定视点输出图像的方法如前文所述。
图像输出单元通过将重建图像传送至输出接口实现,如写入文件、发送到各种通信网络或通过各种显示输出接口输出。
在AVS编解码器rm09.02版本上实现上述实施例,采用测试序列BookArrival_man,主视点选择位置10,编码配置如下:编码结构为IPPP…,I帧间隔为20帧,测试序列长度为100帧,开启RDO,固定QP。另外,用AVS编解码器rm09.02版本上实现分层深度视频编码,编码配置不变,将编码结果与本发明比较。
得到的测试结果表明,相比使用分层深度视频编码实现多视点编码,本发明的编码输出码率降低了35%以上,同时在视点10上的重建图像的客观质量(PSNR)及主观质量与分层深度视频编码基本相同,在视点8上的生成图像的客观质量(PSNR)及主观质量略好于分层深度视频编码。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。