发明内容
本发明要解决的技术问题是提供一种立体视频的编、解码方法及装置,能够在显示环境发生变化时,提高显示画面的质量。
为解决上述技术问题,本发明的一种立体视频的编码方法,包括:
对视频进行编码,得到视频码流;
计算视频的视差信息,对视差信息进行编码得到视差码流;
将视频码流和视差码流进行复合。
进一步地,计算视频的视差信息包括:
根据运动向量确定第一视点的图像帧中的宏块在第二视点对应图像帧中的参考位置;
确定宏块中的像素点在第二视点对应图像帧中的搜索范围;
在搜索范围内搜索宏块中的各像素点,计算得到各像素点的视差信息。
进一步地,搜索范围是以所述参考位置为中心的区域,该区域的大小为运动向量加16的和乘以运动向量加16的和~两倍的运动向量加16的和乘以两倍的运动向量加16的和个像素点。
进一步地,计算视频的视差信息包括:
根据第一视点的图像帧中的像素点所属宏块的运动向量确定像素点在第二视点对应图像帧中的参考位置;
确定像素点在第二视点对应图像帧中的搜索范围;
在搜索范围内搜索像素点,计算像素点的视差信息。
进一步地,搜索范围是以所述参考位置为中心的区域,该区域的大小为运动向量乘以运动向量~两倍的运动向量乘以两倍的运动向量个像素点。
进一步地,对视频进行编码,得到视频码流包括:
对多视点视频进行编码时,计算视频中当前处理的图像帧与视点内的图像帧相互之间的代价,以及当前处理的图像帧与视点间的图像帧相互之间的代价;
根据计算得到的代价,确定最小的代价对应的两幅图像帧,选择两幅图像帧的其中之一作为参考帧;
对参考帧进行编码,得到视频码流。
进一步地,一种立体视频的解码方法,包括:
分离视频码流和视差码流;
对视差码流进行解码,得到视差信息;
对视频码流进行解码,得到视频图像,采用视差信息,调整视频图像。
进一步地,一种立体视频的编码装置,包括:视频编码器、视差计算器、视差编码器和码流合成器,码流合成器分别与视频编码器和视差编码器连接,视差计算器分别与视频编码器和视差编码器连接,其中:
视频编码器,用于对视频进行编码,得到视频码流;
视差计算器,用于计算视频的视差信息;
视差编码器,用于对视差信息进行编码得到视差码流;
码流合成器,用于将视频码流和视差码流进行复合。
进一步地,视差计算器是根据运动向量确定第一视点图像帧中的宏块在第二视点对应图像帧中的参考位置;并确定宏块中的像素点在第二视点对应图像帧中的搜索范围;在搜索范围内搜索宏块中的各像素点,计算得到各像素点的视差信息。
进一步地,搜索范围是以所述参考位置为中心的区域,该区域的大小为运动向量加16的和乘以运动向量加16的和~两倍的运动向量加16的和乘以两倍的运动向量加16的和个像素点。
进一步地,一种立体视频的解码装置,包括:码流分离器、视差码流解码器、视频码流解码器和图像调整器,码流分离器分别与视差码流解码器和视频码流解码器连接,图像调整器分别与视差码流解码器和视频码流解码器连接,其中:
码流分离器,用于分离视频码流和视差码流;
视差码流解码器,用于对视差码流进行解码,得到视差信息;
视频码流解码器,用于对视频码流解码进行解码,得到视频图像;
图像调整器,用于采用视差信息,调整视频图像。
综上所述,本发明将视差信息合成到视频码流中,在不增加过多码流的情况下,提升了裸眼立体的主观视觉效果,并且,视差信息一般都比较小,只是一张简单的灰度图,压缩效率非常高,所以不会增加过多码流。
具体实施方式
本实施方式对视频进行编码,得到视频码流;计算视点之间的视差信息,对视差信息进行编码得到视差码流;将视频码流和视差码流进行复合,完成对视频的编码。本实施方式通过计算各个视点的视差信息,将视频的视频码流和视差码流进行复合,在增加较少码流的情况下,可在显示端提供更好的立体视觉效果。本实施方式主要以H.264或者MPEG-4视频编解码标准为例进行说明,同样可以应用其它视频编解码标准,对此不作限定。
图1为本实施方式立体视频的编码方法,包括:
步骤101:对多视点视频进行编码时,计算视频中当前处理的图像帧与视点内的图像帧相互之间的代价,以及计算当前处理的图像帧与视点间的图像帧相互之间的代价;
代价是反映两幅图像帧之间相关性的系数,系数越小相关性越高,完全相关则代价为0。
在计算当前处理的图像帧与视点内和视点间的图像帧相互之间的代价后,可以判断计算得到的最小的代价是否高于阈值,若高于,则确定对当前处理的图像帧进行下一步处理。
在对视频进行编码时,根据对视频的品质要求,可以调整阈值的大小,从而控制进行下一步处理的图像帧的数量,若对视频的品质要求较高,则可以减小阈值,增加进行下一步处理的图像帧的数量;若对视频的品质要求较低,则可以加大阈值,减少进行下一步处理的图像帧的数量。
步骤102:根据计算得到的当前处理的图像帧与视点内和视点间的图像帧相互之间的代价,确定最小的代价对应的两幅图像帧,选择最小的代价对应的两幅图像帧的其中之一作为参考帧;
一个场景可能包含多个视点,本实施方式选择参考帧时,可以从所有其它视点中选择参考帧,也可以从部分其它视点中选择参考帧;如果从部分其它视点中选择参考帧,可能无法得到最小的视频码流,因此,优选地,本实施方式从所有其它视点中选择参考帧,这样可以得到最小的视频码流。
视点内的图像帧是指同一场景在不同时刻的图像帧,例如,同一个摄像机对一个场景在前后两个时刻拍摄的图像帧。
视点间的图像帧是指同一场景在同一时刻的另一视点的图像帧,如,另一摄像机在同一时间对同一场景拍摄的图像帧。
在计算视点间的图像帧之间的代价的过程中,可以得到运动向量m。
步骤103:对参考帧进行编码,得到视频码流;
本实施方式在对参考帧进行编码时,可以基于H.264或者MPEG-4视频编解码标准进行编码,也可以根据其它视频编解码标准进行编码,对此不作限定。
步骤104:根据视点之间的运动向量m,计算视差信息,得到视差图;
参考图2,本文中,运动向量m指一视点的图像帧上的宏块(如16x16像素)在另一视点对应图像帧上在水平方向偏移的方向和距离,反映了估算的该宏块上各像素点的平均视差。而像素点的视差指一视点的图像帧上的像素点相对于另一视点对应图像帧的同名像素点偏移的矢量,矢量的方向为水平方向,矢量的模表示距离,距离以像素为单位。
计算视点的视差信息包括:
步骤a:根据运动向量m确定第一视点图像帧中的宏块在第二视点对应图像帧中的参考位置;
步骤b:确定该宏块中像素点在第二视点对应图像帧中的搜索范围,搜索范围是以所述参考位置为中心,大小为(m+16)*(m+16)~(2m+16)*(2m+16),如取(1.5m+16)*(1.5m+16)个像素点的区域;
步骤c:在第二视点对应图像帧的所述搜索范围内搜索所述宏块中的各像素点,计算得到各像素点的视差;
步骤d,按步骤a~c的方式确定获得第一视点图像帧对应第二视点图像帧中各像素点的视差,获得该图像帧的视差图。
对某个像素点,计算其在第一视点图像帧对应第二视点图像帧上的视差的方法包括:
步骤a’:根据该像素点所属宏块的运动向量m,确定该像素点在第二视点对应图像帧中的参考位置;
步骤b’:确定该像素点在第二视点对应图像帧中的搜索范围,搜索范围是以该像素点的参考位置为中心,至少为m*m个像素点的区域;
在一个示例中,可以将所述区域的大小设置为m*m~2m*2m,如,可以取1.5m*1.5m个像素点。
步骤c’:在第二视点对应图像帧中的所述搜索范围内搜索该像素点,计算该像素点在第一视点和第二视点上的视差;
按上述方法得到第一视点图像帧对应第二视点图像帧中各像素点的视差后,即可获得该图像帧的视差图。
本实施方式的视差信息的计算方法,在计算码流的大小的同时,得到了视差信息的搜索起点,减小了视差搜索的计算量。
步骤105:对视差图进行编码,得到视差码流;
本实施方式在对视差图进行编码时,可以基于H.264或者MPEG-4视频编解码标准进行编码。
步骤106:将视频码流与视差码流进行复合。
步骤106中将视频码流与视差码流复合为立体视频码流,并在立体视频码流中加入视点之间的运动向量m,以便在解码的过程中,从立体视频码流中解析出参考帧,根据运动向量m,恢复出视频的各图像帧。
在本实施方式中,在步骤102计算视点间为参考的视频码流的大小之后,可以执行步骤103获得采用的视频码流,再执行步骤104和105获得视差码流;也可以先执行步骤104和105获得视差码流,再执行步骤103获得采用的视频码流;进一步地,也可以同时执行步骤103、104和105,获得采用的视频码流和视差码流。
图3为本实施方式的立体视频的解码方法,包括:
步骤301:分离视频码流和视差码流;
步骤302:对于视差码流,进行视差码流的解码,得到视差信息;
本实施方式在对视差码流进行解码时,可以基于H.264或者MPEG-4视频编解码标准进行解码,也可以根据其它视频编解码标准进行解码,对此不作限定。
步骤303:对视频码流进行解码,得到视频图像,采用视差信息调整视频图像。
视差码流记录了视频图像每一帧的视差信息,对从视频码流解码出的视频图像,需要结合视差信息,进行视差调整。视差调整的方式包括:
结合立体显示设备的窗口尺寸,得到视频图像在空间中形成的虚拟立体物体的远近范围;基于大多数人对立体显示的感知能力及立体显示设备的光学特性,设置一个虚拟立体物体的远近范围阈值,在得到的视频图像在空间中形成的虚拟立体物体的远近范围超过上述阈值时,根据视差信息对视频图像进行视差调整。
视差调整也可以是基于视差信息,重建场景,从多个新的视点重新渲染生成新的视频图像,采用新的视频图像替换原有的视频图像,进行立体输出。
视差调整还可以是以宏块为单位,根据视差信息,将两两对应的宏块对,进行位置上不同幅度的水平移动,并使用图像插值弥补由于平移留下的图像空白区域。
图4为本实施方式的立体视频的编码装置,包括:视频编码器、视差计算器、视差编码器和码流合成器,其中:
视频编码器,用于对多视点视频进行编码时,计算视频中当前处理的图像帧与视点内的图像帧相互之间的代价,根据计算得到的当前处理的图像帧与视点内和视点间的图像帧相互之间的代价,确定最小的代价对应的两幅图像帧,选择最小的代价对应的两幅图像帧的其中之一作为参考帧,对参考帧进行编码,得到视频码流。
视差计算器,用于根据视点之间的运动向量m,计算各视点的视差信息,得到视差图。
计算视点的视差信息包括:
步骤a:根据运动向量m确定第一视点图像帧中的宏块在第二视点对应图像帧中的参考位置;
步骤b:确定该宏块中像素点在第二视点对应图像帧中的搜索范围,搜索范围是以所述参考位置为中心,大小为(1.5m+16)*(1.5m+16)个像素点的区域;
步骤c:在第二视点对应图像帧的所述搜索范围内搜索所述宏块中的各像素点,计算得到各像素点的视差;
步骤d,按步骤a~c的方式确定获得第一视点图像帧对应第二视点图像帧中各像素点的视差,获得该图像帧的视差图。
对某个像素点,计算其在第一视点图像帧对应第二视点图像帧上的视差的方法包括:
步骤a’:根据该像素点所属宏块的运动向量m,确定该像素点在第二视点对应图像帧中的参考位置;
步骤b’:确定该像素点在第二视点对应图像帧中的搜索范围,搜索范围是以该像素点的参考位置为中心,至少为m*m个像素点的区域;
在一个示例中,可以将所述区域的大小设置为m*m~2m*2m,如,可以取1.5m*1.5m个像素点。
步骤c’:在第二视点对应图像帧中的所述搜索范围内搜索该像素点,计算该像素点在第一视点和第二视点上的视差;
按上述方法得到第一视点图像帧对应第二视点图像帧中各像素点的视差后,即可获得该图像帧的视差图。
视差编码器,用于对视差图进行编码得到视差码流。
码流合成器,用于将采用的视频码流与视差码流进行复合。
图5为本实施方式的立体视频的解码装置,包括:码流分离器、视频码流解码器、视差码流解码器和图像调整器,其中:
码流分离器,用于分离视频码流与视差码流。
视差码流解码器,用于对于视差码流,进行视差码流的解码,得到视差信息。
视频码流解码器,用于对视频码流进行解码,得到视频图像。
图像调整器,用于采用视差信息调整视频图像。
显然,本领域的技术人员应该明白,上述的本发明的各模块、各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们的多个模块或者步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。