本申请要求2008年3月4日提交的题为“Virtual Reference View(虚拟基准视图)”且序号为61/068,070的美国临时申请的权益,该临时申请的内容通过引用结合与此,用于所有目的。
具体实施方式
在至少一种实现方式中,提出了一种框架来使用虚拟视图作为基准。在至少一种实现方式中,提出了使用如下虚拟视图:该虚拟视图不与将被预测为附加基准的视图并置。在另一种实现方式中,还提出了连续对虚拟基准视图进行精炼,直到满足某一个质量与复杂性的折衷为止。然后可以包括若干虚拟生成的视图作为附加基准,并且可以用高级别来表明它们在基准列表中的位置。
因此,至少一些实现方式所解决的至少一个问题是利用虚拟视图作为附加基准对多视图视频序列的高效编码。多视图视频序列是两个或更多个视频序列的集合,这两个或更多个视频序列从不同的视点捕获了同一场景。
自由视点电视(FTV)是一种新的框架,该框架包括多视图视频和深度信息的编码后表示,并且将高质量的中间视图的生成定位在接收器处。这为自动立体显示器使能了自由视点功能和视图生成。
图1示出了根据本发明原理的实施例的用于与深度信息一起发送和接收多视图视频的示例性系统100,本发明的原理可应用于该系统。在图1中,视频数据用实线表示,深度数据用短划线表示,元数据用点线表示。系统100例如可以是但不限于自由视点电视系统。在发送器侧110,系统100包括三维(3D)内容产生器120,其具有用于从相应的多个源接收视频、深度和元数据中一个或多个的多个输入端。这种源可以包括但不限于立体相机111、深度相机112、多相机装置113和二维/三维(2D/3D)转换处114。一个或多个网络130可用于发送与多视图视频编码(MVC)和数字视频广播(DVB)有关的视频、深度和元数据中的一个或多个。
在接收器侧140,基于深度图像的绘制器150执行基于深度图像的绘制以将信号投影到各种类型的显示器。基于深度图像的绘制器150能够接收显示配置信息和用户偏好。基于深度图像的绘制器150的输出可被提供给2D显示器161、M视图3D显示器162和/或头部跟踪的立体显示器163中的一个或多个。
为了减少要发送的数据量,密集的相机阵列(V1、V2...V9)可被子采样,并且仅稀疏的相机集合实际上捕获场景。图2示出了根据本发明原理的实施例的用于从深度为(K=3)的3个输入视图生成9个输出视图(N=9)的示例性框架200,本发明的原理可应用于该框架。框架200包括自动立体3D显示器210(其支持多个视图的输出)、第一基于深度图像的绘制器220、第二基于深度图像的绘制器230和用于解码后数据的缓冲器240。解码后数据是称为多个视图加深度(MVD)数据的表示。9个相机用V1至V9表示。三个输入视图的相应深度图用D1、D5和D9表示。可以利用可用的深度图(D1、D5、D9)生成所捕获的相机位置(例如Pos1、Pos2、Pos3)之间的任何虚拟相机位置,如图2所示。在图2中可以看到,捕获数据的实际相机(V1、V5和V9)之间的基线可能是很大的。结果,这些相机之间的相关性被显著减小并且这些相机的编码效率可能不高,这是因为编码效率仅依赖于时间相关性。
在至少一个所描述的实现方式中,提议解决该问题,即提高具有大基线的相机的编码效率。解决方案不限于多视图视图编码,而是可应用于多视图深度编码。
图3示出根据本发明原理的实施例的示例性编码器300,本发明的原理可应用于该编码器。编码器300包括组合器305,组合器305的输出端以信号通信方式与变换器310的输入端相连。变换器310的输出端以信号通信方式与量化器315的输入端相连。量化器315的输出端以信号通信方式与熵编码器320的输入端和逆量化器325的输入端相连。逆量化器325的输出端以信号通信方式与逆变换器330的输入端相连。逆变换器330的输出端以信号通信方式与组合器335的第一同相输入端相连。组合器335的输出端以信号通信方式与内部预测器345的输入端和解块滤波器350的输入端相连。解块滤波器350例如去除沿着宏块边界的伪像(artifact)。解块滤波器350的第一输出端以信号通信方式与基准图片存储库355(用于时间预测)的输入端和基准图片存储库360(用于视图间预测)的第一输入端相连。基准图片存储库355的输出端以信号通信方式与运动补偿器375的第一输入端和运动估计器380的第一输入端相连。运动估计器380的输出端以信号通信方式与运动补偿器375的第二输入端相连。基准图片存储库360的输出端以信号通信方式与差别估计器370的第一输入端和差别补偿器365的第一输入端相连。差别估计器370的输出端以信号通信方式与差别补偿器365的第二输入端相连。
解块滤波器350的第二输出端以信号通信方式与基准图片存储库371(用于虚拟图片生成)的输入端相连。基准图片存储库371的输出端以信号通信方式与视图合成器372的第一输入端相连。虚拟基准视图控制器373的第一输出端以信号通信方式与视图合成器372的第二输入端相连。
熵解码器320的输出端、虚拟基准视图控制器373的第二输出端、模式决定模块395的第一输出端和视图选择器302的输出端各自可作为编码器300的各个输出端,用于输出比特流。开关388的第一输入端(用于视图i的图片数据)、第二输入端(用于视图j的图片数据)和第三输入端(用于合成后视图的图片数据)各自可作为编码器的各个输入端。视图合成器372的输出端(用于提供合成后的视图)以信号通信方式与基准图片存储库360的第二输入端和开关388的第三输入端相连。视图选择器302的第二输出端确定哪个输入(例如,视图i、视图j或合成后视图的图片数据)被提供给开关388。开关388的输出端以信号通信方式与组合器305的同相输入端、运动补偿器375的第三输入端、运动估计器380的第二输入端和差别估计器370的第二输入端相连。内部预测器345的输出端以信号通信方式与开关385的第一输入端相连。差别补偿器365的输出端以信号通信方式与开关385的第二输入端相连。运动补偿器375的输出端以信号通信方式与开关385的第三输入端相连。模式决定模块395的输出端确定哪个输入被提供给开关385。开关385的输出端以信号通信方式与组合器335的第二同相输入端和组合器305的反相输入端相连。
图3的一些部分也可被独立地或总地称为编码器、编码单元或访问单元,例如块310、315和320。类似地,例如块325、330、335和350可被独立地或总地称为解码器或解码单元。
图4示出了根据本发明原理的实施例的示例性解码器400,本发明的原理可应用于该解码器。解码器400包括熵解码器405,熵解码器405的输出端以信号通信方式与逆量化器410的输入端相连。逆量化器的输出端以信号通信方式与逆变换器415的输入端相连。逆变换器415的输出端以信号通信方式与组合器420的第一同相输入端相连。组合器420的输出端以信号通信方式与解块滤波器425的输入端和内部预测器430的输入端相连。解块滤波器425的输出端以信号通信方式与基准图片存储库440(用于时间预测)的输入端、基准图片存储库445(用于视图间预测)的第一输入端和基准图片存储库472(用于虚拟图片生成)的第一输入端相连。基准图片存储库440的输出端以信号通信方式与运动补偿器435的第一输入端相连。基准图片存储库445的输出端以信号通信方式与差别补偿器450的第一输入端相连。
比特流接收器401的输出端以信号通信方式与比特流解析器402的输入端相连。比特流解析器402的第一输出端(用于提供残余比特流)以信号通信方式与熵解码器405的输入端相连。比特流解析器402的第二输出端(用于提供控制哪个输入被开关455选择的控制句法)以信号通信方式与模式选择器422的输入端相连。比特流解析器402的第三输出端(用于提供运动向量)以信号通信方式与运动补偿器435的第二输入端相连。比特流解析器402的第四输出端(用于提供差别向量和/或照明偏移)以信号通信方式与差别补偿器450的第二输入端相连。比特流解析器402的第五输出端(用于提供虚拟基准视图控制信息)以信号通信方式与基准图片存储库472的第二输入端和视图合成器471的第一输入端相连。基准图片存储库472的输出端以信号通信方式与视图合成器的第二输入端相连。视图合成器471的输出端以信号通信方式与基准图片存储库445的第二输入端相连。将会认识到,照明偏移是可选的输入,取决于实现方式,其可能被使用,也可能不被使用。
开关455的输出端以信号通信方式与组合器420的第二同相输入端相连。开关455的第一输入端以信号通信方式与差别补偿器450的输出端相连。开关455的第二输入端以信号通信方式与运动补偿器435的输出端相连。开关455的第三输入端以信号通信方式与内部预测器430的输出端相连。模式模块422的输出端以信号通信方式与开关455相连,用于控制哪个输入被开关455选择。解块滤波器425的输出可作为解码器的输出。
图4的一些部分也可被独立地或总地称为访问单元,例如比特流解析器402和任何其他提供对特定的数据或信息的访问的块。类似地,例如块405、410、415、420和425可被独立地或总地称为解码器或解码单元。
图5示出了根据本发明原理的实现方式的视频发送系统500,本发明的原理可应用于该系统。视频发送系统500例如可以是利用各种媒介(例如卫星、电缆、电话线或陆上广播)中的任意媒介来发送信号的头端或发送系统。可以通过因特网或某种其他网络来提供发送。
视频发送系统500能够生成并传递包括虚拟基准视图的视频内容。这是通过生成(一个或多个)编码后信号实现的,这(一个或多个)编码后信号包括一个或多个虚拟基准视图或者能够用于在例如可以具有解码器的接收器端合成一个或多个虚拟基准视图的信息。
视频发送系统500包括编码器510和能够发送编码后信号的发送器520。编码器510接收视频信息,基于视频信息合成一个或多个虚拟基准视图,并且从其生成(一个或多个)编码后信号。编码器510例如可以是上面详细描述的编码器300。
发送器520例如可适用于发送具有一个或多个比特流的节目信号,这一个或多个比特流代表编码后图片和/或与其有关的信息。典型的发送器执行诸如以下各项中的一项或多项之类的功能:提供纠错编码,对信号中的数据进行交织,对信号中的能量进行随机化,以及将信号调制到一个或多个载体上。发送器可以包括天线(未示出)或者与天线相接口。因此,发送器520的实现方式可以包括或者限于调制器。
图6示出了视频接收系统600的实现方式的示图。视频接收系统600可以被配置为通过各种媒介(例如卫星、电缆、电话线或陆上广播)接收信号。可以通过因特网或某种其他网络来接收信号。
视频接收系统600例如可以是蜂窝电话、计算机、机顶盒、电视或者其他接收编码后视频并且例如为了向用于显示或者为了存储而提供解码后视频的设备。因此,视频接收系统600可将其输出提供给例如电视屏幕、计算机监视器、计算机(为了存储、处理或显示)或者某种其他存储、处理或显示设备。
视频接收系统600能够接收并处理包括视频信息的视频内容。此外,视频接收系统600能够合成和/或以其他方式再现一个或多个虚拟基准视图。这是通过接收(一个或多个)编码后信号实现的,这(一个或多个)编码后信号包括视频信息和一个或多个基准视图或者能够用来合成一个或多个虚拟基准视图的信息。
视频接收系统600包括能够接收编码后信号(例如在本申请的实现方式中描述的信号)的接收器610和能够对接收到的信号进行解码的解码器620。
接收器610例如可适用于接收具有多个比特流的节目信号,这些比特流代表编码后图片。典型的接收器执行诸如以下各项中的一项或多项之类的功能:接收经过调制和编码的数据信号,对来自一个或多个载体的数据信号进行解调,对信号中的能量解除随机化,对信号中的数据解除交织,以及对信号进行纠错解码。接收器610可以包括天线(未示出)或者与天线相接口。接收器610的实现方式可以包括或者限于解调器。
解码器620输出包括视频信息和深度信息的视频信号。解码器620例如可以是在上面详细描述的解码器400。
图7A示出了根据本发明原理的实施例的用于对虚拟基准视图进行编码的方法700的流程图。在步骤705,访问从第一视图位置处的设备取得的第一视图图像。在步骤710,对第一视图图像编码。在步骤715,访问从第二视图位置处的设备取得的第二视图图像。在步骤720,基于重构的第一视图图像合成虚拟图像。虚拟图像估计如果从不同于第一视图位置的虚拟视图位置处的设备取得图像则该图像看起来将是什么样子。在步骤725,对虚拟图像编码。在步骤730,以重构的虚拟图像作为重构的第一视图图像的附加基准,对第二视图图像编码。第二视图位置不同于虚拟视图位置。在步骤735,发送经编码的第一视图图像、经编码的虚拟视图图像和经编码的第二视图图像。
在方法700的一种实现方式中,用来合成虚拟图像的第一视图图像是第一视图图像的重构版本,并且基准图像是虚拟图像。
在图7A的一般过程的其他实现方式以及本申请中描述的其他过程(例如包括图7B、8A和8B的过程)中,虚拟图像(或者重构物)可以是在对第二视图图像编码时使用的仅有的基准图像。另外,实现方式可以允许虚拟图像作为输出在解码器处显示。
许多实现方式编码并发送虚拟视图图像。在这样的实现方式中,可以在由假定基准解码器(HRD)(例如包括在编码器或者独立的HRD检查器中的HRD)执行的验证中考虑该发送和在该发送中使用的比特。在当前的多视图编码(MVC)标准中,为每个视图分开执行HRD校验。如果第二视图是从第一视图预测的,则在发送第一视图时使用的速率在为第二视图进行编码后图片缓冲器(CPB)的HRD检查(验证)时被计算。这说明了如下事实:为了对第二视图解码,第一视图被缓冲。各种实现方式使用与刚刚针对MVC所描述的理论相同的理论。在这样的实现方式中,如果所发送的虚拟视图基准图像是第一视图和第二视图之间的,则用于虚拟视图的HRD模型参数被插入到序列参数集(SPS)中,就好像它是真实视图一样。另外,当为第二视图检查CPB的HRD一致性(验证)时,按照用于说明对虚拟视图的缓冲的公式来计算用于虚拟视图的速率。
图7B示出了根据本发明原理的实施例的用于对虚拟基准视图进行解码的方法750的流程图。在步骤755,接收信号,该信号包括从第一视图位置处的设备取得的第一视图图像、仅用作基准的虚拟图像(不存在诸如显示虚拟图像之类的输出)和从第二视图位置处的设备取得的第二视图图像的编码后视频信息。在步骤760,对第一视图图像解码。在步骤765,对虚拟视图图像解码。在步骤770,对第二视图图像和用作解码后的第一视图图像的附加基准的解码后虚拟视图图像进行解码。
图8A示出了根据本发明原理的实施例的用于对虚拟基准图像进行编码的方法800的流程图。在步骤805,访问从第一视图位置处的设备取得的第一视图图像。在步骤810,对第一视图图像编码。在步骤815,访问从第二视图位置处的设备取得的第二视图图像。在步骤820,基于重构的第一视图图像合成虚拟图像。虚拟图像估计如果从不同于第一视图位置的虚拟视图位置处的设备取得图像则该图像看起来将是什么样子。在步骤825,利用所生成的虚拟图像作为重构的第一视图图像的附加基准,对第二视图图像编码。第二视图位置不同于虚拟视图位置。在步骤830,生成控制信息,该控制信息表明多个视图中的哪个视图被用作基准图像。在这样的情况中,基准图像例如可以是以下各项之一:
(1)在第一视图位置和第二视图位置之间的半程处的合成视图;
(2)与正被编码的当前视图相同位置的合成视图,该合成视图是通过以下方式递增地合成的:开始的时候在半程点处生成视图的合成,然后利用其结果来合成在正被编码的当前视图位置处的另一视图;
(3)非合成视图图像;
(4)虚拟图像;以及
(5)从虚拟图像合成的另一分离的合成图像,基准图像在第一视图图像和第二视图图像之间的位置处或者在第二视图图像的位置处。
在步骤835,发送编码后的第一视图图像、编码后的第二视图图像和编码后的控制信息。
图8A的过程以及本申请中描述的各种其他过程还可以包括编码器处的解码步骤。例如,编码器可以利用合成的虚拟图像对编码后的第二视图图像进行解码。这预期产生重构的第二视图图像,该重构的第二视图图像与解码器将产生的内容相匹配。使用重构物作为基准图像,编码器然后可以利用重构物对随后的图像进行编码。这样,编码器使用第二视图图像的重构物对随后的图像进行编码,并且解码器将同样使用重构物对随后的图像进行解码。结果,编码器可以例如使其速率失真优化和对编码模式的选择基于解码器预期将产生的同一最终输出(随后的图像的重构物)。该解码步骤例如可以在操作825之后的任一点处执行。
图8B示出了根据本发明原理的实施例的用于对虚拟基准图像进行解码的方法800的流程图。在步骤855,接收信号。该信号包括从第一视图位置处的设备取得的第一视图图像的编码后视频信息、从第二视图位置处的设备取得的第二视图图像和如何生成仅用作基准的虚拟图像(无输出)的控制信息。在步骤860,对第一视图图像解码。在步骤865,利用控制信息生成/合成虚拟视图图像。在步骤870,使用生成的/合成的虚拟视图图像作为解码后的第一视图图像的附加基准,对第二视图图像解码。
实施例1:
可以利用3D变形(warping)技术从已有的视图生成虚拟视图。为了获得虚拟视图,使用关于相机内部和外部参数的信息。内部参数例如可以包括但不限于焦距、缩放和其他内部特性。外部参数例如可以包括但不限于位置(平移(translation))、定向(平摇、倾斜、旋转)和其他外部特性。另外,还使用场景的深度图。图9示出了根据本发明原理的实施例的示例性深度图900,本发明的原理可应用于该深度图。具体地,深度图900是用于视图0的。
用于3D变形的透视投影矩阵可被如下表示:
PM=A[R|t] (1)
其中,A、R和t分别表示内部矩阵、旋转矩阵和平移向量,并且这些值被称为相机参数。可以利用投影方程将像素位置从图像坐标投影到3D世界坐标。式(2)是投影方程,其包括深度数据和式(1)。式(2)可被变换成式(3)。
PWC(x,y,z)=R-1·A-1·Pref(x,y,1)·D-R-1·t (3)
其中,D表示深度数据,P表示基准图像坐标系中的齐次坐标或3D世界坐标上的像素位置,并且表示3D世界坐标系中的齐次坐标。在投影之后,3D世界坐标形式的像素位置通过式(4)而被映射到希望的目标图像中的位置,式(4)是式(1)的逆形式。
Ptarget(x,y,1)=A·R·(PWC(x,y,z)+R-1·t) (4)
于是,可以相对于基准图像中的像素位置得到目标图像中的正确像素位置。此后,将像素值从基准图像上的像素位置拷贝到目标图像上的投影像素位置。
为了合成虚拟视图,可以使用基准视图和虚拟视图的相机参数。然而,不一定用信号通知虚拟图像的相机参数的完整集合。如果虚拟视图仅仅是水平面中的移位(例如见图2的从视图1到视图2的示例),则只有平移向量需要被更新并且其余参数保持不变。
在诸如参考图3和4所示出并描述的装置300和装置400之类的装置中,一种编码结构将是:视图5使用视图1作为预测环路中的基准。然而,如上面所提及的,由于他们之间的很大基线距离,相关性将是有限的,并且视图5使用视图1作为基准的概率将是非常低的。
可以将视图1变形到视图5的相机位置,然后使用该虚拟生成的图片作为附加基准。然而,由于很大的基线,虚拟视图将具有许多可能并不琐碎到足以填充的孔洞或者更大的孔洞。即使在孔洞填充之后,最终图像也可能不具有用作基准的可接受的质量。图10A示出了未进行孔洞填充的示例性变形后图片1000。图10B示出了进行了孔洞填充的图10A的示例性变形后图片1050。从图10A可以看到,在跳霹雳舞者的左边和帧的右侧存在若干孔洞。这些孔洞然后被利用像修补之类的孔洞填充算法而被填充,并且结果可在图10B中看到。
为了解决大基线问题,作出如下提议:不是直接将视图1变形到视图5的相机位置,而是变形到作为视图1和视图5之间的某处的位置,例如这两个相机之间的中点。该位置离视图1比离视图5近,并且将潜在地具有更少的和更小的孔洞。与具有大基线的较大孔洞相比,这些更小的/更少的孔洞更易于管理。实际上,可以生成这两个相机之间的任意位置而不是直接生成与视图5相对应的位置。事实上,可以生成多个虚拟相机位置作为附加基准。
在线性和并列相机布置的情况中,通常只需要用信号通知与所生成的虚拟位置相对应的平移向量,这是因为所有其他信息应当是已经可得的。为了支持一个或多个附加变形后基准的生成,提议在例如切片头部(sliceheader)中增加句法。所提议的切片头部句法的一个实施例在表1中示出。所提议的虚拟视图信息句法的一个实施例在表2中示出。如表1中的逻辑(用斜体示出)所表明的,表2中给出的句法仅在表1中指定的条件得到满足时才存在。这些条件是:当前切片是EP或EB切片;并且简档是多视图视频简档。注意,表2包括P、EP、B和EB切片的“l0”信息,并且还包括B和EB切片的“l1”信息。通过使用适当的基准列表排序句法,可以创建多个变形后基准。例如,第一基准图片可以是原来的基准,第二基准图片可以是在该基准和当前视图之间的点处的变形后基准,并且第三基准图片可以是在当前视图位置处的变形后基准。
表1
表2
virtual_view_info(){ |
C |
描述符 |
for(i=0;i<=num_ref_idx_l0_active_minus1;i++){ |
|
|
virtual_view_l0_flag |
2 |
u(1) |
if(virtual_view_l0_flag){ |
|
|
translation_offset_x_l0 |
2 |
se(v) |
translation_offset_y_l0 |
2 |
se(v) |
translation_offset_z_l0 |
2 |
se(v) |
pan_l0 |
2 |
se(v) |
tilt_l0 |
2 |
se(v) |
rotate_l0 |
2 |
se(v) |
zoom_l0 |
2 |
se(v) |
hole_filling_mode_l0 |
2 |
se(v) |
depth_filter_type_l0 |
2 |
se(v) |
video_filter_type_l0 |
2 |
se(v) |
} |
|
|
} |
|
|
if(slice_type%5==1) |
|
|
for(i=0;i<=num_ref_idx_l1_active_minus1;i++){ |
|
|
virtual_view_l1_flag |
2 |
u(1) |
if(virtual_view_l1_flag){ |
|
|
translation_offset_x_l1 |
2 |
se(v) |
translation_offset_y_l1 |
2 |
se(v) |
translation_offset_z_l1 |
2 |
se(v) |
pan_l1 |
2 |
se(v) |
tilt_l1 |
2 |
se(v) |
rotate_l1 |
2 |
se(v) |
zoom_l1 |
2 |
se(v) |
hole_filling_mode_l1 |
2 |
se(v) |
depth_filter_type_l1 |
2 |
se(v) |
video_filter_type_l1 |
2 |
se(v) |
} |
|
|
} |
|
|
} |
|
|
注意,表1和2中用粗体示出的句法要素通常会出现在比特流中。此外,由于表1是对现有的国际标准化组织/国际电工委员会(ISO/IEC)运动图像专家组-4(MPEG-4)第10部分的高级视频编码(AVC)标准/国际电信联盟电信部(ITU-T)H.264推荐(以下称为“MPEG-4 AVC标准”)切片头部句法的修改,因此为了方便,现有句法的一些未变化的部分用省略号示出。
这种新的句法的语义如下:
virtual_view_flag_l0等于1表明正在重映射的LIST 0中的基准图片是需要生成的虚拟基准视图。virtual_view_flag等于0表明正在重映射的基准图片不是虚拟基准视图。
translation_offset_x_l0表示列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的平移向量的第一分量。
translation_offset_y_l0表示列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的平移向量的第二分量。
translation_offset_z_l0表示列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的平移向量的第三分量。
pan_l0表示由列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的平摇参数(沿着y)。
tilt_l0表示由列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的倾斜参数(沿着x)。
rotation_l0表示由列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的旋转参数(沿着z)。
zoom_l0表示由列表LIST 0中的abs_diff_view_idx_minus1用信号通知的视图与要生成的虚拟视图之间的缩放参数。
hole_filling_mode_l0表明LIST 0中的变形后图片中的孔洞将如何被填充。可以用信号通知不同的孔洞填充模式。例如,值0意味着拷贝相邻的最远像素(即,具有最大深度),值1意味着扩展相邻的背景,并且值2意味着不进行孔洞填充。
depth_filter_type_l0表明什么样的滤波器用于LIST 0中的深度信号。可以用信号通知不同的滤波器。在一个实施例中,值0意味着没有滤波器,值1意味着(一个或多个)中值滤波器,值2意味着(一个或多个)双边滤波器,并且值3意味着(一个或多个)高斯滤波器。
video_filter_type_l0表明什么样的滤波器用于LIST 0中的虚拟视频信号。可以用信号通知不同的滤波器。在一个实施例中,值0意味着没有滤波器,并且值1意味着去噪滤波器。
virtual_view_flag_l1使用与virtual_view_flat_l0相同的语义,其中l0被l1取代。
translation_offset_x_l1使用与translation_offset_x_l0相同的语义,其中l0被l1取代。
translation_offset_y_l1使用与translation_offset_y_l0相同的语义,其中l0被l1取代。
translation_offset_z_l1使用与translation_offset_z_l0相同的语义,其中l0被l1取代。
pan_l1使用与pan_l0相同的语义,其中l0被l1取代。
tilt_l1使用与tilt_l0相同的语义,其中l0被l1取代。
rotation_l1使用与rotation_l0相同的语义,其中l0被l1取代。
zoom_l1使用与zoom_l0相同的语义,其中l0被l1取代。
hole_filling_mode_l1使用与hole_filling_mode_l0相同的语义,其中l0被l1取代。
depth_filter_type_l1使用与depth_filter_type_l0相同的语义,其中l0被l1取代。
video_filter_type_l1使用与video_filter_type_l0相同的语义,其中l0被l1取代。
图11示出了根据本发明原理的另一实施例的用于对虚拟基准视图进行编码的方法1100的流程图。在步骤1110,针对视图i读取编码器配置文件。在步骤1115,判断是否要生成位置“t”处的虚拟基准。如果判断结果是肯定的,则控制进行到步骤1120。否则,控制进行到步骤1125。在步骤1120,在位置“t”处从基准视图执行视图合成。在步骤1125,判断是否要在当前视图位置处生成虚拟基准。如果判断结果是肯定的,则控制进行到步骤1130。否则,控制进行到步骤1135。在步骤1130,在当前视图位置处执行视图合成。在步骤1135,生成基准列表。在步骤1140,对当前图片编码。在步骤1145,发送基准列表重排序命令。在步骤1150,发送虚拟视图生成命令。在步骤1155,判断对当前视图的编码是否完成。如果判断结果是肯定的,则方法终止。否则,控制进行到步骤1160。在步骤1160,方法前进到要编码的下一图片并且返回到步骤1110。
这样,在图11中,在读取编码器配置(通过步骤1110)之后,判断是否应当在位置“t”处生成虚拟视图(通过步骤1115)。如果需要生成这样的视图,则与孔洞填充(图11中未明确示出)一起执行视图合成(通过步骤1120),并且作为基准添加该虚拟视图(通过步骤1135)。随后,另一虚拟视图可在当前相机的位置处被生成(通过步骤1125)并且也可被添加到基准列表中。然后在将这些视图作为附加基准的情况下进行对当前视图的编码。
图12示出了根据本发明原理的另一实施例的用于对虚拟基准视图进行解码的方法1200的流程图。在步骤1205,解析比特流。在步骤1210,解析基准列表重排序命令。在步骤1215,解析虚拟视图信息(如果存在的话)。在步骤1220,判断是否要生成位置“t”处的虚拟基准。如果判断结果是肯定的,则控制进行到步骤1225。否则,控制进行到步骤1230。在步骤1225,在位置“t”处从基准视图执行视图合成。在步骤1230,判断是否要在当前视图位置处生成虚拟基准。如果判断结果是肯定的,则控制进行到步骤1235。否则,控制进行到步骤1240。在步骤1235,在当前视图位置处执行视图合成。在步骤1240,生成基准列表。在步骤1245,对当前图片解码。在步骤1250,判断对当前视图的解码是否完成。如果判断结果是肯定的,则方法终止。否则,控制进行到步骤1255。在步骤1255,方法前进到要解码的下一图片,并且返回到步骤1205。
这样,在图12中,通过解析基准列表重排序句法要素(通过步骤1210),可以判断是否需要生成位置“t”处的虚拟视图作为附加基准(通过步骤1220)。如果情况就是如此,则执行视图合成(通过步骤1225)和孔洞填充(图12中未明确示出)以生成该视图。另外,如果在比特流中表明,则在当前视图位置处生成另一虚拟视图(通过步骤1230)。这些视图都被作为附加基准放置在基准列表中(通过步骤1240),并且解码继续。
实施例2:
在另一实施例中,不是使用上述句法发送内部和外部参数,而是可以如表3所示地发送这些参数。表3示出了所提议的根据另一实施例的虚拟视图信息句法。
表3
virtual_view_info( ){ |
C |
描述符 |
intrinsic_param_flag_l0 |
5 |
u(1) |
if(instrinsic_param_flag_l0){ |
|
|
intrinsic_params_equal_l0 |
5 |
u(1) |
prec_focal_length_l0 |
5 |
ue(v) |
prec_princlpal_point_l0 |
5 |
ue(v) |
prec_radial_distortion_l0 |
5 |
ue(v) |
for(i=0;i<=num_ref_idx_l0_active_minus1;i++){ |
|
|
sign_focal_length_l0_x[i] |
5 |
u(1) |
exponent_focal_length_l0_x[i] |
5 |
u(6) |
mantissa_focal_length_l0_x[i] |
5 |
u(v) |
sign_focal_fength_l0_y[i] |
5 |
u(1) |
exponent_focal_length_l0_y[i] |
5 |
u(6) |
mantlssa_focal_length_l0_y[i] |
5 |
u(v) |
sign_principal_point_l0_x[i] |
5 |
u(1) |
exponent_princlpal_point_l0_x[i] |
5 |
u(6) |
mantissa_principal_point_l0_x[i] |
5 |
u(v) |
sign_principal_point_l0_y[i] |
5 |
u(1) |
exponent_principal_point_l0_y[i] |
5 |
u(6) |
mantissa_principal_point_l0_y[i] |
5 |
u(v) |
sign_radial_distortion_l0[i] |
5 |
u(1) |
exponent_radlal_distortion_l0[i] |
5 |
u(6) |
mantissa_radial_distortion_l0[i] |
5 |
u(v) |
} |
|
|
} |
|
|
extrinsic_param_flag_l0 |
5 |
u(1) |
if(extrinsic_param_flag_l0){ |
|
|
prec_rotation_param_l0 |
5 |
ue(v) |
prec_translation_param_l0 |
5 |
ue(v) |
for(i=0;i<=num_ref_idx_l0_active_minus1;i++){ |
|
|
for(j=1;j<=3;j++){/*row*/ |
|
|
for(k=1;k<=3;k++){/* column*/ |
|
|
sign_l0_r[i][j][k] |
5 |
u(1) |
exponent_l0_r[i][j][k] |
5 |
u(6) |
mantissa_l0_r[i][j][k] |
5 |
u(v) |
} |
|
|
sign_l0_t[i][j] |
5 |
u(1) |
exponent_l0_t[i][j] |
5 |
u(6) |
mantissa_l0_t[i][j] |
5 |
u(v) |
|
|
|
} |
|
|
} |
|
|
} |
|
|
if(slice_type % 5==1){ |
|
|
intrinsic_param_flag_l1 |
5 |
u(1) |
if(instrinsic_param_flag_l1){ |
|
|
intrinsic_params_equal_l1 |
5 |
u(1) |
prec_focal_length_l1 |
5 |
ue(v) |
prec_principal_polnt_l1 |
5 |
ue(v) |
prec_radial_distortion_l1 |
5 |
ue(v) |
for(i=0;i<=num_ref_idx_l1_active_minus1;i++){ |
|
|
sign_focal_length_l1_x[i] |
5 |
u(1) |
exponent_focal_length_l1_x[i] |
5 |
u(6) |
mantissa_focal_length_l1_x[i] |
5 |
u(v) |
sign_focal_length_l1_y[i] |
5 |
u(1) |
exponent_focal_length_l1_y[i] |
5 |
u(6) |
mantissa_focal_length_l1_y[i] |
5 |
u(v) |
sign_principal_point_l1_x[i] |
5 |
u(1) |
exponent_principal_point_l1_x[i] |
5 |
u(6) |
mantissa_principal_point_l1_x[i] |
5 |
u(v) |
sign_prlncipal_point_l1_y[i] |
5 |
u(1) |
exponent_principal_point_l1_y[i] |
5 |
u(6) |
mantissa_principal_point_l1_y[i] |
5 |
u(v) |
sign_radial_distortion_l1[i] |
5 |
u(1) |
exponent_radial_distortion_l1[i] |
5 |
u(6) |
mantissa_radial_distortion_l1[i] |
5 |
u(v) |
} |
|
|
} |
|
|
extrinsic_param_flag_l1 |
5 |
u(1) |
if(extrinsic_param_flag_l1){ |
|
|
prec_rotation_param_l1 |
5 |
ue(v) |
prec_translation_param_l1 |
5 |
ue(v) |
for(i=0;i<=num_ref_idx_l1_active_minus1;i++){ |
|
|
for(j=1;j<=3;j++){/*row*/ |
|
|
for(k=1;k<=3;k++){/*column*/ |
|
|
sign_l1_r[i][j][k] |
5 |
u(1) |
exponent_l1_r[i][j][k] |
5 |
u(6) |
mantissa_l1_r[i][j][k] |
5 |
u(v) |
} |
|
|
sign_l1_t[i][j] |
5 |
u(1) |
exponent_l1_t[i][j] |
5 |
u(6) |
mantissa_l1_t[i][j] |
5 |
u(v) |
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
句法要素于是将具有以下语义:
intrinsic_param_flag_l0等于1表明存在用于LIST_0的内部相机参数。intrinsic_param_flag_l0等于0表明不存在用于LIST_0的内部相机参数。
intrinsic_params_equal_l0等于1表明用于LIST_0的内部相机参数对于所有相机都是相等的并且仅存在一组内部相机参数。intrinsic_params_equal_l0等于0表明用于LIST_1的内部相机参数对于每个相机是不同的并且针对每个相机都存在一组内部相机参数。
prec_focal_length_l0指定了由2-prec_focal_length_l0给出的用于focal_length_l0_x[i]和focal_length_l0_y[i]的最大容许截取误差的指数。
prec_principal_point_l0指定了由2-prec_principal_point_l0给出的用于principal_point_l0_x[i]和principal_point_l0_y[i]的最大容许截取误差的指数。
prec_radial_distortion_l0指定了由2-prec_radial_distortion_l0给出的用于radial_distortion_l0的最大容许截取误差的指数。
sign_focal_length_l0_x[i]等于0表明在水平方向上LIST 0中的第i相机的焦距的符号为正。sign_focal_length_l0_x[i]等于0表明该符号为负。
exponent_focal_length_l0_x[i]指定了在水平方向上LIST 0中的第i相机的焦距的指数部分。
mantissa_focal_length_l0_x[i]指定了在水平方向上LIST 0中的第i相机的焦距的尾数部分。mantissa_focal_length_l0_x[i]句法要素的大小是按照下面指定的那样来确定的。
sign_focal_length_l0_y[i]等于0表明在垂直方向上LIST 0中的第i相机的焦距的符号为正。sign_focal_length_l0_y[i]等于0表明该符号为负。
exponent_focal_length_l0_y[i]指定了在垂直方向上LIST 0中的第i相机的焦距指数部分。
mantissa_focal_length_l0_y[i]指定了在垂直方向上LIST 0中的第i相机的焦距的尾数部分。mantissa_focal_length_l0_y[i]句法要素的大小是按照下面指定的那样来确定的。
sign_principal_point_l0_x[i]等于0表明在水平方向上LIST 0中的第i相机的主点(principal point)的符号为正。sign_principal_point_l0_x[i]等于0表明该符号为负。
exponent_principal_point_l0_x[i]指定了在水平方向上LIST 0中的第i相机的主点的指数部分。
mantissa_principal_point_l0_x[i]指定了在水平方向上LIST 0中的第i相机的主点的尾数部分。mantissa_principal_point_l0_x[i]句法要素的大小是按照下面指定的那样来确定的。
sign_principal_point_l0_y[i]等于0表明在垂直方向上LIST 0中的第i相机的主点的符号为正。sign_principal_point_l0_y[i]等于0表明该符号为负。
exponent_principal_point_l0_y[i]指定了在垂直方向上LIST 0中的第i相机的主点的指数部分。
mantissa_principal_point_l0_y[i]指定了在垂直方向上LIST 0中的第i相机的主点的尾数部分。mantissa_principal_point_l0_y[i]句法要素的大小是按照下面指定的那样来确定的。
sign_radial_distortion_l0[i]等于0表明LIST 0中的第i相机的径向失真系数的符号为正。sign_radial_distortion_l0[i]等于0表明该符号为负。
exponent_radial_distortion_l0[i]指定了LIST 0中的第i相机的径向失真系数的指数部分。
mantissa_radial_distortion_l0[i]指定了LIST 0中的第i相机的径向失真系数的尾数部分。mantissa_radial_distortion_l0[i]句法要素的大小是按照下面指定的那样来确定的。
表4示出了第i相机的内部矩阵A(i)。
表4
focal_length_l0_x[i] |
radial_distortion_l0[i] |
principal_point_l0_x[i] |
0 |
focal_length_l0_y[i] |
principal_point_l0_y[i] |
0 |
0 |
1 |
extrinsic_param_flag_l0等于1表明LIST 0中存在外部相机参数。extrinsic_param_flag_l0等于0表明不存在外部相机参数。
prec_rotation_param_l0指定了由2-prec_rotation_param_l0给出的用于LIST 0的r[i][j][k]的最大容许截取误差的指数。
prec_translation_param_l0指定了由2-prec_translation_param_l0给出的用于LIST0的t[i][j]的最大容许截取误差的指数。
sign_l0_r[i][j][k]等于0表明用于LIST 0中的第i相机的旋转矩阵的(j,k)分量的符号为正。sign_l0_r[i][j][k]等于0表明该符号为负。
exponent_l0_r[i][j][k]指定了用于LIST 0中的第i相机的旋转矩阵的(j,k)分量的指数部分。
mantissa_l0_r[i][j][k]指定了用于LIST 0中的第i相机的旋转矩阵的(j,k)分量的尾数部分。mantissa_l0_r[i][j][k]句法要素的大小是按照下面指定的那样来确定的。
表5示出了第i相机的旋转矩阵R(i)。
表5
r[i][0][0] |
r[i][0][1] |
r[i][0][2] |
r[i][1][0] |
r[i][1][1] |
r[i][1][2] |
r[i][2][0] |
r[i][2][1] |
r[i][2][2] |
sign_l0_t[i][j]等于0表明用于LIST 0中的第i相机的平移向量的第j分量的符号为正。sign_l0_t[i][j]等于0表明该符号为负。
exponent_l0_t[i][j]指定了用于LIST 0中的第i相机的平移向量的第j分量的指数部分。
mantissa_l0_t[i][j]指定了用于LIST 0中的第i相机的平移向量的第j分量的尾数部分。mantissa_l0_t[i][j]句法要素的大小是按照下面指定的那样来确定的。
表6示出了第i相机的平移向量t(i)。
表6
内部矩阵和旋转矩阵以及平移向量的分量是以类似于IEEE 754标准的方式如下获得的:
如果E=63且M不为零,则X不是数字。
如果E=63且M=0,则X=(-1)S·∞。
如果0<E<63,则X=(-1)S·2E-31·(1.M)。
如果E=0且M不为零,则X=(-1)S·2-30·(0.M)。
如果E=0且M=0,则X=(-1)S·0,
其中,M=bin2float(N),0<=M<1,并且X、s、N和E对应于表7的第一、第二、第三和第四列。见下面对函数bin2float()的c型描述,该函数将小数的二进制表示转换成相应的浮点数。
表7
X |
s |
E |
N |
focal_length_l0_x[i] |
sign_focal_length_l0_x[i] |
exponent_focal_length_l0_x[i] |
mantissa_focal_length_l0_x[i] |
focal_length_l0_y[i] |
sign_focal_length_l0_y[i] |
exponent_focal_length_l0_y[i] |
mantissa_focal_length_l0_y[i] |
principal_point_l0_x[i] |
sign_principal_point_l0_x[i] |
exponent_principal_point_l0_x[i] |
mantissa_principal_point_l0_x[i] |
principal_point_l0_y[i] |
sign_principal_point_l0_y[i] |
exponent_principal_point_l0_y[i] |
mantissa_principal_point_l0_y[i] |
radial_distortion l0_[i] |
sign_radial_distortion l0_[j] |
exponent_radial_distortion l0_[i] |
mantissa_radial_distortion l0_[i] |
r l0_[i][j][k] |
sign_l0_r[i][j][k] |
exponent_l0_r[i][j][k] |
mantissa_l0_r[i][j][k] |
t l0_[i][j] |
sign_l0_t[i][j] |
exponent_l0_t[i][j] |
mantissa_l0_t[i][j] |
将小数N(0<=N<1)的二进制表示转换成相应的浮点数M的示例性的c实现方式在表8中示出。
表8
尾数句法要素的大小是如下确定的:
v=max(0,-30+Precision_Syntax_Element),若E=0。
v=max(0,E-31+Precision_Syntax_Element),若0<E<63。
v=0,若E=31,
其中,尾数句法要素和它们相应的E和Precision_Syntax_Element(精度句法要素)在表9中给出。
表9
尾数句法要素 |
E |
Precision_Syntax_Element |
mantissa_focal_length_l0_x[i] |
exponent_focal_length_l0_x[i] |
prec_focal_length_l0_x[i] |
mantissa_focal_length_l0_y[i] |
exponent_focal_length_l0_y[i] |
prec_focal_length_l0_yi] |
mantissa_principal_point_l0_x[i] |
exponent_principal_point_l0_x[i] |
prec_principal_point_l0_x[i] |
mantissa_principal_point_l0_y[i] |
exponent_principal_point_l0_y[i] |
prec_principal_point_l0_y[i] |
mantissa_radial_distortion_l0[i] |
exponent_radial_distortion_l0[i] |
prec_radial_distortion_l0[i] |
mantissa_l0_r[i][j][k] |
exponent_l0_r[i][j][k] |
prec_l0_r[i][j][k] |
mantissa_l0_t[i][j] |
exponent_l0_t[i][j] |
prec_l0_t[i][j] |
对于“l1”的句法要素,在“l0”的句法的语义中用LIST 1取代LIST0。
实施例3:
在另一实施例中,可以如下连续对虚拟视图进行精炼。
首先,在离视图1为距离t1处生成视图1和视图5之间的虚拟视图。在3D变形之后,填充孔洞以生成位置P(t1)处的最终虚拟视图。然后可以对虚拟相机位置V(t1)处的视图1的深度信号进行变形并针对深度信号填充孔洞,并且执行任何其他需要的后处理步骤。实现方式还可以使用变形后的深度数据来生成变形后视图。
在此之后,可以按照与V(t1)相同的方式在离V(t1)为距离t2处生成V(t1)处的虚拟视图与视图5之间的另一虚拟视图。这在图13中示出。图13示出了根据本发明原理的实施例的连续虚拟视图生成器1300的示例,本发明的原理可应用于该连续虚拟视图生成器。虚拟视图生成器1300包括第一视图合成器和孔洞填充器1310以及第二视图合成器和孔洞填充器1320。在该示例中,视图5表示要编码的视图,视图1表示可用的基准视图(例如,用于对视图5或某一其他视图编码)。在该示例中,选择使用两个相机之间的中点作为中间位置。这样,在第1步骤中,由第一视图合成器和孔洞填充器1310将t1选择为D/2并且在孔洞填充之后将虚拟视图生成为V(D/2)。随后,由第二视图合成器和孔洞填充器1320在位置3D/4处利用V(D/2)和V5另一中间视图。然后可将该虚拟视图V(3D/4)添加到基准列表1330。
类似地,可以按照需要生成更多的虚拟视图,直到质量量度得到满足为止。质量量度的一个示例可以是虚拟视图和要预测的视图(例如视图5)之间的预测误差。最终的虚拟视图然后可被用作视图5的基准。也可以通过利用适当的基准列表排序句法来添加所有的中间视图作为基准。
图14示出了根据本发明原理的另一实施例的用于对虚拟基准视图进行编码的方法1400的流程图。在步骤1410,针对视图i读取编码器配置文件。在步骤1415,判断是否要生成多个位置处的虚拟基准。如果判断结果是肯定的,则控制进行到步骤1420。否则,控制进行到步骤1425。在步骤1420,在多个位置处通过连续精炼从基准视图执行视图合成。在步骤1425,判断是否要在当前视图位置处生成虚拟基准。如果判断结果是肯定的,则控制进行到步骤1430。否则,控制进行到步骤1435。在步骤1430,在当前视图位置处执行视图合成。在步骤1435,生成基准列表。在步骤1440,对当前图片编码。在步骤1445,发送基准列表重排序命令。在步骤1450,发送虚拟视图生成命令。在步骤1455,判断对当前视图的编码是否完成。如果判断结果是肯定的,则方法终止。否则,控制进行到步骤1460。在步骤1460,方法前进到要编码的下一图片并且返回到步骤1410。
图15示出了根据本发明原理的另一实施例的用于对虚拟基准视图进行解码的方法1500的流程图。在步骤1505,解析比特流。在步骤1510,解析基准列表重排序命令。在步骤1515,解析虚拟视图信息(如果存在的话)。在步骤1520,判断是否要生成多个位置处的虚拟基准。如果判断结果是肯定的,则控制进行到步骤1525。否则,控制进行到步骤1530。在步骤1525,在多个位置处通过连续精炼从基准视图执行视图合成。在步骤1530,判断是否要在当前视图位置处生成虚拟基准。如果判断结果是肯定的,则控制进行到步骤1535。否则,控制进行到步骤1540。在步骤1535,在当前视图位置处执行视图合成。在步骤1540,生成基准列表。在步骤1545,对当前图片解码。在步骤1550,判断对当前视图的解码是否完成。如果判断结果是肯定的,则方法终止。否则,控制进行到步骤1555。在步骤1555,方法前进到要解码的下一图片,并且返回到步骤1505。
可以看到,本实施例和实施例1之间的差异在于:在编码器处,可以在位置t1、t2、t3处通过连续精炼来生成若干虚拟视图,而不是只有“t”处的单个虚拟视图。所有这些虚拟视图或者例如最好的虚拟视图然后可被放置在最终的基准列表中。在解码器处,基准列表重排序句法将表明需要在多少个位置处生成虚拟视图。这些然后可在解码之前放置在基准列表中。
这样提供了多种实现方式。包括在这些实现方式中的是例如包括以下优点/特征中的一项或多项的实现方式:
1.从至少一个其他视图生成虚拟视图,并且使用该虚拟视图作为编码时的基准视图,
2.从至少第一虚拟视图生成第二虚拟视图,
2a.使用(紧接在此之前的第2项中的)第二虚拟视图作为编码时的基准视图,
2b.在3D应用中生成(2的)第二虚拟视图,
2e.从至少(2的)第二虚拟视图生成第三虚拟视图,
2f.在相机位置(或者已有的“视图”位置)处生成(2的)第二虚拟视图,
3.生成两个已有的视图之间的多个虚拟视图,并且基于多个虚拟视图中的前一视图生成多个虚拟视图中的相继视图,
3a.生成(3的)连续虚拟视图,以使得对于所生成的连续视图中的每一个,质量量度都得到提高,或者
3b.使用(3中的)质量量度,该质量量度是对虚拟视图和两个已有视图中正被预测的视图之间的预测误差(或留数(residue))的测量结果。
这些实现方式中的若干实现方式包括如下特征:不是在发生了解码之后在应用(例如3D应用)中生成虚拟图像,而是在编码器处生成虚拟图像(或者除了在发生了解码之后在应用中生成虚拟图像之外,还在编码器处生成虚拟图像)。另外,这里描述的实现方式和特征可用在MPEG-4AVC标准、具有多视图视频编码(MVC)扩展的MPEG-4 AVC标准或者具有可伸缩视频编码(SVC)扩展的MPEG-4AVC标准的环境中。然而,这些实现方式和特征可以用在另一种标准和/或推荐(现有的或将来的)的环境中,或者用在不涉及标准和/或推荐的环境中。因此提供了具有特定特征和方面的一种或多种实现方式。然而,所描述的实现方式的特征和方面也可适用于其他实现方式。
实现方式可以利用各种技术来用信号通知信息,这些技术包括但不限于切片头部、SEI消息、其他高级句法、非高级句法、带外信息、数据流数据和隐式信令。因此,虽然这里描述的实现方式可能是在特定环境中描述的,但是这些描述决不应当看作是将特征和概念限制于这样的实现方式或环境。
因此提供了具有特定特征和方面的一种或多种实现方式。然而,所描述的实现方式的特征和方面也可适用于其他实现方式。实现方式可以利用各种技术来用信号通知信息,这些技术包括但不限于SEI消息、其他高级句法、非高级句法、带外信息、数据流数据和隐式信令。因此,虽然这里描述的实现方式可能是在特定环境中描述的,但是这些描述决不应当看作是将特征和概念限制于这样的实现方式或环境。
另外,许多实现方式可以在编码器和解码器中的任一者或两者中实现。
说明书(包括权利要求书)中对“访问”的提及希望是一般性的。例如,“访问”一个数据可以在接收、发送、存储、传输或处理该数据的过程中执行。因此,例如,图像通常在该图像被存储到存储器、从存储器取回、编码、解码或用作合成新图像的基础时被访问。
说明书中对基准图像“基于”另一图像(例如,合成的图像)的提及允许基准图像等于另一图像(不进行进一步的处理)或者是通过处理另一图像而创建的。例如,基准图像可被设定为等于第一合成图像,并且仍然“基于”第一合成图像。此外,基准图像可以通过在将虚拟位置移至新位置的情况下对第一合成图像的进一步合成而“基于”第一合成图像(例如在递增合成实现方式中所描述的)。
说明书中对本发明原理的“一个实施例”或“实施例”或者“一种实现方式”或“一个实现方式”的提及以及其他变体,指的是与该实施例有关的特定特征、结构、特性等等包括在本发明原理的至少一个实施例中。因此,在整个说明书中的各处出现的短语“在一个实施例中”或“在实施例中”或者“在一种实现方式中”或“在一个实现方式中”以及任何其他变体的出现不一定都指同一实施例。
将会认识到,对以下的例如“A/B”、“A和/或B”和“A和B中的至少一者”情况中的“/”、“和/或”和“…中的至少一者”的任一者的使用都意图包含仅对第一个列出的选项(A)的选择、仅对第二个列出的选项(B)的选择或者对两个选项(A和B)的选择。作为进一步的示例,在“A、B和/或C”和“A、B和C中的至少一者”的情况中,这样的短语意图包含仅对第一个列出的选项(A)的选择、仅对第二个列出的选项(B)的选择、仅对第三个列出的选项(C)的选择、仅对第一个和第二个列出的选项(A和B)的选择、仅对第一个和第三个列出的选项(A和C)的选择、仅对第二个和第三个列出的选项(B和C)的选择或者对全部三个选项(A和B和C)的选择。如本领域和相关领域的普通技术人员将容易明白的,这可以针对所列出的多个选项进行扩展。
这里描述的实现方式例如可以用方法或过程、装置、软件程序、数据流或信号来实现。即使仅在单个实现形式的环境中进行讨论(例如,仅作为方法进行讨论),所讨论的特征的实现方式也可以用其他形式(例如装置或程序)来实现。装置例如可以用适当的硬件、软件和固件来实现。方法例如可以用诸如处理器之类的装置来实现,处理器指的是一般包括例如计算机、微处理器、集成电路或可编程逻辑器件的处理设备。处理器还包括通信设备,例如计算机、蜂窝电话、便携式/个人数字助理(“PDA”)和其他辅助终端用户之间的信息通信的设备。
这里描述的各种过程和特征的实现方式可以用各种不同的设备或应用(特别是例如与数据编码和解码相关联的设备和应用)来体现。这种设备的示例包括编码器、解码器、处理来自解码器的输出的后处理器、向编码器提供输入的预处理器、视频编码器、视频解码器、视频编解码器、web服务器、机顶盒、膝上型计算机、个人计算机、蜂窝电话、PDA和其他通信设备。应当清楚,设备可以是移动的,甚至安装在移动车辆中。
另外,方法可以通过处理器所执行的指令来实现,并且这样的指令(和/或由实现方式产生的数据值)可被存储在处理器可读介质上,该介质例如是集成电路、软件载体或者诸如硬盘、光盘、随机存取存储器(“RAM”)或只读存储器(“ROM”)之类的其他存储设备。指令可以形成有形地体现在处理器可读介质上的应用程序。指令例如可以在硬件、固件、软件或者组合中。指令例如可以操作系统、分离的应用或二者的组合中找到。因此处理器例如既可表征为被配置成执行处理的设备,也可表征为包括处理器可读介质(例如存储设备)的设备,该处理器可读介质具有用于执行处理的指令。此外,除了指令或者替代指令,处理器可读介质可以存储实现方式所产生的数据值。
本领域技术人员将会明白,实现方式可以产生各种信号,这些信号被格式化成携带例如可被存储或传输的信息。信息例如可以包括用于执行方法的指令或者由所描述的实现方式之一产生的数据。例如,信号可以被格式化成携带用于写入或读取所描述的实施例的句法的规则作为数据,或者携带由所描述的实施例写入的实际句法值作为数据。这样的信号例如可被格式化成电磁波(例如使用波谱的射频部分)或者基带信号。格式化例如可以包括对数据流编码和利用编码后数据流调制载波。众所周知,信号可以通过各种不同的有线或无线链路来传输。信号可被存储在处理器可读介质上。
描述了许多实现方式。然而,将会了解,可以作出各种修改。例如,不同实现方式的要素可被组合、补充、修改或去除,以产生其他实现方式。另外,本领域普通技术人员将会了解,其他结构和处理可以替代所公开的那些,并且这样产生的实现方式将以至少基本相同的方式来执行至少基本相同的功能,以获得与所公开的实现方式至少基本相同的结果。因此,这些和其他实现方式也被本申请所考虑并且在所附权利要求的范围内。