图像压缩方法与设备与流程

文档序号:17439787发布日期:2019-04-17 04:36阅读:153来源:国知局
图像压缩方法与设备与流程

本发明涉及压缩或解压缩图像数据的方法及设备,并且在一个特定示例中涉及用于压缩或解压缩图像数据以允许用降低的带宽并且较少的延迟来传输图像数据的方法及设备。

现有技术的描述

本说明书中对任何现有公开(或其衍生信息)或任何已知事项的引用,不是也不应被视为确认或承认或任何形式的建议,即现有公开物(或其衍生信息)或已知事物,构成本说明书所涉及事业领域的一般常见知识的部分。

在虚拟、增强和混合的现实系统中,通常提供一种可穿戴式显示装置,诸如头戴式显示器(hmd,headmounteddisplay),其基于显示装置的相对空间位置及/或方位将信息显示给佩戴者。这种系统基于关于该显示装置的姿势(位置和方位)的信息产生图像来进行操作,如此随着该显示装置移动,图像被更新以反映该显示装置的新姿势。

为了避免晕动病,在姿势信息的收集和相对应的图像的建立之间的时间差最小化,特别是在该显示装置快速移动的情况下,这是相当重要的。结合对产生高分辨率图像使得它们看起来尽可能逼真的需求,这表示需要有相当高阶的处理硬件。结果,高端现有系统通常需要具有高带宽并且低延迟连接至该显示装置的静态台式计算机。因此,像是htcvivetm、oculusrifttm和playstationvrtm这些当前的系统在计算机与hmd之间需要有线连接,这并不方便。

虽然有移动解决方案可用,例如gearvrtm,其并入移动电话来执行在hmd本身内的图像处理和显示,但是处理能力是有限的,意味着可以显示的内容受到限制,特别是在图像分辨率和质量方面受到限制。

我们都知道,压缩图像数据以便缩小数据体积。这在许多应用当中都非常有用,如减少储存该图像数据所需的储存容量,或减少与传输图像数据相关联的带宽需求。

jpeg使用基于离散余弦变换(dct,discretecosinetransform)的破坏形式的压缩。此算术运算将视频源的每个帧/字段(frame/field)从空间(2d)域转换为频域(也就是转换域)。松散基于人类精神视觉系统的知觉模型抛弃了高频信息,即强度上和色调上的急剧转变。在转换域中,通过量化来减少信息。然后量化系数被序列并松散地封装成输出比特流。

然而,这种方式通常只能实现有限的压缩量并且需要相当多的处理时间,因此不适合将这些用于低延迟应用,像是虚拟或增强现实、远程监控(telepresence)等。



技术实现要素:

在一个广泛的形式中,本发明的方面寻求提供一种对来自形成数字现实内容的部分的一个或更多个图像的图像数据进行压缩的方法,该方法包括:从图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;确定在一个或更多个图像内的像素数组相对于已定义位置的位置,该已定义位置至少部分地指示使用者的凝视点;以及将像素数据压缩来产生压缩的图像数据,该像素数据以至少部分地根据该已确定位置来进行压缩,使得压缩的程度取决于该像素数组的该已确定位置。

在一个实施例内,该已定义位置是以下项中的至少一项:使用者的测量凝视点;使用者的预期凝视点;相对于使用者的测量凝视点的偏移;相对于使用者的预期凝视点的偏移;以及至少部分地根据指示使用者的凝视点的凝视数据所确定的,该凝视数据是根据凝视追踪系统获得的。

在一个实施例内,该方法包括压缩该像素数据,使得压缩的程度是进行以下项中的至少一项:基于与该已定义点的距离;基于相对于该已定义点的方向;从该已定义点进一步增加;以及提供凹式压缩(foveatedcompression)。

在一个实施例内,该方法包括:选择多个编码方案中的一个编码方案;以及使用该选择的编码方案对该像素数据进行编码。

在一个实施例内,编码方案中的每个编码方案提供相应的压缩程度,并且其中,该方法包含至少部分地根据以下项中的至少一项来选择编码方案:所要求的压缩程度;以及像素数组的位置。

在一个实施例内,该方法包括:确定指示所使用的编码方案的编码代码;以及使用该编码代码与编码像素数据来产生压缩图像数据。

在一个实施例内,该方法包括使用通过进行以下操作压缩像素数据的编码方案:对该像素数据应用变换,以确定指示该像素数组的频率分量的一组频率系数;使用位编码方案来选择性地对至少某些频率分量进行编码,从而产生一组编码频率系数;以及使用该编码频率系数产生压缩的图像数据。

在一个实施例内,该位编码方案定义用于编码频率系数中的每个频率系数的位数,并且其中,频率系数被选择性地进行编码,使得实现以下项中的至少一项:编码频率系数中的至少一些编码频率系数具有不同位数;较小的位数用于将对应于较高频率的频率系数编码;逐渐较小的位数用于将对应于逐渐较高频率的频率系数编码;至少一个频率系数被丢弃使得该组编码频率系数小于该组频率系数;以及,对应于较高频率的至少一个频率系数被丢弃。

在一个实施例内,该方法包括:选择多个位编码方案中的一个位编码方案;以及根据所选择的位编码方案对频率系数编码。

在一个实施例内,多个位编码方案中的每个位编码方案选择性地用相应的不同的位数来编码不同的频率系数,以提供不同的压缩程度。

在一个实施例内,位编码方案至少部分地根据以下项中的至少一项来选择的:所要的压缩程度;以及该像素数组的位置。

在一个实施例内,频率分量以多个层级进行布置,并且其中,每个位编码方案定义用于在多个层级中的每个层级内编码频率系数的相应的位数。

在一个实施例内,该数组为nxn像素数组,导致2n-1个频率分量层级。

在一个实施例内,该方法包括将缩放因子应用到频率系数中的至少一些频率系数,使得已缩放的频率系数被编码,该缩放因子用来减少每一频率系数的量级,以及其中,以下项中的至少一项成立:不同的缩放因子被应用到至少某些频率系数;相同的缩放因子被应用到每个频率系数;以及不同的缩放因子被应用到不同信道内的频率系数。

在一个实施例内,图像数据定义多个信道,并且其中,方法包括针对每个信道选择性地编码频率系数。

在一个实施例内,像素数据定义rgb信道,并且其中,该方法包括:将该rgb信道转换成ycbcr信道;以及变换ycbcr信道。

在一个实施例内,该方法包括以下项中的至少一项:针对该y信道比针对cb或cr信道选择性地编码更多频率系数;针对ycbcr信道选择性地并行编码频率系数;以及针对cbcr信道选择性地编码频率系数并使用该y信道。

在一个实施例内,该变换为二维(2-d)离散余弦变换。

在一个实施例内,该方法包括通过以下操作从图像数据获得像素数据:缓冲对应于该图像的接下来的n-1个像素行的图像数据;缓冲关于接下来的像素行中的接下来的n个像素的图像数据;从该已缓冲图像数据中获得关于接下来的nxn像素块的像素数据;重复步骤b)和c),直到已经从所有的n个像素行中获得像素数据为止;以及重复步骤a)至d),直到已经从该图像的每一个像素行中获得像素数据为止。

在一个实施例内,n是基于以下中的至少一项进行选择的:所选择的位编码方案;所要的压缩程度;以及该像素数组的位置。

在一个实施例内,该方法包括:选择性地并行编码频率系数;以及至少部分通过并行串行字节编码来产生压缩的图像数据。

在一个广泛的形式中,本发明的方面寻求提供一种将形成数字现实内容的部分的一个或更多个图像中的压缩图像数据解压缩的方法,该方法包括:获得压缩的图像数据,该压缩图像数据代表在一个或更多个图像内的像素数组,并且至少部分基于在一个或更多个图像内的像素数组相对于已定义位置的位置来进行压缩,该已定义位置至少部分指示使用者的凝视点;以及至少部分根据该已确定位置来将该压缩图像数据解压缩。

在一个实施例内,该已定义位置为以下项中的至少一项:该使用者的测量凝视点;使用者的预期凝视点;使用者的测量凝视点的偏移;使用者的预期凝视点的偏移;以及至少部分地根据指示该使用者的凝视点的凝视数据所确定的,该凝视数据是从凝视追踪系统获得的。

在一个实施例内,该方法包括:选择多个解码方案中的一个解码方案;以及使用所选择的解码方案对该像素数据解码。

在一个实施例内,该方法包括至少部分地基于以下项中的至少一项来选择解码方案:所要的压缩程度;像素数组的位置;以及指示所使用的编码方案的编码代码,该编码代码是根据压缩的图像数据确定的。

在一个实施例内,该方法包括使用通过以下操作来解压缩压缩的像素数据的解码方案:根据定义在每个编码频率系数内所使用的位数的位编码方案,从压缩图像数据确定一组编码频率系数;根据该位编码方案来执行该编码频率系数的位解码,从而产生一组频率系数,其中,至少一个频率系数被产生,使得该组编码频率系数小于该组频率系数;以及对该组频率系数应用逆变换,来确定代表在一个或更多个图像内的像素数组的像素数据。

在一个实施例内,该位编码方案定义用于编码频率系数中的每个频率系数的位数,该位编码方案使用较小的位数来编码对应于较高频率的频率系数,并且其中,该方法包括产生对应于较高频率的频率系数中的至少一些。

在一个实施例内,该方法包括:选择多个位编码方案中的一个位编码方案;以及根据所选择的位编码方案对该编码频率系数解码。

在一个实施例内,多个位编码方案中的每个位编码方案选择性地用不同的位数来编码不同的频率系数,以提供不同的压缩程度。

在一个实施例内,位编码方案至少部分是根据以下项中的至少一项来选择的:编码代码;用于产生压缩的图像数据的位编码方案;以及,像素数组的位置。

在一个实施例内,频率分量是以多个层级进行布置的,并且其中,每个位编码方案定义用于在多个层级中的每个层级内编码频率系数的相应的位数。

在一个实施例内,该数组为nxn像素数组,导致2n-1个频率分量层级。

在一个实施例内,该方法包括将缩放因子应用到频率系数中的至少一些频率系数,使得被缩放的编码频率系数被解码,该缩放因子被用来增加每个频率系数的量级,以及其中,以下项中的至少一项成立:不同的缩放因子被应用到至少一些编码频率系数;相同的缩放因子被应用到每个编码频率系数;以及,不同的缩放因子被应用到不同信道内的编码频率系数。

在一个实施例内,图像数据定义多个信道,并且其中,该方法包括针对每个信道选择性地解码编码的频率系数。

在一个实施例内,该压缩图像数据定义ycbcr信道,并且其中,该方法包括:执行ycbcr信道的逆变换;以及将所变换的ycbcr信道转换成rgb信道。

在一个实施例内,该方法包括以下项中的至少一项:针对cb或cr信道比针对y信道产生更多频率系数;并行解码编码的ycbcr信道;以及解码cbcr信道,并将解码的cbcr信道与该y信道转换成rgb信道。

在一个实施例内,该逆变换为逆二维(2-d)离散余弦变换。

在一个实施例内,该方法包括:至少部分通过串行并行字节解码来解码压缩的图像数据;以及选择性地并行解码频率系数。

在一个实施例内,所要的压缩程度是至少基于以下项中的至少一项确定的:像素数组的位置;用来传输压缩图像数据的通信链路的传输带宽;用来传输压缩图像数据的通信链路的传输服务质量;显示装置的移动;图像显示需求;目标显示分辨率;被处理的信道;以及误差度量。

在一个实施例内,该数字现实是以下项中的至少一项:增强现实;虚拟现实;混合现实;以及远程呈现。

在一个实施例内,该方法用于经由以下项中的至少一项将图像数据从计算装置传输到可穿戴式数字现实头戴设备:通信网络;以及无线通信链路。

