使用比特分区操作将数据嵌入变换系数中的制作方法

文档序号:31463191发布日期:2022-09-09 18:47阅读:53来源:国知局
使用比特分区操作将数据嵌入变换系数中的制作方法

1.本发明涉及用于处理信号的方法,诸如通过非限制性示例视频、图像、高光谱图像、音频、点云、3dof/6dof(自由度)和体积信号。处理数据可包含但不限于获取、导出、编码、输出、接收、解码和重构信号。本发明涉及通过修改一组变换系数的比特值将数据嵌入到编码比特流中。


背景技术:

2.许多信号编码方法使用变换操作来变换信号数据块。例如,许多图像、视频和音频编码方法利用离散余弦变换(dct)来根据以不同频率振荡的余弦函数之和来表示数据点的有限序列。视频编码中使用的标准化dct操作压缩8x8帧数据块以生成编码数据流。在解码器处,该编码数据流可以通过应用dct的反向版本来解码。在avc(高级视频编码)标准和hevc(高效视频编码)标准中使用整数dct,在mp3音频编码和数字电视编码方案中可以找到其他dct实施方式。
3.基于层的编码格式,诸如iso/iec mpeg-5part2 lcevc(以下简称“lcevc”)或smpte vc-62117(以下简称“vc-6”),也对残差数据应用变换以生成不同“梯队”或“分层”的数据。在这种情况下,可以应用多个变换操作,例如每个梯队或层对应一个变换操作,其中每个梯队或层对应于不同的质量等级。质量等级可以对应于不同的采样率和/或空间分辨率。
4.信号编码方案的一个挑战是如何传达与编码信号相关联的元数据。例如,元数据可以包括关于信号的附加信息,其中期望元数据与信号一起被接收以使元数据可用于重构操作。在某些应用中,可能需要标记信号的某些部分,诸如音频或视频数据的不同帧。对于图像编码(无论是静态的还是视频的),还可能需要标记特定图像内的某些区域,诸如与出现在图像中的实体相关联的信息。例如,这些可能是对象标识符、超链接、对象属性、面部标识符等。
5.元数据编码的数个解决方案引入了附加的边信道或数据流来承载元数据。例如,除了承载编码视频流的网络抽象层(nal)单元之外,数个视频编码标准还使用补充增强信息(sei)消息来承载元数据流。编码视频流的nal单元的一般组可分为视频编码层(vcl)单元和非vcl单元,非vcl单元可用于承载非视频数据,诸如sei消息或其他参数组。
6.承载元数据的另一解决方案是使用数字水印技术。一种示例数字水印技术是高级电视系统委员会(atsc)视频水印发射标准-a/335。定义该标准的文件,例如如2016年9月20日公布的,通过引用并入本文。
7.在a/335中,视频信号的前一列或两列用于嵌入水印信息。在a/335中,这些列内的像素的亮度值被修改以承载水印信息。接收器提取视频信号每帧的前一列或前两列,并应用一组阈值操作来恢复编码数据。
8.a/335和类似的数字水印方法存在的一个问题是,它们要求嵌入的数据能够经受住各种压缩和转码操作,以及通过传统的消费类高清多媒体接口(hdmi)递送。为了实现鲁
棒性,在接收器处应用了更复杂的阈值操作。a/335也不打算是防篡改或不可磨灭的;它可能被中介故意抹掉。
9.通常,期望有用于自定义或用户(即非信号)数据与信号数据的有效传送的方法和系统。期望方法和系统最大限度地减少对现有信号编码方法的改变,同时提供灵活和可寻址的附加数据流。


技术实现要素:

