一种面向多纹理多深度视频的相邻视差矢量获取方法
技术领域
本发明涉及基于3D-HEVC的视频编码技术,具体涉及一种多纹理多深度视频编码中辅助视点编码中相邻视差矢量获取方法。
背景技术
近二十年来,视频广播技术发生了重大变革,从上世纪的模拟电视到数字电视、高清数字电视,乃至现在的3D电视,视频技术随着人们生活水平的提高不断发展进步。当今世界,人们已经不再满足于传统的二维视频带来的视觉感受,具有临场感和交互性的三维立体视频逐渐成为多媒体信息产业的热门话题。MPEG的3DG工作组开始探索基于高效视频编码(HEVC,High Efficiency Video Coding)的多深度多纹理三维视频格式数据的压缩编码方法,2012年7月,VCEG和MPEG又共同成立JCT-3V小组,制定HEVC的3D视频编码扩展标准。并于2013年提出了构建基于HEVC的3D编码标准3D-HEVC。在3D-HEVC标准中采用的多深度多纹理视频是目前最有效的三维视频表现方式:多深度多纹理视频是由多台(通常拍摄3纹理3深度)相邻摄像机从不同角度对同一场景进行拍摄得到的多路具有细微视角差异的视频集合;加入多深度信息的多纹理视频可以更加细致、全面地描述三维场景信息,有利于三维视频终端在较大视角范围内,采用基于深度的虚拟视点绘制技术生成任意视角的高质量虚拟视图,并同时提供双目视差感与运动视差感,从而提供给用户身临其境的观看体验。
由于多深度多纹理视频数据量庞大,必须对其进行高效压缩编码。所以在3D-HEVC引入的视频编码标准中采用8×8到64×64的四叉树预测单元结构、4×4到32×32的变换单元尺寸、多角度的36种帧内预测模式、自适应环路滤波等多项新技术。同时针对3D-HEVC的多深度多纹理视频编码结构,引入了视点间的多参考帧,帧间预测编码模式的概念延伸为同一视点时间方向的运动预测编码模式和相邻视点方向的视差预测编码模式,使得其计算复杂度进一步更高。
以包含3纹理3深度的多纹理多深度视频为例,如图1所示,水平方向为时间方向,垂直方向为视点方向。在时间方向采用分层B帧结构来消除时间方向的冗余,在视点间方向采用I-P-P结构消除试点间冗余信息。主视点只能利用本视点内的编码帧作为参考帧,辅助视点除了利用本视点内已编码的帧作为参考帧之外还可以利用主视点的编码帧作为参考帧。对于每一个视点,包含相对应的8比特表征的深度图。在3D-HEVC中,首先对主视点纹理图进行编码,然后对主视点深度图进行编码,然后依次对辅助视点进行纹理图和深度图编码。因为深度图需要纹理图的编码信息进行编码,同时辅助视点编码需要利用主视点的编码信息进行编码,叫做纹理图编码优先编码顺序,如图2所示。
视差矢量的获取是多纹理多深度的3D-HEVC视频编码技术中的一项关键技术,在视点间运动补偿预测和视点间残差预测中都有广泛的使用。视差矢量代表同一时刻内不同的视频帧之间的差异,在现有3D-HEVC标准中,主视点中的视差矢量可对辅助视点的预测单元进行运动补偿。在纹理图编码优先编码顺序中,当对辅助视点中的预测单元进行编码时,其使用的视差矢量不能从对应的深度图中计算得到,因为其对应深度图还未输入编码单元。
传统的视差矢量获取方法是通过块估计和块匹配的方法得到,在解码端也需要相关的信息来进行解码操作。如果这些信息在码流中传输,额外的传输比特将产生。为避免这一情况的产生,现有的3D-HEVC中引入了从已编码的纹理图信息估计深度图的技术。为了得到深度图,主视点和辅助视点之间的视差信息往往被转化为深度图信息,计算出的深度图信息可以用于转化为主视点和其它辅助视点深度图信息。在此过程中所估计的深度图中最大深度值将被转换为视差矢量,此过程被称为基于深度图的视差矢量转换。
由于基于深度图的视差矢量转换过程计算量庞大,为减少计算复杂度3D-HEVC又引入了简化的视差矢量获取算法,称为基于相邻块的视差矢量获取方法。基于相邻块的视差矢量获取方法按照预设顺序对候选空间和时间编码块位置进行搜索,判断是否含有视差矢量信息来获取当前块的视差矢量,空间和时间编码块位置如图3和图4所示。如果搜索到的预测单元中使用了视差补偿预测或者视差运动矢量补偿预测技术,则表示预测单元中含有视差信息,第1个被搜索到的视差矢量被用于视点间运动补偿预测和视点间残差预测的过程。搜索预设顺序为:首先搜索时间参考帧中位置CRT和BR,然后搜索空间参考帧位置A1,B1,B0,A0和B2,最后再搜索上述空间参考帧位置中的运动矢量补偿情况。基于相邻块的视差矢量获取方法比基于深度图的视差矢量转换方法至少节省8%以上的时间。
基于相邻块的视差矢量获取方法出现后,3D-HEVC又利用基于深度图的相邻块视差矢量获取方法来改进所获取的相邻视差矢量。基于深度图的相邻块视差矢量获取方法将已编码的主视点深度图用于修正初始获取的视差矢量。在获取原始的相邻块的视差矢量后,再利用相关主视点的深度图的最大深度值来修正进而得到最终的视差矢量。
为进一步节省传输比特加速获取相邻视差矢量的过程,一些研究机构进行了基于相邻块视差矢量获取的快速算法的研究。华为海思公司提出跳过预测单元中重叠位置的搜索方法,高通公司提出以编码单元为最小算法执行单位,三星公司提出删减空间和时间参考帧中搜索位置的方法(如图5和图6所示)。此外,一些研究机构提出研究可变编码工具来改变3D-HEVC的编码顺序。
综上所述,现有的基于相邻块的视差矢量获取的改进算法都将研究重心放到了删减搜索候选位置减少搜索次数。其主要问题在于,第1个被搜索到的视差矢量即被当作最终的视差矢量,搜索停止,剩余搜索位置中仍然有可能含有可被利用甚至更好的视差矢量在还没被搜索之前就被整个获取过程中止掉了。所以本发明基于3D-HEVC标准,提出一种方法,改变第1个被搜索到的视差矢量即被当作最终视差矢量的准则,通过删除当前编码单元相邻的候选空间和时间编码单元位置中最少被搜索的位置,同时将相邻的候选空间和时间编码单元位置进行分组,将其搜索到的视差矢量按照采用率的比例组合为最终视差矢量的方法,能在保持了原有快速算法的效率前提下提升编码质量。
发明内容
本发明的目的在于,基于3D-HEVC标准,提出一种方法,改变现有基于相邻块的视差矢量获取方法中第1个被搜索到的视差矢量即被当作最终视差矢量的准则,通过删除当前编码单元相邻的候选空间和时间编码单元位置中最少被搜索的位置,同时将相邻的候选空间和时间编码单元位置进行分组,将其搜索到的视差矢量按照采用率的比例组合为最终视差矢量的方法,能在保持了原有快速算法的效率前提下提升编码质量。
本发明的特征在于,是在计算机中依次按以下步骤仿真实现的:
步骤(1),计算机初始化:
设置:按照通用测试条件对所选定序列的主视点以及当前辅助视点进行编码,编码软件采用3D-HEVC视频编码软件HTM8.0版本作为编码平台。按照通用测试条件规定的纹理图和对应深度图量化参数分为第1组(40,45),第2组(35,42),第3组(30,39),第4组(25,34),其中括号中前面的数字代表纹理图量化参数,后面为深度图量化参数,共4组。
以YUV为格式的3D-HEVC国际标准测试视频序列包括:Newspaper_CC(300帧)、GTfly(250帧)、Undo dancer(250帧),Poznan_Hall2(200帧),Poznan_Street(250帧),Kendo(300帧),Balloons(300帧),每个测试序列包含3个纹理序列,以及对应3个深度序列。各个测试序列进行编码时输入编码器的3个视点顺序分别为:4-2-6,5-9-1,5-1-9,6-7-5,4-5-3,3-1-5,3-1-5,在对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行。例如,对Newspaper_CC序列进行编码时,按照通用测试条件纹理图和对应深度图量化参数组(40,45)初始化后,在计算机上运行的HTM编码软件首先读取第1帧编号为4的主视点序列纹理图进行编码,再读取第1帧编号为4的主视点深度图进行编码,主视点第1帧编码完成后,再读取第1帧编号为2的辅助视点序列纹理图进行编码,完成后读取第1帧编号为2的辅助视点序列深度图进行编码,最后读取第1帧编号为6的辅助视点序列纹理图进行编码,完成后读取第1帧编号为6的辅助视点深度图进行编码。由此完成3个视点序列的第1帧编码,依次读取到300帧完成Newspaper_CC序列在量化参数组(40,45)下的编码。然后按照通用测试条件纹理图和对应深度图量化参数组(35,42)初始化后,在计算机上运行的HTM编码软件首先读取第1帧编号为4的主视点序列纹理图进行编码,再读取第1帧编号为4的主视点深度图进行编码,主视点第1帧编码完成后,再读取第1帧编号为2的辅助视点序列纹理图进行编码,完成后读取第1帧编号为2的辅助视点序列深度图进行编码,最后读取第1帧编号为6的辅助视点序列纹理图进行编码,完成后读取第1帧编号为6的辅助视点深度图进行编码。由此完成3个视点序列的第1帧编码,依次读取到300帧完成Newspaper_CC序列在量化参数组(35,42)下的编码。然后依次完成在Newspaper_CC序列在量化参数组(30,39)和(25,34)下的编码。又例如在对GT fly序列进行编码时,按照通用测试条件纹理图和对应深度图量化参数组(40,45)初始化后,在计算机上运行的HTM编码软件首先读取第1帧编号为5的主视点序列纹理图进行编码,再读取第1帧编号为5的主视点深度图进行编码,主视点第1帧编码完成后,再读取第1帧编号为9的辅助视点序列纹理图进行编码,完成后读取第1帧编号为9的辅助视点序列深度图进行编码,最后读取第1帧编号为1的辅助视点序列纹理图进行编码,完成后读取第1帧编号为1的辅助视点深度图进行编码。由此完成3个视点序列的第1帧编码,依次读取到250帧完成GT fly序列在量化参数组(40,45)下的编码。然后按照通用测试条件纹理图和对应深度图量化参数组(35,42)初始化后,在计算机上运行的HTM编码软件首先读取第1帧编号为5的主视点序列纹理图进行编码,再读取第1帧编号为5的主视点深度图进行编码,主视点第1帧编码完成后,再读取第1帧编号为9的辅助视点序列纹理图进行编码,完成后读取第1帧编号为9的辅助视点序列深度图进行编码,最后读取第1帧编号为1的辅助视点序列纹理图进行编码,完成后读取第1帧编号为1的辅助视点深度图进行编码。由此完成3个视点序列的第1帧编码,依次读取到250帧完成GT fly序列在量化参数组(35,42)下的编码。然后依次完成在GT fly序列在量化参数组(30,39)和(25,34)下的编码;
步骤(2),利用所述的视频编码软件HTM8.0对所述的3D-HEVC国际标准测试视频序列Newspaper_CC、GT fly、Undo dancer,Poznan_Hall2,Poznan_Street,Kendo,Balloons,分别选取前n帧(n为大于等于40并小于等于60的自然数)的所述主视点和辅助视点进行编码,对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行。在编码前n帧时,采用对当前编码单元相邻的候选空间和时间编码单元位置进行全位置搜索方法,并同时提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息,包括:对相邻的候选时间编码单元位置CTR和BR和对相邻的候选空间编码单元位置A1,B1,B0,A0,B2是否含有视差矢量或者运动补偿预测视差矢量的检测,以及通过对当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量或者运动补偿预测视差矢量信息指向的视差参考帧进行差值平方和(SSD,Sum of Squared Difference)计算,以差值平方和信息进行当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量采用率统计。例如,对Newspaper_CC序列在量化参数组(40,45)下前n帧(n取40)进行编码时,在计算机上运行的HTM编码软件,在编码其辅助视点时首先读取第1帧的辅助视点纹理图,再读取当前纹理图第1个编码块,搜索第1个编码块时间方向参考帧中对应的编码单元位置CTR和BR中检测是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有运动补偿预测视差矢量,例如在第1个编码块中找到A0和A1都含有视差矢量,则由A0位置和A1位置视差矢量分别找到其在视差参考帧中的对应编码单元分别进行差值平方和计算,若A1位置差值平方和为最小,则记为A1位置采用1次。依次读取第1帧所有编码块完成第1帧辅助视点纹理图采用次数统计,并按照纹理图编码完成后再进行深度图编码的顺序读取前40帧完成序列Newspaper_CC在量化参数组(40,45)的位置的次数统计。然后对序列Newspaper_CC在量化参数组(35,42)下前n帧(n取40)进行编码,在计算机上运行的HTM编码软件,在编码其辅助视点时首先读取第1帧的辅助视点纹理图,再读取当前纹理图第1个编码块,搜索第1个编码块时间方向参考帧中对应的编码单元位置CTR和BR中检测是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有运动补偿预测视差矢量,例如在第1个编码块中找到A0和A1都含有视差矢量,则由A0位置和A1位置视差矢量分别找到其在视差参考帧中的对应编码单元分别进行差值平方和计算,若A1位置差值平方和为最小,则记为A1位置采用1次。依次读取第1帧所有编码块完成第1帧的辅助视点纹理图采用次数统计,并按照纹理图编码完成后再进行深度图编码的顺序读取前40帧完成序列Newspaper_CC在量化参数组(35,42)的位置的次数统计。然后依次完成在Newspaper_CC序列在量化参数组(30,39)和(25,34)下的次数统计,最后由各位置采用次数除以总次数得到Newspaper_CC序列各位置采用率统计。又例如,对GT fly序列在量化参数组(40,45)下前n帧(n取40)进行编码时,在计算机上运行的HTM编码软件,在编码其辅助视点时首先读取第1帧的辅助视点纹理图,再读取当前纹理图第1个编码块,搜索第1个编码块时间方向参考帧中对应的编码单元位置CTR和BR中检测是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有运动补偿预测视差矢量,例如在第1个编码块中找到A0和A1都含有视差矢量,则由A0位置和A1位置视差矢量分别找到其在视差参考帧中的对应编码单元分别进行差值平方和计算,若A1位置差值平方和为最小,则记为A1位置采用1次。依次读取第1帧所有编码块完成第1帧的辅助视点纹理图采用次数统计,并按照纹理图编码完成后再进行深度图编码的顺序读取前40帧完成序列GT fly在量化参数组(40,45)的位置的次数统计。然后对序列GT fly在量化参数组(35,42)下前n帧(n取40)进行编码,在计算机上运行的HTM编码软件,在编码其辅助视点时首先读取第1帧的辅助视点纹理图,再读取当前纹理图第1个编码块,搜索第1个编码块时间方向参考帧中对应的编码单元位置CTR和BR中检测是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有视差矢量,再搜索空间方向参考帧中编码单元位置A1,B1,B0,A0,B2中是否含有运动补偿预测视差矢量,例如在第1个编码块中找到A0和A1都含有视差矢量,则由A0位置和A1位置视差矢量分别找到其在视差参考帧中的对应编码单元分别进行差值平方和计算,若A1位置差值平方和为最小,则记为A1位置采用1次。依次读取第1帧所有编码块完成第1帧的辅助视点纹理图采用次数统计,并按照纹理图编码完成后再进行深度图编码的顺序读取前40帧完成序列GT fly在量化参数组(35,42)的位置的次数统计。然后依次完成在GT fly序列在量化参数组(30,39)和(25,34)下的次数统计,最后由各位置采用次数除以总次数得到GT fly序列各位置采用率统计。其中各位置采用率统计结果如表1和表2所示;
表1候选空间单元位置采用率统计
表2候选时间编码单元位置采用率统计
步骤(3),对所述多纹理多深度视频中除主视点以外的所有辅助视点的编码帧的编码单元按照对当前编码单元相邻的候选空间和时间编码单元位置分组搜索并依采用率的比例组合为最终视差矢量方法进行相邻视差矢量获取,其步骤如下:
步骤(3.1),利用步骤(2)得到的当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息为分组搜索提供依据:首先针对相邻的候选时间和空间编码单元位置进行删除操作,删除视差矢量采用率最小的编码单元位置。例如,在Newspaper_CC序列中最后得到的各位置采用率统计结果为:空间方向参考帧中编码单元位置A1,B1,B0,A0,B2采用率为65.7%,0.9%,3.0%,30.1%,0.2%,时间方向参考帧中对应的编码单元位置CTR和BR采用率为76.6%,23.4%。最后空间方向参考帧中编码单元位置B2被删除,时间方向参考帧中对应的编码单元位置BR被删除。又例如,在GT fly序列中最后的各位置采用率统计为:空间方向参考帧中编码单元位置A1,B1,B0,A0,B2采用率为66.7%,2.1%,6.0%,24.2%,1.0%,时间方向参考帧中对应的编码单元位置CTR和BR采用率为78.5%,21.5%。最后空间方向参考帧中编码单元位置B2被删除,时间方向参考帧中对应的编码单元位置BR被删除。其余测试序列各位置根据采用率统计结果得出,空间方向参考帧中编码单元位置B2被删除,时间方向参考帧中对应的编码单元位置BR被删除;
步骤(3.2),针对删除之后剩余的相邻的候选空间和时间编码单元位置进行分组,通过步骤(3.1)得到参考搜索位置包含空间位置的A1,B1,B0,和A0以及时间参考位置的CRT,如图7和图8所示。分组操作针对邻近位置的编码单元,其中B1和B0相邻,A1和A0相邻,则B1和相邻的B0分为一组,A1和相邻的A0分为另一组,例如:在Newspaper_CC序列中空间方向参考帧中编码单元位置B2被删除,则候选空间编码单元位置A1和B1编码单元位置和其相邻的A0和B0编码单元位置形成组。又例如:在GT fly序列中空间方向参考帧中编码单元位置B2被删除,则候选空间编码单元位置A1和B1编码单元位置和其相邻的A0和B0编码单元位置形成组。其余序列空间方向参考帧中编码单元位置B2被删除,则候选空间编码单元位置A1和B1编码单元位置和其相邻的A0和B0编码单元位置形成组。其中A1和A0以及B1和B0分组后的结合比例如表3所示;
表3候选空间编码单元位置分组结合率
步骤(3.3),利用步骤(3.2)得到的当前编码单元对相邻的候选空间和时间编码单元搜索位置和分组信息进行相邻视差矢量的搜索和最终视差矢量的合成计算操作,其步骤如下:
步骤(3.3.1),设置获取视差矢量标志变量,视差矢量标志变量表征视差矢量是否获取,已获取则为1,未获取则为0值。视差矢量设定为初始的(0,0),并按照在步骤(1)所述对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行;
步骤(3.3.2),在时间方向参考帧的相邻视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则检测参考帧对应位置的CTR位置,如果视差矢量可以检测得到,则视差矢量标志变量设为1;
步骤(3.3.3),进行空间位置的视差补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块视差补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到视差补偿预测视差矢量,再继续搜索A0,判断是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将A1中的视差补偿预测视差矢量和A0中的视差补偿预测视差矢量基于步骤(3.2)中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,例如:A1中的视差补偿预测视差矢量为(5,4),A0视差补偿预测视差矢量为(4,4),则按照(5,4)乘以A1采用率68.6%,(4,4)乘以A0采用率31.4%再相加得到新的A1位置视差矢量(5,4)并采用(其中5×68.6%+4×31.4%四舍五入等于5,4×68.6%+4×31.4%四舍五入等于4),若A0未找到视差补偿预测视差矢量,则采用A1中的视差补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到视差补偿预测视差矢量,则跳过A0直接检测B1位置的视差补偿预测视差矢量,若B1中找到视差补偿预测视差矢量,则判断B0位置是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将B1中视差补偿预测视差矢量和B0中的视差补偿预测视差矢量以基于步骤(3.2)中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1,例如:B1中的视差补偿预测视差矢量为(8,9),B0视差补偿预测视差矢量为(7,8),则按照(8,9)乘以B1采用率23.1%,(7,8)乘以B0采用率76.9%再相加得到新的B1位置视差矢量(7,8)并采用(其中8×23.1%+7×76.9%四舍五入等于7,9×23.1%+8×76.9%四舍五入等于8)。若组2中B1未找到视差补偿预测视差矢量则跳过步骤(3.3.3);
步骤(3.3.4),进行空间位置的运动补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块运动补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到运动补偿预测视差矢量,再继续搜索A0,判断是否找到运动补偿预测视差矢量,若运动补偿预测视差矢量找到则将A1中的运动补偿预测视差矢量和A0中的运动补偿预测视差矢量基于步骤(3.2)中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,例如:A1中的运动补偿预测视差矢量为(5,4),A0运动补偿预测视差矢量为(4,4),则按照(5,4)乘以A1采用率68.6%,(4,4)乘以A0采用率31.4%再相加得到新的A1位置视差矢量(5,4)并采用(其中5×68.6%+4×31.4%四舍五入等于5,4×68.6%+4×31.4%四舍五入等于4),若A0未找到运动补偿预测视差矢量,则采用A1中的运动补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到运动补偿预测视差矢量,则跳过A0直接检测B1位置的运动补偿预测视差矢量,若B1中找到运动补偿预测视差矢量,则判断B0位置是否找到运动补偿预测视差矢量,若视运动补偿预测视差矢量找到则将B1中运动补偿预测视差矢量和B0中的运动补偿预测视差矢量以基于步骤(3.2)中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1,例如:B1中的运动补偿预测视差矢量为(8,9),B0运动补偿预测视差矢量为(7,8),则按照(8,9)乘以B1采用率23.1%,(7,8)乘以B0采用率76.9%再相加得到新的B1位置视差矢量(7,8)并采用(其中8×23.1%+7×76.9%四舍五入等于7,9×23.1%+8×76.9%四舍五入等于8)。若组2中B1未找到运动补偿预测视差矢量则跳过步骤(3.3.4);
步骤(3.3.5),判断深度优化标志,若标志位为1采用深度优化操作。深度优化操作(参考文献1中DoNBDV定义)为已有技术。首先将面找的最终视差矢量其指向的纹理块,例如最终视差矢量为(3,4),当前纹理块的位置为(1,2),则其指向的纹理块位置为(4,6),(3+1为4,4+2为6)。将最终视差矢量指向的纹理块对应的深度块,搜索深度块4个角的像素位置的深度值选取其最大值。最后将这个最大值转换为深度优化后的视差矢量,转换公式为:
其中为深度优化后的视差矢量,f为摄像机焦距值,l为基线距离,dmax为搜索深度块4个角的像素位置的最大深度值,和为离摄像机最近和最远的位置坐标(其中f,l和都是摄像机参数表中的已有固定参数值);
本发明提出一种方法,改变了第1个被搜索到的视差矢量即被当作最终视差矢量的准则,改变了原有方法通过删减搜索候选位置减少搜索次数的方式给编码质量带来的不足,能在保持了现有快速算法的效率前提下(解码时间缩短为原有97.1%,编码和虚拟视点合成时间不变)至少提升编码质量0.05%,对测试序列对比现有快速算法实验结果如表4所示。
表4本方面方法的对测试序列对比HTM8.0版本中快速算法实验结果统计表
附图说明
图1是3D-HEVC的预测编码结构图;
图2是3D-HEVC中纹理图优先的编码顺序图;
图3是基于相邻块的视差矢量获取方法的候选空间编码块位置图;
图4是基于相邻块的视差矢量获取方法的候选时间编码块位置图;
图5是基于删减方法的候选空间编码块位置图;
图6是基于删减方法的候选时间编码块位置图;
图7是本发明方法的候选空间编码块位置图;
图8是本发明方法的候选时间编码块位置图;
图9是本发明方法的流程图;
具体实施方式
为解决上述技术问题,本发明采取的技术方案为:
一种多纹理多深度视频编码中辅助视点编码中相邻视差矢量获取方法,首先从当前编码视点中已编码的编码单元中提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息;然后通过删除当前编码单元相邻的候选空间和时间编码单元位置中最少被搜索的位置,将相邻的候选空间和时间编码单元位置进行分组,将其搜索到的视差矢量按照采用率的比例组合为最终视差矢量。改变了第1个被搜索到的视差矢量即被当作最终视差矢量的准则,改变了原有方法通过删减搜索候选位置减少搜索次数的方式给编码质量带来的不足,能在保持了原有快速算法的效率前提下至少提升编码质量。
本发明中采用的提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息具体步骤如下:
1.1、利用所述的视频编码软件HTM8.0对所述的3D-HEVC国际标准测试视频序列Newspaper_CC、GT fly、Undo dancer,Poznan_Hall2,Poznan_Street,Kendo,Balloons,分别选取前n帧(n为大于等于40并小于等于60的自然数)的所述主视点和辅助视点进行编码,对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行;
在编码前n帧时,采用对当前编码单元相邻的候选空间和时间编码单元位置进行全位置搜索方法,并同时提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息,包括:对相邻的候选时间编码单元位置CTR和BR和对相邻的候选空间编码单元位置A1,B1,B0,A0,B2是否含有视差矢量或者运动补偿预测视差矢量的检测,以及通过对当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量或者运动补偿预测视差矢量信息指向的视差参考帧进行差值平方和(SSD,Sum of SquaredDifference)计算,以差值平方和信息进行当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量采用率统计。最后各位置采用率统计结果如表1和表2所示;
在本发明所提供的多纹理多深度视频编码中辅助视点编码中相邻视差矢量获取方法中,所述通过删除当前编码单元相邻的候选空间和时间编码单元位置中最少被搜索的位置,将相邻的候选空间和时间编码单元位置进行分组,包括下述步骤:
2.1、利用得到的当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息为分组搜索提供依据:首先针对相邻的候选时间和空间编码单元位置进行删除操作,删除视差矢量采用率最小的编码单元位置。其中各位置采用率统计如表1和表2所示;
2.2、其次针对删除之后剩余的相邻的候选空间和时间编码单元位置进行分组,通过步骤(2.1)得到参考搜索位置包含空间位置的A1,B1,B0,和A0以及时间参考位置的CRT,如图7和图8所示。分组操作针对邻近位置的编码单元,其中B1和B0相邻,A1和A0相邻,则B1和相邻的B0分为一组,A1和相邻的A0分为另一组。其中A1和A0以及B1和B0分组后的结合比例如表3所示;
本发明所提供的多纹理多深度视频编码中辅助视点编码中相邻视差矢量获取方法中,所述将当前编码单元对相邻的候选空间和时间编码单元搜索位置和分组信息进行相邻视差矢量的搜索和最终视差矢量的合成操作,包括下述步骤:
3.1、设置获取视差矢量标志变量,视差矢量标志变量表征视差矢量是否获取,已获取则为1,未获取则为0值。视差矢量设定为初始的(0,0),并按照在步骤(1.1)所述对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行;
3.2、在时间方向参考帧的相邻视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则检测参考帧对应位置的CTR位置,如果视差矢量可以检测得到,则视差矢量标志变量设为1;
3.3、进行空间位置的视差补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块视差补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到视差补偿预测视差矢量,再继续搜索A0,判断是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将A1中的视差补偿预测视差矢量和A0中的视差补偿预测视差矢量基于步骤(2.2)中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,若A0未找到视差补偿预测视差矢量,则采用A1中的视差补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到视差补偿预测视差矢量,则跳过A0直接检测B1位置的视差补偿预测视差矢量,若B1中找到视差补偿预测视差矢量,则判断B0位置是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将B1中视差补偿预测视差矢量和B0中的视差补偿预测视差矢量以基于步骤(2.2)中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1。若组2中B1未找到视差补偿预测视差矢量则跳过步骤(3.3);
3.4、进行空间位置的运动补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块运动补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到运动补偿预测视差矢量,再继续搜索A0,判断是否找到运动补偿预测视差矢量,若运动补偿预测视差矢量找到则将A1中的运动补偿预测视差矢量和A0中的运动补偿预测视差矢量基于步骤(2.2)中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,若A0未找到运动补偿预测视差矢量,则采用A1中的运动补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到运动补偿预测视差矢量,则跳过A0直接检测B1位置的运动补偿预测视差矢量,若B1中找到运动补偿预测视差矢量,则判断B0位置是否找到运动补偿预测视差矢量,若视运动补偿预测视差矢量找到则将B1中运动补偿预测视差矢量和B0中的运动补偿预测视差矢量以基于步骤(2.2)中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1。若组2中B1未找到运动补偿预测视差矢量则跳过步骤(3.4);
3.5、判断深度优化标志,若标志位为1采用深度优化操作。深度优化操作(参考文献1中DoNBDV定义)为已有技术。首先将面找的最终视差矢量其指向的纹理块。将最终视差矢量指向的纹理块对应的深度块,搜索深度块4个角的像素位置的深度值选取其最大值。最后将这个最大值转换为深度优化后的视差矢量,转换公式为:
其中为深度优化后的视差矢量,f为摄像机焦距值,l为基线距离,dmax为搜索深度块4个角的像素位置的最大深度值,和为离摄像机最近和最远的位置坐标(其中f,l和都是摄像机参数表中的已有固定参数值);
在实际的使用中,首先读入多纹理多深度3D-HEVC视频序列,输入的视频序列需为YUV格式,计算机读入视频数据后,首先利用HTM8.0多纹理多深度视频3D-HEVC编码软件对序列的主视点和辅助视点都进行编码,并在编码的同时提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息,将相邻的候选空间和时间编码单元位置进行分组,然后调用本发明中提到的方法来完成对多纹理多深度视频具体的编码工作。
本发明针对多纹理多深度视频辅助视点的所有帧的宏块,设计辅助视点编码中相邻视差矢量获取方法。图6是本发明方法流程图,其具体实施步骤如下:
实验中使用的视频序列为多纹理图多深度国际标准测试视频序列Newspaper_CC、GTfly、Undo dancer,Poznan_Hall2,Poznan_Street,Kendo,Balloons序列,分别选取前n帧(n为大于等于40并小于等于60的自然数,例如n取40)的所述主视点和辅助视点进行编码。首先利用HTM8.0软件对当前编码单元相邻的候选空间和时间编码单元位置进行全位置搜索方法以得到当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息,然后利用视差矢量采用率信息删除当前编码单元相邻的候选空间和时间编码单元位置中最少被搜索的位置,将相邻的候选空间和时间编码单元位置进行分组,将其搜索到的视差矢量按照采用率的比例组合为最终视差矢量,最终采用本发明提出的方法对剩余序列的辅助视点相邻视差矢量进行获取,改变了第1个被搜索到的视差矢量即被当作最终视差矢量的准则,改变了原有方法通过删减搜索候选位置减少搜索次数的方式给编码质量带来的不足,能在保持了原有快速算法的效率前提下至少提升编码质量。
具体实施中,在计算机中完成以下程序:
第一步:利用所述的视频编码软件HTM8.0对所述的3D-HEVC国际标准测试视频序列Newspaper_CC、GT fly、Undo dancer,Poznan_Hall2,Poznan_Street,Kendo,Balloons,分别选取前n帧(n为大于等于40并小于等于60的自然数)的所述主视点和辅助视点进行编码,对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行;
在编码前n帧时,采用对当前编码单元相邻的候选空间和时间编码单元位置进行全位置搜索方法,并同时提取当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息,包括:对相邻的候选时间编码单元位置CTR和BR和对相邻的候选空间编码单元位置A1,B1,B0,A0,B2是否含有视差矢量或者运动补偿预测视差矢量的检测,以及通过对当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量或者运动补偿预测视差矢量信息指向的视差参考帧进行差值平方和(SSD,Sum of SquaredDifference)计算,以差值平方和信息进行当前编码单元所有相邻的候选空间和时间编码单元位置找到的视差矢量采用率统计。最后各位置采用率统计结果如表1和表2所示;
第二步:利用上一步得到的当前编码单元相邻的候选空间和时间编码单元位置的视差矢量采用率的信息为分组搜索提供依据:首先针对相邻的候选时间和空间编码单元位置进行删除操作,删除视差矢量采用率最小的编码单元位置。其中各位置采用率统计如表1和表2所示;
第三步:针对上一步删除之后剩余的相邻的候选空间和时间编码单元位置进行分组,通过第二步得到参考搜索位置包含空间位置的A1,B1,B0,和A0以及时间参考位置的CRT,如图7和图8所示。分组操作针对邻近位置的编码单元,其中B1和B0相邻,A1和A0相邻,则B1和相邻的B0分为一组,A1和相邻的A0分为另一组。其中A1和A0以及B1和B0分组后的结合比例如表3所示;
第四步:设置获取视差矢量标志变量,视差矢量标志变量表征视差矢量是否获取,已获取则为1,未获取则为0值。视差矢量设定为初始的(0,0),并按照在第一步所述对每个视点进行编码时采用纹理图编码完成后再进行深度图编码的顺序进行;
第五步:在时间方向参考帧的相邻视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则检测参考帧对应位置的CTR位置,如果视差矢量可以检测得到,则视差矢量标志变量设为1;
第六步:进行空间位置的视差补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块视差补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到视差补偿预测视差矢量,再继续搜索A0,判断是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将A1中的视差补偿预测视差矢量和A0中的视差补偿预测视差矢量基第三步中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,若A0未找到视差补偿预测视差矢量,则采用A1中的视差补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到视差补偿预测视差矢量,则跳过A0直接检测B1位置的视差补偿预测视差矢量,若B1中找到视差补偿预测视差矢量,则判断B0位置是否找到视差补偿预测视差矢量,若视差补偿预测视差矢量找到则将B1中视差补偿预测视差矢量和B0中的视差补偿预测视差矢量以基于第三步中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1。若组2中B1未找到视差补偿预测视差矢量则跳过本步骤;
第七步:进行空间位置的运动补偿预测视差矢量检测,将A1和A0的分组标记为组1,B1和B0的组标记为组2。空间方向帧内相邻块运动补偿预测视差矢量获取方式为,检测视差矢量标志变量是否为0,为0则判断组1中A1,若A1中找到运动补偿预测视差矢量,再继续搜索A0,判断是否找到运动补偿预测视差矢量,若运动补偿预测视差矢量找到则将A1中的运动补偿预测视差矢量和A0中的运动补偿预测视差矢量基于第三步中分组结合比例表(表3)结合为A1位置视差矢量并采用,标志变量设置为1,若A0未找到运动补偿预测视差矢量,则采用A1中的运动补偿预测视差矢量,寻找程序终止跳出,后续位置不再遍历。若A1中未找到运动补偿预测视差矢量,则跳过A0直接检测B1位置的运动补偿预测视差矢量,若B1中找到运动补偿预测视差矢量,则判断B0位置是否找到运动补偿预测视差矢量,若视运动补偿预测视差矢量找到则将B1中运动补偿预测视差矢量和B0中的运动补偿预测视差矢量以基于第三步中分组结合比例表(表3)结合为B2位置的视差矢量并采用,视差矢量标志变量设置为1。若组2中B1未找到运动补偿预测视差矢量则跳过本步骤;
第八步:判断深度优化标志,若标志位为1采用深度优化操作。深度优化操作(参考文献1中DoNBDV定义)为已有技术。首先将面找的最终视差矢量其指向的纹理块。将最终视差矢量指向的纹理块对应的深度块,搜索深度块4个角的像素位置的深度值选取其最大值。最后将这个最大值转换为深度优化后的视差矢量,转换公式为:
其中为深度优化后的视差矢量,f为摄像机焦距值,l为基线距离,dmax为搜索深度块4个角的像素位置的最大深度值,和为离摄像机最近和最远的位置坐标(其中f,l和都是摄像机参数表中的已有固定参数值);
本发明改变了第1个被搜索到的视差矢量即被当作最终视差矢量的准则,改变了原有方法通过删减搜索候选位置减少搜索次数的方式给编码质量带来的不足,能在保持了原有快速算法的效率前提下至少提升编码质量,对测试序列对比现有快速算法实验结果如表4所示。