在一个广泛的形式中,本发明的方面寻求提供一种将形成数字现实内容的部分的一个或更多个图像中的图像数据压缩的设备,该设备包括至少一个电子编码器处理装置,该至少一个电子编码器处理装置:从该图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;确定在一个或更多个图像内的像素数组相对于已定义位置的位置,该已定义位置至少部分地指示该使用者的凝视点;以及至少部分地根据已确定位置将该图像数据压缩,使得压缩程度取决于像素数组的已确定位置。

在一个广泛的形式中,本发明的方面寻求提供将形成数字现实内容的部分的一个或更多个图像中的压缩图像数据解压缩的设备,该设备包括至少一个电子解码器处理装置,该至少一个电子解码器处理装置:获得压缩的图像数据,该压缩图像数据代表在一个或更多个图像的像素数组,并且至少部分地基于在一个或更多个图像内的像素数组相对于已定义位置的位置来压缩,该已定义位置至少部分指示使用者的凝视点;以及,至少部分根据已确定位置来将该压缩图像数据解压缩。

在一个广泛的形式中,本发明的方面寻求提供一种将代表一个或更多个图像的图像数据压缩的方法,该方法包括:从该图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;对像素数据应用变换,以确定指示该像素数组的频率分量的一组频率系数;使用位编码方案选择性地编码频率系数中的至少一些频率系数,从而产生一组编码频率系数,其中,该位编码方案定义用于将频率系数中的每个频率系数编码的位数,使得当频率系数被选择性地编码时:使用不同位数将编码频率系数中的至少一些频率系数进行编码;以及,至少一个频率系数被丢弃,使得该组编码频率系数小于该组频率系数;以及,使用编码频率系数产生压缩图像数据。

在一个实施例内,频率系数被选择性地编码,使得以下中的至少一项成立:用于编码每个频率系数的位数被定义,而不管相应的频率系数的值;较小的位数被用于将对应于较高频率的频率系数编码;逐渐较小的位数被用于将对应于逐渐较高频率的频率系数编码;对应于较高频率的至少一个频率系数被丢弃。

在一个实施例内,该方法包括将缩放因子应用到频率系数中的至少一些频率系数,使得已缩放的频率系数被编码,以及其中以下项中的至少一项成立:不同的缩放因子被应用到至少某些频率系数;相同的缩放因子被应用到每个频率系数;以及,该缩放因子被用来降低每个频率系数的量级。

在一个实施例内,该方法包括:选择多个编码方案中的一个编码方案;以及,使用所选择的编码方案对像素数据编码。

在一个实施例内,编码方案中的每个编码方案提供相应的压缩程度,并且其中,该方法包含至少部分地根据以下项中的至少一项来选择编码方案:所要的压缩程度;以及像素数组的位置。

在一个实施例内,该方法包括根据以下项中的至少一项来选择性地编码频率系数:选择规则;所要的压缩程度;以及在一个或更多个图像内的像素数组的位置。

在一个实施例内,该方法包括:选择多个位编码方案中的一个位编码方案;以及根据所选择的位编码方案对频率系数编码。

在一个实施例内,多个位编码方案中的每个位编码方案选择性地用相应的不同的位数来编码不同的频率系数,以提供不同的压缩程度。

在一个实施例内,位编码方案是至少部分地根据以下项中的至少一项选择的:选择规则;所要的压缩程度;以及像素数组的位置。

在一个实施例内,该方法包括根据以下项中的至少一项来选择该位编码方案:用于传输压缩图像数据的通信链路的传输带宽;用于传输压缩图像数据的通信链路的传输服务质量;显示装置的移动;图像显示需求;目标显示分辨率;被处理的信道;在一个或更多个图像内的像素数组的位置;在一个或更多个图像内的像素数组相对于一个或更多个图像的观察者的凝视点的位置;以及误差度量。

在一个实施例内,频率分量以多个层级进行布置,并且其中,每个位编码方案定义相应的位数以用来在多个层级中的每个层级中编码频率系数。

在一个实施例内,该数组为nxn像素数组,导致2n-1个频率分量层级。

在一个实施例内,该方法包括:确定一个或更多个图像的观察者的凝视点;至少部分地根据凝视点选择性地将频率系数编码。

在一个实施例内,该方法包括:确定在凝视点与一个或更多个图像内的像素数组的位置之间的距离;以及根据距离选择性地将频率系数编码,使得较少的频率系数被编码用于较大距离。

在一个实施例内,图像数据定义多个信道,并且其中,该方法包括针对每个信道选择性地编码频率系数。

在一个实施例内,该像素数据定义rgb信道,并且其中,该方法包括:将该rgb信道转换成ycbcr信道;以及,变换ycbcr信道。

在一个实施例内,该方法包括以下项中的至少一项:针对y信道比针对cb或cr信道选择性地编码更多频率系数;针对ycbcr信道选择性地并行编码更多频率系数;以及,通过以下操作产生压缩图像数据:编码cbcr信道;以及使用y信道。

在一个实施例内,该变换是2-d离散余弦变换。

在一个实施例内,该方法包括从视频馈送获取像素数据。

在一个实施例内,该方法包括通过以下操作从图像数据获得像素数据:缓冲对应于图像的接下来的n-1个像素行的图像数据;缓冲关于接下来的像素行的接下来的n个像素的图像数据;从该已缓冲图像数据中获得关于接下来的nxn像素块的像素数据;重复步骤b)和c),直到已经从所有的n个像素行中获得像素数据为止;以及重复步骤a)至d),直到已经从该图像的每个像素行中获得像素数据为止。

在一个实施例内,n是基于以下项中的至少一项进行选择的:选择规则;所选择的位编码方案;以及像素数组的位置。

在一个实施例内,该方法包括:选择性地并行编码频率系数;以及,至少部分地通过并行串行字节编码来产生压缩的图像数据。

在一个广泛的形式中,本发明的方面寻求提供用于将代表一个或更多个图像的图像数据压缩的设备,该设备包括至少一个电子编码器处理装置,该至少一个电子编码器处理装置:从该图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;对该像素数据应用变换,以确定指示像素数组的频率分量的一组频率系数;使用位编码方案选择性地编码频率系数中的至少一些频率系数,从而产生一组编码频率系数,其中,该位编码方案定义用于编码频率系数的位数,并且其中,频率系数被选择性地编码使得:编码频率系数中的至少一些编码频率系数具有不同位数;以及,至少一频率系数被丢弃,使得该组编码频率系数小于该组频率系数;以及,使用编码频率系数产生压缩的图像数据。

在一个实施例内,该设备包括:编码器输入缓冲区,其用于接收图像数据;以及编码器输出缓冲区,其储存压缩的图像数据。

在一个实施例内,该设备包括编码器输入缓冲区,该编码器输入缓冲区:缓冲对应于图像的接下来n-1个像素行的图像数据;缓冲关于接下来的像素行的接下来的n个像素的图像数据,允许至少一个编码器处理装置从已缓冲图像数据中获取接下来的nxn像素块的像素数据;重复步骤b),直到已经从所有的n个像素行中获得像素数据为止;以及,重复步骤a)和b),直到已经从该图像的每个像素行中获得像素数据为止。

在一个实施例内,该设备包括编码器传输器,其传输来自编码器输出缓冲区的图像数据。

在一个实施例内,至少一个编码器处理装置包括:现场可程序门阵列;专用集成电路以及图形处理单元。

在一个实施例内,该像素数据定义多个信道,并且其中,该设备包括针对每个信道的相应的处理设备和针对并行处理每个信道的并行处理设备中的至少一者。

在一个实施例内,该像素数据定义rgb信道,并且其中,该设备:将该rgb信道转换成ycbcr信道;以及,使用处理装置来选择性地编码ycbcr信道。

在一个实施例内,该像素数据定义rgb信道,并且其中,该设备:使用ycbcr处理装置来将rgb信道转换成cbcr信道;使用至少一个处理装置来对cbcr信道解码;以及,使用延迟块来将y信道从ycbcr处理装置转移至输出缓冲区。

在一个实施例内,该设备包括编码器,该编码器与解码器无线通信,允许图像数据以压缩图像数据方式在该编码器与该解码器之间转移。

在一个实施例内,该编码器为耦合至适当编程的处理系统和是适当编程的处理系统的一部分的至少一种情况。

在一个实施例内,该解码器为耦合至可穿戴式显示装置和是可穿戴式显示装置的一部分的至少一种情况。

在一个实施例内,该编码器和解码器通信以交换以下中的至少一项:压缩的图像数据;指示显示装置移动的移动数据;至少部分用于控制显示装置的控制数据;指示使用者输入指令的输入数据;指示观察者的凝视点的凝视数据;以及,来自与可穿戴显示装置关联的传感器的传感器数据。

在一个广泛的形式中,本发明的方面寻求提供一种将代表一个或更多个图像的压缩图像数据解压缩的方法,该方法包括:获得压缩的图像数据;根据定义每个编码频率系数中所使用的位数的位编码方案,从压缩图像数据确定一组编码频率系数;根据位编码方案来执行该编码频率系数的位解码,从而产生一组频率系数,其中,至少一个频率系数被产生,使得该组编码频率系数小于该组频率系数;以及,对该组频率系数应用逆变换,来确定代表在一个或更多个图像内的像素数组的像素数据。

在一个实施例内,该方法包括:选择多个解码方案中的一个解码方案;以及,使用所选择的解码方案对像素数据解码。

在一个实施例内,该方法包括至少部分地根据以下项中的至少一项来选择解码方案:选择规则;所要的压缩程度;像素数组的位置;以及,指示所使用的编码方案的编码代码,该编码代码是根据压缩的数据图像确定的。

在一个实施例内,该位编码方案使用较小的位数来编码对应于较高频率的频率系数,并且其中,该方法包括产生对应于较高频率的频率系数中的至少一些频率系数。

在一个实施例内,该方法包括将缩放因子应用到至少某些频率系数,使得缩放的频率系数被变换,以及其中以下项中的至少一项成立:将不同的缩放因子应用到至少一些编码频率系数;相同的缩放因子被应用到每个编码频率系数;以及该缩放因子被用来增加每个编码频率系数的量级(magnitude)。

在一个实施例内,该方法包括:选择多个位编码方案中的一个位编码方案;以及,根据所选择的位编码方案对编码频率系数解码。

在一个实施例内,多个位编码方案中的每个位编码方案选择性地用相应的不同的位数来编码不同的频率系数,以提供不同的压缩程度。

在一个实施例内,至少部分地根据以下中的至少一项来选择位编码方案:编码代码;选择规则;用于产生压缩的图像数据的位编码方案;以及像素数组的位置。

在一个实施例内,选择规则至少根据以下中的至少一项:用来传输压缩图像数据的通信链路的传输带宽;用来传输压缩图像数据的通信的传输服务质量;显示装置的移动;图像显示需求;目标显示分辨率;被处理的信道;在一个或更多个图像内的像素数组的位置;以及,在一个或更多个图像内的像素数组相对于一个或更多个图像的观察者的凝视点的位置;以及误差度量。

在一个实施例内,该方法包括:确定一个或更多个图像的观察者的凝视点;至少部分地根据凝视点选择性地解码编码的频率系数。

在一个实施例内,该方法包括:确定在凝视点与一个或更多个图像内像素数组的位置间的距离;以及,根据距离选择性地解码编码的频率系数,使得较多的频率系数被产生用于更大的距离。

在一个实施例内,频率分量以多个层级进行布置,并且其中,每个位编码方案定义用于在多个层级中的每个层级内编码频率系数的相应的位数。

在一个实施例内,该数组为nxn像素数组,导致2n-1个频率分量层级。

在一个实施例内,图像数据定义多个信道,并且其中,方法包括针对每个信道选择性地解码编码的频率系数。

在一个实施例内,压缩图像数据定义ycbcr信道,并且其中,方法包括:执行ycbcr信道的逆变换;以及将所变换的ycbcr信道转换成rgb信道。

