一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于编码的方法、编码器以及图像压缩和存储系统与流程

2022-08-31 04:26:10 来源:中国专利 TAG:

用于编码的方法、编码器以及图像压缩和存储系统
1.相关申请的交叉引用
2.本技术要求于2021年2月19日提交的美国临时专利申请第63/151,344号的优先权,其通过引用整体并入本文。
技术领域
3.本技术涉及图像处理系统和方法。更具体地,本技术涉及具有正重构误差的用于进行联合颜色通道熵编码的系统和方法。


背景技术:

4.诸如液晶显示器(lcd)和发光二极管(led)显示器的平板显示器由于它们的小尺寸、卓越的图像质量和更低的功耗正变得十分普遍。
5.显示面板中的像素具有特定的响应时间。被提供到像素以用于显示的数据的改变可能快于像素的响应能力。因此,可能出现诸如运动模糊或重影效果的不期望的效果。为了使显示的图像更美观,图像补偿技术是需要的。已经开发了可以补偿图像数据以减少由显示像素表现出的运动模糊的过驱动算法。
6.本背景部分中公开的以上信息仅用于增强对本公开的理解,并且因此,其可能包含不构成本领域普通技术人员已知的现有技术的信息。


技术实现要素:

7.根据实施例,描述了用于编码的方法。该方法可以包括:接收包括像素的图像帧,其中,每一个像素包括n个颜色通道;由用于n个颜色通道中的每一个颜色通道的被配置成保证非负重构误差的单独的颜色通道量化分支,基于图像帧中的第一特定像素的残差的颜色值来生成量化后索引的第一样本组,其中,第一样本组与第一n元组相对应;以及由熵编码器基于将量化后索引的n元组映射到熵编码索引的数据来针对第一特定像素生成熵编码,其中,第一n元组被映射到熵编码索引中的第一熵编码索引。
8.量化后索引的第一样本组的生成可以包括:由每一个颜色通道量化分支通过从所接收的图像帧中减去基于先前重构后像素的预测来计算残差。
9.量化后索引的第一样本组的生成可以进一步包括:由与每一个颜色通道量化分支相对应的量化器对所计算的与同一颜色通道量化分支相对应的残差进行量化以生成量化后索引。
10.量化后索引的每一个n元组可以与所对应的n元组在一组量化后训练图像中的出现频率相关联,并且每一个n元组可以包括n个颜色通道的量化后索引,其中,n是大于1的整数。
11.该方法可以进一步包括:由单独的颜色通道量化分支,基于图像帧中的第二特定像素的残差的颜色值来生成量化后索引的第二样本组,其中,第二样本组与第二n元组相对应;以及由熵编码器基于该数据来针对第二特定像素生成熵编码,其中,第二n元组被映射
到熵编码索引中的第二熵编码索引。
12.第二特定像素可以是图像帧中的相对于第一特定像素的相邻像素。
13.熵编码可以包括指数-哥伦布编码、哥伦布-赖斯编码、霍夫曼编码或者指数-哥伦布编码和哥伦布-赖斯编码的组合。
14.数据可以被存储为数组。
15.熵编码的生成可以包括:基于第一n元组计算第一模式值;在包括数据的数组中搜索所计算的第一模式值以确定所对应的第一熵编码索引;以及对第一熵编码索引进行编码。
16.熵编码的生成可以包括:基于第一n元组计算第一模式值;根据由第一模式值指示的数组的位置从数组中获取第一熵编码索引;以及对第一熵编码索引进行编码。
17.将量化后索引的n元组映射到熵编码索引的数据可以通过以下步骤生成:接收第一训练图像帧;计算与第一训练图像帧相对应的训练重构误差值;基于所计算的训练重构误差值生成量化后索引,训练重构误差值包括量化后索引的n元组;识别量化后索引的n元组的出现频率;以及基于量化后索引的n元组的出现频率,将熵编码索引分配给量化后索引的n元组中的每一个n元组。
18.该方法可以进一步包括:根据出现频率对量化后索引的n元组进行排序。
19.将量化后索引的n元组映射到熵编码索引的数据可以在离线过程期间被生成。
20.根据另一实施例,描述了一种编码器。该编码器可以包括:n个单独的颜色通道量化分支,被配置成生成量化后索引的n元组,每一个颜色通道量化分支与图像帧的像素的n个颜色通道中的一个颜色通道相对应;熵编码器,被配置成接收量化后索引的n元组,并且被配置成基于将量化后索引的n元组映射到熵编码索引的数据来对量化后索引的n元组进行熵编码,其中,n个单独的颜色通道量化分支中的每一个被配置成保证非负重构误差,其中,n是大于1的整数。
21.量化后索引的每一个n元组可以与对应的n元组在一组量化后训练图像中的出现频率相关联。
22.每一个n元组可以包括n个颜色通道的量化后索引。
23.根据另一实施例,描述了一种图像压缩和存储系统。该系统可以包括:存储器,存储计算机可执行指令;以及处理器,被配置成执行促使系统执行包括以下步骤的操作的指令:接收包括像素的图像帧,其中,每一个像素包括n个颜色通道;由用于n个颜色通道中的每一个颜色通道的被配置成保证非负重构误差的单独的颜色通道量化分支,基于图像帧中的第一特定像素的残差的颜色值来生成量化后索引的第一样本组,其中,第一样本组与第一n元组相对应;以及由熵编码器基于将量化后索引的n元组映射到熵编码索引的数据来针对第一特定像素生成熵编码,其中,第一n元组被映射到熵编码索引中的第一熵编码索引,其中,量化后索引的每一个n元组与所对应的n元组在一组量化后训练图像中的出现频率相关联,并且其中,每一个n元组包括n个颜色通道的量化后索引,其中,n是大于1的整数。
24.指令可以进一步促使系统执行包括以下步骤的操作:由单独的颜色通道量化分支,基于图像帧中的第二特定像素的残差的颜色值来生成量化后索引的第二样本组,其中,第二样本组与第二n元组相对应;以及由熵编码器基于数据来针对第二特定像素生成熵编码,其中,第二n元组被映射到熵编码索引中的第二熵编码索引。
25.本发明的范围由通过引用并入本部分中的权利要求限定。通过考虑一个或多个实施例的下面的具体实施方式,本领域技术人员将更完整地理解本发明的实施例,并实现本发明的附加的优点。将参照将首先简要地描述的附图。
附图说明
26.图1是根据本公开的实施例的利用图像压缩和存储系统的帧补偿系统的示意图。
27.图2是根据本公开的实施例的图像压缩和存储系统的编码器的示意图。
28.图3是根据本公开的实施例的图像压缩和存储系统的解码器的示意图。
29.图4a是示出根据本公开的实施例的编码器的一部分连同解码器的一部分的示意图。
30.图4b是根据本公开的实施例的图4a的简化图,其说明了熵编码器和熵解码器的恒等操作。
31.图5a示出了根据本公开的实施例的由量化器和逆量化器利用的量化表。
32.图5b示出了根据本公开的示例的量化器和逆量化器的操作。
33.图5c和图5d分别示出了根据本公开的实施例的由量化器利用的均匀量化表和非均匀量化表。
34.图6是根据本公开的实施例的图像压缩和存储系统的颜色变换正误差重构编码器的示意图。
35.图7是根据本公开的实施例的图像压缩和存储系统的联合颜色通道熵编码正误差重构编码器的示意图。
36.图8是示出根据本公开的实施例的图像帧残差中特定模式的出现频率的未排序的直方图和排序的直方图的示例。
37.图9是示出根据本公开的实施例的三元组颜色值以及它们的对应的图案值的数值示例的表。
38.图10是示出根据本公开的实施例的查找表的数值示例的表。
39.图11是示出根据本公开的实施例的另一查找表的数值示例的表。
40.图12是示出根据本公开的实施例的存储在查找表中的码本的数值示例的表。
41.图13是示出根据本公开的实施例的存储在用于具有rgbg格式的像素的查找表中的另一码本的数值示例的表。
42.图14至图16是示出根据本公开的各种实施例的用于执行联合颜色通道熵编码的示例方法的流程图。
43.图17是示出根据本公开的实施例的用于训练编码器的示例方法的流程图。
44.图18是示出根据本公开的各种实施例的用于对熵编码索引进行解码的示例方法的流程图。
45.通过参照下面的具体实施方式,可以最好地理解本公开的实施例以及它们的优点。除非另有说明,否则在整个附图和书面描述中相同的附图标记表示相同的元件,并且因此,将不再重复它们的描述。在附图中,为了清楚起见,元件、层和区的相对尺寸可以被夸大。
具体实施方式
46.在下文中,将参照附图更详细地描述示例实施例。然而,本发明可以以各种不同的形式实施,并且不应被解释为仅限于在本文中示出的实施例。相反,这些实施例被提供作为示例使得本公开将是彻底的和完整的,并且将向本领域技术人员充分传达本发明的方面和特征。相应地,可以不描述对于本领域普通技术人员完全理解本发明的方面和特征而言不是必需的过程、元件和技术。
47.图1是根据本公开的实施例的利用图像压缩和存储系统110的帧补偿系统100的示意图。
48.在一些实施例中,图像压缩和存储系统110包括用于对数据进行编码(例如,压缩)以减小其大小的编码器200、用于存储编码后数据的存储介质140和用于对存储的数据进行解码(例如,解压缩)以对数据进行重构的解码器160。诸如4k图像帧的特定数据的存储消耗大量的存储空间。这里,编码器200和解码器160允许使用较小的存储介质140,这可以引起节省空间和成本。
49.如图1中所示,在一些示例中,图像压缩和存储系统110可以形成其中过驱动系统120使用先前帧对当前帧进行补偿(例如,以减少重影效果或模糊)的帧补偿系统100的一部分。在一些示例中,截断和延迟电路130接收帧(例如,每颜色8比特(8bpc)的帧),截断该帧(即,将该帧的像素值的bpc数量例如减小到3bpc)并使该帧延迟以产生截断后先前帧。然后,图像压缩和存储系统110对先前帧进行压缩并将其存储以供过驱动系统120稍后消耗。这里,截断和压缩可以使存储的帧在大小上明显小于原始(先前)帧。例如,在其中每一个颜色值用8比特(或每像素24比特(24bpp))表示的rgb输入帧的情况下,截断可以得到3bpc/9bpp的帧表示,并且由编码器200执行的1.5:1压缩可以进一步将帧表示减小到2bpc/6bpp。然而,本公开的实施例不限于rgb输入帧,并且可以使用诸如rgbg(用于子像素排列)的任何合适的输入帧格式。例如,在rgbg输入帧的情况下,截断可以将帧大小从16bpp减小到6bpp,并且由编码器200执行的1.5:1压缩可以将帧大小进一步减小到4bpp。此外,本公开的实施例不限于使用上述截断操作,并且在一些示例中,截断和延迟电路130可以用延迟块代替并且截断操作可以从本文中所描述的过程中省略。
50.如果重构误差(即,由图像压缩和存储系统110引入的误差)仅为非负值(即,零或正值),则过驱动系统120的性能可以被改进。相关技术的编码方案通常优化均方误差(mse)或峰值信噪比(psnr),这意味着重构后图像中的误差的极性可以为正和负两者。根据一些实施例,通过确保(主要由于量化而引入的)重构误差(其被限定为重构后帧与原始帧之间的差异)始终为非负值(即,大于或等于零的值)并且也被限制为设置的最大值,图像压缩和存储系统110相对于相关技术改进了过驱动系统120的性能。
51.在整个本公开中,帧指代包括多个像素的图像帧的数据。帧的每一个像素可以用多个颜色值(例如,红色、绿色和蓝色)表示。
52.图2是根据本公开的实施例的图像压缩和存储系统110的编码器200的示意图。根据实施例,原始样本x被提供到减法器220。先前重构后样本也被提供到减法器220,在减法器220中获取原始样本与先前重构后样本之间的差异。所得到的误差r被提供到模加法器230的输入以添加偏置值。来自模加法器230的输出(例如,偏置后残差)e然后被提供到用于量化的量化器240的输入以生成量化后索引。量化后索引被提供到用于编码的熵编码器
250,并且量化后索引也被提供到逆量化器260以生成去量化的偏置后残差e’。去量化的偏置后残差e’被提供到加法器270,在加法器270中去量化的偏置后残差e’与先前重构后样本合并,并且所得到的和被提供到模减法器280以减去由模加法器230添加的偏置值。来自模减法器280的输出是重构后样本x’,并且来自模减法器280的输出也被提供到样本预测器210。接下来将更详细地描述这些块中的每一个的进一步细节。
53.参照图2,根据一些实施例,编码器200利用其中原始样本的残差(例如,截断后帧)而不是原始样本本身被编码的预测编码方案。在一些实施例中,编码器200被配置成同时对残差的所有颜色分量(例如,采用rgb格式的红色颜色分量、绿色颜色分量和蓝色颜色分量)进行编码。残差(也被称为误差r)被限定为原始样本与基于一个或多个相邻样本的预测之间的差异。在一些实施例中,样本预测器210基于已经被编码的先前样本中的一个或多个来生成预测样本,并且减法器220基于原始样本和预测样本来计算残差r。在一个示例中,预测样本被设置成与同一行中(即,水平方向上)的先前重构后样本相同。也就是说,如果(i,j)是当前样本位置,则(i-1,j)是先前样本位置。所计算的残差r可以是正值或负值。模加法器230将偏置值添加到残差r以生成偏置后残差e,以降低1比特符号信息的信令成本。量化器240对偏置后残差e进行量化以生成量化的偏置后残差,并且将对应的量化后索引传递到熵编码器250(例如,霍夫曼编码器、指数-哥伦布熵编码器)。该压缩后数据(或编码后值)被存储在存储介质140中。
54.在一些实施例中,为了生成预测样本,逆量化器260对量化的偏置后残差执行由量化器240执行的操作的逆操作以生成去量化的偏置后残差e’,加法器270将预测样本添加到去量化的偏置后残差e’以生成重构的偏置后样本,并且模减法器280减去由模加法器230添加的偏置值以生成重构后样本x’。在一些示例中,裁剪函数可以被应用于重构后样本以确保重构后样本在期望的动态范围内,对于给定的比特深度(bitdepth),期望的动态范围可以表达为[0,2
bitdepth-1]。样本预测器210使用该重构后样本x’(例如,裁剪的重构后样本)来预测下一个样本。
[0055]
在一些实施例中,如果残差空间中的误差维持为非负值,则信号空间中的误差也将为非负值。因此,模加法器230和量化器240被配置成使得残差空间中的误差保持为正值并且是有界的,这确保在信号空间中也是如此。在一些实施例中,量化器240和逆量化器260通过适当地调整量化带大小和每一个带中的重构点来确保正有界误差。相应地,图像压缩和存储系统110确保重构误差(即,量化误差)始终为非负值。
[0056]
参照图3,在一些实施例中,解码器160包括对从存储介质140接收的存储样本进行解压缩的熵解码器510以及如上所描述的相同的逆量化器260、加法器270、模减法器280和样本预测器210。除了熵解码器510之外,解码器160的其余部件与编码器200中的部件相同并且以相同的方式配置。因此,为了简洁起见,这里将不再重复它们的详细描述。
[0057]
因为解码器160不能访问原始样本而只能访问重构后样本,所以解码器160的样本预测器210使用重构后样本来生成先前样本的预测。进一步,因为编码器200和解码器160的操作彼此镜像,所以即使编码器200确实能够访问原始样本,编码器200的样本预测器210也使用相同的重构后样本来生成先前样本的预测,使得编码器200可以与解码器160同步。
[0058]
在一些实施例中,编码器200和解码器160对像素的单个颜色值进行操作。相应地,多个编码器200和解码器160可以并行操作(例如,并发/同时操作)以处理像素的各种颜色,
这将在稍后更详细地描述。
[0059]
图4a是示出根据本公开的一些实施例的编码器200的一部分连同解码器160的一部分的示意图。图4b是根据本公开的一些实施例的图4a的简化图,其说明了熵编码器250和熵解码器510的恒等操作。根据一些实施例,除了量化器240之外,由编码器200和解码器160的部件执行的操作都是无损操作。例如,图4a中所示的熵编码器250和熵解码器510(如块a)的顺序操作是恒等操作,并且因此可以在效果上被省略,从而得到图4b。因此,信号空间中的误差(其被限定为解码器160的输出处的重构后样本与编码器200的输入处的原始样本之间的差异)等同于残差空间中的误差。
[0060]
因此,如果残差空间中的误差维持为非负值,则信号空间中的误差也将为非负值。此外,如果残差空间中的误差是有界的,即如果e
’‑
e≤δ(其中e’是逆量化器260的输出,e是量化器240的输入,并且其中δ是表示最大允许误差的正整数),则信号空间中的误差也将限于δ。即使存在模加法器230和模减法器280,这种关系也成立。相比之下,相关技术中使用的变换编码(例如,高效视频编码(hevc)、jpeg-2000或vesa显示压缩-m(vdc-m))可能不适用于确保非负重构误差,因为变换域中的正误差并不能确保信号空间中的非负重构误差。这可能是由于诸如离散余弦变换(dct)的变换保留了原始系数与变换系数之间的l2范数(或能量)而不是l1范数的事实。
[0061]
相应地,在一些实施例中,模加法器230和量化器240以这样的方式配置以确保残差空间中的误差保持非负值并且是有界的(即,限于δ),这确保信号空间中的误差相同。
[0062]
量化器240和逆量化器260通过适当地调整量化带大小和每一个带中的重构点来确保非负有界误差。在一些实施例中,给定最大允许误差δ,量化器240利用具有最大量化步长δ 1的均匀或非均匀量化带,并且使用带的右边缘(即,最大值)处的重构点。进一步,在一些实施例中,零值在带(例如,索引1的第一量化带)的右边缘处,使得零出现在重构的值中。这可以是由于残差r在零处是峰值的事实。
[0063]
图5a示出了根据本公开的一些实施例的由量化器240和逆量化器260利用的量化表。图5b示出了根据本公开的一些示例的量化器240和逆量化器260的操作(输入是e并且输出是e’)。图5c和图5d分别示出了根据本公开的一些实施例的由量化器240利用的均匀量化表和非均匀量化表。
[0064]
参照图5a,量化器240使用在每一个带的右边缘处具有重构点、量化步长δ 1的均匀带。在一些实施例中,第一量化带的右边缘为零(即,重构点为零)。这里,偏置后残差e是整数。在一些实施例中,当使用以等式5和等式7限定的模加减参数(也被称为优化后模加减参数)时,带的数量nb可以表达为:
[0065][0066]
其中δ表示最大允许误差,并且ceiling(.)表示天花板函数。这里,δ 1可以是最大允许步长,即可以选择较小的步长。在其它一些实施例中,当使用未优化模加减参数(即,不是由等式5和等式7限定的参数)时,带的数量nb可以表达为:
[0067][0068]
在一些实施例中,在对偏置后残差进行量化时,量化器240将偏置后残差的量化指数计算为:
[0069][0070]
其中当使用等式5和等式7的优化后模加减参数时,-δ≤e≤2
bitdepth-1,其中i[e]表示量化指数,ceiling(.)表示天花板函数,e表示偏置后残差,并且δ表示最大允许误差。
[0071]
类似地,对量化的偏置后残差执行逆量化可以包括将去量化的偏置后残差计算为:
[0072]
q[e]=(δ 1)i[e]
ꢀꢀꢀ
等式(4)
[0073]
其中q(e)表示去量化的偏置后残差,i[e]表示量化指数,并且e表示未量化偏置后残差。等式3和等式4适用于利用均匀量化的实施例。当使用非均匀量化时,最大步长可以是δ 1。
[0074]
图5b示出了其中δ=2并且比特深度(即,每种颜色的比特数)是3的示例。这里,比特深度指代存储在图像中的颜色信息,并且影响图像的动态范围。图像的比特深度越高,可以存储的颜色就越多。最简单的图像(1比特图像)只能显示两种颜色(黑色和白色)。这是因为1比特只能存储两个值(0(白色)和1(黑色))中的一个。随着比特深度增大,动态范围也会增大,这会增加量化带的数量。
[0075]
如图5b的示例中所示,偏置后残差e为1引起去量化的偏置后残差e’为3。
[0076]
根据一些实施例,模加法器230将偏置后残差e计算为:
[0077][0078]
这意味着偏置后残差e在可以表达为以下等式的范围内:
[0079]-δ≤e≤2
bitdepth-1
ꢀꢀꢀ
等式(6)
[0080]
偏置后残差e的上限允许可以减小某些偏置后残差e的误差并且因此改进性能的非均匀量化带。
[0081]
例如,当δ=2并且比特深度=3时,-2≤e≤7,并且量化器240可以利用图5c中所示的均匀量化表和图5d中所示的非均匀量化表。在使用均匀带大小是2的图5c中,所有四个带的量化误差以δ(即,2)为界。然而,本公开的实施例也允许图5d中所示的量化表的非均匀量化带,在图5d中第三带和第四带具有以1(而不是2)为界的较小的量化误差。在一些示例中,量化器240为那些在统计学上更显著的带(例如,更多的偏置后残差存在其中的带,或者其值对过驱动系统120的性能具有较大影响的带)保留较窄的带。因此,通过模加法器230的操作实现的较小的量化误差可以改进过驱动系统120的性能。
[0082]
应注意,对于未优化参数(例如,未被优化以减小e的范围的参数),等式5可以被修改为:
[0083][0084]
对于范围-δ≤e≤2
bitdepth-1 δ
[0085]
模减法器280可以通过去除由模加法器230添加到残差r的偏置值来执行与模加法器230(其将偏置值添加到残差r)的操作相反的操作。根据一些实施例,对于给定的输入x,模减法器280的输出y表达为:
[0086][0087]
而模加法器230的输出e表达为:
[0088][0089]
如上所述,在一些示例中,裁剪函数可以应用于重构后样本以确保其在期望的动态范围内,对于给定的比特深度,期望的动态范围可以表达为[0,2
bitdepth-1]。在8bpc的示例中,裁剪函数可以将模减法器280的输出限制为[0,7]。
[0090]
相应地,如上所描述,通过使用适当的量化带大小和添加的偏置值,图像压缩和存储系统110确保(例如,保证)关于重构后图像的非负且有界的误差,这可以改进过驱动系统120的性能。
[0091]
应注意,对于未优化参数,等式7可以被修改为:
[0092][0093]
图6是根据本公开的实施例的具有附加的颜色变换方案、包括图像压缩和存储系统110的图2中所示的编码器200的颜色变换正误差重构编码器300的示意图。颜色变换正误差重构编码器300的编码器200与以上参照图2所描述的编码器200相同,并且这里将不再重复。
[0094]
根据实施例,帧的每一个像素可以用多个颜色值(例如,红色、绿色和蓝色)表示。相应地,每一个颜色值与像素的颜色通道相对应。例如,像素的每一个颜色通道可以由颜色子像素表示。在一些实施例中,颜色通道可以按包括红色通道、绿色通道和蓝色通道的rgb格式排列。在其它实施例中,颜色通道可以以也包括红色通道、绿色通道和蓝色通道的rgbg格式(例如,格式)排列。然而在其它实施例中,本领域技术人员可以设想其它颜色通道排列。相应地,除了空间相关性之外,图像帧还包括颜色通道之间的相关性。相应地,可以执行颜色变换以运用这样的通道间相关性。
[0095]
参照图6,颜色变换器310和逆颜色变换器320分别被提供在编码器200的原始像素输入和重构后像素输出处。更具体地,颜色变换器310获取原始像素x(例如,原始红色通道、原始绿色通道和原始蓝色通道)并将其变换成原始图像的某个颜色变换后像素z,然后将其提供到减法器220。例如,颜色变换器310可以将采用rgb格式的原始像素x转换成采用ycocg格式的颜色变换后像素z,并且逆颜色变换器320可以通过将像素从ycocg格式转换成rgb格式来进行逆颜色变换。减法器220如之前参照图2所描述的基于颜色变换后原始样本和预测样本来计算残差r,并且模减法器280生成重构后样本z’。在一些实施例中,重构后样本z’被提供到逆颜色变换器320以生成重构后像素x’。相应地,颜色变换可以与正重构误差一起用于运用通道间相关性。
[0096]
在一些实施例中,如之前所描述,因为残差空间中的误差(即,e
’‑
e)始终维持为非负值(例如,正值),所以信号空间中的误差(即,z
’‑
z)也始终维持为非负值。然而,在图6的颜色变换方案中,仅在颜色变换空间中维持正值误差(即,z
’‑
z),而在图像空间中不维持正值误差(即,x
’‑
x)。换句话说,即使在颜色变换空间中维持正值误差,在图像空间中也不保证正值图像误差。例如,假设颜色变换器310是rgb-ycocg变换(其中正向颜色变换由3
×
3矩
阵t=[0.25 0.50 0.25;0.50 0
ꢀ‑
0.50;-0.25 0.50
‑ꢀ
0.25]表示),并且原始输入x=[6 5 4](其中r=6,g=5,b=4)。基于这些假设,z=t
×
x=[5 1 0]。接下来,假设根据图2中所描述的量化器设计z’=[6 2 1],则颜色变换图像的误差zi’‑
zi≥0,是正值。通过依靠逆颜色变换器320应用逆颜色变换,x’=[7,7,3],这意味着图像空间中的误差x
’‑
x=[1,2,-1],其包括负值,即,-1。因此,虽然在残差空间和颜色变换空间中维持了正值误差,但是正值误差没有被转移到图像空间。相应地,本公开的实施例将描述保证图像空间中的非负值误差同时还运用颜色通道相关性的技术。然而,所描述的技术不应被解释为仅限于生成非负值误差的系统。相反,所描述的技术也可适用于生成负值误差的系统。
[0097]
图7是根据本公开的实施例的图像压缩和存储系统110的联合颜色通道熵编码正重构误差编码器400的示意图。
[0098]
参照图7,根据各种实施例,编码器400利用其中来自像素的每一个颜色通道的量化后值被提供到熵编码器450的联合颜色通道熵编码方案。换句话说,根据实施例,为每一个颜色通道提供单独的量化器440a、440b,其中来自每一个量化器440a、440b的量化后输出作为颜色通道输入被联合提供到同一熵编码器450。相应地,图7中所示的实施例示出了各自馈入到同一熵编码器450的用于红色通道的红色通道量化分支410a和用于绿色通道的绿色通道量化分支410b。在一些实施例中,可以基于像素格式而存在n个颜色通道量化分支(其中,n是大于1的整数),例如,rgb格式包括三个颜色通道,在这种情况下,将存在各自馈入到同一熵编码器450的三个量化器;而包括例如四个颜色通道的另一格式将具有各自馈入到同一熵编码器450的四个量化器。
[0099]
更详细地,根据一些实施例,用于红色通道的样本预测器480a根据先前图像生成红色像素的预测,并且减法器420a基于原始像素和预测像素计算残差r。绿色通道量化分支410b可以采用与红色通道量化分支410a类似的方式配置以生成绿色通道的残差r。其它通道(例如,绿色通道、蓝色通道等)的残差r基于类似的过程生成。在一些实施例中,原始像素x包括通道间相关性(例如,颜色通道当中的样本之间可以存在关系。例如,通道值的组合可以以特定频率出现),并且因为差分脉冲编码调制(dpcm)仅运用空间相关性,所以通道间相关性被转移到残差空间。模加法器430a添加偏置值(其是恒定值)。其它通道的残差r可以由对应的分支(例如,绿色通道量化分支410b)的模加法器以类似的方式修改。因为模加法器430a(以及其它通道的模加法器)将恒定值添加到残差r,所以通道间相关性再次保持不受模加法器430a的影响。因为量化器440a在保留最高有效比特(msb)的同时去除了一些较低比特平面值,所以量化器440a(以及其它通道中的类似量化器)也不影响残差r的通道间相关性。因此,可以维持每一个通道的量化后索引之间的通道间相关性。这些量化后索引可以被提供到诸如熵编码器450的无损编码器。因为无损编码器是无损的,所以可以维持非负重构误差。
[0100]
根据本公开的一些实施例,绿色通道量化分支410b可以采用与红色通道量化分支410a类似的方式配置以生成通道间相关量化后索引,然后该通道间相关量化后索引可以被提供到由红色通道量化分支410a使用的同一熵编码器450。此外,根据实施例,在像素采用rgb格式的情况下,蓝色通道量化分支(未示出)也可以被配置成将通道间相关量化后索引提供到同一熵编码器450。相应地,熵编码器450可以从红色通道、绿色通道和蓝色通道中获取通道间相关量化后索引,并且将量化后索引联合编码为一个镜头(shot)以利用被包括在
量化后索引中的每一个中的通道间相关性。相应地,通过将所有颜色通道编码在一起,可以减少用于对图像帧进行编码的总比特数,接下来将解释其细节。
[0101]
在一些实施例中,可变长度二进制码字可以用于节省存储编码后数据所需的存储空间量,并且熵编码器450的一般格式是这样的:最频繁模式被分配最短二进制码字并且最不频繁模式被分配最长二进制码字。在本文的本公开中,模式指代来自不同颜色通道的量化后索引的值的n元组,例如,rgb三元组格式、rgbg四元组格式、rb/gg对或rg/bg对格式或者像素的其它格式。因此,例如,如果与量化后索引(0,0,0)相对应的模式是最频繁模式,并且(4,4,4)是第二频繁模式,则(0,0,0)可以被分配对应的二进制码字“0”,并且(4,4,4)可以被分配对应的二进制码字“10”。另一方面,如果模式(3,3,2)是最不频繁模式,则较长二进制码字(例如,“111111110”)可以被分配给(3,3,2)。虽然针对不太频繁模式的二进制码字可以比实际模式本身长,但是由较频繁模式实现的比特节省引起整体比特节省。相应地,根据联合编码技术,二进制码字“0”仅使用1比特,而在每种颜色被独立地编码时,(0,0,0)使用3比特,从而在最频繁模式的情况下节省比特。因为这是最频繁模式,所以节省的比特加起来可以达到相当大的数量。这里,模式(0,0,0)表示针对红色通道的量化后索引为0,针对蓝色通道的量化后索引为0,并且针对绿色通道的量化后索引为0。类似地,模式(4,4,4)表示针对红色通道的量化后索引为4,针对蓝色通道的量化后索引为4,并且针对绿色通道的量化后索引为4。
[0102]
根据一些实施例,联合颜色通道熵编码技术包括首先训练图像压缩和存储系统110以生成包括指向量化后索引中某些模式的出现频率的信息的查找表(或其它数据结构)。通过收集这样的信息,可以生成码字(例如,二进制码字)并将其存储在查找表中,使得可以使用码字来减少在编码同时使用的比特数。在一些实施例中,例如当图像压缩和存储系统110被制造或编程时离线执行训练。因此,一旦执行了训练过程并生成了查找表,就不必再次执行训练过程。相应地,训练过程可以离线执行,因为它不是在实际编码过程期间执行的。
[0103]
图8是示出可以从训练图像中学习到的量化后索引的常见模式的直方图,并且强调了模式学习的优点以及如何可以将学习到的模式数据库应用于实际场景。在一些实施例中,可以通过识别(量化后索引的)每一个模式在训练图像中出现多少次来执行训练过程。图8的直方图(hi)示出了模式在训练图像中出现的计数。在直方图中,x轴上的每一个点表示量化后索引的模式值(这将在稍后解释),并且y轴表示该模式的对应的出现次数或概率。量化后索引的模式值可以计算为val=m2×
q[r] m
×
q[g] q[b],其中m是每一个颜色通道的表示性量化后索引的数量,q[r]是红色通道的量化后索引,q[g]是绿色通道的量化后索引,并且q[b]是蓝色通道的量化后索引。相应地,例如,如果m=5,则val=25
×
q[r] 5
×
q[g] q[b]。图9是示出量化后索引模式和所关联的值的表。例如,量化后索引模式(4,4,4)被示为与值124(例如,(25
×
4) (5
×
4) 4=124)相对应。
[0104]
可以生成模式值的排序后数组s,其中基于数组s中的值在训练图像中出现的次数对这些值进行排序。因此,数组s中的第一模式值(例如,s[0])可以与量化后索引的最频繁出现模式相对应。
[0105]
在一些实施例中,每一个模式值的出现次数可以与模式值跨多个训练图像而出现的平均数相对应。在一些实施例中,根据每一个训练图像的出现的计数可以被同等地加权
(例如,每一个训练图像同等地重要),但是在其它实施例中,根据训练图像中的每一个的出现的计数可以被不同地加权(例如,因为某些训练图像可以被认为比其它训练图像更重要或更有价值)。因此,图像的权重可以根据训练过程的设计参数而变化。相应地,加权平均直方图可以计算为:
[0106][0107]
其中,wi是被赋给第i训练图像的权重,hi与第i训练图像的直方图相对应,并且n是权重之和。如果图像的权重都相同,则wi=1。另一方面,如果权重不同,则可以基于每一个图像的重要性将权重分配给训练图像。
[0108]
返回参照图9,可以基于每一个模式的出现频率对查找表进行排序。在以上示例中,模式(0,0,0)出现的频率最高,并且因此被排序并被放置在第一位置(例如,熵编码索引0)。模式(4,4,4)出现的频率第二高,并且因此被排序并被放置到第二位置(例如,熵编码索引1)中。这个过程可以被重复,直到熵编码索引中的所有或大部分被排序。相应地,可以生成诸如图9中所示的表的表,其中s={0,124,31,120,1,5,20,4,123,25,93,100,24,90,6,30,104,115,33,81,121,91,80,26,95,34,40,15,75,21,43,32,94,9,118,45,3,119,105,101,29,23,122,16,19,8,116,41,99,35,28,76,103,46,79,92,49,106,109,65,44,18,36,78,84,56,96,108,48,117,10,50,2,42,110,98,83,85,7,38,86,37,11,22,82,55,14,27,102,51,70,54,17,68,88,13,77,114,74,66,59,87,58,71,47,53,107,69,39,62,61,111,113,89,73,57,64,97,63,60,12,67,52,72,112},并将其存储为查找表中的数组。在一些实施例中,可以使用其它训练方法来生成类似的查找表或数据结构。
[0109]
图8的下半部分示出了基于排序后数组s而排序的直方图。如所示,模式值按从最频繁出现模式到最不频繁出现模式的顺序排序。例如,直方图中的熵编码索引0出现最频繁,并且已经在第一位置。在该示例中,第二最频繁出现的模式是熵编码索引124,因此其被移到第二位置,如图8的下半部分中所示。下一个最频繁出现的模式是熵编码索引31,因此其被移到第三位置。可以针对熵编码索引中的所有或大部分重复该过程以生成排序后直方图。
[0110]
一旦完成训练过程并且生成查找表,熵编码器450然后就可以用于执行联合颜色通道熵编码。在一些实施例中,模式可以基于n元组格式,诸如例如,rgb三元组格式、rgbg四元组格式、rb/gg对或rg/bg对格式或者像素的任何其它格式。将通过使用rgb三元组格式作为示例来描述在本公开中提供的示例,但是相同的方法也可适用于其它格式。现在将描述使用存储在查找表(或其它数据结构)中的训练后信息的编码过程。在随后的示例中,将使用排序后数组s={0,124,31,120,1,5,20,...,52,72,112}作为示例来帮助解释实施例。在一些实施例中,针对像素的红色、绿色和蓝色通道的量化后索引被提供为熵编码器450的输入。
[0111]
根据一种编码方法,查找表包括排序后数组s={0,124,31,120,1,5,20,...,52,72,112}。这里,模式值按从最频繁出现模式到最不频繁出现模式的顺序排序,其中,最频繁出现模式是熵编码索引0,第二最频繁出现模式是熵编码索引1,等等。基于这种排序,根据该示例,val 0与熵编码索引0相对应,val 124与熵编码索引1相对应,val 31与熵编码索引2相对应,等等,如图10中的示例查找表中所示。相应地,例如,在编码期间,如果量化后索引
是124,则编码器在查找表中搜索值124,然后基于124(其是与第二最频繁出现模式相对应的熵编码索引)的位置,编码器知道val 124与熵编码索引1相对应。可以针对每一个模式值而重复该过程。
[0112]
根据另一种编码方法,可以基于排序后数组s生成诸如图11中所示的查找表的查找表(idxarray)。idxarray可以是基于对应的模式值排列的熵编码索引数组,其中模式值val按数字顺序排列。因此,编码器不必在idxarray中搜索模式值。相反,编码器仅在idxarray中查找模式值并提取对应的熵编码索引(index),其中index=idxarray[val]。例如,如果模式值是124,则编码器不进行搜索就转到位置124并从idxarray中获取熵编码索引1。相应地,执行预计算以生成idxarray而在编码过程期间不必执行搜索,从而减少在从idxarray中获取信息时执行的计算量,因此节省时间并且节省资源。另一方面,该方法需要为编码器存储查找表,并且为解码器存储另一查找表。也就是说,熵编码索引数组idxarray可以存储在编码器处并且数组s可以存储在解码器处。另一方面,第一种编码方法不需要idxarray,但是必须执行计算来搜索查找表。因此,可以基于设计需求选择合适的编码方法。
[0113]
相应地,可以从这些查找表中获得熵编码索引,并且可以由熵编码器利用一种或多种已知熵编码技术(诸如,指数-哥伦布、哥伦布-赖斯或霍夫曼编码技术)来对index执行熵编码。相应地,来自三个颜色通道的量化后索引可以由熵编码器450进行联合编码。
[0114]
在一些实施例中,解码器可以被配置成对由编码器编码的比特进行解码。更具体地,解码器将联合编码后比特流解码成颜色分离的量化后索引q[r]、q[g]和q[b],然后这些量化后索引由逆量化器460a、460b(参见图7)进行逆量化。相应地,将熵编码索引与其在查找表中的对应的模式值val进行匹配以获得对应的值,即,val=s[index]。因此,返回参照以上示例,数组s中的熵编码索引1确定模式值是124,即s[1]=124,并且熵编码索引2确定模式值是31,等等。然后,可以将这些值代入以下等式:
[0115]
q[r]=val/m2[0116]
q[g]=(val-q[r]
×
m2)/m
[0117]
q[b]=val-q[r]
×m2-q[g]
×m[0118]
其中m是针对每一个颜色通道的表示性量化后索引的数量,以获得用于rgb的颜色分离的量化后索引q[r]、q[g]和q[b]。如果m被设计为2的幂,则可以避免除法。也就是说,例如,如果m=2,则q[r]=val/4=val>>2,其中>>是右移运算符。
[0119]
图12是示出存储在查找表中的码本的数值示例的表。这里,该表包括示出为熵编码索引范围的熵编码索引的范围以及提供为包括前缀和后缀的比特流的针对各自对应的熵编码索引的码字的示例。注意,图12中所示的码字仅是码字的示例组,并且在实践中,可以使用其它码字。在该示例中,存在8个表示性级别。例如,熵编码索引0-3在第一级别中,4-11在第二级别中,12-27在第三级别中,28-59在第四级别中,60-123在第五级别中,124-251在第六级别中,252-507在第七级别中,并且508-511在第八级别中,其中二进制码字的长度随着排序后熵编码索引增大而增大。表中的每一个前缀指定级别,并且每一个后缀指示在对应的级别内的位置。随着前缀长度增大(例如,级别增大),后缀长度增大。在所示的示例中,后缀与位置-1相对应。熵编码索引3在包括熵编码索引0-3的第一级别中。针对该级别的前缀是0,并且熵编码索引3在该级别的第4位置。相应地,后缀是十进制的3。针对该级别的
后缀长度是2,因此后缀是11。相应地,根据图12中的表,针对熵编码索引3的二进制码字是011。
[0120]
这里,较高的熵编码索引与较低的模式出现频率相对应,并且较低的熵编码索引与较高的模式出现频率相对应。如上所描述,熵编码索引可以存储在基于模式值(patternvalue)排列(例如,索引)的数组idxarray中。因此,idxarray[patternvalue]等于patternvalue的熵编码索引。在其中m=8的示例中,idxarray[512]={0,448,64,8,56,1,7,384,504,72,128,120,456,63,9,320,65,192,455,73,511,256,449,57,15,71,2,440,79,136,16,127,48,463,505,6,457,121,376,447,137,200,369,10,365,219,312,319,383,129,184,58,385,391,62,392,3,74,496,264,80,23,135,55,112,87,49,374,66,201,464,17,450,433,24,441,503,143,454,40,510,13,14,193,81,248,265,250,375,255,327,458,205,5,185,278,54,399,439,393,32,202,4,70,328,191,257,321,151,277,138,145,249,186,311,78,497,11,22,144,488,126,119,214,502,113,438,150,465,377,310,86,432,471,146,199,130,335,329,122,386,176,400,194,269,209,263,266,203,207,462,82,141,25,88,271,267,472,104,424,213,330,342,208,506,61,12,292,210,394,142,215,41,47,446,77,18,67,96,480,31,183,272,390,134,406,305,501,470,75,337,190,451,33,322,131,279,401,39,258,111,50,453,408,336,59,247,273,407,313,368,69,460,461,509,198,240,195,495,416,60,68,452,114,177,26,479,21,89,398,105,466,152,489,76,500,304,168,95,508,118,382,487,473,189,343,139,442,498,387,507,53,160,218,334,103,97,459,481,314,323,326,125,246,318,83,206,431,270,46,254,123,30,341,232,153,352,217,34,42,367,149,378,344,268,133,19,262,360,241,94,437,415,388,51,90,175,124,445,169,402,159,216,85,309,425,389,409,224,20,423,182,52,181,428,140,494,38,434,154,161,345,178,303,296,204,499,35,187,147,474,366,338,467,167,417,373,491,117,132,84,245,478,395,429,280,27,492,410,430,355,490,443,281,239,333,397,102,110,486,106,331,274,469,115,288,98,324,302,444,332,482,43,238,346,223,44,287,359,361,259,45,282,29,225,396,158,116,295,231,197,148,174,188,242,289,351,468,196,28,426,325,353,233,436,261,493,170,381,427,91,435,297,306,253,414,155,370,222,37,36,422,294,485,379,419,477,211,418,354,317,166,179,162,347,107,405,230,483,251,476,315,380,362,92,252,290,156,157,411,403,108,93,260,180,226,301,235,234,475,364,298,484,99,243,316,358,109,237,404,221,165,229,275,286,307,350,308,101,163,227,421,363,171,172,283,372,299,244,100,357,173,164,420,371,339,356,293,228,412,276,220,291,340,212,413,236,348,284,300,285,349}。基于该idxarray,模式值0与熵编码索引0相对应(例如,idxarray[0]=0),其与熵编码索引范围[0,3]、前缀0和后缀00相对应。因此,针对模式值0的码字是000。类似地,模式值2与熵编码索引64相对应(例如,idxarray[2]=64),其与熵编码索引范围[60,123]、前缀11110和后缀000100相对应。因此,针对模式值2的码字可以是11110000100。相应地,通过将熵编码索引映射到图12的查找表,熵编码器能够将量化后三元组颜色值编码成二进制码字。
[0121]
可替代地,用于以上示例的数组s可以是s={0,448,64,8,56,1,7,384,504,72,128,120,456,63,9,320,65,192,455,73,511,256,449,57,15,71,2,440,79,136,16,127,
48,463,505,6,457,121,376,447,137,200,369,10,365,219,312,319,383,129,184,58,385,391,62,392,3,74,496,264,80,23,135,55,112,87,49,374,66,201,464,17,450,433,24,441,503,143,454,40,510,13,14,193,81,248,265,250,375,255,327,458,205,5,185,278,54,399,439,393,32,202,4,70,328,191,257,321,151,277,138,145,249,186,311,78,497,11,22,144,488,126,119,214,502,113,438,150,465,377,310,86,432,471,146,199,130,335,329,122,386,176,400,194,269,209,263,266,203,207,462,82,141,25,88,271,267,472,104,424,213,330,342,208,506,61,12,292,210,394,142,215,41,47,446,77,18,67,96,480,31,183,272,390,134,406,305,501,470,75,337,190,451,33,322,131,279,401,39,258,111,50,453,408,336,59,247,273,407,313,368,69,460,461,509,198,240,195,495,416,60,68,452,114,177,26,479,21,89,398,105,466,152,489,76,500,304,168,95,508,118,382,487,473,189,343,139,442,498,387,507,53,160,218,334,103,97,459,481,314,323,326,125,246,318,83,206,431,270,46,254,123,30,341,232,153,352,217,34,42,367,149,378,344,268,133,19,262,360,241,94,437,415,388,51,90,175,124,445,169,402,159,216,85,309,425,389,409,224,20,423,182,52,181,428,140,494,38,434,154,161,345,178,303,296,204,499,35,187,147,474,366,338,467,167,417,373,491,117,132,84,245,478,395,429,280,27,492,410,430,355,490,443,281,239,333,397,102,110,486,106,331,274,469,115,288,98,324,302,444,332,482,43,238,346,223,44,287,359,361,259,45,282,29,225,396,158,116,295,231,197,148,174,188,242,289,351,468,196,28,426,325,353,233,436,261,493,170,381,427,91,435,297,306,253,414,155,370,222,37,36,422,294,485,379,419,477,211,418,354,317,166,179,162,347,107,405,230,483,251,476,315,380,362,92,252,290,156,157,411,403,108,93,260,180,226,301,235,234,475,364,298,484,99,243,316,358,109,237,404,221,165,229,275,286,307,350,308,101,163,227,421,363,171,172,283,372,299,244,100,357,173,164,420,371,339,356,293,228,412,276,220,291,340,212,413,236,348,284,300,285,349}。
[0122]
基于该数组s,模式值0与熵编码索引0相对应(例如,s[0]=0),其与熵编码索引范围[0,3]、前缀0和后缀00相对应。因此,针对模式值0的码字是000。类似地,模式值2与熵编码索引64相对应(例如,s[64]=2),其与熵编码索引范围[60,123]、前缀11110和后缀000100相对应。因此,针对模式值2的码字可以是11110000100。相应地,通过将熵编码索引映射到图12的查找表,熵编码器能够将量化后三元组颜色值编码成二进制码字。
[0123]
在一些实施例中,在解码期间,解码器在码字的前缀中查找第一个零。基于在零之前出现的1的数量,解码器能够确定熵编码索引的范围。例如,如果前缀是110,则解码器能够确定熵编码索引在12-27范围中。类似地,如果前缀是1110,则解码器能够确定熵编码索引在28-59范围中。相应地,可以基于前缀的长度来确定后缀的长度。换句话说,如果前缀较长,则后缀可以较长。接下来,解码器查看零后面的是后缀的数值。如果后缀数值全部是零,则熵编码索引是该熵编码索引范围中的第一个熵编码索引。因此,例如,如果解码器已经确定熵编码索引范围是12-27,因为前缀是110并且后缀全部是零(例如,0000),则解码器能够确定熵编码索引是12,其是范围12-27中的第一个熵编码索引。如果后缀是0001,则熵编码索引是13,而如果后缀是0010,则熵编码索引是14,等等。因此,如果后缀全部是1(例如,
1111),则熵编码索引是范围12-27中的最后一个熵编码索引,其是熵编码索引27。
[0124]
根据一些实施例,熵编码索引范围508-511是特殊情况,其中前缀不包括任何零。因此,解码器可以被设置成查找1的阈值数量,例如在该示例中是七个1。因此,如果解码器确定前缀中存在七个1,则解码器能够确定熵编码索引范围是508-511。这里,后缀以类似的方式确定,其中全部是零指示熵编码索引范围508-511的第一熵编码索引。相应地,图12的示例表利用了哥伦布-赖斯码和指数-哥伦布码的混合。这里,当前缀长度是1时使用哥伦布-赖斯码,并且当前缀长度大于1时使用指数-哥伦布码。然而,哥伦布-赖斯码或指数-哥伦布码的使用仅是示例,并且在实践中,可以替代地使用其它熵编码方法和/或可以与各种熵编码方法结合使用其它熵编码方法。
[0125]
图13是示出将熵编码索引映射到用于具有rgbg格式(例如,格式)的像素的码字的查找表的表。当像素采用rgbg格式时,可以使用与参照采用rgb格式的像素讨论的方法相同的方法。然而,当每一个量化后颜色索引由8个级别(例如,m=8)(即,红色、绿色、蓝色和绿色)表示时,4096个熵编码索引是可能的。因此,在查找表中创建4096个熵编码索引可能很昂贵且消耗资源。为了节省查找表中的存储空间,可以将熵编码索引分成两组64个熵编码索引数组。也就是说,通过将rgbg分成对(例如,rb和gg),rb和gg中的每一对仅包括64个熵编码索引,这大大地少于4096个熵编码索引。相应地,可以使用以下等式:
[0126]
index
rb
=idxarray
rb
[8
×
q[b] q[r]]
[0127]
indexg=idxarrayg[8
×
q[g1] q[g0]]
[0128]
这得到以下熵编码索引数组:
[0129]
idxarray
rb
={0,4,15,27,62,33,16,3,2,6,13,23,48,53,36,8,11,9,17,31,52,59,37,29,22,18,25,35,51,56,49,44,46,38,43,60,58,45,40,41,24,42,54,61,55,34,21,20,12,28,39,57,50,30,19,10,1,7,32,47,63,26,14,5},并且
[0130]
idxarrayg={0,4,13,9,30,10,16,1,2,8,21,28,44,35,18,6,15,24,38,52,57,42,23,17,12,47,58,63,49,25,36,33,32,48,61,62,46,50,53,41,11,37,55,31,60,56,43,29,14,20,27,51,59,54,39,22,3,5,19,34,40,45,26,7}。
[0131]
可以看出,两组数组的熵编码索引是不同的。因此,在对红色和蓝色进行编码时,使用rb数组,并且当对绿色进行编码时,使用g数组。
[0132]
该示例的模式值的对应的(排序后)数组s可以是:
[0133]srb
={0,56,8,7,1,63,9,57,15,17,55,16,48,10,62,2,6,18,25,54,47,46,24,11,40,26,61,3,49,23,53,19,58,5,45,27,14,22,33,50,38,39,41,34,31,37,32,59,12,30,52,28,20,13,42,44,29,51,36,21,35,43,4,60},并且
[0134]
sg={0,7,8,56,1,57,15,63,9,3,5,40,24,2,48,16,6,23,14,58,49,10,55,22,17,29,62,50,11,47,4,43,32,31,59,13,30,41,18,54,60,39,21,46,12,61,36,25,33,28,37,51,19,38,53,42,45,20,26,52,44,34,35,27}。
[0135]
图14是示出根据本公开的实施例的用于执行联合颜色通道熵编码的示例方法的流程图900。假设编码器已经被训练并且已经在其上在查找表中存储了数组s,则编码器接收图像帧。图像帧由像素组成并且每一个像素包括诸如例如红色通道、绿色通道和蓝色通道的n个颜色通道(902)。接下来,经由用于n个颜色通道中的每一个的保证非负重构误差的单独的颜色通道量化分支通过单独的颜色通道编码过程来对图像帧进行编码。编码器进一
步基于图像帧中的第一特定像素的残差的颜色值来生成量化后颜色索引的第一样本组。这里,第一样本组与颜色通道的第一n元组相对应(904)。接下来,熵编码器基于将量化后索引的n元组映射到熵编码索引的数据来针对第一特定像素生成熵编码。这里,第一n元组被映射到第一熵编码索引(906)。
[0136]
在一些实施例中,单独的颜色通道量化分支中的每一个基于图像帧中的第二特定像素的残差的颜色值来生成量化后颜色索引的第二样本组。这里,第二样本组与第二n元组相对应(908)。接下来,熵编码器基于将量化后索引的n元组映射到熵编码索引的数据来针对第二特定像素生成熵编码,其中第二n元组被映射到第二熵编码索引(910)。相应地,可以通过在维持非负重构误差的同时、在联合颜色通道熵编码技术中运用图像帧的颜色的通道间相关性来对接收到的图像帧进行编码。注意,在一些实施例中,运用颜色图像的通道间相关性的联合颜色通道熵编码技术也可适用于不一定保证非负重构误差的编码器和/或解码器。换句话说,重构误差可以是负值,并且在这种情况下,可以利用联合颜色通道熵编码技术,而不脱离在本文中描述的实施例的范围。
[0137]
图15是示出根据本公开的实施例的用于执行联合颜色通道熵编码的示例方法的流程图1000。根据该方法,基于第一n元组计算第一模式值(1002)。一旦计算出第一模式值,熵编码器就参考查找表以确定对应的第一熵编码索引(1004),查找表包括针对所计算的第一模式值的数据的数组。一旦确定了对应的第一熵编码索引,就对第一熵编码索引进行编码(1006)。
[0138]
图16是示出根据本公开的实施例的用于执行联合颜色通道熵编码的另一示例方法的流程图1100。根据该方法,基于第一n元组计算第一模式值(1102)。一旦计算出第一模式值,就根据由第一模式值指示的数组的位置从包括针对所计算的第一模式值的数据的数组的查找表中获取第一熵编码索引。这里,在创建查找表时预先计算模式值的第一熵编码索引(1104)。因此,在确定模式值的第一熵编码索引的同时不执行附加的计算。一旦确定了对应的第一熵编码索引,就对第一熵编码索引进行编码(1106)。
[0139]
图17是示出根据本公开的实施例的用于训练编码器的示例方法的流程图1200。在训练期间,例如,在离线过程中,由训练编码器接收第一训练图像帧(1202)。接下来,计算与第一训练图像帧相对应的训练重构误差值。这里,训练重构误差值包括量化后颜色值的n元组(1204)。在一些实施例中,n与颜色通道的数量相对应,并且因此,在rgb格式示例中,n=3。接下来,基于所计算的训练重构误差值生成量化后索引(1205)。接下来,识别量化后索引的n元组中的每一个n元组的出现频率(1206)。一旦识别出量化后索引的n元组中的每一个n元组的出现频率,就根据n元组的出现频率,将熵编码索引分配给量化后索引的n元组中的每一个n元组(1208)。接下来,根据出现频率对量化后索引的n元组进行排序(1210)。
[0140]
图18是示出根据本公开的实施例的用于对熵编码索引进行解码的示例方法的流程图1300。在比特被编码之后,编码器可以将编码后比特作为比特流提供到解码器进行解码。相应地,解码器可以首先接收编码后比特流,并且然后解析该比特流以识别熵编码索引(1302)。接下来,基于将熵编码索引映射到颜色分离的量化后索引的数据来生成与熵编码索引相对应的颜色分离的量化后索引。在一些实施例中,可以参照查找表来获取这种映射数据。这里,颜色分离的量化后索引是一组n元组(1304)。接下来,可以由n个颜色通道中的每一个颜色通道的对应的颜色通道量化分支对颜色分离的量化后索引的每种颜色进行逆
量化以生成去量化的偏置后残差(1306)。
[0141]
相应地,可以例如在编码器的制造或组装期间离线训练编码器,并且因此,可以将查找表硬编码到存储介质(例如,存储器)中。附加地,根据贯穿本公开的各种实施例描述的一种或多种方法可以由图像压缩和存储系统110实施和执行,该图像压缩和存储系统110可以是通过本公开在图中示出的帧补偿系统100或其它相关系统的一部分。例如,图7中所示的熵编码器450可以在诸如编码器400或本领域技术人员已知的其它类型的编码器的编码器中实现。
[0142]
将理解,尽管术语“第一”、“第二”、“第三”等在本文中可以用于描述各种元件、部件、区、层和/或部分,但是这些元件、部件、区、层和/或部分不应受这些术语的限制。这些术语用于将一个元件、部件、区、层或部分与另一元件、部件、区、层或部分区分开。因此,上面描述的第一元件、第一部件、第一区、第一层或第一部分可以被称为第二元件、第二部件、第二区、第二层或第二部分,而不脱离本发明的精神和范围。
[0143]
诸如“下面”、“下方”、“下”、“之下”、“上方”和“上”等的空间相对术语在本文中可以为了解释的方便而用于描述如附图中所示的一个元件或特征与另一(些)元件或特征的关系。将理解,除了附图中描绘的定向之外,空间相对术语还旨在涵盖装置在使用或操作中的不同定向。例如,如果附图中的装置被翻转,则被描述为在其它元件或特征“下方”、“下面”或“之下”的元件将随之被定向在该其它元件或特征“上方”。因此,示例术语“下方”和“之下”可以涵盖上方和下方两个定向。装置可以以其它方式被定向(例如,被旋转90度或者处于其它定向),并且在本文中使用的空间相对描述语应被相应地解释。
[0144]
将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”或“耦接到”另一元件或层时,该元件或层可以直接在该另一元件或层上、直接连接到或耦接到该另一元件或层,或者可以存在一个或多个居间元件或层。此外,还将理解,当元件或层被称为“在”两个元件或层“之间”时,该元件或层可以是该两个元件或层之间的唯一元件或层,或者也可以存在一个或多个居间元件或层。
[0145]
在本文中使用的术语是为了描述特定实施例的目的,并且不旨在限制本发明。如在本文中所使用,单数形式“一”和“该”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解,当在本说明书中使用时,术语“包括”、“包含”、“含有”和“具有”指明所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是不排除存在或增加一个或多个其它特征、整体、步骤、操作、元件、部件和/或它们的组。如在本文中所使用,术语“和/或”包括相关列出项中的一个或多个的任何和所有组合。当在元件列表之后时,诸如“中的至少一个”的表达修饰整个元件列表而不修改列表中的单个元件。
[0146]
如在本文中所使用,术语“基本上”、“约”和类似术语被用作近似术语并且不被用作程度术语,并且旨在说明本领域普通技术人员将认识到的所测量的值或所计算的值中的固有偏差。进一步,在描述本发明的实施例时“可以”的使用指代“本发明的一个或多个实施例”。如在本文中所使用,术语“使用”和“被使用”可以被认为分别与术语“利用”和“被利用”同义。
[0147]
根据在本文中描述的本发明的实施例的电子或电气装置和/或任何其它相关装置或部件可以利用任何合适的硬件、固件(例如,专用集成电路)、软件或者软件、固件和/或硬件的组合来实现。例如,这些装置的各种部件可以形成在一个集成电路(ic)芯片上或单独
的ic芯片上。进一步,这些装置的各种部件可以在柔性印刷电路膜、带载封装(tcp)、印刷电路板(pcb)上实现,或者可以形成在一个基板上。进一步,这些装置的各种部件可以是在一个或多个计算装置中、运行在一个或多个处理器上、执行计算机程序指令并与其它系统部件交互以执行在本文中描述的各种功能的进程或线程。计算机程序指令存储在存储器中,该存储器可以使用标准存储器装置(诸如例如,随机存取存储器(ram))在计算装置中实现。计算机程序指令也可以存储在诸如例如cd-rom或闪存驱动器等的其它非暂时性计算机可读介质中。此外,本领域技术人员应认识到,各种计算装置的功能可以组合或集成到单个计算装置中,或者特定计算装置的功能可以跨一个或多个其它计算装置而分布,而不脱离本发明的示例实施例的精神和范围。
[0148]
由编码器和解码器的组成部件执行的操作可以由用于处理数据或数字信号、可以包括硬件、固件和软件的任何组合的“处理电路”或“处理器”执行。处理电路硬件可以包括例如专用集成电路(asic)、通用或专用中央处理单元(cpu)、数字信号处理器(dsp)、图形处理单元(gpu)和诸如现场可编程门阵列(fpga)的可编程逻辑装置。在处理电路中,如本文中所使用,每一个功能由被配置成执行该功能的硬件(即硬布线的硬件)执行或者由被配置成执行存储在非暂时性存储介质中的指令的更通用的硬件(诸如cpu)执行。处理电路可以组装在单个印刷线路板(pwb)上或者遍及多个互连的pwb而分布。处理电路可以包含其它处理电路;例如,处理电路可以包括在pwb上互连的两个处理电路(fpga和cpu)。
[0149]
除非另外限定,否则在本文中使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解,诸如在常用词典中限定的那些术语的术语应被解释为具有与它们在相关领域和/或本发明的背景中的含义一致的含义,并且不应以理想化或过于正式的意义被解释,除非在本文中明确如此限定。
[0150]
在本文中描述的实施例仅是示例。本领域技术人员可以根据具体公开的那些实施例认识到各种可替代的实施例。那些可替代的实施例也旨在在本公开的范围内。因此,实施例仅由所附权利要求及其等同物限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献