CN104768001B - 一种视差矢量导出方法及装置 - Google Patents

一种视差矢量导出方法及装置 Download PDF

Info

Publication number
CN104768001B
CN104768001B CN201410005559.3A CN201410005559A CN104768001B CN 104768001 B CN104768001 B CN 104768001B CN 201410005559 A CN201410005559 A CN 201410005559A CN 104768001 B CN104768001 B CN 104768001B
Authority
CN
China
Prior art keywords
difference vector
parallax
value
threshold
vertical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410005559.3A
Other languages
English (en)
Other versions
CN104768001A (zh
Inventor
虞露
吕鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201410005559.3A priority Critical patent/CN104768001B/zh
Publication of CN104768001A publication Critical patent/CN104768001A/zh
Application granted granted Critical
Publication of CN104768001B publication Critical patent/CN104768001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视差矢量导出方法,包括获取下一个相邻块候选视差矢量,并判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。本发明解决了现有视差矢量获取方法中精度不高,且参考视点图像范围较大的问题。

Description

一种视差矢量导出方法及装置
技术领域
本发明涉及多媒体通信领域,具体而言,涉及一种视差矢量导出方法及其对应的装置。
背景技术
●视频编码分层结构
采用H.264/AVC以及最新的HEVC等编码标准时,一帧图像可以划分为多个条带(slice),对每个条带分别进行编码和解码。编码条带产生条带码流,条带码流中同时包含了这个条带的一些编码参数,如该条带所引用的参数集序号等。在H.264/AVC中的分层结构中,使用了图像参数集和序列参数集两级参数集来描述视频序列的一些参数。序列参数集可以被图像参数集引用,图像参数集可以被条带引用,通过此机制,条带可以根据其含有的图像参数集序号,找到对应序号的图像参数集,进而找到其对应的图像参数集对应的序列参数集,从图像参数集或者序列参数集中获取参数。例如,条带能够根据其含有的图像参数集序号,在对应序号的图像参数集中获取该条带的帧序号等信息;条带能够根据其对应的图像参数集所含有的序列参数集序号,在对应序号的序列参数集中获取该条带所使用的编码档次(Profile)和编码级别(Level)等参数。在HEVC编码标准中,新加入了视频参数集的概念,视频参数集可以被序列参数集引用,序列参数集可以被图像参数集引用,图像参数集可以被条带引用,通过此机制,条带可以根据其含有的图像参数集序号,逐层向上引用,从图像参数集、序列参数集或者视频参数集中获取参数。
●基于块的视频编解码
现有视频编解码技术中,基于块的视频编解码是最常见的。
在基于块的视频编解码技术中,视频图像或者是图像的每一个条带被分为若干个矩形图像块(又称为编码单元),对于每一个图像块分别进行编解码。编解码当前块时,可以使用当前块的相邻块的像素信息或者运动信息进行预测编解码。所谓的相邻块既可以指空域上的相邻块,即同一帧内部的相邻块,如当前块左上角的图像块、上侧图像块、右上角图像块、左侧图像块、左下角图像块等,也可以是时域上的相邻块,例如时域上参考帧中对应坐标位置的块。
●三维视频编解码
三维视频编解码一般包含多个视点的纹理图像和深度图像。其中深度图像是三维视频编解码中的一类图像,深度图像中的每个像素值表示的是对应位置的物体距离摄像机的远近,利用深度图像,可以进行虚拟视点合成等后处理工作。
对于多个视点,有基础视点和非基础视点的区分,其中基础视点无法使用其他视点的信息进行预测编码,而非基础视点可以使用其他视点的信息进行预测编码,例如视点间预测等。
真实世界中的同一个点,在不同视点中的像素坐标值可能是不同的。不同视点中的像素坐标值之差称为视差,视差一般包含两个分量,即水平方向视差值和垂直方向视差值。视差值可以为正数也可以为负数,视差值的符号不同对应的视差方向也不同,这需要事先约定好。比如,可以事先做出以下的约定:对于某个像素点来说,视点B相对于视点A的水平方向视差为负数说明该像素点在视点B中的位置比在视点A中的位置靠左。当然也可以反过来,即约定视点B相对于视点A的水平方向视差为负数说明该像素点在视点B中的位置比在视点A中的位置靠右。对于垂直方向视差来说也是同样的道理。
●修剪操作
修剪(Clip)操作是指:在阈值范围限制的条件下,将一个数值的范围限定在该阈值范围内,若该数值超过了阈值上限,则令该数值等于阈值上限,若该数值超过了阈值下限,则令该数值等于阈值下限,否认保持该数值不变。使用公式表示即:
A=max(min(A,Amax),Amin),其中,max和min分别为取最大值和最小值操作,Amax和Amin分别代表阈值上限和阈值下限。
●相邻块视差矢量
对三维视频的非基础纹理视点进行编码时,可以使用深度图像的信息来辅助纹理图像的编码,以提高编码性能。目前已经有一些使用这一思想的纹理图像编码工具,比如虚拟视点生成预测(View Synthesis Prediction,VSP)、视点间运动预测(Inter-ViewMotion Prediction,IVMP)、增强残差预测(Advanced Residual Prediction,ARP)等,利用了深度图像的信息去辅助纹理图像的编码,提高了纹理图像的编码效率。这些技术的共同特点是:在编码非基础视点纹理图像时,需要一个指向参考视点纹理图像的视差矢量。这个视差矢量的物理意义是三维世界中的同一个点在两个视点之间的像素坐标的差值,包含水平方向视差值和垂直方向视差值,利用这个视差矢量,就可以去参考视点纹理图像和深度图像中找到对应的块,进而可以利用对应块的像素信息和运动信息来进行像素预测和运动预测。
相邻块视差矢量方法是用于估计上述视差矢量的一种方法,其工作原理可以这样理解:当前编码块与其相邻块之间有一定的相关性,例如有可能属于同一个客观物体,因此当前编码块的视差矢量与其相邻块的视差矢量也有一定的相关性,显然可以使用相邻的已编码块的视差矢量来预测当前编码块的视差矢量。值得注意的是,不是所有的相邻已编码块都会包含视差矢量,只有那些使用了视点间预测、虚拟视生成预测或者视点间运动预测等预测模式的相邻块才会包含视差矢量,而使用帧内预测、普通时域预测等预测模式的相邻块是不会包含视差矢量的。
由于当前编码块有很多相邻块,例如同一帧内部的空域相邻块以及时域参考帧对应位置的时域相邻块,并且空域相邻块可以有多个(左上方、上方、右上方、左方等相邻块),时域参考帧也可以有多个,因此时域参考块也可以有多个。多个相邻块就可能包含多个视差矢量,这些视差矢量可以称为“相邻块候选视差矢量”,在进行编码和解码时,都需要在多个相邻块候选视差矢量中导出一个视差矢量。目前的导出方法如下:
(1)按照某个顺序,遍历所有相邻块,若某个相邻块包含视差矢量,则使用该视差矢量作为当前块的最终导出视差矢量,并终止导出过程。
(2)若步骤(1)中找不到视差矢量,则将当前编码块的最终导出视差矢量设置为默认视差矢量,目前默认视差矢量为零矢量,即默认水平方向视差值和默认垂直方向视差值均为0。
这里需要注意的是,步骤(1)中的顺序一般是编解码端事先约定好的顺序,例如约定好先获取时域相邻块,再按照左侧、上侧、左上侧的顺序获取空域相邻块。这个顺序只是一个例子,还可以有其他不同的顺序,只需要编解码端事先约定好即可。
在上述步骤中,按照某个顺序,依次获取还未检查过的相邻块包含的视差矢量的操作可以称为“获取下一个相邻块候选视差矢量”,这个操作可能能够获取到一个相邻块候选视差矢量,也可能无法获取到。当无法获取到的时候,证明没有任何一个还没有查找过的相邻块包含视差矢量。因此,上述步骤也可以等效描述为:获取下一个相邻块候选视差矢量,若可以获取到,则使用该视差矢量作为当前块的最终导出视差矢量,并终止导出过程;若获取不到,则将当前编码块的最终导出视差矢量设置为默认视差矢量。
使用目前的方法导出的最终视差矢量并不准确,主要原因有以下两个方面:
一方面,相邻块的视差矢量有可能是由视点间的运动搜索得到的,即在编码相邻块的时候,在参考视点纹理图像中搜索到一个和相邻块的原始图像块最为接近的图像块,参考视点中的这个由运动搜索得到的图像块和相邻块的像素坐标之差即为该相邻块包含的相邻块候选视差矢量。由于运动搜索的评价准则一般为两个图像块之间的相似程度,两个图像块相似并不代表这两个图像块一定对应着三维世界的同一个部分,尤其是在视点间有遮挡等情况的时候。考虑到视差矢量的物理意义是三维世界中的同一个点在两个视点之间的像素坐标的差值,因此运动搜索得到的视差矢量的可信度并不高。
另一方面,在没有相邻块候选视差矢量的时候,选择默认视差矢量的机制也不够完善,目前将默认视差矢量设置为零矢量是一种比较简单的方法,但是该方法不够准确。
此外,当前的导出方法中,对于最终视差矢量的范围没有限制。由于最终视差矢量会被用来获取参考视点的图像内容,如果视差矢量范围没有限制,那么整个参考视点的图像都有可能被获取到,这样在硬件实现的时候,就需要较多的带宽或者是硬件存储空间来完成这件事情。如果对视差矢量范围进行一个限制,那么就需要一套合理的机制来决定限制范围,否则会引起编码性能的下降。
发明内容
本发明针对现有技术的不足,提出了一种视差矢量导出方法及装置。
本发明通过分析视差矢量的原理和特性,发现当前视点相对于其参考视点的视差一定在一个视差矢量阈值范围内,可以利用这个特性提高导出的视差矢量的准确程度。
本发明的主要思想是,通过判断相邻块候选视差矢量是否在所述的水平视差阈值范围内,去除掉不在水平视差阈值范围内的相邻块候选视差矢量,同时利用所述水平视差阈值范围,构建更加准确的默认视差矢量,使得最终导出视差矢量更加准确,进而提高视频编码效率。
本发明的第一目的在于提供一种视差矢量导出方法,其包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则转到步骤3,否则转到步骤1;
步骤3、将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
作为优选,所述步骤2中,判断所述相邻块候选视差矢量是否满足视差矢量阈值限制的方法至少包括以下之一:
(1)判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内;
(2)判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内;
(3)判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制。
进一步的,还至少满足以下特征之一:
(1)在判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内时,所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)在判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内时,所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
作为优选,当导出过程结束后,若没有导出视差矢量,则输出默认视差矢量作为最终导出视差矢量。
作为优选,所述步骤2中,判断所述相邻块候选视差矢量是否满足视差矢量阈值限制的方法包括以下之一:
(A1)判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内;
(A2)判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内;
(A3)判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制;
所述默认视差矢量的水平方向视差值和垂直方向视差值分别为默认水平方向视差值和默认垂直方向视差值,且所述默认水平方向视差值的计算方法包括以下之一:
(B1)所述默认水平方向视差值为某个事先约定好的常数;
(B2)所述默认水平方向视差值为所述水平视差阈值范围的阈值下限;
(B3)所述默认水平方向视差值为所述水平视差阈值范围的阈值上限;
(B4)所述默认水平方向视差值为所述水平视差阈值范围的阈值上限和阈值下限的均值;
(B5)在编码时,通过对当前视点深度图像的统计得出所述默认水平方向视差值,且将所述默认水平方向视差值的信息写入码流中;在解码时从码流中获取所述默认水平方向视差值的信息;
且所述默认垂直方向视差值的计算方法包括以下之一:
(C1)所述默认垂直方向视差值为某个事先约定好的常数;
(C2)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值下限;
(C3)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限;
(C4)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限和阈值下限的均值;
(C5)在编码时,通过对当前视点深度图像的统计得出所述默认垂直方向视差值,且将所述默认垂直方向视差值的信息写入码流中;在解码时从码流中获取所述默认垂直方向视差值的信息。
本发明的第二目的在于提供一种视差矢量导出装置,它包括:
用于获取相邻块候选视差矢量的候选视差矢量获取模块;
用于生成视差矢量阈值限制的阈值生成模块;
用于判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则将所述相邻块候选视差矢量作为最终导出视差矢量的阈值判别模块。
作为优选,所述阈值判别模块至少包括以下子模块之一:
(1)用于判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内的水平视差判断子模块;
(2)用于判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内的垂直视差判断子模块;
(3)用于判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制的联合视差判断子模块。
作为优选,
(1)在所述水平视差判定子模块中,所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)在所述垂直视差判定子模块中,所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
作为优选,还包括用于输出默认视差矢量作为最终导出视差矢量的默认视差矢量生成模块。
作为优选,所述阈值判别模块包括以下子模块之一:
(A1)用于判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内的水平视差判断子模块;
(A2)用于判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内的垂直视差判断子模块;
(A3)用于判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制的联合视差判断子模块;
所述默认视差矢量的水平方向视差值和垂直方向视差值分别为默认水平方向视差值和默认垂直方向视差值;
所述默认水平方向视差值为以下之一:
(B1)所述默认水平方向视差值为某个事先约定好的常数;
(B2)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值下限;
(B3)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值上限;
(B4)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值上限和阈值下限的均值;
(B5)所述默认水平方向视差值为在编码时通过对当前视点深度图像的统计得出并被写入码流中或为在解码时从码流中获得;
所述默认垂直方向视差值为以下之一:
(C1)所述默认垂直方向视差值为某个事先约定好的常数;
(C2)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值下限;
(C3)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值上限;
(C4)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值上限和阈值下限的均值;
(C5)所述默认垂直方向视差值为在编码时通过对当前视点深度图像的统计得出并被写入码流中或为在解码时从码流中获得。
本发明的第三目的在于提供一种视差矢量导出方法,其特征在于,包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、所述相邻块候选视差矢量修剪到视差矢量阈值限制内;
步骤3、将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
作为优选,所述视差矢量阈值限制包括水平视差阈值范围和垂直视差阈值范围,且至少满足以下特征之一:
(1)所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
本发明的第四目的在于提供一种视差矢量导出装置,它包括:
用于获取相邻块候选视差矢量的候选视差矢量获取模块;
用于生成视差矢量阈值限制的阈值生成模块;
用于将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的视差矢量修剪模块。
作为优选,所述阈值生成模块生成的视差矢量阈值限制包括水平视差阈值范围和垂直视差阈值范围,且至少满足以下特征之一:
(1)所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
本发明的有益效果如下:
(1)本发明通过判断相邻块候选视差矢量是否满足视差矢量阈值限制,去除掉不满足视差矢量阈值限制的相邻块候选视差矢量,使得最终导出视差矢量更加准确,从而提高了编码效率。
(2)同时,本发明利用所述视差矢量阈值,构建更加准确的默认视差矢量,进一步提高了编码效率。
(3)通过本发明的提出的视差矢量导出方法和装置,导出的视差矢量一定在视差阈值范围内,因此根据视差矢量获取的参考视点图像信息也在参考视点图像中的一定范围内,对范围的限制利于编解码器的硬件实现,可以节省获取参考视点图像信息时需要的带宽,并减少对于硬件存储空间的需要。
附图说明
结合附图,本发明的其他特点和优点可从下面通过举例来对本发明的原理进行解释的优选实施方式的说明中变得更清楚。
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一种视差矢量导出装置实施例的结构框图;
图2是本发明一种视差矢量导出装置实施例的结构框图;
图3是本发明一种视差矢量导出装置实施例的结构框图;
图4是本发明一种视差矢量导出装置实施例的结构框图;
图5是本发明一种视差矢量导出装置实施例的结构框图;
图6是本发明一种视差矢量导出装置实施例的结构框图;
图7是本发明一种视差矢量导出装置实施例的结构框图;
图8是本发明一种视差矢量导出装置实施例的结构框图;
具体实施方式
实施例1
本发明实施例提供了一种优选的视差矢量导出方法。
本实施例提供的视差矢量导出方法至少包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则转到步骤3,否则转到步骤1;
步骤3、将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程;
下面进行一些具体的说明:
步骤1中,获取下一个相邻块候选视差矢量即对当前图像块的所有还未检查过的相邻块按照某种顺序依次检查该相邻块是否包含视差矢量,若能找到一个还未检查过的相邻块包含视差矢量,则该视差矢量即为相邻块候选视差矢量,即此时可以获取到下一个相邻块候选视差矢量,并转到步骤2;若对于所有未检查过的相邻块,都不包含视差矢量,则认为获取不到相邻块候选视差矢量,并结束导出过程。步骤1中检查不同相邻块的顺序是由编解码端事先约定好的,关于该顺序在背景技术中已有介绍,在此不再赘述。
步骤2中,将所述相邻块候选视差矢量与视差矢量阈值限制进行比较,若判断出所述相邻块候选视差矢量满足视差矢量阈值限制,则转到步骤3,否则转到步骤1。
步骤3中,若所述相邻块候选视差矢量通过了步骤2中的阈值范围检测,则可以认为该相邻块候选视差矢量较为可信,将所述相邻块候选视差矢量作为最终导出视差矢量。
优选的,步骤2中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制的方法至少包括以下之一:
(1)判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内,即如果所述水平视差值X不小于水平视差阈值下限且不大于水平视差阈值上限,则认为该视差矢量在所述水平视差阈值范围内,并转到步骤3,否则转到步骤1。例如,当水平视差阈值的阈值上限和阈值下限分别为-10和20的时候,若相邻块候选视差矢量的水平方向视差值大于等于-10且小于等于20,则认为该视差矢量在所述水平视差阈值范围内,并转到步骤3,否则转到步骤1。
(2)判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内,即如果所述垂直视差值Y不小于垂直视差阈值下限且不大于垂直视差阈值上限,则认为该视差矢量在所述垂直视差阈值范围内,并转到步骤3,否则转到步骤1。例如,当垂直视差阈值的阈值上限和阈值下限分别为10和100的时候,若相邻块候选视差矢量的垂直方向视差值大于等于10且小于等于100,则认为该视差矢量在所述垂直视差阈值范围内,并转到步骤3,否则转到步骤1。
(3)判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制。此时的判断依据有多种多样的可能性,例如,可以判断所述相邻块候选视差矢量是否在一个圆形范围内,此时可以表示为X2+Y2≤R,其中R为圆的半径,除了圆形之外,也可以有其他的变种,例如椭圆形、扇形等,在此不一一举例说明;也可以判断所述相邻块候选视差矢量是否在一个矩形范围内,此时可以表示为Xmin≤X≤Xmax且Ymin≤Y≤Ymax,其中Xmin和Xmax分别表示水平视差阈值的上限和下限,Ymin和Ymax分别表示垂直视差阈值的上限和下限。
优选的,步骤2中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制的方法也可以由上面介绍的三种方法组合而成,比如需要同时满足上述三种限制中的一种或者多种。
优选的,在判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内时,所述水平视差阈值的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值。
优选的,在判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内时,所述垂直视差阈值的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
具体说来,对于某个给定的当前视点和其参考视点,当这两个视点的摄像机的焦距参数、最远和最近深度距离参数以及摄像机位置等摄像机参数已知的时候,对于当前视点的每个像素,就可以通过该像素的深度值计算出该像素的视差值,这个视差值包含水平视差值和垂直视差值。对于每个可能出现的深度值,都可以计算得到一个水平视差值和垂直视差值。以水平视差值举例来说,对于每个可能出现的深度值计算得到的这些水平视差值中的最小值即当前视点与参考视点之间所有可能出现的水平视差值中的最小值,取该最小水平视差值作为所述水平视差阈值范围的阈值下限,同理,这些水平视差值中的最大值即当前视点与参考视点之间所有可能出现的水平视差值中的最大值,取该最大水平视差值作为所述水平视差阈值范围的阈值上限。例如当深度值范围在0至255之间的时候,可以对这256个不同的深度值分别计算出256个水平视差值,取这256个水平视差值中的最小值作为所述水平视差阈值范围的阈值下限,取这256个水平视差值中的最大值作为所述水平视差阈值范围的阈值上限。当使用这种方法确定所述水平视差阈值的阈值上限和阈值下限的时候,无需知道当前视点对应的深度图像的信息,因此该阈值上限和阈值下限无需写入码流,解码端可以使用相同的方法计算出与编码端相同的阈值上限和阈值下限。
对于垂直视差,也可以使用与计算水平视差阈值的阈值上限和阈值下限同理的方法计算得到垂直视差阈值的阈值上限和阈值下限。当使用这种方法确定所述垂直视差阈值的阈值上限和阈值下限的时候,无需知道当前视点对应的深度图像的信息,因此该阈值上限和阈值下限无需写入码流,解码端可以使用相同的方法计算出与编码端相同的阈值上限和阈值下限。
优选的,也可以通过对当前视点的深度图像进行统计得到所述视差矢量阈值。当使用统计的方法确定所述视差矢量阈值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述视差矢量阈值的信息写入码流中,解码时可以从码流中获取所述视差矢量阈值的信息,进而获得所述视差矢量阈值。所述视差矢量阈值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述视差矢量阈值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述视差矢量阈值的信息可以等于所述视差矢量阈值的值,也可以为所有视差矢量阈值可能的取值的序号,也可以为所述视差矢量阈值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
有多种统计方法可以被用来确定所述视差矢量阈值。例如对于当前视点的深度图像中每个出现过的深度值,都可以计算得到一个水平视差值和垂直视差值,可以分别取这些水平视差值中的最小值和最大值作为水平视差阈值范围的阈值上限和下限,分别取这些垂直视差值中的最小值和最大值作为垂直视差阈值范围的阈值上限和下限。例如,虽然允许的深度值范围为0至255之间,但是当前视点的深度图像中只出现了100至199这100个不同的深度值,因此可以使用这100个不同的深度值分别计算出100个水平视差值,取这100个水平视差值中的最小值作为所述水平视差阈值范围的阈值下限,取这100个水平视差值中的最大值作为所述水平视差阈值范围的阈值上限。垂直视差值的阈值范围也可以使用同理的方法获得。当然,也可以根据一定的比例来确定阈值范围,例如选择一个阈值,使得所有像素点中N%以上的像素点对应的视差都可以在该范围内,其中N为非负自然数。也可以使用面积统计等统计方法,在此不一一介绍。
优选的,若整个视差矢量导出过程中导出了一个最终视差矢量,还需要将该最终视差矢量的水平方向视差修剪到一定的范围内,即X=max(min(X,Hmax),Hmin),其中,max和min分别为取最大值和最小值操作,Hmax和Hmin分别代表水平方向视差允许的最大值和最小值。
优选的,若整个视差矢量导出过程中导出了一个最终视差矢量,还需要将该最终视差矢量的垂直方向视差修剪到一定的范围内,即Y=max(min(Y,Hmax),Hmin),其中,max和min分别为取最大值和最小值操作,Hmax和Hmin分别代表垂直方向视差允许的最大值和最小值。
实施例2
本发明实施例提供了一种优选的视差矢量导出方法。
本实施例提供的基于深度查找表的深度图像编码方法至少包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则转到步骤3,否则转到步骤1;
步骤3、将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
并且,当导出过程结束后,若没有导出视差矢量,则输出默认视差矢量作为最终导出视差矢量。
上述步骤1-3的具体操作方法与实施例1中介绍的方法基本一致,此处不再重复。
可以分别将默认视差矢量的水平方向视差值和垂直方向视差值称为默认水平方向视差值和默认垂直方向视差值。
优选的,可以事先约定一个常数作为所述默认水平方向视差值。例如可以实现约定好默认水平方向视差值为N,其中N为自然数,既可以为10或者-10这样的整数,也可以为0.5、0.25这样的达到半像素精度甚至是四分之一像素精度的小数。
优选的,可以将所述水平视差阈值范围的阈值下限作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值下限为18,则将所述默认水平方向视差值设置为18。
优选的,可以将所述水平视差阈值范围的阈值上限作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值上限为45,则所述默认水平方向视差值设置为45。
优选的,可以所述默认水平方向视差值为所述水平视差阈值范围的阈值上限和阈值下限的均值作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值下限和阈值上限分别为-50和10,则将两者平均,即-20设置为所述默认水平方向视差值。如果两者平均值不为整数,可以进行向上取整、向下取整或者四舍五入等取整操作,也可以不进行取整,使用非整数作为所述默认水平方向视差值,即此时视差值的精度要高于整像素精度。
优选的,在编码时可以通过对当前视点深度图像的统计得出所述默认水平方向视差值。例如可以计算出当前视点深度图像中的所有像素深度值的平均值,使用该平均值计算出一个水平方向视差值作为所述默认水平方向视差值;也可以统计出当前视点深度图像中出现次数最多的深度值,使用该深度值计算出一个水平方向视差值作为所述默认水平方向视差值;同样也可以首先使用当前视点深度图像中的所有像素点的深度值计算得到所有像素点对应的水平方向视差值,取这些水平方向视差值的平均值作为所述默认水平方向视差值,或者取这些水平方向视差值中出现次数最多的一个作为所述默认水平方向视差值。当使用这种方法确定所述默认水平方向视差值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述默认水平方向视差值的信息写入码流中,解码时可以从码流中获取所述默认水平方向视差值的信息,进而获得所述默认水平方向视差值。所述默认水平方向视差值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述默认水平方向视差值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述默认水平方向视差值的信息可以等于所述默认水平方向视差值的值,也可以为所有默认水平方向视差值可能的取值的序号,也可以为所述默认水平方向视差值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
优选的,可以事先约定一个常数作为所述默认垂直方向视差值。例如可以实现约定好默认垂直方向视差值为N,其中N为自然数,既可以为10或者-10这样的整数,也可以为0.5、0.25这样的达到半像素精度甚至是四分之一像素精度的小数。
优选的,可以将所述垂直视差阈值范围的阈值下限作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值下限为18,则将所述默认垂直方向视差值设置为18。
优选的,可以将所述垂直视差阈值范围的阈值上限作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值上限为45,则所述默认垂直方向视差值设置为45。
优选的,可以所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限和阈值下限的均值作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值下限和阈值上限分别为-50和10,则将两者平均,即-20设置为所述默认垂直方向视差值。如果两者平均值不为整数,可以进行向上取整、向下取整或者四舍五入等取整操作,也可以不进行取整,使用非整数作为所述默认垂直方向视差值,即此时视差值的精度要高于整像素精度。
优选的,在编码时可以通过对当前视点深度图像的统计得出所述默认垂直方向视差值。例如可以计算出当前视点深度图像中的所有像素深度值的平均值,使用该平均值计算出一个垂直方向视差值作为所述默认垂直方向视差值;也可以统计出当前视点深度图像中出现次数最多的深度值,使用该深度值计算出一个垂直方向视差值作为所述默认垂直方向视差值;同样也可以首先使用当前视点深度图像中的所有像素点的深度值计算得到所有像素点对应的垂直方向视差值,取这些垂直方向视差值的平均值作为所述默认垂直方向视差值,或者取这些垂直方向视差值中出现次数最多的一个作为所述默认垂直方向视差值。当使用这种方法确定所述默认垂直方向视差值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述默认垂直方向视差值的信息写入码流中,解码时可以从码流中获取所述默认垂直方向视差值的信息,进而获得所述默认垂直方向视差值。所述默认垂直方向视差值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述默认垂直方向视差值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述默认垂直方向视差值的信息可以等于所述默认垂直方向视差值的值,也可以为所有默认垂直方向视差值可能的取值的序号,也可以为所述默认垂直方向视差值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
实施例3
本发明实施例提供了一种优选的视差矢量导出装置。图1为视差矢量导出装置的一种优选结构示意图。该装置包括三个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)阈值判别模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制并根据判断结果进行不同操作的功能和实施方式相同。
实施例4
本发明实施例提供了一种优选的视差矢量导出装置。图2为视差矢量导出装置的一种优选结构示意图。该装置包括四个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)阈值判别模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制并根据判断结果进行不同操作的功能和实施方式相同。
4)码流写入模块:其输入为视差矢量阈值,输出为将所述视差矢量阈值的信息写入后的码流,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述视差矢量阈值的信息写入码流的功能和实施方式相同。
实施例5
本发明实施例提供了一种优选的视差矢量导出装置。图3为视差矢量导出装置的一种优选结构示意图。该装置包括四个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)阈值判别模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制并根据判断结果进行不同操作的功能和实施方式相同。
4)阈值读取模块:其输入为视频码流,输出为视差矢量阈值的信息,其完成的功能和实施方式与上述一种视差矢量导出方法中从码流中读取所述视差矢量阈值的信息的功能和实施方式相同。
实施例6
本发明实施例提供了一种优选的视差矢量导出装置。图4为视差矢量导出装置的一种优选结构示意图。该装置包括四个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)阈值判别模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中判断所述相邻块候选视差矢量是否满足视差矢量阈值限制并根据判断结果进行不同操作的功能和实施方式相同。
4)默认视差矢量生成模块:其输入为当前编码视点与参考视点信息、摄像机参数信息以及视差矢量阈值,输出为默认视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中输出默认视差矢量作为最终导出视差矢量的功能和实施方式相同。
实施例7
本发明实施例提供了一种优选的视差矢量导出方法。
本实施例提供的基于深度查找表的深度图像编码方法至少包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、所述相邻块候选视差矢量修剪到视差矢量阈值限制内;
步骤3、将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
优选的,在所述步骤2中,所述视差矢量阈值限制包括水平视差阈值范围和垂直视差阈值范围,需要分别根据水平视差阈值范围和垂直视差阈值范围对所述相邻块候选视差矢量的水平视差和垂直视差进行修剪操作。当然,也可以进行根据水平视差阈值范围和垂直视差阈值范围对所述相邻块候选视差矢量的水平视差和垂直视差进行二维联合修剪,例如修剪到圆形、椭圆形、扇形等范围内,在此不一一赘述。
优选的,所述水平视差阈值的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值。
优选的,所述垂直视差阈值的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
具体说来,对于某个给定的当前视点和其参考视点,当这两个视点的摄像机的焦距参数、最远和最近深度距离参数以及摄像机位置等摄像机参数已知的时候,对于当前视点的每个像素,就可以通过该像素的深度值计算出该像素的视差值,这个视差值包含水平视差值和垂直视差值。对于每个可能出现的深度值,都可以计算得到一个水平视差值和垂直视差值。以水平视差值举例来说,对于每个可能出现的深度值计算得到的这些水平视差值中的最小值即当前视点与参考视点之间所有可能出现的水平视差值中的最小值,取该最小水平视差值作为所述水平视差阈值范围的阈值下限,同理,这些水平视差值中的最大值即当前视点与参考视点之间所有可能出现的水平视差值中的最大值,取该最大水平视差值作为所述水平视差阈值范围的阈值上限。例如当深度值范围在0至255之间的时候,可以对这256个不同的深度值分别计算出256个水平视差值,取这256个水平视差值中的最小值作为所述水平视差阈值范围的阈值下限,取这256个水平视差值中的最大值作为所述水平视差阈值范围的阈值上限。当使用这种方法确定所述水平视差阈值的阈值上限和阈值下限的时候,无需知道当前视点对应的深度图像的信息,因此该阈值上限和阈值下限无需写入码流,解码端可以使用相同的方法计算出与编码端相同的阈值上限和阈值下限。
对于垂直视差,也可以使用与计算水平视差阈值的阈值上限和阈值下限同理的方法计算得到垂直视差阈值的阈值上限和阈值下限。当使用这种方法确定所述垂直视差阈值的阈值上限和阈值下限的时候,无需知道当前视点对应的深度图像的信息,因此该阈值上限和阈值下限无需写入码流,解码端可以使用相同的方法计算出与编码端相同的阈值上限和阈值下限。
优选的,也可以通过对当前视点的深度图像进行统计得到所述视差矢量阈值。当使用统计的方法确定所述视差矢量阈值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述视差矢量阈值的信息写入码流中,解码时可以从码流中获取所述视差矢量阈值的信息,进而获得所述视差矢量阈值。所述视差矢量阈值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述视差矢量阈值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述视差矢量阈值的信息可以等于所述视差矢量阈值的值,也可以为所有视差矢量阈值可能的取值的序号,也可以为所述视差矢量阈值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
有多种统计方法可以被用来确定所述视差矢量阈值。例如对于当前视点的深度图像中每个出现过的深度值,都可以计算得到一个水平视差值和垂直视差值,可以分别取这些水平视差值中的最小值和最大值作为水平视差阈值范围的阈值上限和下限,分别取这些垂直视差值中的最小值和最大值作为垂直视差阈值范围的阈值上限和下限。例如,虽然允许的深度值范围为0至255之间,但是当前视点的深度图像中只出现了100至199这100个不同的深度值,因此可以使用这100个不同的深度值分别计算出100个水平视差值,取这100个水平视差值中的最小值作为所述水平视差阈值范围的阈值下限,取这100个水平视差值中的最大值作为所述水平视差阈值范围的阈值上限。垂直视差值的阈值范围也可以使用同理的方法获得。当然,也可以根据一定的比例来确定阈值范围,例如选择一个阈值,使得所有像素点中N%以上的像素点对应的视差都可以在该范围内,其中N为非负自然数。也可以使用面积统计等统计方法,在此不一一介绍。
实施例8
本发明实施例提供了一种优选的视差矢量导出方法。
本实施例提供的基于深度查找表的深度图像编码方法至少包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、所述相邻块候选视差矢量修剪到视差矢量阈值限制内;
步骤3、将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
并且,当导出过程结束后,若没有导出视差矢量,则输出默认视差矢量作为最终导出视差矢量。
上述步骤1-3的具体操作方法与实施例7中介绍的方法基本一致,此处不再重复。
可以分别将默认视差矢量的水平方向视差值和垂直方向视差值称为默认水平方向视差值和默认垂直方向视差值。
优选的,可以事先约定一个常数作为所述默认水平方向视差值。例如可以实现约定好默认水平方向视差值为N,其中N为自然数,既可以为10或者-10这样的整数,也可以为0.5、0.25这样的达到半像素精度甚至是四分之一像素精度的小数。
优选的,可以将所述水平视差阈值范围的阈值下限作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值下限为18,则将所述默认水平方向视差值设置为18。
优选的,可以将所述水平视差阈值范围的阈值上限作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值上限为45,则所述默认水平方向视差值设置为45。
优选的,可以所述默认水平方向视差值为所述水平视差阈值范围的阈值上限和阈值下限的均值作为所述默认水平方向视差值。例如步骤2中所述水平视差阈值范围的阈值下限和阈值上限分别为-50和10,则将两者平均,即-20设置为所述默认水平方向视差值。如果两者平均值不为整数,可以进行向上取整、向下取整或者四舍五入等取整操作,也可以不进行取整,使用非整数作为所述默认水平方向视差值,即此时视差值的精度要高于整像素精度。
优选的,在编码时可以通过对当前视点深度图像的统计得出所述默认水平方向视差值。例如可以计算出当前视点深度图像中的所有像素深度值的平均值,使用该平均值计算出一个水平方向视差值作为所述默认水平方向视差值;也可以统计出当前视点深度图像中出现次数最多的深度值,使用该深度值计算出一个水平方向视差值作为所述默认水平方向视差值;同样也可以首先使用当前视点深度图像中的所有像素点的深度值计算得到所有像素点对应的水平方向视差值,取这些水平方向视差值的平均值作为所述默认水平方向视差值,或者取这些水平方向视差值中出现次数最多的一个作为所述默认水平方向视差值。当使用这种方法确定所述默认水平方向视差值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述默认水平方向视差值的信息写入码流中,解码时可以从码流中获取所述默认水平方向视差值的信息,进而获得所述默认水平方向视差值。所述默认水平方向视差值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述默认水平方向视差值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述默认水平方向视差值的信息可以等于所述默认水平方向视差值的值,也可以为所有默认水平方向视差值可能的取值的序号,也可以为所述默认水平方向视差值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
优选的,可以事先约定一个常数作为所述默认垂直方向视差值。例如可以实现约定好默认垂直方向视差值为N,其中N为自然数,既可以为10或者-10这样的整数,也可以为0.5、0.25这样的达到半像素精度甚至是四分之一像素精度的小数。
优选的,可以将所述垂直视差阈值范围的阈值下限作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值下限为18,则将所述默认垂直方向视差值设置为18。
优选的,可以将所述垂直视差阈值范围的阈值上限作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值上限为45,则所述默认垂直方向视差值设置为45。
优选的,可以所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限和阈值下限的均值作为所述默认垂直方向视差值。例如步骤2中所述垂直视差阈值范围的阈值下限和阈值上限分别为-50和10,则将两者平均,即-20设置为所述默认垂直方向视差值。如果两者平均值不为整数,可以进行向上取整、向下取整或者四舍五入等取整操作,也可以不进行取整,使用非整数作为所述默认垂直方向视差值,即此时视差值的精度要高于整像素精度。
优选的,在编码时可以通过对当前视点深度图像的统计得出所述默认垂直方向视差值。例如可以计算出当前视点深度图像中的所有像素深度值的平均值,使用该平均值计算出一个垂直方向视差值作为所述默认垂直方向视差值;也可以统计出当前视点深度图像中出现次数最多的深度值,使用该深度值计算出一个垂直方向视差值作为所述默认垂直方向视差值;同样也可以首先使用当前视点深度图像中的所有像素点的深度值计算得到所有像素点对应的垂直方向视差值,取这些垂直方向视差值的平均值作为所述默认垂直方向视差值,或者取这些垂直方向视差值中出现次数最多的一个作为所述默认垂直方向视差值。当使用这种方法确定所述默认垂直方向视差值的时候,需要知道当前视点的深度图像的信息,若解码端在解码当前视点纹理图像的时候,无法获取到当前视点的深度图像的信息,那么编码时需要将所述默认垂直方向视差值的信息写入码流中,解码时可以从码流中获取所述默认垂直方向视差值的信息,进而获得所述默认垂直方向视差值。所述默认垂直方向视差值的信息在码流的位置可以为以下几种:
(1)视频参数集中;
(2)序列参数集中;
(3)图像参数集中;
(4)条带头中;
(5)编码单元中。
当然,所述默认垂直方向视差值的信息在码流的位置也可以为其他类似的位置,在此不一一举例。
所述默认垂直方向视差值的信息可以等于所述默认垂直方向视差值的值,也可以为所有默认垂直方向视差值可能的取值的序号,也可以为所述默认垂直方向视差值的值经过数学运算后的值,所述数学运算包括但不限于加法运算、减法运算、乘法运算、除法运算、对数运算、指数运算、三角函数、取整运算以及以上运算的混合运算。
实施例9
本发明实施例提供了一种优选的视差矢量导出装置。图5为视差矢量导出装置的一种优选结构示意图。该装置包括三个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)视差矢量修剪模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的功能和实施方式相同。
实施例10
本发明实施例提供了一种优选的视差矢量导出装置。图6为视差矢量导出装置的一种优选结构示意图。该装置包括三个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)视差矢量修剪模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的功能和实施方式相同。
4)码流写入模块:其输入为视差矢量阈值,输出为将所述视差矢量阈值的信息写入后的码流,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述视差矢量阈值的信息写入码流的功能和实施方式相同。
实施例11
本发明实施例提供了一种优选的视差矢量导出装置。图7为视差矢量导出装置的一种优选结构示意图。该装置包括三个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)视差矢量修剪模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的功能和实施方式相同。
4)阈值读取模块:其输入为视频码流,输出为视差矢量阈值的信息,其完成的功能和实施方式与上述一种视差矢量导出方法中从码流中读取所述视差矢量阈值的信息的功能和实施方式相同。
实施例12
本发明实施例提供了一种优选的视差矢量导出装置。图8为视差矢量导出装置的一种优选结构示意图。该装置包括三个模块:
1)候选视差矢量获取模块:输入为相邻块信息,输出为候选视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中获取一个相邻块候选视差矢量的功能和实施方式相同。
2)阈值生成模块:输入为当前编码视点与参考视点信息以及摄像机参数信息,输出为视差矢量阈值,其完成的功能和实施方式与上述一种视差矢量导出方法中根据当前编码视点与参考视点信息以及摄像机参数信息生成视差矢量阈值限制的功能和实施方式相同。
3)视差矢量修剪模块:输入为候选视差矢量以及视差矢量阈值,输出为最终导出视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的功能和实施方式相同。
4)默认视差矢量生成模块:其输入为为当前编码视点与参考视点信息、摄像机参数信息以及视差矢量阈值,输出为默认视差矢量,其完成的功能和实施方式与上述一种视差矢量导出方法中输出默认视差矢量作为最终导出视差矢量的功能和实施方式相同。
值得注意的是,上述的视差矢量导出装置可以由多种方式实现,例如:
方法一:以电子计算机为硬件附加与所述视差矢量导出方法功能相同的软件程序来实现。
方法二:以单片机为硬件附加与所述视差矢量导出方法功能相同的软件程序来实现。
方法三:以数字信号处理器为硬件附加与所述视差矢量导出方法功能相同的软件程序来实现。
方法四:设计与所述视差矢量导出方法功能相同的电路来实现。
上述四种实现所述的视差矢量导出装置的方法仅是作为优选的实施方式进行说明,本发明不限于此。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (6)