在一个实施例内,该方法包括以下项中的至少一项:针对cb或cr信道比针对y信道产生更多频率系数;并行解码编码的ycbcr信道;解码cbcr信道,并将已解码cbcr信道与该y信道转换成rgb信道。

在一个实施例内,逆变换为逆2-d离散余弦变换。

在一个实施例内,该方法包括使用该像素数据来产生视频馈送。

在一个实施例内,该方法包括:至少部分通过串行并行字节解码来解码压缩的图像数据;以及选择性地并行解码频率系数。

在一个实施例内,该数字现实是以下中的至少一项:增强现实;虚拟现实;以及混合现实。

在一个实施例内,该方法用于通过经由以下中的至少一项从计算设备接收压缩的图像数据来在可穿戴式数字现实头戴设备内显示图像数据:通信网络;以及无线通信链路。

在一个实施例内,该方法用于以下中的至少一项:传输虚拟现实视频数据;以及,无线传输虚拟现实视频数据。

在一个广泛的形式中,本发明的方面寻求提供将代表一个或更多个图像的压缩图像数据解压缩的设备,该设备包括至少一个电子解码器处理装置,该至少一个电子解码器处理装置:获得压缩的图像数据;根据定义每个编码频率系数内所使用的位数的位编码方案,从压缩图像数据确定一组编码频率系数;根据位编码方案来执行编码频率系数的位解码,从而产生一组频率系数,其中,至少一个频率系数被产生,使得该组编码频率系数小于该组频率系数;以及,对该组频率系数应用逆变换,来确定代表在一个或更多个图像内的像素数组的像素数据。

在一个实施例内,该设备包括:解码器输入缓冲区,其用来接收该压缩图像数据;以及解码器输出缓冲区,其储存图像数据。

在一个实施例内,该设备包括解码器收发器,其接收压缩的图像数据并将该压缩的图像数据提供给该输入缓冲区。

在一个实施例内,该至少一个解码器处理装置包括:现场可编程门阵列;专用集成电路以及图形处理单元。

在一个实施例内,压缩的图像数据定义多个信道,并且其中,该设备包括针对信道中的每个信道的相应的处理装置以及用于并行处理每个信道的并行处理设备装置中的至少一者。

在一个实施例内,该压缩图像数据定义ycbcr信道,并且其中,该设备:使用至少一个处理装置来解码cbcr信道;以及将已解码ycbcr信道转换成rgb信道。

在一个实施例内,压缩的图像数据定义ycbcr信道,并且其中,该设备:使用处理装置来解码cbcr信道;使用rgb处理装置,以将已解码cbcr信道与y信道转换成rgb信道;以及,使用延迟块将y信道从解码器输入缓冲区转移至rgb处理装置。

在一个实施例内,该设备包括解码器,其与编码器无线通信,允许图像数据作为压缩的图像数据在该编码器与该解码器之间进行转移。

在一个实施例内,该解码器为耦合至被适当地编程的计算机系统和是被适当地编程的计算机系统的一部分中的至少一种情况。

在一个实施例内,该解码器为耦合至可穿戴显示装置和是可穿戴显示装置的一部分的至少一种情况。

在一个实施例内,该解码器和编码器通信以交换以下中的至少一项:压缩的图像数据;指示显示装置的移动的移动数据;被至少部分地用来控制该显示装置的控制数据;指示使用者输入指令的输入数据;指示观察者的凝视点的凝视数据;以及来自与可穿戴显示装置相关联的传感器的传感器数据。

在一个广泛的形式中,本发明的方面寻求提供一种将代表一个或更多个图像的图像数据压缩的方法,该方法包括:从该图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;确定编码方案;使用该编码方案对该像素数据编码;确定指示所使用该编码方案的编码代码;以及使用该编码代码与编码像素数据来产生压缩图像数据。

在一个实施例内,该方法包括通过以下中的至少一项来确定编码方案:基于图像数据的图像类型;基于从图像数据源接收的编码方案指示;通过分析图像数据与像素数据中的至少一者;以及,基于包括以下中的至少一项的压缩需求:压缩量;产生的图像质量;以及压缩延迟。

在一个实施例内,该方法包括分析该像素数据来确定该像素数组是否为以下中的至少一项:梯度;边界;以及单个颜色。

在一个实施例内,该方法包括以下中的至少一项:若该像素数组为纯色,则将该像素数组替换为指示该纯色的编码代码;若该像素数组为梯度,则该方法包括使用根据本发明另一方面的方法来编码该像素数据;以及使用根据本发明另一方面的方法来编码像素数据。

在一个广泛的形式中,本发明的方面寻求提供将代表一个或更多个图像的图像数据压缩的设备,该设备包括至少一个电子编码器处理装置,该至少一个电子编码器处理装置:从该图像数据获得像素数据,该像素数据代表在一个或更多个图像内的像素数组;确定编码方案;使用该编码方案编码像素数据;确定指示所使用的编码方案的编码代码;以及,使用编码频率系数产生压缩的图像数据。

在一个广泛的形式中,本发明的方面寻求提供一种将代表一个或更多个图像的压缩图像数据解压缩的方法,该方法包括:获得压缩的图像数据;从压缩的图像数据确定编码代码;使用该编码代码确定编码方案;以及使用编码方案将压缩的图像数据的至少一部分解码,以确定代表在一个或更多个图像内的像素数组的像素数据。

在一个实施例内,该方法包括以下中的至少一项:将编码代码替换为纯色的像素数组;使用根据本发明另一方面的方法,将压缩图像数据解码为关于梯度的像素数组;以及使用根据本发明另一方面的方法来将该压缩图像数据解码。

在一个广泛的形式中,本发明的方面寻求提供将代表一个或更多个图像的压缩图像数据解压缩的设备,该设备包括至少一个电子解码器处理装置,该至少一个电子解码器处理装置:获得压缩的图像数据;从该压缩的图像数据确定编码代码;使用该编码代码确定编码方案;以及使用该编码方案将该压缩的图像数据的至少一部分解码,来确定代表在一个或更多个图像内的像素数组的像素数据。

应了解,本发明的广泛形式及其相应的特征可以结合使用、可互换及/或独立使用,并且不用于限制单独的广泛形式的参考。

附图简述

现在将参考附图,描述本发明的示例,其中:

图1为用于压缩以及后续解压缩图像数据的方法的示例的流程图;

图2a为用于在可穿戴式装置上显示图像的设备的第一示例的示意图;

图2b为用于在一可穿戴式装置上显示图像的设备的第二示例的示意图;

图3为虚拟现实系统合并用于压缩与解压缩图像数据的设备的特定示例的示意图;

图4a至图4d为用于压缩以及后续解压缩图像数据的方法的特定示例的流程图;

图5为例示编码过程的方面的示意图;

图6为选择位编码方案的方法的示例的流程图;

图7为待编码的图像的示例的示意图;

图8为用于压缩图像数据以及解压缩压缩的图像数据的编码/解码方案的另一个示例的流程图;

图9a和图9b为用于使用选择性编码/解码方案来压缩以及后续解压缩图像数据的方法的特定示例的流程图;以及

图10为用于压缩以及后续解压缩图像数据的方法的进一步示例的流程图。

优选实施方式的详细描述

现在将参考图1来描述用于压缩与后续解压缩图像数据的方法的示例。

针对例示的目的,假设至少部分地使用一个或更多个电子处理装置来执行过程。在一个示例中,使用相应的处理装置来压缩与解压缩图像数据,允许压缩的图像数据在两个处理装置之间进行转移,虽然这并非必须并且可选地同一个处理装置可以被用于压缩与解压缩图像数据。

该处理装置可形成相应的处理系统的一部分,像是计算机系统、计算机服务器、包含移动电话、便携计算机的客户端装置、像是可穿戴式或头戴式显示器的显示装置,或可选地可以为耦合至这种装置的独立模块的形式。

该图像数据通常代表一个或更多个图像,并且在一个示例中,代表要显示在相应的显示装置上的一系列图像。如从以下说明中将了解,在一个特定示例中,图像数据为适于对源远程显示的一系列图像,像是在其中图像显示于可穿戴式显示器上的虚拟或增强现实图形应用中,及/或在其中图像是从像是无人机装载的相机等的远程可控制系统显示的远程呈现应用中。

在此示例中,在步骤100上,从图像数据获得像素数据,该像素数据代表在一个或更多个图像内部的像素数组。该像素数据可用任何合适的方式获得,这取决于该图像数据的格式。在一个示例中,这简单地通过选择在图像数据内的特定字节序列就可实现。该像素数组通常对应于一组像素数量,像是图像中的一个图像内的8x8像素块,不过也可使用其他像素数组。

在步骤110上,对该像素数据应用变换,以确定指示像素数组的频率分量的一组频率系数。因此,该转换通常为频率转换,像是傅立叶变换等,并且在一个示例内为2ddct(离散余弦变换)。该转换可用任何合适的方式进行应用,例如使用已知的转换技术,但是在一个示例中以高并行方式执行,从而缩短处理时间。

在步骤120上,使用位编码方案选择性地将至少某些频率系数编码,从而产生一组编码频率系数。该位编码方案定义用来将每个频率系数编码的位数,频率系数被选择性地编码,使得至少某些编码频率系数具有不同位数,并且至少一个频率系数被丢弃,使得该组编码频率系数小于该组频率系数。

此过程可用任何合适方式实现,并且可包含丢弃某些频率系数,以及然后使用不同的位数编码剩余频率系数,从而减少编码频率系数所需的位数。可选地,该过程可以包括用零位编码某些频率系数,从而有效地丢弃相应的频率系数作为编码步骤的一部分。

已丢弃的特定频率分量将根据优选的实现方式而变化。通常较高频率分量会因其量级较小并因其对应于图像内的剧烈转变而被丢弃,意味着其对于整体图像质量的贡献较少。这允许较高频率分量系数被丢弃,而不会对所感受的图像质量有显著不利地影响。除了丢弃对应于较高频率的频率分量以外,该过程可用较少的位编码针对较高频率分量的频率系数,从而减少编码频率系数所需的总的位数。

类似地,当用不同位数编码频率系数时,其独立于频率系数的实际值而被执行,而是基于对该频率系数的预期量级的理解来执行。例如:较低频率上的频率系数通常量级较大,且因此通常用较多位数编码,而较高频率上的频率系数通常强度较小,因此用较少位数编码。这可使频率系数的值被编码不会损失信息。

一旦已经执行编码,则在步骤130上可使用该编码频率系数产生压缩图像数据。例如,这可通过建立字节流来执行,该字节流包含编码频率系数序列,可选地具有额外信息,像是旗标或其他标记来识别新图像等等的开始。

因此,上述过程允许通过使用位编码方案选择性地编码频率系数来建立压缩图像数据,所述位编码方案例如根据该频率系数的量级丢弃至少某些频率系数并且使用不同位数编码剩余系数。因此,较小量级的系数可以使用较小位数进行编码而无任何信息损失。

应该注意的是,这种方法应该与代码替换技术(诸如霍夫曼编码,其中值被替换为较短的码)形成对照。相反,在此示例中,值仍旧被编码,但是使用适合于该值预期量级的位数,因此如果预期该频率系数值不超过七,那么这可以被编码为三位字符,所以六会编码为“110”,而不是使用默认的八位字符“00000110”。相较之下,若预期的是该频率系数的值高达六十三,则应使用六位字符,因此例如二十应被编码为“010100”。在该值高出可用位数的情况下,则可以使用可用于该定义位数的最大值,从而导致所得压缩的图像数据的精度损失。

因此,位编码方案使用有关频率系数值的预期大小的信息,以便定义应被使用的位数。较不积极的位编码方案将使用较大的位数,导致压缩较少,但是有较高分辨率,而较积极的位编码方案将使用较少位数,且因此提供较多压缩,但是其代价是分辨率较低。