10.本发明的各个方面和变化在所附权利要求中阐述。在下面的详细描述中进一步阐述了某些未要求保护的方面。
附图说明
11.图1是表示示例信号编码系统的方框图;
12.图2是表示视频数据的示例编码的示意图;
13.图3a-3c是表示用户数据插入的示例过程的示意图;以及
14.图4a-4c是表示用户数据提取的示例过程的示意图。
具体实施方式
15.本文描述的某些示例将非信号数据的自定义数据封装在编码信号数据流中。自定义数据可以包括注释信号数据或提供与信号数据相关的附加信息的多种元数据。如果信号数据包括视频或音频流,则自定义数据可以包括流内注释或标签,其标识在流中起重要作用的人或对象。本文描述的某些示例将自定义数据封装在一组变换系数值中,这些变换系数值表示从形成信号编码的一部分的变换操作中导出的数据。
16.在本文描述的特定示例中,在编码器处,对表示变换系数值的比特应用比特移位操作,并且将用户数据比特插入到新的移入比特中。在解码器处,可以在应用进一步的比特移位操作以将表示变换系数值的比特移回其原始位置之前读出用户数据比特。尽管比特移位操作有可能修改变换系数值,但由于它只改变表示变换系数值的比特序列一端的比特值,因此可以重构原始变换系数值的近似值,已发现该近似值减小了对重构信号的视觉影响。另外,如果在具有多个残差数据流的基于层的层次中执行用户数据封装,则更高等级的残差数据流可以纠正对当前等级残差数据流的任何细微修改,因此仍然允许无损编码选项。在编码和解码期间,可以对多个变换系数值快速(例如并行)应用比特移位操作,这些系数值构成信号数据的特定平面,从而最大限度地减少用户数据插入和提取过程的处理开销。此外,通过将移位大小和用户数据作为可配置参数,可以提供不同等级的数据嵌入。本示例可以进一步实施为对现有信号编码技术的可选修改,而无需修改这些技术的核心编码操作。
17.本说明书涉及“信号”编码。作为非限制性示例,信号可以是图像、音频信号、多信道音频信号、遥测信号、视频信号、3dof/6dof视频信号、体积信号(例如,医学成像、科学成像、全息成像等)、体积视频信号,甚至是超过四个维度的信号。
18.本文参照作为样本序列(即,二维图像、视频帧、视频场、声音帧等)的信号来呈现示例。为简单起见,本文说明的非限制性实施例通常是指显示为设置的2d平面的信号(例
如,合适颜色空间中的2d图像),诸如例如视频信号。术语“图片”、“帧”或“场”将与术语“图像”可互换地使用,以指示视频信号的时间样本:为由帧构成的视频信号(渐进式视频信号)说明的任何概念和方法也可以很容易地应用于由场构成的视频信号(隔行视频信号),反之亦然。尽管本文说明的实施例的重点是图像和视频信号,但本领域技术人员可以容易地理解相同的概念和方法也适用于任何其他类型的多维信号(例如,音频信号、体积信号、立体视频信号、3dof/6dof视频信号、全光信号、点云等)。尽管提供了图像或视频编码示例,但相同的方法可以应用于维度小于二(例如,音频或传感器流)或大于二(例如,体积信号)的信号。
19.在说明书中,术语“图像”、“图片”或“平面”(意指“超平面”的最广泛含义,即具有任意维数和给定采样网格的元素阵列)将通常用于标识沿样本序列的信号样本的数字再现,其中,每个平面对于其每个维度(例如x和y)具有给定的分辨率,并且包括一组平面元素(或“元素”或“画素”或通常称为“像素”的用于二维图像的显示元素,通常称为“体素”的用于体积图像的显示元素等),其以一个或多个“值”或“设置”为特征(例如,通过非限制性示例的方式,合适颜色空间中的颜色设置、指示密度等级的设置、指示温度等级的设置、指示音频音高的设置、指示幅度的设置、指示深度的设置、指示阿尔法信道透明度等级的设置等)。每个平面元素均由一组合适的坐标标识,指示所述元素在图像的采样网格中的整数位置。信号维度可以仅包含空间维度(例如,在图像的情况下)或时间维度(例如,在信号随时间演变的情况下,诸如视频信号)。
20.术语“接口”在本文中用于指代允许数据输入和数据输出中的一个或多个的任何物理和/或逻辑接口。接口可以通过从一个或多个存储器位置检索数据来实现,如由执行一组指令的处理器来实现。接口还可以包括通过其接收数据的物理耦合。接口可以包括应用编程接口和/或方法调用或返回。例如,在软件实施方式中,接口可以包括将数据和/或存储器参考传递给通过方法调用启动的函数;在硬件实施方式中,接口可以包括不同芯片、芯片组或芯片部分之间的有线互连。在附图中,接口可以由处理块的边界指示,该处理块具有表示数据传输的向内和/或向外箭头。
21.图1示出了示例信号编码系统100。信号编码系统100是多层或基于层的编码系统,因为信号通过多个比特流编码,每个比特流表示不同质量等级的信号的不同编码。在图1的示例中,有基础层101和增强层102。增强层102可以实现增强编码方案,诸如lcevc。lcevc在pct/gb2020/050695和相关标准规范文件中进行了描述,相关标准规范文件包含在2020年1月13日星期一至2020年1月17日星期五在布鲁塞尔举行的mpeg 129会议上公布的iso/iec dis 23094-2低复杂度增强视频编码草案。这两个文件都通过引用并入本文。在图1中,增强层101包括两个子层:第一子层103和第二子层104。每个层和子层可以与特定的质量等级相关联。如本文所用,质量等级可以指以下各项中的一个或多个:采样率、空间分辨率和比特深度等。在lcevc中,基础层101位于基础质量等级,第一子层103位于第一质量等级并且第二子层104位于第二质量等级。基础质量等级和第一质量等级可以包括公共的(即共享的或相同的)质量等级或不同的质量等级。在质量等级对应不同空间分辨率的情况下,诸如在lcevc中,每个质量等级的输入可以通过从另一质量等级进行下采样和/或上采样来获取。例如,第一质量等级可以位于第一空间分辨率,第二质量等级可以位于第二更高的空间分辨率,其中信号可以通过从第二质量等级下采样到第一质量等级并通过从第一质量等级上
采样到第二质量等级来在质量等级之间转换。
22.尽管本文将示例呈现为在多层或基于层的编码系统中实施,但在其他示例中,可能存在位于单一质量等级的单一编码层。例如,本领域技术人员将意识到仅可以实现中间的第一子层103,例如,通过dct变换和非残差数据,并且仍然提供本文描述的本发明的技术效益。因此,本文参照第一子层103的组件描述的方法可以在不同的单层编码和解码流水线内实现。
23.在图1中,说明了信号编码系统100的对应的编码器105和解码器106部分。应当注意,编码器105和解码器106可以作为单独产品实现,并且该编码器和解码器不需要源自同一制造商或作为单个组合单元提供。编码器105和解码器106通常在不同的地理位置实现,从而生成编码数据流以便在所述两个位置之间传送输入信号。编码器105和解码器106中的每一个均可实现为一个或多个编解码器的一部分-能够编码和解码信号的硬件和/或软件实体。参照如本文所述的信号传送还涵盖文件的编码和解码,其中,传送可以在公共机器上的时间内(例如,通过生成编码文件并在稍后的时间点访问它)进行,或通过两个装置之间的媒介上的物理传输进行。
24.在某些优选实施方式中,基础层101的组件可以单独地提供给增强层102的组件;例如,基础层101可由硬件加速的编解码器实现,而增强层102可以包括软件实现的增强编解码器。基础层101包括基础编码器110。基础编码器110接收待编码的输入信号(例如经过一轮或两轮下采样的信号)的版本,并生成基础比特流112。基础比特流112在编码器105和解码器106之间传送。在解码器106处,基础解码器114对基础比特流112进行解码以生成基础质量等级的输入信号的重构。
25.增强子层103和104都包括一组公共的编码和解码组件。第一子层103包括输出一组第一子层变换系数122的第一子层变换和量化组件120。第一子层变换和量化组件120接收从第一质量等级的输入信号中导出的数据并应用变换操作。该数据可以包括如下所述的残差数据。第一子层变换和量化组件120还可以将可变等级的量化应用到变换操作(包含配置为不应用量化)的输出。该第一子层变换系数组122由第一子层比特流编码组件124编码以生成第一子层比特流126。该第一子层比特流126从编码器105传送到解码器106。在解码器106处,第一子层比特流126被接收并由第一子层比特流解码器128解码以获取一组解码的第一子层变换系数130。该解码的第一子层变换系数组130被传递到第一子层反变换和反量化组件132。第一子层反变换和反量化组件132应用进一步的解码操作,其包含将反变换操作至少应用到该解码的第一子层变换系数组130。如果编码器105已经应用了量化,则第一子层反变换和反量化组件132可以在反变换之前应用反量化操作。进一步的解码用于生成输入信号的重构。
26.以类似的方式,第二子层104还包括输出一组第二子层变换系数142的第二子层变换和量化组件140。第二子层变换和量化组件140接收从第二质量等级的输入信号中导出的数据并应用变换操作。在某些实施例中,该数据还可以包括残差数据,尽管该残差数据可能与由第一子层103接收的残差数据不同。变换操作可以是在第一子层103处应用的相同变换操作。第二子层变换和量化组件140还可以在变换操作(包含配置为不应用量化)之前应用可变等级的量化。该第二子层变换系数组142由第二子层比特流编码组件144编码以生成第二子层比特流146。该第二子层比特流146从编码器105传送到解码器106。在一种情况下,至
少第一子层比特流126和第二子层比特流146可被复用为单个编码数据流。在一种情况下,三个比特流112、126和146均可被复用为单个编码数据流。可以在解码器106处接收单个编码数据流并对其进行解复用以获取每个单独的比特流。
27.在解码器106处,第二子层比特流146被接收并由第二子层比特流解码器148解码以获取一组解码的第二子层变换系数150。如上所述,这里的解码涉及比特流解码并且可以形成解码流水线的一部分(即,该解码的变换系数组130和该解码的变换系数组150可以表示通过进一步操作进行进一步解码的一组部分解码的值)。该解码的第二子层变换系数组150被传递到第二子层反变换和反量化组件152。第二子层反变换和反量化组件152应用进一步的解码操作,其包含至少将反变换操作应用到该解码的第二子层变换系数组150。如果编码器105在第二子层处已经应用了量化,则第二子层反变换和反量化组件152可以在反变换之前应用反量化操作。进一步的解码用于生成输入信号的重构。
28.比特流编码组件124和144可以实现熵编码和游程编码中的一个或多个的可配置组合。同样地,比特流编码组件128和148可以实现熵编码和游程编码中的一个或多个的可配置组合。
29.两个子层增强编码和解码系统的进一步的细节和示例可从已公布的lcevc文件中获取。
30.通常,本文描述的示例在至少包括变换操作的编码和解码流水线内操作。变换操作可以包括dct或dct的变体、快速傅里叶变换(fft)或如由lcevc实现的hadamard变换。变换操作可以逐块地应用。例如,输入信号可以被分割为多个不同的连续信号部分或块,并且变换操作可以包括应用于来自这些块(例如如1维向量所示)中的每一个的数据的矩阵乘法(即线性变换)。在该说明书和本领域中,可以说变换操作产生预定义数量的数据元素的一组值,其例如表示变换后的合成向量中的位置。这些数据元素称为变换系数(或有时简称为“系数”)。
31.在本示例中,用户数据被嵌入在上述变换系数中的至少一个内。特别是,用户数据通过对一组表示变换系数值的比特进行分区来嵌入。如图1所示。
32.在图1的示例中,第一子层103进一步包括用户数据预处理器160。用户数据预处理器160配置为获取自定义数据的值,以包含在在编码器105和解码器106之间传送的编码数据流中。术语“用户数据”在本文中用于指代不形成变换系数值的任何数据,即不形成信号数据本身的一部分的任何数据。用户数据可包括元数据、上下文数据、标准化语法规范不支持的附加参数、水印数据等。虽然用户数据可以被认为独立于信号数据,但它可与信号数据相关,例如包括用于信号数据的特定部分的标签或注释。用户数据还可用于在编码器105和解码器106中的一个或多个处为自定义“非标准”处理操作提供信令。用户数据预处理器160以一组用户数据比特162的形式输出用户数据。在图1中,这些用户数据由用户数据插入组件164接收以将用户数据比特162插入到变换系数数据122中。用户数据插入组件164可以通过移位系数比特然后将用户数据比特162的值复制到通过移位添加的比特中来插入用户数据比特162。这可以例如关于视频信号的颜色分量平面的变换系数值来执行。用户数据插入组件164可以包括用户数据接口以获取用户数据比特162,该用户数据比特表示待添加到编码信号比特流中的自定义数据。用户数据比特162与该第一子层变换系数组122结合并由第一子层比特流编码组件124编码以形成第一子层编码比特流126的一部分。因此,用户数据
插入组件164可以包括比特流编码接口,以输出如由用户数据插入组件164生成的一组修改的系数比特,用于生成编码比特流。
33.在解码器106处,该解码的第一子层变换系数组130含有用户数据。第一子层103进一步包括用户数据提取组件168以提取用户数据比特170。用户数据比特170可以如上所述从添加的比特中提取,然后用户数据提取组件168可以应用进一步的比特移位操作,其中进一步的比特移位操作在与用于用户数据插入组件164应用的比特移位的方向相反的方向上。在图1中,提取的用户数据比特170由通信耦合到用户数据提取组件168的用户数据后处理器172接收,以从提取的用户数据比特170中获取用户数据比特值并从比特值中导出自定义数据值,即重构最初由用户数据预处理器160在编码器105处接收的自定义数据。用户数据比特170的提取修改该解码的第一子层变换系数组130,然后该解码的第一子层变换系数组可以进一步解码,例如通过在第一子层反变换和反量化组件132处应用反变换操作。
34.因此,通过附加地包含用户数据插入组件164和用户数据提取组件168,使用标准化编码方法(诸如lcevc)的信号编码系统101可适用于附加地对被传送比特流内的用户数据进行编码。由于比特流编码和解码可以是无损操作,例如与由变换和量化组件120和140执行的量化操作相比,可以对用户数据值进行编码以用于传送,而无需修改待由解码器106提取的值。由于用户数据比特与变换系数值相关联,因此它们也可以与特定的信号数据块相关联,由此可以将用户数据分配给信号的可寻址部分,因此在解码器106处,用户数据值可链接到解码信号重构的对应部分,诸如视频信号帧的不同区域。
35.图2示出了视频编码示例200,其提供了对变换系数的含义以及变换系数如何与原始输入信号相关的进一步解释。
36.在图2的示例中,对视频信号202进行编码。视频信号202包括多个帧或图片204,例如,其中多个帧表示随时间的动作。在该示例中,每个帧204均由三个颜色分量组成。颜色分量可以在任何已知的颜色空间中。在图2中,三个颜色分量是y(亮度)、u(第一色度对立颜色)和v(第二色度对立颜色)。每个颜色分量可以被认为是值的平面208。平面208可以分解成一组n
×
n信号数据块210。例如,在lcevc中,n可以是2或4;在其他视频编码技术中,n可以是8至32。
37.在lcevc和某些其他编码技术中,反馈到诸如101的基础层的视频信号是输入视频信号202的降级版本。在这种情况下,反馈到两个子层的信号包括包括有残差数据的残差信号。残差数据平面还可以组织成n
×
n信号数据块组210。可以通过比较从编码的输入信号(例如,视频信号202)中导出的数据和从输入信号的重构中导出的数据来生成残差数据,输入信号的重构是由较低质量等级的输入信号的表示生成的。在图1的示例中,输入信号的重构可以包括对编码器105处可用的编码基础比特流112的解码。编码基础比特流112的这种解码可以包括较低分辨率的视频信号,然后将其与从输入视频信号202下采样的视频信号进行比较。比较可以包括从下采样版本中减去重构。比较可以在逐帧(和/或逐块)的基础上执行。可以在第一质量等级执行比较;如果基础质量等级低于第一质量等级,则可以在比较之前对从基础质量等级的重构进行升级。以类似的方式,第二子层的输入信号,例如第二子层变换和量化组件140的输入可以包括残差数据,该残差数据是由第二质量等级的输入视频信号202(其可以包括视频信号的完全质量原始版本)和第二质量等级的视频信号的重构进行比较产生的。如前所述,比较可以在逐帧(和/或逐块)的基础上执行并可包括减法。视
频信号的重构可以包括由编码基础比特流112的解码的解码和第一子层残差数据流的解码版本生成的重构。重构可以在第一质量等级生成并且可以被上采样到第二质量等级。
38.因此,第一子层103的数据平面208可以包括以n
×
n信号块210排列的残差数据。图2中更详细地示出了一个这样的2
×
2信号块(为了便于解释,将n选为2),其中对于颜色平面,该块可以具有设定比特长度(例如8或16比特)的值212。每个n
×
n信号块可以表示为长度为n2的摊平向量214,其表示信号数据块。为了执行变换操作,摊平向量214可以乘以变换矩阵216(即,所取的点积)。这然后生成长度为n0的另一向量218,其表示给定信号块210的不同变换系数。图2示出了与lcevc类似的示例,其中变换矩阵216是大小为4
×
4的hadamard矩阵,从而产生具有四个元素的变换系数向量218,这些元素具有各自的值。这些元素有时用字母a、h、v和d指代,因为它们可以表示平均值、水平差、垂直差和对角差。该变换操作也可称为方向分解。当n=4时,变换操作可以使用16
×
16矩阵,并称为方向分解的平方。
39.如图2所示,平面208的整组信号块210中的每个数据元素的一组值本身可以表示为系数值的平面或表面220。例如,该信号块组的“h”数据元素的值可以组合到单个平面中,其中原始平面208然后被表示为四个单独的系数平面222。例如,所示系数平面222含有所有“h”值。这些值以预定义比特长度(例如比特长度b)存储,根据比特深度,其可以是8、16、32或64。下面给出了16比特示例,但这不是限制性的。因此,系数平面222可以被表示为16比特或2字节值的序列224(例如在存储器中),其表示来自变换系数中的一个数据元素的值。这些值可称为系数比特。在本示例中,这些值形成第一子层变换系数122,其被修改为包含用户数据比特226。这将在下面进行更详细的解释。
40.在一种情况下,选择该变换系数组中的一个数据元素,即一个特定系数来承载用户数据。该数据元素可以基于实验和/或视觉感知来选择。例如,已经发现可以修改水平元素(对于2
×
2 hadamard变换称为“h”,对于4
×
4 hadamard变换称为“hh”)以承载用户数据,该用户数据在通过第一子层编码数据流生成的重构中具有减少量的视觉感知变化。另外,在如图1所示的使用两个子层并且这些子层表示残差数据的情况下,第二子层(例如图1中的104)的残差数据,可以改正第一质量等级的重构中的任何视觉变化,并因此提供无损编码。在实践中,已经发现即使通过有损编码将用户数据嵌入到第一子层的变换系数中,在第一质量等级的重构中也几乎没有变化。这至少部分是因为承载变换系数值的比特被分区,使得原始值的近似值仍和用户数据一样被传送到解码器;在许多情况下,该近似值是“足够好”的,并且生成在视觉上用肉眼无法区分的输出。
41.图3a-3c示出了一种插入用户数据的示例方法,该方法可以由图1的用户数据插入组件164实现。
42.图3a示出了表示一组变换系数310的值的一组系数比特300,这些值是通过对从编码的输入信号中导出的信号数据块至少应用变换操作而生成的。例如,该系数比特组300可以包括如图2所示的b比特值序列224。在图3a-3c和4a-4c的示例中,这些值由16比特表示,因此每个值有16比特,如行320所示。该变换系数组310可以对应于由变换输出的所有数据元素(例如,a、h、v和d)或这些数据元素的子组(例如,仅h)。
43.在图3b中,对系数比特300应用比特移位操作330以允许插入用户数据。在图3a中,系数比特序列具有两个末端322和324。这些末端之一通过比特移位操作被“移出”。在一种情况下,末端322包括最高有效比特,并且比特移位操作330是向左移位。这具有将一组中央
比特332的值沿移位方向移动多个位置的效果。对于向左移位,它相当于将系数值乘以2d,其中d是比特移位的长度。比特移位操作330可以由指示d大小的参数来配置。在图3b中,比特移位操作330是向左移位2比特。比特移位操作330的大小还指示可用于承载用户数据的比特的数量。在图3b中,两个最高有效比特338被移出系数比特,并因此被丢弃340。比特移位操作330用于添加或插入多个附加比特334,其中数量取决于比特移位的大小。在这种情况下,将两个附加比特334添加到该系数比特组的最低有效比特。在本示例中,这两个附加比特334具有零值336。因此,它们表示可以使用用户数据比特设置其值的空白比特。如图3c所示。
44.在图3c中,附加比特334的值是基于一组获取的用户数据比特350设置的。如图3c所示,中央14比特332的值不变,但附加比特334的值如344所示设置有来自用户数据比特350的相应比特值。在该示例中,用户数据比特350被排列为比特组,其中每个比特组352的长度(即,比特的数量)等于比特移位的大小(在其他情况下,它也可能小于比特移位的大小)。在图2的示例中,由于将两个比特添加到末端324(向左移位的最低有效比特;向右移位的最高有效比特),所以用户数据比特350包括比特对352(即可以表示4个不同的值-0、1、2或3)。可以将不同的值添加到表示不同信号数据块的不同系数值;因此,不同的用户数据值可以与编码的信号的不同部分相关联。尽管用户数据比特显示为被添加到每个系数值,但在某些情况下,仅对应于特定信号块的子组的系数值的子组可以以这种方式进行修改。图3c示出了一组修改的系数比特,这些系数比特随后被发送用于熵编码和序列化354,例如用于使用第一子层比特流编码组件124的比特流编码。
45.图4a-4c示出了用户数据提取过程的示例,该过程可以由如图1所示的用户数据插入组件168执行。在图4a中,获取了一组初始系数比特400。这些初始系数比特表示一组变换系数的值,即它们包括如图3c所示的接收和由解码器解码的熵编码和序列化354的输入。该初始系数比特组400可以通过如参照图1解释的解码编码比特流(例如,解码第一子层比特流126)来获取。在图4a中,添加到附加比特444的用户数据比特值是从这些相同比特中读取的,并用于构造用户数据比特流450,该用户数据比特流是嵌入图3c中的用户数据比特350的重构。然后可以将其作为图1中的用户数据170读出并根据需要进行后处理。
46.一旦用户数据比特已被读取和/或复制,系数比特可被移回以恢复原始系数比特300的近似值。如图4b所示。在图4b中,对该初始系数比特组450应用比特移位操作460。比特移位操作460的方向与图3b中应用的比特移位操作的方向相反。例如,如果图3b中的比特移位是向左移位,则图4b中的比特移位是向右移位。比特移位操作460移出含有用户数据的末端比特464,即在用户数据比特值被读取或复制之后。比特值464因此被有效丢弃。在比特序列的另一末端,一组附加比特462通过比特移位操作460被相应地添加到比特序列。这些附加比特可以设置为0(或另一默认值)。因此,在图4c中,提供了一组重构的系数比特470,然后可以将其传递给反量化和/或反变换472。该重构的系数比特组470因此可以被进一步解码,这包含对由该重构的系数比特组表示的值至少应用反变换操作,该进一步的解码是重构输入信号过程的一部分,例如,形成传统lcevc解码的一部分。
47.尽管上面的描述是指使用2个比特来承载用户数据值,并且对应的比特移位是2个比特,但是在实施方式中可以替代地使用任何预定义数量的比特。预定义数量的比特可以是可配置的参数,例如由指示预定义大小的用户_数据_大小参数或用户_数据_使能参数设
置。
48.另外,虽然以上描述是指在编码器处执行的向左移位和在解码器处执行的向右移位,但在其他实施方式中,这可以颠倒,可以在编码器处执行向右移位并且可以在解码器处执行向左移位。例如,如果末端322是最低有效比特,则图3b显示为向右移位;如果末端322是最高有效比特,则图3b显示为向左移位。重要的是,解码器处的相应操作是与编码器处应用的操作方向相反的比特移位。如果与系数值的比特深度相比,系数值通常较小,则优选向左移位。例如,如果变换的信号数据包括残差数据,比特深度为16比特,移位长度为2,则向左移位将保留系数值的比特值,直到2
14
。如果与系数值的比特深度相比,系数值通常较大,例如是非残差值,则首选向右移位。向右移位用于丢弃小值,而保持大值的近似精度。比特移位可以包括逻辑移位,使得忽略溢出。可以使用“<<”(向左移位)和“>>”(向右移位)运算符在c/c++中实现比特移位。
49.在一种情况下,如果使用向左移位并且系数值由其中最高有效比特指示符号的带符号整数表示,则插入过程可以包含附加步骤以保持符号值。在这种情况下,在图3b中的比特移位操作330之前,可以复制符号比特(最高有效比特)。然后可以在比特移位操作330之前执行向左移位一,并且符号比特值用于设置通过移位添加的比特的值。然后可以执行图3b的操作。在解码器处,如图4b所示,在提取用户数据并执行第一次向右移位之后,可以读取承载符号比特值的最低有效比特值并将其存储在临时存储器中。从图4b得到的重构系数比特然后可以进一步向右移位1并且符号比特值可以恢复到最高有效比特474(例如,通过将该值设置为缓冲符号比特值)。这种方法可以允许以进一步的移位操作为代价来保持符号信息;但也可以保持存储在未变化的(b-d-1)核心比特332/432中的小值。应当注意,在其他示例中,符号比特也可以在编码器处添加用户数据比特之后添加,并且在解码器处读取用户数据比特之前移除。
50.在编码器处执行向左移位,然后在解码器处执行向右移位相当于将系数值乘以2d,然后将系数值除以2d(或者如果执行符号比特方法,则为2
(d+1)
)。如果系数值用8比特表示并且是“7”,且d=2,则00000111的系数比特变为000111xx,其中xx承载用户数据。解码器处系数值的恢复版本也是“7”。如果使用符号比特法,系数是
“‑
7”,且最高有效比特值1用于表示负数,则10000111的系数比特变为00111sxx,其中xx承载用户数据且s=1。恢复的版本也是
“‑
7”。因此,对于低值,没有值的修改。然而,实际上,这两种情况都会根据移位长度来对系数值进行求交运算或剪切。例如,如果值为112-01110000,则向左移位和向右移位提供48的近似值(01110000>110000xx>00110000),不恢复符号比特,如果值为-112-11110000-,则向左移位和向右移位提供-16的近似值(11110000>100001xx>10010000)。
51.在编码器处执行向右移位,然后在解码器处执行向左移位相当于将系数值除以2d(并忽略余数),然后将系数值乘以2d。如果系数值用8比特表示并且是“7”,且d=2,则00000111的系数比特变为xx000001,其中xx承载用户数据。因此解码器处系数值的恢复版本是00000100或4。如果系数是
“‑
7”,且最高有效比特值1用于表示负数,则10000111的系数比特变为xx100001,其中xx承载用户数据。这使得恢复值为10000100
‑“‑
4”。实际上,这两种情况都将值四舍五入到最接近(例如最接近的最低)的二次幂倍数。然而,如果值是112-01110000,则向右移位和向左移位提供112(01110000>xx011100>0011100)的输出,如果值是-112-11110000-,则向右移位和向左移位提供-112(11110000>xx111100>11110000)
的输出,即保持高值的保真度。
52.在计算残差数据的编码方案(诸如lcevc)中,已发现编码器处的向左移位和解码器处的向右移位的组合可以产生更好的重构;求交运算的影响可以通过更高的质量等级得到更好的改正,并且如果只修改一个系数(例如h或hh),则即使在使用基础层解码和来自第一子层的残差数据的重构中,这也几乎不产生可感知差异。这是因为残差值分布在0附近,不太可能出现高值。因此,编码器处的向左移位和解码器处的向右移位的组合对于残差数据编码(诸如lcevc)是优选的。
53.尽管图3a-3c的示例示出了添加一组空白比特并且随后设置这些比特的比特值,但是要注意,这可以通过将具有用户数据比特的更长的比特序列排列到末端比特的右侧,然后将较长的比特序列向左移位,以便用户数据比特自动复制到系数比特的末端来替代地执行。类似地,虽然示出了两比特的移位,但该移位可以是可配置的量。例如,可以设置配置2比特标记,其指示比特移位大小的四个不同选项-00或0表示无用户数据;01或1表示2比特移位和用户数据大小;10或2表示6比特移位和用户数据大小;和11或3表示进一步的自定义大小。在其他情况下,比特移位大小和用户数据可以由小于用于表示系数值的比特大小的整数值设置。
54.用户数据的大小可以指示该变换系数值组300中的值的分区。原始的b系数比特(其中在图3a中,b=16)可分为两个部分:c比特的第一部分用于承载变换系数值的表示(例如,其中c小于16),以及配置d比特的第二部分以承载用户数据值(例如,其中d=b-c)。d的值可以在编码信号流的编码期间动态改变。例如,如果存在降低可用于第二子层104的比特率的网络拥塞,则由于使用第二子层104的编码数据流来改正任何影响的能力可能减小,因此可能期望降低d以降低系数值的求交运算和/或四舍五入的严重性。通常,本文提出的方法可被认为是一种将用户数据嵌入编码数据流的方法,其中该方法包括:获取一组变换系数值,该组中的每个值均用b系数比特表示;获取一组用户数据,用于嵌入到编码数据流中;对于该变换系数值组中的每个值,将b系数比特分区成两个部分,包含将c比特的第一部分配置为承载变换系数值的表示,以及将d比特的第二部分配置为承载用户数据值;以及将分区的b系数比特编码到编码数据流中,其中解码器能够接收编码数据流,解码分区的b系数比特,从d比特的第二部分提取该用户数据组以及使用c比特的第一部分以生成变换系数值的重构。例如,等效的解码方法可以包括:接收编码数据流;解码分区的b系数比特;从d比特的第二部分提取该用户数据组;以及使用c比特的第一部分来生成变换系数值的重构。
55.用户数据的预处理(例如如用户数据预处理器160所执行的)可以包括获取在信号内具有对应位置的值的列表,例如如由x、y坐标和/或对以预定义顺序(诸如行优先)排列的编码单元流中的特定编码单元的引用所表示的。然后它可以将这些值转换成合适的d比特值(或多个信号块的d比特值组)并生成用户数据比特流,从而将d比特值插入到与定义的位置相对应的信号块中。例如,在如图3c和4a所示的用户数据比特流中,如果不嵌入用户数据,则“00”可以插入比特流。
56.在某些示例中,可以仅修改系数值的子组以插入用户数据。例如,如果没有用户数据待插入到与信号块相关联的变换系数中,则可以不对该信号块执行比特移位操作。接收的自定义数据和信号块之间的映射可以基于接收的位置数据(如上所述)由信号预处理器160来执行。信号块是否含有嵌入的用户数据可以在信令流中用信号通知,其中为每个信号
块提供二进制标记,指示信号块是否承载用户数据。这可用于指示解码器处的比特移位操作。在其他情况下,可以为数据平面设置全局信令参数,指示是否要对所述平面内的所有信号块执行比特移位操作。形成变换系数(例如h或hh)的一组数据元素内的数据元素可以被预设或也可以用信号通知参数定义。
57.如本文所述,在信号数据包括残差数据的情况下,一组重构的系数比特可以包括变换的残差数据,并且解码方法可以进一步包括指示由该重构的系数比特组的进一步解码获取的残差数据与由较低质量等级的输入信号的表示生成的输入信号的重构的组合,以生成第一质量等级的输入信号的重构。较低质量等级的输入信号的表示可以是解码的基础信号(例如来自基础解码器114),并且解码的基础信号可以在与由该重构的系数比特组的进一步解码获取的残差数据组合之前被可选地升级,残差数据处于第一质量等级(例如,第一分辨率)。解码可以进一步包括接收和解码与第二子层104相关联的残差数据,例如,获取反变换和反量化组件152的输出,并将其与从上述第一质量等级的输入信号的重构中导出的数据组合。该数据可以包括从第一质量等级的输入信号的重构的升级版本中导出的数据,即升级到第二质量等级。
58.尽管已经参照lcevc形式的基于层的层次编码方案描述了示例,但本文描述的方法还可以应用于其他基于层的层次编码方案,如诸vc-6:smpte vc-6 st-2117,如pct/gb2018/053552和/或相关的已公布的标准文件中所述的,这两个文件都通过引用并入本文。
59.用户数据的提取可以包括获取指示用于用户数据值的比特-d-的数量的参数。该参数可以从编码器发出信号。这可以指示用户数据提取组件168获取位于该初始系数比特组的一端的一组d比特的比特值,该d比特组在在编码器处应用比特移位操作期间被添加。在这种情况下,比特移位操作的大小通过用于用户数据值的比特-d-的数量而设置。用户数据后处理器172可以对比特值进行后处理以重构一组用户数据值。在某些情况下,用户数据的一部分可以分布在多个信号数据块上(例如,一个字节的用户数据可以分布在4个块中,每个块均具有2比特的用户数据值)。在这种情况下,用户数据预处理器160可以拆分和分布接收到的自定义数据的字节的比特值,并且用户数据后处理器172可以基于从多个信号块中提取的用户数据比特值来重构自定义数据的原始字节。
60.本文描述的技术可以通过软件或硬件实现,或者可以使用软件和硬件的组合来实现。它们可以包含配置设备以实施和/或支持本文描述的任何或所有技术。
61.上述示例应理解为说明性的。对进一步的示例作了设想。
62.应当理解,关于任何一个示例描述的任何特征可单独使用,或与描述的其他特征结合使用,且还可与任何其他示例的一个或多个特征结合使用,或与任何其他示例的任何组合结合使用。此外,在不脱离由所附权利要求书限定的本发明的范围的情况下,还可采用上文未描述的等效者和修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1