1.一种视差矢量导出方法,其特征在于,包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则转到步骤3,否则转到步骤1;具体判断方法包括以下之一:
(1)判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内,其中所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内,其中所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值;
(3)判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制;
步骤3、将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
2.一种视差矢量导出方法,其特征在于,包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则转到步骤3,否则转到步骤1;具体判断方法包括如下之一:
(A1)判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内;
(A2)判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内;
(A3)判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制;
步骤3、将所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程;步骤4、当导出过程结束后,若没有导出视差矢量,则输出默认视差矢量作为最终导出视差矢量;
所述默认视差矢量的水平方向视差值和垂直方向视差值分别为默认水平方向视差值和默认垂直方向视差值,且所述默认水平方向视差值的计算方法包括以下之一:
(B1)所述默认水平方向视差值为某个事先约定好的常数;
(B2)所述默认水平方向视差值为所述水平视差阈值范围的阈值下限;
(B3)所述默认水平方向视差值为所述水平视差阈值范围的阈值上限;
(B4)所述默认水平方向视差值为所述水平视差阈值范围的阈值上限和阈值下限的均值;
(B5)在编码时,通过对当前视点深度图像的统计得出所述默认水平方向视差值,且将所述默认水平方向视差值的信息写入码流中;在解码时从码流中获取所述默认水平方向视差值的信息;
且所述默认垂直方向视差值的计算方法包括以下之一:
(C1)所述默认垂直方向视差值为某个事先约定好的常数;
(C2)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值下限;
(C3)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限;
(C4)所述默认垂直方向视差值为所述垂直视差阈值范围的阈值上限和阈值下限的均值;
(C5)在编码时,通过对当前视点深度图像的统计得出所述默认垂直方向视差值,且将所述默认垂直方向视差值的信息写入码流中;在解码时从码流中获取所述默认垂直方向视差值的信息。
3.一种视差矢量导出装置,其特征在于,它包括:
用于获取相邻块候选视差矢量的候选视差矢量获取模块;
用于生成视差矢量阈值限制的阈值生成模块;
用于判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则将所述相邻块候选视差矢量作为最终导出视差矢量的阈值判别模块,至少包括以下子模块之一:
(1)用于判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内的水平视差判断子模块,其中所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)用于判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内的垂直视差判断子模块,其中所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值;
(3)用于判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制的联合视差判断子模块。
4.一种视差矢量导出装置,其特征在于,它包括:
用于获取相邻块候选视差矢量的候选视差矢量获取模块;
用于生成视差矢量阈值限制的阈值生成模块;
用于判断所述相邻块候选视差矢量是否满足视差矢量阈值限制,若满足则将所述相邻块候选视差矢量作为最终导出视差矢量的阈值判别模块;
以及用于输出默认视差矢量作为最终导出视差矢量的默认视差矢量生成模块;
其中,所述阈值判别模块包括以下子模块之一:
(A1)用于判断所述相邻块候选视差矢量的水平视差值X是否在水平视差阈值范围内的水平视差判断子模块;
(A2)用于判断所述相邻块候选视差矢量的垂直视差值Y是否在垂直视差阈值范围内的垂直视差判断子模块;
(A3)用于判断所述相邻块候选视差矢量的水平视差值X和垂直视差值Y是否联合满足阈值范围限制的联合视差判断子模块;
所述默认视差矢量的水平方向视差值和垂直方向视差值分别为默认水平方向视差值和默认垂直方向视差值;
所述默认水平方向视差值为以下之一:
(B1)所述默认水平方向视差值为某个事先约定好的常数;
(B2)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值下限;
(B3)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值上限;
(B4)所述默认水平方向视差值为所述水平视差判断子模块中使用的水平视差阈值范围的阈值上限和阈值下限的均值;
(B5)所述默认水平方向视差值为在编码时通过对当前视点深度图像的统计得出并被写入码流中或为在解码时从码流中获得;
所述默认垂直方向视差值为以下之一:
(C1)所述默认垂直方向视差值为某个事先约定好的常数;
(C2)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值下限;
(C3)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值上限;
(C4)所述默认垂直方向视差值为所述垂直视差判断子模块中使用的垂直视差阈值范围的阈值上限和阈值下限的均值;
(C5)所述默认垂直方向视差值为在编码时通过对当前视点深度图像的统计得出并被写入码流中或为在解码时从码流中获得。
5.一种视差矢量导出方法,其特征在于,包括以下步骤:
步骤1、获取下一个相邻块候选视差矢量,若能获取到则转到步骤2,否则结束导出过程;
步骤2、所述相邻块候选视差矢量修剪到视差矢量阈值限制内;所述视差矢量阈值限制包括水平视差阈值范围和垂直视差阈值范围,且至少满足以下特征之一:
(1)所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值;
步骤3、将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量,并结束导出过程。
6.一种视差矢量导出装置,其特征在于,它包括:
用于获取相邻块候选视差矢量的候选视差矢量获取模块;
用于生成视差矢量阈值限制的阈值生成模块;
用于将所述相邻块候选视差矢量修剪到视差矢量阈值限制内并将经过修剪的所述相邻块候选视差矢量作为最终导出视差矢量的视差矢量修剪模块;其中,所述阈值生成模块生成的视差矢量阈值限制包括水平视差阈值范围和垂直视差阈值范围,且至少满足以下特征之一:
(1)所述水平视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的水平视差值中的最小值,所述水平视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的水平视差值中的最大值;
(2)所述垂直视差阈值范围的阈值下限为当前视点与参考视点之间所有可能出现的垂直视差值中的最小值,所述垂直视差阈值范围的阈值上限为当前视点与参考视点之间所有可能出现的垂直视差值中的最大值。
CN201410005559.3A 2014-01-02 2014-01-02 一种视差矢量导出方法及装置 Active CN104768001B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410005559.3A CN104768001B (zh) 2014-01-02 2014-01-02 一种视差矢量导出方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410005559.3A CN104768001B (zh) 2014-01-02 2014-01-02 一种视差矢量导出方法及装置