在任何事件中,通过使用定义用于编码每个频率系数的位数的位编码方案,这允许在解压缩压缩图像数据时使用相同方案,接着允许执行正确解压缩,同时允许位编码方案用于被配置成针对当前情况优化压缩。

关于这方面,在步骤140上,根据位编码方案,从压缩图像数据确定一组编码频率系数。尤其是,通过选择构成接下来的频率系数的接下来的位数,关于用于编码每个频率系数的位数的信息允许将已接收的压缩的图像数据划分成编码频率系数。

在步骤150上,根据位编码方案,执行编码频率系数的选择位解码,从而产生一组频率系数。在这方面,这被执行来将每个编码频率系数转换成频率系数,并且另外产生在该编码过程期间被丢弃的频率系数。尤其是,这通常被执行来产生据有空值的频率系数,从而再次建立完整的一组频率系数。

接着,对该组频率系数应用逆变换,来确定代表在一个或更多个图像内的像素数组的像素数据。尤其是,这通常为逆向频率转换的形式,像是逆向傅立叶变换、2ddct等。

因此,上述过程允许通过使用位编码方案选择性地编码频率系数来对图像数据进行编码,并且然后后续使用相同位编码方案来解码编码的频率系数。此外,使用的位编码方案可是有适应能力的,并且可取决于广泛的标准范围,诸如被编码的图像数据的性质、被编码的特定信道等。这允许位编码方案被应用,从而最大化可以被实现的压缩量。

除了上述优点以外,方案可以以高度并行的方式进行实施,例如允许并行编码频率系数中的每个频率系数。这又使得过程能够被快速执行,从而减少延迟时间,这在许多应用中是相当重要的,诸如虚拟现实应用,其中图像响应于显示装置的移动而被建立,并且必须被快速传输到显示装置以进行显示。

许多进一步的特征现在将进行描述。

在一个示例中,位编码方案使用较小数量的位来编码对应于较高频率的频率系数。这是由于较高频率分量具有较小量级,意味着相对于针对较低的频率,针对较高的频率精确地编码频率系数需要较小的位数。在一个示例中,逐渐较小的位数被用于将对应于逐渐较高频率的频率系数编码。在这种情况中,连续较高频率上的频率系数将具有等于或低于前面较低频率的频率系数的位数的位数。类似地,方法可包括丢弃对应于较高频率的频率系数中的至少一些,因为这些倾向于对于所感知的图像质量较少冲击。亦应了解的是,针对某些较低频率系数,编码系数所需的所有的位数可以被保留,在某些示例中可以是8位以上。

在一个示例中,该方法包括将一缩放因子应用到至少某些频率系数,使得被缩放的频率系数被编码。在这方面,使用缩放来减少频率系数的量级,使得这些频率系数可以使用较小的位数进行编码。当执行解压缩时可应用类似的缩放因子,从而将相应的频率分量缩放回其原始量级。在此过程期间,通常执行凑整(rounding),使得被缩放的频率分量是整数值,或具有有限数量的有效数字,从而最小化用于编码系数的位数。亦应了解的是,当执行此时,重新建立的频率分量的精准度会下降,但是这样做的效果对于所产生的图像质量的影响是可忽略不计的。

在一个示例中,将相同的缩放因子应用到每个频率系数。因为这减少执行缩放时的计算负担,因此特别有利。尤其是,这允许从存储器(诸如寄存器)读取单个缩放因子,或允许这在逻辑配置中进行硬编码,从而让缩放频率系数的过程更迅速。然而,这不是必需的,并且不同的缩放因子可以被应用于不同的频率系数,例如以较大量缩放针对频率较高的频率系数。

在一个示例中,该方法包括将缩放因子应用于频率分量,以确定被缩放的频率分量,根据选择标准选择一个或更多个被缩放的频率分量,并通过根据位编码方案执行对所选择的被缩放频率分量的位编码从而限制用于编码每个所选择的被缩放的频率分量的位数来产生压缩的图像数据。然而,这并非必需并且其他方式可以被使用,诸如在丢弃某些频率系数等之后执行缩放。

在一个示例中,该方法可包括选择多个编码方案中的一个编码方案,并使用所选取的编码方案编码像素数据。这允许根据因素(诸如所需的压缩程度)来选择不同的编码方案。如此,例如通过使用不同压缩方式,或以多个不同位编码方案中的一个来使用上述方式,每个编码方案都能提供相应的压缩程度。在此后者情况中,多个位编码方案中的每个选择性地用相应的不同的位数来编码不同的频率系数,以提供不同的压缩程度。

基于一系列因素,诸如选择规则、所要的压缩程度及/或像素数组在一个或更多个图像内的位置,可选择所使用的特定编码方案,这又可以被用来提供凹式压缩,如下文将更详细地所述。

类似地,在一个示例中,该方法通常包括根据选择规则、所要的压缩程度及/或像素数组在一个或更多个图像内的位置,选择性地编码频率系数。在这方面,选择规则可以被用来定义要编码哪些频率系数,及/或使用哪个特定位编码方案,这实际上实现相同的最终结果,且因此应被认为是等效过程。

例如:选择规则可以被用来选择频率系数的子集来进行编码,然后这些使用位编码方案进行编码。可选地,根据选择规则选择位编码方案,位编码方案以零位编码至少某些的频率系数,以及然后根据位编码方案编码频率系数。

在任一情况下,使用选择规则允许动态执行选择位编码,使得可根据环境调整选取的频率系数及/或用来编码已选择频率系数的位数。当解压缩压缩图像数据时,可使用类似的选择规则,从而允许根据特定环境,动态执行位编码方案及/或频率系数的丢弃,同时确保可以精确地解压缩压缩数据。

在一个示例中,这允许考虑到许多不同因素,诸如用来传输压缩的图像数据的通信链路传输带宽、用来传输压缩的图像数据的通信链路的传输服务质量、显示装置的移动、图像显示需求、目标显示分辨率、正在被理的图像信道、像素数组在一个或更多个图像内的位置或在一个或更多个图像内的像素数组相对于一个或更多个图像的观察者的凝视点的位置。作为另一替代方案,可使用指示解压缩图像内的错误及/或数据传输的误差度量,以便控制使用的压缩程度。应了解的是,这些布置可以被用来动态适应压缩程度,例如通过变更用来压缩图像数据的该位编码方案。例如:若压缩物超出阈值,则可减少压缩,而若可用传输带宽下降,则可提高压缩。此动态调整压缩的能力帮助将该压缩优化,以获得关于当前环境的最佳可能图像质量。

例如:图像某些部分的相对质量可能不如其他部分那么重要。在虚拟现实的情形中,由于显示镜头的图像失真,所以图像的周边部分通常不会实际被显示给使用者。因此,这些图像的部分应使用有效零质量编码,从而在不损失可视图像的任何图像质量的情况下,可大幅减少压缩的图像数据的量。

在另一个示例中,尤其是在虚拟现实应用中,这可根据观察者凝视点来执行。在此示例中,这涉及到确定一个或更多个图像的观察者的凝视点,并至少部分地根据凝视点来选择性地编码频率系数。尤其是,这可以涉及到确定凝视点与像素数组在一个或更多个图像内的位置间的距离以及根据该距离选择性地编码频率系数,使得对于较大的距离,较少的频率系数被编码。因此,例如使用眼睛追踪技术或类似技术,以及然后以较高质量编码靠近凝视点的图像的部分,可执行对观察者正在观看的图像的部分的分析。在此方面,观察者对于周边区域的感知通常会减少,使得通常比较不会注意到图像质量的下降。从而,通过用较高质量编码靠近观察者的凝视点的图像,这允许具有较差质量的图像被观察者感知为具有等效质量。

在一个示例中,频率分量以多个层级进行布置,每个位编码方案定义要用于编码多个层级中的每个层级内的频率系数。类似地,或利用选择规则定义应该从哪个层级编码频率系数。因此,如从以下描述中可以明显看出,可根据相应的层级定义位编码方案及/或对频率系数的选择。

在一个示例中,像素数组为nxn像素数组,产生2n-1层级的频率分量,不过应了解,这将取决于特定实施方式。

在一个示例中,除了执行上述破坏压缩以外,也可执行额外非破坏压缩步骤。这通常涉及到解析(parsing)字节序列,识别包含一些相同字节的子序列,并且将该子序列替换成指示相同字节的值以及该子序列内一些相同字节的代码。在一个示例中,当相同字节的子序列包括三或更多个字节时,该代码包括两个字节,不过应了解,可使用其他合适的编码方案。

虽然通常称为运行长度编码的这种代码替换可以在任何字节序列上执行,但是在一个示例中,该字节序列为根据编码频率系数形成的比特流。在此方面,通常有许多编码频率系数具有零值,意味着当将根据编码频率系数形成的比特流当成字节序列分析时,在序列内频繁存在多个零值字节。因此,通过将这些替换为代码,这允许减少字节的数量。

在一个示例中,图像数据定义多个信道,并且其中该方法包括针对每个信道选择性地编码频率系数。通过单独编码不同信道,这允许对不同信道进行不同编码,例如使用不同位编码方案,或丢弃不同频率系数。此外,单独编码信道允许信道并行进行编码,如此可大幅帮助降低编码执行的时间,且因此降低编码延迟。

在一个示例中,像素数据定义rgb信道,并且该方法包括将rgb信道转换成亮度与色度信道ycbcr,以及变换ycbcr信道。在此方面,亮度与色度信道被人眼不同地感知,允许色度信道使用较大压缩程度来编码,且因此相较于亮度信道质量降低,但却没有导致感知的质量损失。然而,应了解,这并非必需并且处理可另外在rgb信道内执行,在此情形中颜色转换并非必要的。

因此,在此示例中,该方法可包括针对y信道比针对cb或cr信道选择性地编码更多频率系数,并且类似地,可包括以比针对cb和cr信道用更多的位针对y信道来选择性地编码频率系数。

在进一步示例中,在像素数据定义rgb信道之处,该方法可包括将rgb信道转换成ycbcr信道,并通过编码cbcr信道并使用该y信道来产生该压缩图像数据。这样,实际上在此示例中,该y信道并未有效编码,意味着被保含在亮度信道内的完整信息被保留。这在某些编码场景中特别有用,例如当编码显示梯度的像素数组时,这可帮助保留颜色变化,且因此改善图像质量,同时仅导致压缩些微减小。

如上述,不同信道可以进行并行编码。此外,每个信道频率系数可以并行编码。在此情形中,产生压缩图像数据的方法通常包括执行并行串行字节编码,使得频率系数被串行成字节流,该字节流然后进行字节编码。

在一个示例中,从图像数据获得像素数据的方法包括缓冲对应于图像接下来的n-1个像素行的图像数据、缓冲关于下一个像素行的接下来的n个像素的图像数据,以及从缓冲的图像数据中获取关于接下来的nxn像素块的像素数据。重复此过程,直到已经从所有n个像素行中获得像素数据为止,此时通过缓冲对应于图像的接下来的n-1个像素行的图像数据、缓冲下一个像素行中的接下来的n个像素的图像数据,以及从缓冲的图像数据中获得接下来的额nxn像素块的像素数据来针对接下来的n行来重复该过程。

因此,据此要了解到的是,该处理并未要求整个图像都被缓冲,而是只需要在开始处理之前将n-1行像素以及来自下一行的另外的n个像素被缓冲。这有两个主要影响,即降低了处理时间,转而导致延迟显著降低,以及降低整体存储器需求。n的值通常为整数并且可根据因素(诸如选择规则、所需的压缩程度、像素数组的位置等)来进行设定。在一个示例中n=8,但是这并非必要,且任何值都可以被使用。

虽然可以从任何来源获取图像数据,但是在一个示例中,该方法包括从视频馈送中(诸如用于显示的一系列图像)获得像素数据。在一个示例中,该方法被用于传输虚拟现实视频数据,并且在一个特定示例中,用于无线传输虚拟现实视频数据。

上述处理也可以被用于提供形成任何数字现实内容(包括增强现实、虚拟现实、混合现实、远程呈现等)的一部分的图像。

在一个示例中,该方法被用于通过经由通信网络与无线通信链路中的至少一者来从计算设备接收压缩的图像数据来在一可穿戴式数字现实头戴装置内显示图像数据。这可包括从计算机或其他类似装置将压缩的图像无线地进行转移,或可包括从基于云的计算环境将压缩的图像转移至本地装置,诸如头戴式智能型手机,允许使用云计算来执行对图像的建立。合适连接的示例,包括硬连线千兆互联网、例如经由移动通信网络(诸如3g、4g或5g网络)到移动电话的流传输,经由到系连hmd的有线连接的传输、或经由到非系连hmd的无线连接的传输等。

应了解,当解压缩压缩图像数据时,可使用类似方式。

例如:可使用相同位编码方案,使得位编码方案使用较少位数来编码对应于较高频率的频率系数。在此情形中,由于在压缩期间对应于较高频率的频率系数中的至少一些被丢弃,这些在解压缩期间必须被再次产生,通常为空值,允许应用后续逆变换,以下将有更详细进行说明。

通常该方法包括将缩放因子应用到至少一些频率系数,使得缩放的频率系数被变换。再次,相同的缩放因子被应用至每一频率系数,从而提高每个频率系数的量级,进而逆转在压缩期间执行的缩放,并再次产生原始频率系数量级的近似值。

该方法可包括选择多个解码方案中的一个,并使用所选择的解码方案来解码像素数据。在此情形中,可使用选择规则、所需的压缩程度或像素数组的位置,以类似于上述关于图像压缩的编码方案的选择,来选择该解码方案。可选地,这可介于指示所使用该编码方案的编码代码来执行,该编码代码根据压缩的图像数据进行确定。

再者,解码方案可与上面描述的不同,但可同样使用多个不同位编码方案中的一个,根据所选的位编码方案解码编码的频率系数。在此情形中,多个位编码方案中的每一个选择性地用相应的不同的位数来编码不同的频率系数,以提供不同的压缩程度。

类似地并有效等同地,该方法可以包括根据选择规则选择性地解码编码的频率系数,特别是通过根据选择规则产生编码频率系数并根据位编码方案解码编码的频率系数。

如压缩期间,选择规则通常取决于一系列因素,诸如以下中的一个或更多个:用于传输压缩的图像数据的通信链路的传输带宽、用于传输压缩的图像数据的通信链路的传输服务质量、显示装置的移动、图像显示需求、目标显示分辨率、正在进行处理的信道、像素数组在一个或更多个图像内的位置或一个或更多个图像内的像素数组相对于一个或更多个图像的观察者的凝视点的位置。

例如:这可以涉及到确定一个或更多个图像的观察者的凝视点,并至少部分地根据凝视点来选择性地解码编码的频率系数。这通常是通过确定在凝视点与像素数组在一个或更多个图像内的位置间之距离并根据该距离选择性地解码编码的频率系数来实现的,使得对于较远的距离就产生较多的频率系数。然而,应了解,选择规则的实施方式可根据优选的实施方式以任何合适方式来实现。

频率分量通常以多个层级进行布置,其中位编码方案定义相应的位数以用于编码对应于在多个层级中的相应的层级内的频率分量的频率系数,或选择规则定义应该产生哪个层级的频率系数。

在也执行无损编码的情况下,该方法通常包括识别在字节序列内的代码,并将该代码替换成包含多个相同字节的子序列。在此情形中,该代码通常指示在该子序列内相同字节的值和相同字节的数量。再者,该子序列通常包括三个或更多个字节,并且该代码包含两个字节,不过也可使用其他合适的布置。通常对于压缩的图像数据执行此处理,用此来产生位流,位流然后被用于建立编码频率系数。

如先前所述,图像数据通常定义多个信道,其中编码频率系数独立地针对每个信道选择性地进行解码。信道通常包括ycbcr信道,其中方法包括执行ycbcr信道的逆变换,并且将变换的ycbcr信道转换成rgb信道。通常,该逆变换为逆2-d离散余弦变换,但是可使用其他合适的变换。亦应了解,若该y信道尚未编码,如上述,该方法可包括解码cbcr信道,并且然后将解码的cbcr信道和该y信道转换成rgb信道。

如压缩该图像数据的示例中,方法通常包括针对cb或cr信道比针对y信道产生更多频率系数。该方法也可包括并行解码编码的ycbcr信道,以及选择性地并行位解码各个频率分量,在该案例中压缩的图像数据可以通过串行并行字节解码,有效地将传入的字节流分割成各个位编码的频率分量(其然后被并行解码)来进行至少部分解码。

解压缩的数据也可以进行进一步处理,诸如使用去块滤波器(deblockingfilter),其被用来在使用块编码技术等等时使在宏块(marcoblocks)之间形成的锐利边缘平顺。这又可以允许使用更高程度的压缩,同时避免图像质量的相对应的降低。

在另外的示例中,通过相应的硬件配置执行上述方法。例如,压缩图像数据可以通过包括电子编码器处理装置的编码器来执行,该电子编码器处理装置从图像数据获得像素数据、执行频率变换、使用位编码方案选择性地编码至少某些频率系数,以及使用编码的频率系数产生压缩的图像数据。

类似地,使用包括电子解码器处理装置的解码器来执行对压缩的图像数据的解压缩,电子解码器处理装置获得压缩的图像数据、根据压缩的图像数据确定一组编码的频率系数、根据位编码方案执行对编码的频率系数的位解码,以及将逆变换应用到该组频率系数,以确定代表一个或更多个图像内的像素数组的像素数据。

在一个示例中,设备包括无线通信的编码器和解码器,允许图像数据以压缩的图像数据在编码器与解码器之间进行转移。在一个特定的示例中,可用此来提供在可穿戴式显示装置(诸如hmd)与处理系统之间的无线通信。现在将参照图2a来描述这方面的示例。

在此示例中,诸如被适当编程的计算机系统、游戏控制台等的处理系统210适用于在hmd240上产生用于显示的内容。处理系统210通常通过从hmd接收关于hmd姿势的传感器数据以及可选地从一个或更多个单独的控制器250接收输入数据来实现此目的。然后处理系统210基于传感器数据和/或输入数据来产生内容,该内容通常为视频数据的形式,其可从视频卡等进行输出。视频数据经由无线通信链路260被转移至编码器220,该编码器220在将压缩的图像数据转移至解码器230之前通过压缩图像数据来编码视频数据。解码器230将压缩的图像数据解码,并将所产生的视频数据提供给hmd以用于显示。

应了解,这样的布置允许现有的计算机系统、游戏控制台等以及hmd210、240经由无线连接260相连,从而避免对在处理系统210与hmd240之间有线连接的需求。因此,例如,使用者可穿戴hmd和相关解码器,且然后将编码器连接至其计算机系统或游戏控制台,允许无线hmd布置被提供。这可以用于将传统系连(tethered)头戴装置转换成无线布置。

然而,这并非必需,且可选地,处理系统210和hmd240可以被配置成包括集成的编码器与解码器硬件,允许这些经由直接无线连接260来通信,如图2b中所示。例如,在计算机系统内可提供编码器,以用于产生内容,而解码器可以被集成在智能型手机内,例如集成在snapdragon820hexagondsp等中,允许智能型手机接收并解码从计算机系统无线流传输来的内容。在一个示例中,这允许计算机系统通过本地无线连接来流传输,但在另一个示例中,这可以被用来经由移动电话网络或类似网络提供来自基于云的数字现实引擎的内容。

现在参照图3来更详细地描述硬件配置的示例。

此示例将关于单独的硬件编码器与解码器来例示,但应了解,这并非必需并且该相同技术可与集成的硬件结合使用。此外,虽然参照虚拟现实应用,但是同样这并非必需,并且该技术可以被用来应用至其中要进行图像数据转移的任何环境中,尤其是在要使用有限带宽转移图像数据时,同时保持可接受的图像质量以及所期望的延迟,诸如在虚拟现实、增强现实或远程呈现应用中。

在此示例中,设备300再次包括处理系统310、编码器320、解码器330以及hmd或类似形式的显示装置340。现在将更详细地描述这些部件中的每一个。

在此示例中,处理系统310包括如所示经由总线315互连的至少一个微处理器311、存储器312、可选的输入/输出装置313(诸如键盘及/或显示器)、以及外部接口314。在此示例中,外部接口314可以被用于将处理系统310连接至外围装置,像是通信网络、储存装置、外围设备等。虽然显示的是单个外部接口314,但是这仅仅是示例的目的,并且实际上可提供使用各种方法(例如以太网络、串口、usb、无线等等)的多个接口。在此特定示例中,外部接口包括至少一数据连接(诸如usb)、以及视频连接(诸如displayport、hmdi、thunderbolt)等等。

在使用中,微处理器311执行储存在存储器312中的应用程序软件形式的指令,以允许执行所需的处理。该应用程序软件可包括一个或更多个软件模块,并且可在合适的执行环境(诸如操作系统环境等)内被执行。

因此,应了解,处理系统310可以由任何合适的处理系统(诸如被合适编程的pc等)形成。在一个特定示例中,处理系统310为标准处理系统,诸如基于intel架构的处理系统,其执行储存在非易失性(例如硬盘)储存设备内的软件应用程序,但是这并非必要的。然而,亦应了解,处理系统可为任何电子处理装置,诸如微处理器、微芯片处理器、逻辑门配置、可选地与实施逻辑相关联的固件(诸如fpga(现场可编程门阵列)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、数字信号处理(dsp)、或任何其他电子装置、系统或布置。

此外,虽然处理系统310显示为单个实体,应了解,实际上处理系统310可以由多个实体装置形成,该多个实体可选择性地分布在多个地理上独立的位置上,例如作为基于云的环境的一部分。

编码器320通常包括编码器输入缓冲区321,其依次耦合到编码器处理装置322、编码器输出缓冲区323、以及收发器324。独立数据缓冲区325可以被提供为耦合至收发器324。

在使用中,图像数据,并且在一个特定示例中,视频数据被接收并且在传递至编码器处理装置322进行压缩之前被暂时储存在输入缓冲区321内。在此方面,编码器输入缓冲区通常缓冲对应于图像的接下来七行像素以及然后对应于接下来的像素行中的接下来的八个像素的图像数据。这允许编码器处理装置322从缓冲的图像数据获得关于接下来的8x8像素块的像素数据,并开始编码。

一旦已经完成,接下来八个像素则被缓冲,重复此步骤直到已获得并编码来自前八个像素行的像素数据为止。然后针对图像内后续像素行重复该过程,直到已获取关于整个图像的像素数据,在这个时候以类似方式处理下一个图像。此方式的结果是,编码器输入缓冲区从来不需要储存超过七行及八个像素的图像数据,减低了存储器的需求。此外,当像素数据被获取,即使在图像数据的接下来的八个像素被缓冲之前,这也可使用该编码过程来立即进行处理。这显著降低了处理时间,并帮助减少整体延迟。

然后,所生成的压缩的图像数据被储存在编码器输出缓冲器323内,例如通过依序按编码位进行读取,从而经由收发器324,在转移至解码器330之前,执行并行串行字节编码。收发器324也适用于经由编码器数据缓冲区325转移其他数据,诸如接收自hmd340的传感器数据。

根据优选实施方式,缓冲区321、323、325可以为任何合适的暂时储存设备形式,并且在一个示例中,可包括高性能fifo(先进先出)场存储器芯片等等。输入缓冲区通常被连接至hdmi端口、显示器端口输出端、或任何其他合适的视频源,而数据缓冲区335被连接至usb端口,从而允许等效连接至计算机系统。

收发器324可以为任何合适形式,但是在一个示例中,允许例如经由点对点直接wifitm连接、60ghz无线技术等在编码器与该解码器之间进行短范围无线电通信360。

处理装置322可为能够执行本文所描述的压缩过程的任何装置。处理装置322可包括根据存储器中储存的软件指令进行操作的通用处理装置。然而,在一个示例中,为了确保适当的快速压缩时间,处理装置包括被配置成执行压缩过程的定制硬件。这可以包括可选地与实施逻辑的固件(诸如fpga(现场可编程门阵列))、图形处理单元(gpu)、专用集成电路(asic)、片上系统(soc)、数字信号处理器(dsp)、或任何其他电子装置、系统或布置。在优选示例中,编码器处理装置322被配置成执行各个信道的、每个dct的并行处理以及各个频率系数的并行编码。因此,虽然显示的是单个编码器处理装置322,但是实践中,可提供相应的编码器处理装置322来并行编码每个信道,或可选地可使用gpu或其他类似的并行处理架构。在诸如y信道的信道未被编码的情况下,编码器处理装置可在将相应的数据传输至编码器输出缓冲区323时简单引入延迟,确保这仍旧与编码cbcr信道同步。

解码器330通常包括收发器334,其耦合至解码器输入缓冲区331,接着耦合至解码器处理装置332和解码器输出缓冲区333。也可以提供被耦合至收发器334的独立的数据缓冲区335。

在使用中,经由收发器334从编码器320接收压缩的图像数据,并且在被送至解码器处理装置332进行解压缩之前,暂时被储存在输入缓冲区331内。然后,所生成的图像数据在被转移至显示装置340之前,被储存在解码器输出缓冲区333内。收发器324也适用于经由解码器数据缓冲区335转移其他数据,诸如接收自显示装置340的传感器数据。

根据优选实施例,缓冲区331、333、335可以为任何合适的暂时储存设备的形式,并且在一个示例中,可包括高性能fifo(先进先出)场存储器芯片等等。输出缓冲区通常被连接至hdmi端口,而数据缓冲区335则被连接至usb端口,从而允许等效连接至显示装置。

收发器334可以为任何合适形式,但是在一个示例中,允许例如经由点对点直接wifitm连接、60ghz无线技术等在编码器与解码器之间进行短范围无线电通信360。

处理装置332可包括根据存储器内储存的软件指令进行操作的通用处理装置。然而,在一个示例中,为了确保适当的低解压缩时间,处理装置包括被配置成执行解压缩过程的定制硬件。这可以包括可选地与实施逻辑相关联的固件,(诸如fpga(现场可编程门阵列))、图形处理单元(gpu)、专用集成电路(asic))、片上系统(soc)、数字信号处理器(dsp)、或任何其他电子装置、系统或布置。在优选的示例中,解码器处理装置332被配置成执行各个信道的、每个dct的并行处理以及各个频率系数的并行编码。再者,虽然显示的是单个解码器处理装置332,在实践中,可提供相应的解码器处理装置332以用于并行编码每个信道,或可选地,可使用gpu或其他类似并行处理架构。在诸如y信道的信道未被编码的情况下,解码器处理装置则可在将相应的数据传输至解码器输出缓冲区333时简单引入延迟,确保这仍旧与cbcr信道同步。

显示装置340包括如所示经由总线347互连的至少一个微处理器341、存储器342、可选的输入/输出装置343(键盘或输入按钮)、一个或更多个传感器344、显示器345、以及的外部接口346。

如本领域技术人员所了解的那样,显示装置340可以为hmd的形式,并且因此被提供于适当外壳内,允许该装置可以被使用者穿戴,并包括相关的透镜,允许显示器被观看到。

在此示例中,外部接口347适用于经由有线连接正常地将显示装置连接至处理系统310。虽然显示的是单个外部接口347,但是这仅仅是示例的目的,并且在实践中,可提供使用各种方法(例如以太网络、串行、usb、无线等等)的多个接口。在此特定示例中,外部接口通常至少包括数据连接(诸如usb)、以及视频连接(诸如displayport、hmdi、thunderbolt等等)。

在使用中,微处理器341执行储存在内存342内的应用程序软件形式的指令,以允许所需的过错方被执行。该应用程序软件可包括一个或更多个软件模块,并且可在合适的执行环境(诸如操作系统环境等)内被执行。因此,应了解,处理装置可以为任何电子处理装置,诸如微处理器、微芯片处理器、逻辑门配置、可选地与实施逻辑相关联的固件(诸如fpga(现场可编程门阵列))、图形处理单元(gpu)、专用集成电路(asic)、片上系统(soc)、数字信号处理器(dsp)、或任何其他电子装置、系统或布置。

传感器344一般用于感测显示装置340的方位及/或位置,并且可包括惯性传感器、加速度计等。可提供诸如光传感器或接近传感器的额外传感器,来确定显示装置目前是否正在被穿戴,而眼睛追踪传感器可以被用于提供使用者的凝视点的指示。

在一个示例中,显示装置可因此为现有商业显示装置,诸如htcvivetm、oculusrifttm或playstationvrtm头戴装置,但是应了解,这并非必需并且可使用任何合适的布置。

现在将更详细地描述图像压缩/解压缩过程的操作的示例。

为了该示例的目的,假设处理系统310正在执行产生显示在显示装置340上的内容的应用程序软件,其中内容是基于来自显示装置340的板载传感器345以及可选地来自其他传感器的传感器数据动态地显示的,例如手持控制器或位置检测系统(未显示),如本领域技术人员所了解的。

由处理系统310所执行的动作,由处理器311根据在存储器312内储存为应用程序软件的指令和/或经由i/o装置313、或其他外围设备(未显示)从使用者接收的输入指令来执行。显示装置340所执行的动作由处理器341根据在存储器342内储存为应用程序软件的指令来执行。

编码器320和解码器340充当在处理系统310与显示装置340之间的接口,允许图像数据显示于显示装置340上之前被压缩、无线传输以及然后解压缩,同时也允许传感器数据或输入指令数据回传至处理系统。由编码器320和解码器330所执行的动作通常由相应的处理装置322、332基于已定义的编程来执行,并且在一个示例中,基于定制硬件配置及/或嵌入式固件内的指令来执行。

然而,应了解,针对以下示例目的所假设的上述配置并非必需,并且可使用许多其他配置。例如,编码器与解码器的功能性可直接内置于处理系统310与显示装置340的内部。此外,压缩技术可以被应用至广泛的其他场景中,包括在一个或更多个计算机系统上压缩与解压缩图像,而不需要使用独立的显示装置。然而,上述布置对于虚拟现实应用或增强现实应用、远程呈现应用等是特别有利的。

现在将参阅图4a至图4d来更详细地描述压缩与后续解压缩图像数据的方法的示例过程。

在此示例中,在步骤400和402上,编码器320从处理系统310接收图像数据(并且特别是代表一系列图像的视频数据),并且然后将此数据暂时储存在编码器输入缓冲区321内。例如通过解析数据来识别限定标头(header)的数据内的旗标,识别图像的开头等,在步骤404上允许对应于接下来的8x8像素块的图像数据被获取,图像数据被分析。在此方面,当缓冲数据时,编码器需要来自图像的初始8x8像素块,以便开始处理。因此,在开始处理之前,在编码器输入缓冲区321内填入图像的前七行像素以及第八行像素的前八个像素。当接下来的八个像素被接收到时,可以处理接下来的8x8块,该过程被重复直到图像的前八行中的所有像素都已经被处理为止。在此之后,用类似方式处理接下来的一组八行。

图像数据通常为多信道rgb数据的形式,其然后在步骤406上由处理装置322转换成ycbcr亮度与色度信道。该过程可以用已知的数学坐标变换来执行,且因此将不进一步详细描述。

在步骤408上,2ddct被应用至亮度与色度信道中的每一个,从而将信道变换成频域。该过程可用已知的技术来执行,并且在优选的示例中,由处理装置322以并行度非常高的方式执行,从而降低处理时间。每个信道上的变换处理的结果为8x8矩阵、具有64个频率系数、代表相应的图像信道内的不同频率分量的量级。

在步骤410上,一缩放因子被应用至每一个矩阵,例如通过将每个频率系数除以用该缩放因子除以每一频率系数,藉此从而降低每一个频率系数的强度量级。该缩放因子可以应为任何值,并且关于可不同的信道可以都不同。作为该过程的身为此处理的一部分,被缩放的该已的频率系数通常四舍五入为整数或其他设定的有效数字的数量,从而降低编码频率系数所需的数据的量。例如,系数500需要9位来编码,而50只需要6位来编码,因此应用缩放因子10可降低编码相应的频率系数所需的位数。

在此方式中,应了解,较低值系数可四舍五入为零,例如4被缩放为0.4,并因此四舍五入为零。虽然这导致信息损失,但是这种情况倾向针对已知对图像的整体外观作用较少的较高频率分量而发生,以及因此这种损失的影响有限。

在应用缩放因子之后,在步骤412上确定选择规则。选择规则被应用于允许频率分量中的某些频率分量被选择,使得在步骤414上其他频率分量被丢弃。选择通常是基于被定义为矩阵的对角线层次(hierarchy)层级来执行的,使得8x8频域矩阵包括分别具有1、2、3、4、5、6、7、8、7、6、5、4、3、2、1系数的15个层级。

被丢弃的层级通常是较高频率分量,这上面有提到较高频率分量对于图像的体现的贡献较低。根据优选实施方式,选择规则基于广泛的因素范围来定义哪个层级被丢弃。

例如,色度信道对于图像的体现的贡献通常低于亮度信道,使得相对于亮度信道来说,关于色度更多的层级通常被丢弃。因此,例如,针对亮度信道y,保留层级1至8,对应于36个频率系数,如图5中的531上所示,而针对色度信道cb和cr,可保留层级1至6,对应于只有21个频率系数,如图5中的532和533上所示。应了解,这使在全部三个信道中需要进行编码的频率系数的总数从192降低到78。

基于规则选择哪个层级被保留,允许当选择哪个层级被保留时编码器和解码器应用相同标准,从而允许这以实时适当的方式被执行。这又允许基于其他因素(诸如在编码器和解码器之间通信的质量和带宽)选择不同层级。因此,如果由于干扰而带宽被降低,则可选择较少的层级,这将导致较高的压缩程度。虽然这将导致图像质量的降低,不过在许多应用(诸如vr)中,某些帧的质量的降低相比于丢失的帧或增加的延迟是较不明显的,且因此是较佳的结果。

其他因素可包括但不受限于显示装置的移动(尤其是移动的速率)、图像显示需求、目标显示分辨率、像素数组在一个或更多个图像内的位置以及在一个或更多个图像内的项素数组相对于一个或更多个图像的观察者的凝视点的位置。下面将更详细地描述进一步的示例。

在步骤416上,确定位编码方案,然后在步骤418上,允许使用不同位数来选择性地编码所选择的频率系数。在这方面,如上述,被缩放的频率分量可能只需要6位就可完全编码系数。因此,位编码方案被选择成使得用于编码频率系数的位数对于层次内的每个层级不同。这是可行的,因为较高频率分量通常具有较小的量级,且因此需要较少的位进行编码。

在一个示例中,用于亮度信道的编码方案不同于色度信道所使用的编码方案,其中示例编码方案显示于下面的表格1内。

表格1

图5中显示的是针对三个信道中的每个信道的前6个层级进行编码的该形式的示例。使用选择规则与位编码方案的这种特定组合导致以129位编码亮度信道541,并且用60位编码色度信道542、543中的每一者,导致只使用249位就可编码8x8像素数组的全部三个信道。应了解,这相较于需要192个字节的原始未压缩图像数据来说,代表超过六倍的压缩。

从此将可了解,具有0位的加密信道有效地对应于丢弃该信道,且因此这可通过使用编码规则选择编码方案,这可用作用于选择被编码的系数的方式,从而有效地将步骤412和414与416和418组合。

一旦编码已经被执行,则在步骤420上通过执行并行串行字节编码,允许这被表示为32个字节(256位),可将位编码的频率分量级连成位流。在步骤422上,字节被解析,以在步骤424上识别相同字节的子序列。具体来说,此方式被用于识别三个或更多个相同字节的子序列,这然后在步骤426上替换成代码,而不损失任何信息。

特别地,针对大部分图像,在所生成的编码的频率系数内有零字符串,其中被缩放的系数都被四舍五入为零。因此,这些可以用代码来替换,这可以由解码器来识别,允许解码器重新插入相同字节的子序列。

虽然代码可能具有任何合适的形式,但是在一个示例中,代码包括识别特定字节为代码的标头以及对应于相同字节的值与数量的信息。在优选的布置中,2字节代码使用布尔or运算与一行中零的数目(number)(1-8)进行组合。在一个示例中,零的数目表示为n-1,使得数目0-7与该2字节代码进行or运算,使得这些仅占用第二字节的3位。例如,所使用的代码可为(11111111;11111000),其中第二字节与根据零的数目的0-7进行or运算。应了解,类似方式可用于不同的值。

此方式运作良好,因为编码很少导致连续数字超过或等于248的值,因此解码算法可以简单搜寻具有值为255的一个字节以及具有值大于或等于248的后续字节,将其识别为与编码频率分量相对的代码。然后用对应于具有由第二字节的最后3位所表示的一系列零的数目的数据的字节来取代该代码。这可导致在基于最新测试的位编码阶段之后数据进一步缩小19-25%。

在执行代码替换之后,在步骤428上压缩的图像数据可以被输出。具体地,压缩的图像数据通常被储存在输出缓冲区323内,直到有足够数据为止,此时数据包被建立并由收发器324传输至编码器。

在步骤430上,解码器330经由收发器334接收压缩的数据,将此储存在解码器输入缓冲区331内。在步骤432上如上述,数据被解析,以识别在该数据内的代码,在步骤434上这些代码用重复的相同字节的子序列来替换,从而重新建立位编码频率系数的位流。

在步骤436上,解码器处理装置332确定用于编码图像数据的位编码方案,用此来执行位流的串行并行解码,从而在步骤438上确定编码频率系数。特别地,这允许解码器处理装置332确定用于编码频率系数的位数,允许位流有效地被分割成各个编码频率系数。在步骤440上,各个频率系数被用于重新建立缩放的频率矩阵,使用空值产生被丢弃的频率系数,从而填满整个矩阵,接着在步骤442上基于缩放系数进行缩放。

在步骤444上,逆2ddct变换被应用,这是在在步骤446上将针对每个ycbcr信道的变换矩阵转换成rgb信道之前,允许在步骤448上8x8像素块被输出,允许此被显示装置340来提供。

因此,上述处理允许显著减少对每个8x8像素块编码所需的图像数据的量,并且因此减少整体图像。特别地,这是使用ycbcr信道的2ddct、对所生成的频率系数进行选择位编码和可选的最终无损编码方案的组合实现的。每个信道都可并行进行处理,以dct以并行方式被应用到8x8数组。更进一步地,每个频率系数的位编码也是并行发生,产生大量并行方法,允许以迅速的方式执行压缩与解压缩,导致对延迟的最小影响,这在诸如vr、ar以及远程呈现的实时应用中是相当重要的。

现在将参阅图6和图7来描述实施选择规则的方式的示例。

特别地,此示例着重在可以如何使用图像内的像素数组的空间定位来影响选择处理,并因此影响所执行的压缩量。针对其他因素可执行类似处理,并且本文将不再详细描述。此处理对于编码器或解码器来说也都是相同的,所以仅为了说明的简单的目的,该描述将集中在编码器的操作上。

在此示例中,在步骤600上,编码器处理装置322确定针对目前信道的选择规则。在此方面,如先前所述,不同规则通常针对亮度与色度信道中每一者进行应用。然后在步骤605上,编码器处理装置322确定在图像内的像素数组的位置,并据此确定是否有与该位置有关的绝对规则。在此方面,当图像是使用头戴装置进行显示时,透镜布置通常意味着图像的该部分是不可见的。图7中显示了此示例,其显示的是图像的可见部分701以及不可见部分702。在此实例中,若像素数组位于不可见部分702内,则不需要对像素数组编码,并且因此处理可简单丢弃频率系数的所有层级。因此,在步骤610上若存在关于像素数组的绝对位置的规则,则该处理前往步骤625,允许相应的层级选择被确定,并且然后在步骤630上使用相应的位编码方案,如上面关于步骤414至418所述。

否则在步骤615上,编码器处理装置322确定图像的观察者的凝视点。如本领域技术人员所了解的,这可以运用眼睛追踪感测系统来实现。一旦这已经被确定,在步骤620上相对位置以及在一个示例中在凝视点与目前像素数组位置之间的距离被确定,在步骤625和630上用此来引导系数及/或位编码方案的确定。在此方面,当一个人的周边视野感受不到与其焦点位置相同的细节的层级时,所以可从使用者的凝视点开始进一步使用更大程度的压缩。

在一个示例中,可将使用者的凝视点四周定义成最低压缩的区域,压缩程度从最低区域往外移动增加。该区域可以具有任何形状,并且可根据特定环境是圆形、椭圆形、卵形等等。该区域也可相对于凝视点偏离中心,例如,因此确保在凝视点之下最小的压缩被使用,此区域一般来说就是使用者比较会察觉的区域。

亦应了解,在无法测量使用者的凝视点的环境中,这是可以被预测的。一般而言,该预测将聚焦在画面的中央,但应了解,这并非必需并且可以改变,例如基于诸如所代表的内容的性质、头戴装置移动的方向等因素。

因此,应了解,这说明允许基于在图像内的像素数组的绝对和/或相对位置来执行选择编码的机构。通过让编码器与解码器中的每一者都执行相同算法来选择编码方案以及所使用的选择,这允许解码器可靠地并精确地解压缩压缩的图像数据,同时仍旧允许动态执行编码以将整体压缩程度最大化,同时让可感受的图像质量损失降至最低。

应了解,类似方式可用于其他因素,诸如传输质量及/或带宽,因此确保压缩程度对于当前的环境最优。

现在将参考图8描述用于压缩图像数据以及后续解压缩压缩图像数据的方法的进一步的示例。

虽然用单独的示例进行描述,但是从以下描述将要了解的是,当前示例可与上述压缩/解压缩技术结合使用,以便用来进一步改善压缩与计算效率。特别地,上述技术代表在以下处理当中可运用的选项之一,但是也要了解的是,根据环境可适当使用其他压缩技术。

在此示例中,在步骤800上,从像素数据获得代表在一个或更多个图像内的像素数组的像素数据。这可用任何合适方式实现,但是通常涉及到缓冲所接收的图像数据,直到已经用类似上述方式获得像素数组,诸如8x8数组。

在步骤810上,编码方案被确定,通常是从一个或多个先前定义的编码方案当中选择编码方案,诸如上面关于图1至图7所描述的编码方案。选择可用任何适当方式来执行,诸如通过图像及/或像素数据的分析、基于与图像相关联的图像类型、基于来自图像来源或显示器的指令等等,并且这通常根据当前情况的特定需求,被执行来提供更高或更低程度的压缩。

在步骤820上,像素数据使用编码方案(例如使用上述技术等等)进行编码。在步骤830上,指示编码方案的编码代码是例如通过与可用方案相关联的查找(look-up),这与编码块一起进行使用来产生压缩的图像数据。在一个示例中,这可以通过在编码像素数据之前添加编码代码来实现,但是其他的方式也可以被使用,包括根据所使用的编码方案,简单地通过用编码代码取代像素数据,例如使用代码字符替换。

一旦已经建立压缩的图像数据,然后例如以字节流的一部分这可以被转移至目的地,允许这被解码以产生图像数据。

在步骤840上,该过程通常是通过确定来自该压缩的图像数据的编码代码来执行的。在此方面,编码代码通常具有一组格式,诸如位的特定组合,允许这在所接收字节流的内部容易被识别。通常通过步骤850上的查找过程,编码代码然后被用来确定所使用的编码方案。然后在步骤860上,所识别的编码方案可以被用来解码压缩的图像数据,例如使用上面关于图1至图7所描述的方式,从而产生代表在一个或更多个图像内的像素数组的像素数据。

因此,上述过程允许使用多个编码方案中的一个来执行编码。在优选的示例中,不同的编码方案之前已知被用于编码器与解码器,允许这些针对编码/解码的图像内的每个像素数组进行动态改变。这确保了编码方案被优化用于被编码的特定数据,从而最大化可以被实现的压缩,同时确保其他所要的特性(诸如图像质量与编码时间)被维持。

现在将描述一些另外的特征。

当编码图像时,该过程通常涉及到基于一系列不同因素中的一个因素或更更多个因素确定编码方案,所述因素包括图像数据的图像类型、从图像数据源或显示器接收的编码方案指示、通过分析图像数据与像素数据中的至少一者,或基于压缩需求,诸如要求的压缩量、所产生的图像质量、压缩延迟等等。

因此,例如,相对于计算机产生的图形在编码相片时可使用不同的编码类型,因为其通常具有非常不同的属性。从与图像相关联的元数据,或基于图像本身的属性,就可获得图像的性质。可选地,供应图像数据的图像来源,诸如供应图像数据以用于转移至显示器或其他计算装置的计算机系统,可指定应该被使用的编码方案。

进一步示例是分析像素数据以识别像素数组的特性。例如,若像素数组具有单个颜色,则可以使用与内含多种颜色的像素数组所用的不同的算法。这对于编码具有单个颜色的大面积图像(诸如天空或背景)特别有用,这允许指示纯色的单个编码代码被用来取代整个像素数组的像素数据,从而导致最大的压缩量,而对图像质量无有效损失。

进一步示例为梯度或边界的识别,其可导致使用许多图像压缩方式所得到的不期望的图像制品,且因此可能需要替代的压缩方式。

在一个优选的示例中,其中像素数组并非纯色,使用了关于图1至图7所描述的方式。在像素数组不含梯度或边界的情况下,技术可以涉及到编码所有三个ycbcr信道。然而,在像素数组包含梯度或边界的情况下,y信道可不用编码,使得额外的亮度信息被保留。虽然这降低了所获得的最终压缩的量,但是由于cbcr信道的压缩,压缩的量仍然显著,而额外保留的颜色信息可显著改善梯度或边界区域内所生成的图像的质量。

选择也可以被用来控制压缩算法的其他方面。例如,这可以被用于以类似于关于图6中的过程所执行的方式,指定在上述压缩过程当中要保留哪个频率系数。

编码代码通常指定为从0至255的数字形式,这可用单个字节定义,并且其允许最多256种不同的编码方案供选择。这允许各种各样的编码方案被使用,而这些方案都分别指派给数字0至255,使得可使用各种各样的不同的编码方案,从而达成具有所要图像质量的最佳压缩。在一个特定示例中,应了解,编码方案的工业标准列表可以被建立,从而允许即使之前未沟通建立要使用的编码方案,也可让编码与解码系统协同运作。

在一个特定示例中,编码代码可以通过诸如“11111111”的固定格式前导字节来识别,使得用来选择被指派给数字1的编码方案的编码代码被给定为“1111111100000001”。应了解,执行此允许解码过程容易识别所使用的编码过程。然而,任何合适的方式都可以被使用,并且上面示例并非旨在限制。

应了解,当解码压缩的图像数据时,类似的方式被使用,该方式包括将编码代码替换成纯色的像素数组,或使用先前描述的解码过程。

亦应了解,可使用类似于上述的设备来执行图像压缩过程,因此不再进一步详细描述。

现在将参考图9a和图9b来更详细地描述另外的示例过程。

在此示例中,在步骤904上,编码器320从处理系统310接收图像数据,且特别是代表一系列图像的视频数据,以及在步骤902上暂时将此储存在编码器输入缓冲区321内。图像数据例如通过以下方式来进行分析:解析数据来识别限定标头的数据内的旗标、识别图像的开头等等,在步骤904上允许获取对应于接下来的8x8像素块的图像数据。应了解,这对应于上述步骤400至404,并且因此将不再进一步详细描述。

在步骤906上,编码器920选择要使用的编码方案。这可通过对8x8像素块的分析,例如确定块是否为单一颜色、梯度、边缘等等,或可根据由图像来源提供的信息来实现。

在显示的示例中,编码方案包括第一编码方案,其用于在步骤908上执行块替换,其中用给定预定的代码替换单色像素块。在步骤908上提供第二编码方案,在此示例中其对应于上述编码方案,并且特别地对应于步骤406至426。然而,应了解,可使用不同方案的任何数量n,在步骤910上选择并使用其他方案。

在步骤912上,代表所选择的编码方案的编码代码前置附加(prepended)至编码数据,在步骤914上将此数据当成压缩的图像数据来输出。

接着,解码可以通过以下方式来执行:在步骤916上使解码器330接收压缩的图像数据,并在步骤918上,检测编码代码存在,在步骤920上用此检测结果来选择适当的解码方案。例如:这可包括在步骤922上执行块替换,用单色像素块替换预定代码,或可包括在步骤924上执行步骤432-446的解码过程。同样,n个合适的解码方案可以被提供,而依照需求可在步骤926上选择并使用其他方案。

最终,在步骤928上,从解码器输出8x8像素块。

从此可了解,在步骤906上执行的选择过程执行要执行的分类功能,使得每个像素块都可以被指派给不同的编码方案。在一个示例中,最多可定义256个不同的方案,允许第三方引入关于先前描述的架构内的8x8像素块的新压缩/解压缩方案。另外,使用者可定义特定分类方案,使得例如根据要编码的图像内容性质、情况的需求(诸如延迟需求等等),例如256个方案的不同组合可用于不同环境。

这大大增加了可以被执行的编码的灵活性,并且特别地,允许使用针对每个像素块的分类处理来动态选择各个编码方案,从而根据具体情况优化对每个块的编码。另外,可以提供不同的分类方案,每个不同的分类方案允许访问编码方案的不同组合,从而进一步增加灵活性,允许使用者确保可在各种不同情况中执行最佳编码。

在另一个广泛形式中,上述图6和图7中描述的凹式压缩方案还可结合不同的加密方案来使用,以提供一种将来自形成数字现实内容的一部分的一个或更多个图像的图像数据进行压缩的方法,现在将参阅图10来进行描述。

在此示例中,该方法包括在步骤1000上从图像数据获得像素数据,像素数据代表在一个或更多个图像内的像素数组。这可用类似于上述方式来实现。

在步骤1010上,确定一个或更多个图像内的像素数组相对于定义的位置的位置,而该定义的位置至少部分地指示使用者的凝视点。定义的位置可以基于凝视的实际测量点,或使用者的预期的或预测的凝视点,例如通过假设使用者在开始时盯着图像的大致中心,或基于内容,例如图像内的焦点、头戴装置的移动等来确定。此外,定义的点可偏离凝视点,例如将此定位在凝视点底下,来考虑到个人倾向稍微聚焦在凝视点底下,以避免走路时撞到障碍物。

接着,在步骤1020上将像素数据进行压缩,来产生压缩的图像数据,该压缩至少部分是根据确定的位置来执行的,使得压缩程度取决于像素数组的确定的位置。

应了解,可执行类似的解压缩过程,其涉及到在步骤1030上获得压缩的图像数据,该压缩的图像数据代表在一个或更多个图像内的像素数组,并且至少部分基于一个或更多个图像内的像素数组相对于定义的位置的位置来进行压缩的,定义的位置至少部分指示使用者的凝视点,以及在步骤1040上至少部分根据确定的位置来解压缩压缩的图像数据。

因此,这提供了用于压缩与后续解压缩图像的机制,其中压缩是基于像素数组相对于定义的点的位置来进行控制的,这又至少部分基于使用者的预测的或测量的凝视点来进行控制。特别地,这允许基于像素数组的位置,选择压缩程度,使得在凝视点附近的区域可使用较少压缩,而远离凝视点的区域(例如使用者的视野周边内)可使用较大压缩。这实际上提供了凹式压缩,通过增加使用者的周边视野的压缩(其中降低的图像质量不太明显),从而允许实现更大的整体压缩,而无可察觉的质量损失。

应了解,此过程可与上述压缩过程结合使用,例如允许基于像素数组的位置来选择不同的压缩方案,并允许使用上述位编码方案。然而,这并非必需并且任何合适的压缩方案都可以被使用,诸如小波压缩、自适应采样等。

在任何情况下,现在将描述多个另外的特征。

在一个示例中,定义的位置是使用者的测量凝视点、使用者的预期凝视点、偏离使用者的测量凝视点之处、偏离使用者的预期凝视点之处以及至少部分根据指示使用者的凝视点的凝视数据所确定的点之一,其中凝视数据获自于凝视追踪系统。因此,定义的点可基于测量凝视点或预测点并且可偏移,诸如低于凝视点,以便优化压缩程度,而不会引起可感知的图像质量的降低。

压缩程度可基于与定义的点的距离,例如随着远离凝视点逐渐降低,但也可基于相对于定义的点的方向,使得压缩在高于或低于定义的点时较大。应了解,这允许在相对于凝视点定位的具有任意形状的区域中使用相应的压缩程度,并且这可以根据受压缩的内容的特定环境及/或性质来进行配置。例如,这允许围绕定义的点的椭圆形、卵形、或心形区域与周边区域相比具有降低的压缩量,从而在使用者对任何压缩物的感知将会更大的区域中最大化图像质量。

在一个示例中,方法包括选择多个编码方案中的一个,并使用所选的编码方案编码像素数据。因此,应了解,这允许结合类似于图8和图9中描述的技术来执行凹式压缩,其中使用的编码方案系基于像素数组的位置来选择的。因此,在一个示例中,每个编码方案都提供相应的压缩程度,并且其中,方法包括至少部分根据想要的压缩程度及/或像素数组的位置来选择编码方案。

过程还可以涉及确定指示所使用编码方案的编码代码,并使用编码代码和编码像素数据来产生压缩的图像数据,允许将其用于解码压缩的图像数据。然而,这并非必需的,并且可选地,解压缩过程可以涉及使用类似的标准(例如像素数组的位置以及因此所需的压缩程度)来确定所使用的编码方案。

在一个示例中,编码方案使用类似于上面关于图1所描述的方式,在此情形下,图像数据是通过以下方式进行压缩的:通过对像素数据应用变换以确定指示像素数组频率分量的一组频率系数,使用位编码方案选择性地编码至少某些频率系数,从而产生一组编码频率系数,并使用编码频率系数产生压缩的图像数据。然而,应了解,可使用任何一个或更多个合适压缩技术,诸如jpeg等等。

在优选的示例中,如上面图1的情形中,位编码方案定义用于将每个频率系数编码的位数,使得至少某些编码频率系数具有不同的位数。更典型地,使用较少的位数来编码对应于较高频率的频率系数,并且较佳的是,逐渐更少数量的位被用于对逐渐升高频率相对应的频率系数进行编码。在一个示例中,至少一些频率系数被丢弃(使用零位有效对其进行编码),使得该组编码频率系数小于该组频率系数,并且这些频率系数通常对应于较高频率。

在一个示例中,该方法包括选择多个位编码方案中的一个,并根据所选的位编码方案编码频率系数。因此,应了解,不同的编码方案可以对应于图1的编码方案,其中使用不同的位编码方案来用相应的不同的位数对不同的频率系数进行编码,从而提供不同的压缩程度。

因此,应了解,位编码方案可至少部分根据想要的压缩程度及/或像素数组的位置来进行选择。这又可取决于其他因素,例如像素数组的位置、用于传输压缩的图像数据的通信链路的传输带宽、用于传输压缩的图像数据的通信链路的传输服务质量、显示装置的移动、图像显示需求、目标显示分辨率、正在被处理的信道、误差度量等。如上述,这允许动态调整压缩以帮助优化压缩并获得当前情况下最佳可能图像质量的能力。

在一个示例中,频率分量是在多个层级内进行布置的,并且其中每个位编码方案定义要用来编码多个层级中的每一个层级内的频率系数的相应的位数。特别地,其中数组为nxn像素数组,这导致2n-1个层级的的频率分量,其中每个层级内的分量都用相应的位数编码。

如前所述,方法可包括以类似于上述方式应用缩放因子。

图像数据通常定义多个信道,其中方法包括针对每个信道选择性地编码频率系数。例如,像素数据可定义rgb信道,该rgb信道被转换成ycbcr信道,其然后如上述进行变换。此过程可以涉及相比于针对cb或cr信道选择性地针对y信道编码更多频率系数、选择性地并行编码关于ycbcr信道的频率系数及/或选择性地编码关于cbcr信道的频率系数并使用该y信道,使得该y信道实际上未压缩。

在一个示例中,该变换为2-d离散余弦变换。

该方法通常还包括将图像数据缓冲,以获得像素数组,例如通过缓冲像素的n-1行,以及接下来的像素行的接下来n个像素,来形成第一nxn像素块。然后如前所述缓冲连续块,其中基于所选的位编码方案、想要的压缩程度及/或像素数组的位置,可选择性控制每个块中的像素数目。

频率系数通常并行编码,压缩的图像数据是通过并行串行字节编码所产生,但是也可使用其他合适的方式。

类似方式可用于将压缩的图像数据解码。

例如,对压缩的图像数据解码可包括选择多个解码方案中的一个,并使用所选的解码方案对像素数据解码,其中该选择是基于想要的压缩程度、像素数组的位置或压缩的图像数据内的编码代码进行的。

该方法可涉及使用与上述类似的解压缩方案,其可使用多个位编码方案中的一个来提供不同程度的压缩,通过针对多个层级中每一个中的频率系数,编码相应的位数。

缩放因子可以被应用到至少某些频率系数,使得被缩放的编码频率系数被解码,缩放因素被用来增加每个频率系数的量级。再者,不同的缩放因子可以被应用于至少某些编码频率系数,或相同的缩放因子被应用于每个编码频率系数。在任何情形中,不同的缩放因子可以被应用于不同信道内的编码频率系数。

可使用多个信道,其中这些信道中的每个信道都依照需要进行解码,这可通过使用串行并行字节解码并选择性地并行解码频率系数,来选择性地并行执行。

上述技术的想要的压缩程度可基于像素数组的位置、用于传输压缩的图像数据的通信链路的传输带宽、用于传输压缩的图像数据的通信链接的传输服务质量、显示装置的移动、图像显示需求、目标显示分辨率、正在被处理的信道或误差度量中的任何一个或更多个进行的。

这些技术可以被用于传输数字现实内容,包括增强现实、虚拟现实、混合现实、远程呈现等中的任何一个或更多个。这可包括经由通信网络及/或无线通信链路,从计算装置将图像数据传输到可穿戴的数字现实头戴装置。

因此,上述过程允许进行显著的图像压缩,而对于延迟没有不利的影响,允许将该技术用于使用现有硬件对虚拟或增强现实可穿戴的显示器提供无线连接,同时也允许在其他应用当中更广泛地实现已改良的图像压缩。

在本说明书和随附的权利要求中,除非上下文另有要求,否则文字“包括(comprise)”以及诸如“包括(comprises)”或“包括(comprising)”之类的变体将被理解为暗示包括所述整数群组或步骤,但不排除任何其他整数或整数群组。

本领域的技术人员将了解,许多变化和修改将将是明显的。对于本领域的技术人员明显的是所有这些变化和修改,都应落在上述本发明中广泛的精神和范畴内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1