Publications (2)

Publication Number Publication Date
CN104768001A CN104768001A (zh) 2015-07-08
CN104768001B true CN104768001B (zh) 2018-12-07

Family

ID=53649567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410005559.3A Active CN104768001B (zh) 2014-01-02 2014-01-02 一种视差矢量导出方法及装置

Country Status (1)

Country Link
CN (1) CN104768001B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1767655A (zh) * 2005-10-18 2006-05-03 宁波大学 一种多视点视频图像视差估计的方法
CN101600108A (zh) * 2009-06-26 2009-12-09 北京工业大学 一种多视点视频编码中的运动和视差联合估计方法
CN101895749A (zh) * 2010-06-29 2010-11-24 宁波大学 一种快速视差估计和运动估计方法
CN102946535A (zh) * 2012-10-09 2013-02-27 华为技术有限公司 预测块的视差矢量预测值获取的方法和装置
CN103248899A (zh) * 2013-05-21 2013-08-14 清华大学 多视点视频skip模式的运动矢量预测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI461066B (zh) * 2011-11-03 2014-11-11 Ind Tech Res Inst 彈性調整估算搜尋範圍的移動估算方法及視差估算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1767655A (zh) * 2005-10-18 2006-05-03 宁波大学 一种多视点视频图像视差估计的方法
CN101600108A (zh) * 2009-06-26 2009-12-09 北京工业大学 一种多视点视频编码中的运动和视差联合估计方法
CN101895749A (zh) * 2010-06-29 2010-11-24 宁波大学 一种快速视差估计和运动估计方法
CN102946535A (zh) * 2012-10-09 2013-02-27 华为技术有限公司 预测块的视差矢量预测值获取的方法和装置
CN103248899A (zh) * 2013-05-21 2013-08-14 清华大学 多视点视频skip模式的运动矢量预测方法

Also Published As

Publication number Publication date
CN104768001A (zh) 2015-07-08

Similar Documents

Publication Publication Date Title
US20200288138A1 (en) Method and Apparatus for Encoding and Decoding a Texture Block Using Depth Based Block Partitioning
CN104125473B (zh) 一种3d视频深度图像帧内预测模式选择方法及***
US11455712B2 (en) Method and apparatus for enhancing stereo vision
CN104918053B (zh) 用于对运动矢量进行编码和解码的方法和设备
CN102714736B (zh) 基于减少的运动矢量预测候选对运动矢量进行编码和解码的方法和设备
CN104038760B (zh) 一种3d视频深度图像帧内楔形分割模式选择方法及***
CN108965869A (zh) 图像预测的方法及设备
CN106105191A (zh) 用于处理多视图视频信号的方法和装置
CN104754359B (zh) 一种二维自由视点视频的深度图编码失真预测方法
CN103686165A (zh) 深度图像帧内编解码方法及视频编解码器
US11323702B2 (en) Apparatus and a method for associating a video block partitioning pattern to a video coding block
CN108712648A (zh) 一种深度视频快速帧内编码方法
CN109660800A (zh) 运动估计方法、装置、电子设备及计算机可读存储介质
WO2016054975A1 (zh) 预测块的划分方法、编码设备和解码设备
CN109660799A (zh) 视频编码中的运动估计方法、装置、电子设备及存储介质
CN103402097A (zh) 一种自由视点视频深度图编码方法及其失真预测方法
CN103873867B (zh) 自由视点视频深度图失真预测方法和编码方法
CN103024395B (zh) 多视点视频编码模式选择方法及装置
CN103049908B (zh) 生成立体视频文件的方法和装置
CN104333758B (zh) 深度图的预测方法和检测像素点的方法及相关装置
CN104768001B (zh) 一种视差矢量导出方法及装置
CN103916652B (zh) 视差矢量生成方法及装置
CN110475116A (zh) 一种运动矢量导出方法、装置及电子设备
CN104994394B (zh) 编码器运动估算方法及装置
CN103997635A (zh) 自由视点视频的合成视点失真预测方法及编码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant