基于数据关系的图像数据的压缩版本的制作方法

文档序号:18516874发布日期:2019-08-24 09:31阅读:164来源:国知局
基于数据关系的图像数据的压缩版本的制作方法

数据压缩是信息至数据的更紧凑的表达的可逆的重新编码,即,压缩减少用于在数据文件或数据流中表示信息的信息比特的数量。在传送和存储数据的过程中使用数据压缩以提高传输速度并且降低数据的存储需求。

附图说明

图1和图2是描绘示例图像处理系统的框图。

图3描绘其中可以实施各种图像处理系统的示例环境。

图4描绘用于实施示例图像处理系统的示例模块。

图5a至图5d描绘示例压缩操作。

图6至图9是描绘图像压缩的示例方法的流程图。

具体实施方式

在以下描述和附图中,描述了图像压缩的图像处理系统和/或方法的一些示例实施方式。为了传送或存储该信息,压缩提供以替换格式编码的信息。例如,文本编码方案将字母数字字符和其他符号编码为二元序列。典型地在诸如用于图像的联合照相专家组(jpeg)格式或用于视频的活动图像专家组(mpeg)格式之类的压缩格式中存储多媒体文件。压缩技术可以是无损的(即,在压缩期间没有出现数据完整性的损失)或是有损的(即,在压缩期间损失某容许的量的数据完整性)。尽管使用压缩,但多媒体文件常常占据大量数字存储空间。为了改善压缩,可以使用文件间压缩。通常,文件间压缩用于管理大量的基于文本的数据文件,并且诸如伯罗-惠勒变换(bwt)例程之类的一些技术并不对未滤波的彩色图像数据进行适当地压缩。

存在用于实施数据的文件间压缩的若干方法。第一示例方法是分块,其将文件组划分为片段。相同的片段仅仅被存储一次,因此减少存储文件组的冗余部分所需要的空间。第二示例方法是基于文件间的相似性和增量的增量压缩。尽管分块和增量压缩两者都可用于基于文本的数据,但对于压缩多媒体文件来说这些方法不是有利的。具体地,两种方法都不提供对于多媒体文件的任何进一步压缩。

如下所述的各个示例涉及用于彩色图像的图像压缩,具体地涉及无损压缩技术。通过对彩色图像数据进行适当地滤波,通常具有受限于对文本数据进行排序的能力的块排序技术可以被用于彩色图像数据。以这样的方式,可关于多平面彩色图像数据达到诸如bwt之类的块排序技术的好处。

如在本文所使用的,术语“包括”、“具有”和其变体的意义与术语“包含”或其合适的变体的意义相同。此外,如在本文所使用的术语“基于”意指“至少部分地基于”。因此,被描述为基于某激励的特征可以仅仅基于该激励或者包括该激励的刺激的组合。此外,如在本文所使用的术语“维持”(和其变体)意指“创建、删除、添加、移除、访问、更新、和/或修改”。

图1和图2是描绘示例图像处理系统100和200的框图。参考图1,图1的示例图像处理系统100通常包括压缩引擎102、前置滤波器引擎104,以及排序引擎106。通常,压缩引擎102可以提供已经被前置滤波器引擎104滤波的并且被排序引擎106排序的彩色图像输入数据的压缩版本。示例图像处理系统可以包括后置滤波器引擎108,在经由压缩引擎102提供彩色图像数据的压缩版本之前,该后置滤波器引擎108提供与由排序引擎106执行的排序操作的结果适配的滤波。

压缩引擎102表示提供基于数据关系而压缩的彩色图像数据的版本的任何电路或者电路和可执行指令的组合。压缩引擎102利用前置滤波器引擎104和排序引擎106的操作来基于数据关系对彩色图像数据进行变换。

前置滤波器引擎104表示基于彩色图像数据生成能够被顺序地分析的符号图案的流的任何电路或者电路和可执行指令的组合。例如,前置滤波器引擎104可以是顺序地分析作为邻域的图像数据的区域以识别区域之间的关系(例如,色彩相关性)并且产生描述区域关系的符号的流的电路和可执行指令的组合。可以基于由图像处理系统100使用的滤波和排序例程来使用图像的区域划分。例如,可以将彩色图像数据分块编码在被布置为第一行数的第二数量的像素的平铺块中,并且可以针对存储器限制的环境或压缩需求来调整平铺块尺寸(例如,第一行数的像素和第二列数的像素)(例如,将平铺块尺寸设置为高于压缩阈值)。

由前置滤波器引擎104生成的数据流包括保持用于对应的区域的图像信息的图像区域表示。例如,如果目标图像区域是像素,则示例图像区域表示可以是一像素表示,其包括到目标像素的邻居像素的索引(目标像素是通过像素表示所表示的像素)、目标像素关于邻居像素的通道掩模,以及被选择的邻居和目标像素之间的非空差序列。参考图5b描述了关于像素表示和字符序列的更多详情。

前置滤波器引擎104可以是通过分析像素的邻域来识别放置在流中的区域信息的电路和可执行指令的组合。像素的邻域包括在数据流的处理中在任何给定点与目标像素相邻的像素。前置滤波器引擎104可以将多个邻居像素归类在目标像素的邻域中;对多个邻居像素进行排列;以及从多个邻居像素中选择将编码在流中的邻居像素。例如,前置滤波器引擎104可以利用关于目标像素的多个分量差(诸如最小数量的不同于目标像素的分量)来分析邻居像素的邻域,并且可以通过将被选择的邻居像素的索引、通道掩模,以及非差的序列编码到像素表示中来经该像素信息放置在像素表示中、放置到数据流中。目标像素的邻域可以受限于相邻的像素的子集。例如,邻域可以被限制为包括已经扫描的像素(即,已经被对于像素表示分析的和/或被放置到数据流中的像素)。

前置滤波器引擎104可以通过确定邻居像素与目标像素的多个分量匹配(例如,多个彩色平面数据的匹配,其中分量是彩色图像数据的彩色空间的彩色平面)以及识别目标像素和被选择的邻居像素之间的非匹配分量的多个分量差来将邻居像素归类和排列。前置滤波器引擎104可以使用所识别的多个分量差来生成掩模。通道掩模可以表示参考邻居像素与目标像素的彩色平面之间的差异。例如,通道掩模的比特可以表示关于被选择的邻居像素被压缩的目标像素的彩色平面。前置滤波器引擎104通过去除重复字符(诸如去除零)生成目标像素和被选择的邻居像素之间的非空差序列。在示例中,将非空差序列附加到包含被选择的邻居像素和通道掩模的头部字节。参考图4和图5a来讨论关于像素邻域和选择邻居像素的更多详情。

前置滤波器引擎104可以对输入图像数据进行滤波以产生具有与由排序引擎106执行的排序操作相对应的关系属性的流。例如,由前置滤波器引擎104生成的流可以是空间低关联字节序列,其中像素间相关性和像素内相关性两者都已经用于对邻居图像区域数据的邻近像素改变进行编码,并且排序引擎106可以执行词典式块排序例程,与所有旋转(诸如杜瓦尔算法,将输入序列划分为投入双射btw操作的一系列林登词语)相比,其将流划分为一系列词语。如在本文所使用的,“林登词语”是与所有旋转相比在词典顺序中严格较小的非空串,并且词典排序通常需要基于词语的分量符号的字母顺序来放置词语的顺序。

排序引擎106表示对来源于前置滤波器引擎104的流执行块排序例程的任何电路或者电路和可执行指令的组合。块排序例程通过将输入分解到非增序列的词语来使用流内的数据关系。例如,块排序算法是词典块排序算法,其基于词语之间的频率改变重新组织数据以创建流,诸如使用也被称为伯罗-惠勒变换scottified(bwts)的林登分解的双射bwt例程。排序的流可以是与所有旋转相比在词典顺序中较小的非空串。

后置滤波器引擎108表示基于与由排序引擎106使用的块排序操作相关联的数据关系来执行滤波器例程的任何电路或者电路和可执行指令的组合。例如,排序引擎106可以产生具有词语之间的高局部相关性的词典顺序的排序输出,并且后置滤波器引擎108可以使用与较少出现的图案相比利用较少的比特来转换高频图案的编码例程(诸如行程长度编码例程,其在单个数据值和计数中转换重复的连续元素)生成序列。示例编码包括移至开头变换、行程长度编码,和斐波那奇熵编码。

在一些示例中,可以与关于图4至图9中的任何在本文描述的功能组合地提供关于图1至图3中的任何在本文描述的功能。

图2描绘示例系统200,其可以包括操作地耦合到处理器资源222的存储器资源220。参考图2,存储器资源220可以包含可由处理器资源222执行的指令集。当指令集由处理器资源222执行时,该指令集操作用于使处理器资源222执行系统200的操作。存储在存储器资源220上的指令集可以被表示为压缩模块202、前置滤波器模块204、排序模块206,以及后置滤波器模块208。压缩模块202、前置滤波器模块204、排序模块206,和后置滤波器模块208表示当被执行时分别起图1的压缩引擎102、前置滤波器引擎104、排序引擎106,和后置滤波器引擎108的作用的程序指令。处理器资源222可以执行指令集以执行模块202、204、206、208,和/或系统200的模块间的和/或与其相关联的任何其他适当的操作。例如,处理器资源222可以执行指令集以基于先前扫描的邻居图像区域数据将输入图像数据转换为目标图像区域的平面表示(其中将每个像素编码为具有表示参考邻居的索引和通道掩模的头部字节的字符序列),通过将每一个字符序列重新排列到排序的词典顺序中生成具有实现非增阈值的频率改变的流(其中重新排列的字符序列是像素字符序列的旋转中的最小);基于字符序列间的数据关系来对流进行滤波;以及使用基于字符序列间的数据关系而滤波的流来提供输入图像数据的压缩版本。对于另一个示例,处理器资源222可以执行指令集以将输入图像数据划分为安排为第一行数的像素和第二列数的像素的平铺块;选择已经被扫描的并且具有不同于其他邻居像素的最小数量的分量的邻居像素;将被选择的邻居像素的索引以及具有非空增量的通道掩模编码到字符序列的字符序列的头部字节中;对表示彩色图像数据的字符序列进行重新排列,使得流是字符序列的旋转中的最小;以及执行编码例程以基于流中的字符序列之间的重复图案来对重新排列的流进行滤波。对于又一个示例,处理器资源222可以执行指令集以基于先前扫描的邻居图像区域数据将输入图像数据转换为目标图像区域的平面表示,通过将输入分解为林登词语的非增序列(即,林登分解)来执行双射bwt,使用具有任意长度限制(即,允许序列的任何数量的长度的无约束长度限制)的行程长度编码例程的变体生成编码序列,对所生成的编码序列执行移至开头变换例程,以及对所生成的编码序列执行熵编码例程,诸如生成可变长度比特序列的斐波那奇熵编码例程。

尽管关于图2和其他示例实施方式图示出和讨论这些特定模块以及各种其他模块,但模块的其他组合或子组合可以被包括在其他实施方式内。换句话说,尽管在图2中图示出的并且其他的示例实施方式中讨论的模块执行在本文讨论的示例中的特定功能,但可以在不同的模块或在模块的组合完成、实施,或实现所述不同的这些和其他功能。例如,被图示和/或讨论为单独的两个或更多模块可以被组合为执行关于两个模块讨论的功能的模块。作为另一个示例,可以在不同的模块或者多个不同的模块执行在关于这些示例所讨论的一个模块执行的功能。图4描绘功能可以如何被组织到模块中的又一个示例。

处理器资源222能够是能够处理(例如,计算)指令的任何合适的电路,诸如能够从存储器资源220调取指令,以及执行那些指令的一个或多个处理元件。例如,处理器资源222可以是通过取出、解码,和执行模块202、204、206,和208来实现图像压缩的中央处理单元(cpu)。示例处理器资源包括至少一个cpu、基于半导体的微处理器、可编程逻辑设备(pld),等等。示例pld包括专用集成电路(asic)、现场可编程门阵列(fpga)、可编程阵列逻辑(pal)、复杂可编程逻辑设备(cpld),以及可擦可编程逻辑设备(epld)。处理器资源222可以包括被集成到单个设备中或分布在设备上的多个处理元件。处理器资源222可以串行地、并行地,或部分同时地处理指令。

存储器资源220表示存储由系统200利用和/或产生的数据的介质。介质可以是能够电子地存储诸如系统200的模块和/或由系统200使用的数据之类的数据的任何非暂时性介质或非暂时性介质的组合。例如,介质可以是与诸如信号之类的暂时的传输介质不同的存储介质。介质可以是机器可读的,诸如计算机可读的。介质可以是能够包含(即,存储)可执行指令的电子、磁性、光学,或其他物理存储设备。存储器资源220据说可以存储当由处理器资源222执行时使处理器资源222实施图2的系统200的功能的程序指令。存储器资源220可以与处理器资源222被集成在相同的设备中,或其可以是单独的,但是可由设备和处理器资源222访问。存储器资源220可以分布在设备上。

在本文的讨论中,图1的引擎102、104、106,和108以及图2的模块202、204、206,和208已经被描述为电路或者电路和可执行指令的组合。可以以许多方式实施此类组件。查看图2,可执行指令可以是处理器可执行指令,诸如存储在作为有形、非暂时性计算机可读存储介质的存储器资源220上的程序指令,并且电路可以是电子电路,诸如用于执行那些指令的处理器资源222。存在于存储器资源220上的指令可以包括由处理器资源222直接地执行的任何集合的指令(诸如机器代码)或间接地执行的任何集合的指令(诸如脚本)。

在一些示例中,系统200可以包括可以是安装数据包的一部分的可执行指令,当该安装数据包被安装时,可以由处理器资源222执行以执行系统200的操作,诸如关于图4至图9所描述的方法。在该示例中,存储器资源220可以是便携式介质,诸如由可以从其下载安装数据包并且对安装数据包进行安装的诸如图3的服务设备334之类的计算机设备所维持的光碟、数字视盘、闪盘驱动,或存储器。在另一个示例中,可执行指令可以是已经安装的应用(一个或多个)的一部分。存储器资源220可以是诸如只读存储器(“rom”)的非易失性存储器资源,诸如随机存取存储器(“ram”)的易失性存储器资源、存储设备,或其组合。存储器资源220的示例形式包括静态ram(“sram”)、动态ram(“dram”)、电可擦除可编程rom(“eeprom”)、闪速存储器,等等。存储器资源220可以包括诸如“硬盘驱动器”(“hd”)、固态驱动器(“ssd”),或光驱之类的集成存储器。

图3描绘其中可以实施各种图像处理系统的示例环境。示出示例环境390包括用于压缩图像的示例系统300。(在本文关于图1和图2描述的)系统300可以通常表示通过对彩色图像数据进行前置滤波以执行词典式块排序例程以对图像进行压缩的任何电路或者电路和可执行指令的组合。系统300可以包括分别与图1的压缩引擎102、前置滤波器引擎104、排序引擎106,和后置滤波器引擎108相同的压缩引擎302、前置滤波器引擎304、排序引擎306,和后置滤波器引擎308,并且为简要起见不重复相关联的描述。如图3中所示,引擎302、304、306,和308可以被集成到诸如打印服务器之类的计算设备中。引擎302、304、306,和308可以经由电路或作为安装指令被集成到计算设备的存储器资源中。

示例环境390可以包括诸如服务设备334和用户设备336之类的计算设备。无论虚拟或真实,服务设备334通常表示对从用户设备336接收到的数据请求进行响应的任何计算设备。例如,服务设备334可以操作电路和可执行指令的组合以响应于关于页面或应用的功能的请求来提供网络分组。用户设备336通常表示传送数据请求并且接收和/或处理对应的响应的任何计算设备。例如,浏览器应用可以被安装在用户设备336上以从服务设备334接收网络分组并且利用分组的有效负载以经由浏览器应用显示页面的元素。对于另一个示例,用户设备336可以向渲染工具342发送图像输入以将图像渲染为可打印的格式(诸如彩色图像数据的位图),并且放置在数据存贮器310中用于用户设备336的可访问和/或供预览应用344查看渲染的图像。数据存贮器310可以包含由引擎102、104、106,和108利用的信息。例如,数据存贮器310可以存储数据集,诸如输入图像数据和图像数据的压缩版本。

计算设备可以位于单独的网络330或同一网络330的一部分上。示例环境390可以包括任何合适数量的网络330并且任何数量的网络330能够包括云计算环境。云计算环境可以包括计算资源的虚拟共享池。例如,网络330可以是包括虚拟计算资源的分布式网络。系统300和计算设备的任何合适的组合可以是资源的虚拟共享池的资源的虚拟实例。在本文的系统300的引擎和/或模块可以“在云上”存在和/或执行(例如,在资源的虚拟共享池上存在和/或执行)。

链路338通常表示线缆、无线连接、光纤连接,或经由远程通信链路的远程连接、红外线链路、射频链路中的一个或组合,或者提供电子通信的系统的任何其他连接器。链路338可以至少部分地包括内联网、因特网、或者两者的组合。链路338也可以包括中间代理、路由器、交换机、负载平衡器,等等。

参考图1至图3,图1的引擎102、104、106,和108和/或图2的模块202、204、206,和208能够分布在设备334、336,或其组合上。引擎和/或模块可以完成或帮助完成在描述另一个引擎和/或模块时所执行的操作。例如,图3的压缩引擎302可以请求、完成,或执行关于图1的压缩引擎102以及图1的前置滤波器引擎104、排序引擎106,和后置滤波器引擎108所描述的方法或操作。因此,尽管各种引擎和模块在图1和图2中被示出为单独的引擎,但在其他实施方式中,多个引擎和/或模块的功能可以被实施为单个引擎和/或模块或者在各种引擎和/或模块中被划分。在一些示例中,系统300的引擎可以执行关于图4至图9所描述的示例方法。

图4描绘用于实施示例图像处理系统示例模块。参考图4,图4的示例模块通常包括压缩引擎402、前置滤波器引擎404、排序引擎406,和后置滤波器引擎408,其类似于压缩引擎102、前置滤波器引擎104、排序引擎106,和后置滤波器引擎108。为简要起见,没有整体地重复适当的描述。可以在诸如打印装置或数据服务器之类的计算设备上实施图4的示例模块。如在本文所使用的,“打印装置”可以是利用打印材料(例如,墨水或墨粉)在物理介质(例如,纸张或粉末基构建材料的层,等等)上打印内容的设备。例如,打印装置可以是宽格式打印装置,其在诸如尺寸a2或更大的打印介质之类的打印介质上打印基于胶乳的打印流体。在粉末基构建材料的层上进行打印的情况下,在逐层增材制造处理中,打印装置可以利用打印材料的沉积。打印装置可以利用适当的打印消耗品,诸如墨水、墨粉、流体或粉末,或其他原料,用于打印。在一些示例中,打印装置可以是三维(3d)打印装置。流体打印材料的示例是从诸如压电式打印头或热喷墨打印头之类的打印头可喷射的基于水的胶乳喷墨。打印流体的其他示例可以包括染料基彩色墨水、颜料基墨水、溶剂、光泽增强剂、定影制剂,等等。

前置滤波器引擎404接收输入图像数据458。前置滤波器引擎404包括邻域模块440、邻居像素模块442、掩模模块444,以及序列模块446来帮助准备用于被排序的彩色图像数据。邻域模块440表示执行时使处理器识别目标像素的邻域中的每一个像素的像素信息的程序指令。例如,当被执行时,邻域模块440可以使处理器识别与目标像素相邻的每一个已经扫描的像素的彩色分量。邻居像素模块442表示执行时使处理器在目标像素的邻域中选择邻居像素的程序指令。例如,当被执行时,邻居像素模块442可以使处理器通过彩色分量来归类邻域中的每一个像素、基于匹配的多个彩色分量对邻域的像素进行排列,并且从邻域中选择实现阈值数量的匹配的彩色分量(例如,最大数量的匹配的彩色分量)的像素。掩模模块444表示执行时使处理器生成表示在目标像素和通过邻居像素模块442的处理器执行所识别的邻居像素之间不同的彩色分量(例如,彩色平面)的掩模的程序指令。序列模块446表示执行时使处理器生成非空增量的序列(诸如被转换为单调趋于零的分布的非空残差的序列)的程序指令。前置滤波器引擎404将邻居像素的索引、掩模,以及非空残差的序列放置到向排序引擎406提供的符号流460中。

图4的排序引擎406包括找出模块448和置乱模块450来帮助符号流460的排序。找出模块448表示执行时使处理器将符号流460转换为词语的序列的程序指令。例如,当被执行时,找出模块448可以使处理器使用杜瓦尔算法将流460分解为林登词语的非增序列。置乱引擎450表示执行时使处理器对通过处理器执行找出模块448所识别的词语的旋转进行排序的程序指令。排序引擎406然后可以使用排序的列表来识别串,诸如通过执行指令以使处理器资源从排序的列表中的每个串中拾取字符(例如,最后的字符)。

图4的后置滤波器引擎408可以包括编码模块452来帮助在数据已经被排序之后对数据进行滤波。编码模块452表示执行时使处理器对通过排序引擎406提供的字符序列(例如,来源于对流460的排序修改的流)执行编码操作的程序指令。当被执行时,编码模块452可以使处理器例如执行具有无约束长度限制的压缩位行程长度编码例程的变体,执行应用于符号行程的移至开头变换例程(例如,重命名符号以便对于最近使用的符号使用频率标签),和斐波那奇熵编码例程(例如,生成可变长度比特序列使得频繁的符号或标签得到更短的序列的熵编码)以进一步压缩排序的彩色图像数据。后置滤波器引擎408可以使用对符号流460进行排序所得到的数据关系462来选择编码例程来开发用于压缩的数据图案。

图4压缩引擎402包括存储模块454来帮助向位置464提供压缩数据466。存储模块454表示执行时使处理器识别位置464来存储彩色图像数据的压缩版本466的程序指令。

图5a至图5d描绘示例压缩操作。参考图5a,在第一行数(m)和第二列数(n)的平铺块中示出一系列像素。px是目标像素,并且像素p1、p2、p3,和p4是px的邻域中的相邻的邻居像素,该邻居像素已经在顺序地审查像素以将像素数据放置到流中的实施中被扫描。换句话说,使用所识别的邻居像素,这是因为像素满足与目标像素px相邻的准则并且已经被处理。

图5b描绘彩色图像数据的数据流内的示例像素表示509。块505表示像素表示的报头信息,其包括邻居像素索引(pn)和掩模(rgb)。块507表示目标像素和被选择的邻居像素之间的彩色分量的非空增量的序列。掩模可以和色彩模型的彩色分量有关。色彩模型可以定义色彩空间,即,具有表示色彩模型内的变量的空间维度和表示色值的多维空间中的点的多维空间。例如,在红色、绿色、蓝色(rgb)彩色空间中,加性色彩模型定义表示红光、绿光和蓝光的不同的量的三个变量。另一个彩色空间包括蓝绿色、品红色、黄色和黑色(cmyk)彩色空间,其中在减性色彩模型中使用四个变量以表示例如用于打印系统的着色剂或墨水的不同的量,并且能够通过对于每一个着色剂或墨水重印图像来打印具有不同的色彩的范围的图像。又一些其他示例包括:国际照明委员会(cie)1931xyz彩色空间,其中三个变量('x'、'y'和'z'或三激值)用于对色彩进行建模;cie1976(l*,a*,b*-cielab或'lab')彩色空间,其中三个变量表示浅淡('l')和相反的色彩维度('a'和'b');以及,yu'v'彩色空间,其中三个变量表示亮度('υ')和两个色度维度(u'和v')。

图5c描绘示例排序例程。开始于状态511的长度l的输入w。排序例程在状态513生成输入w的许多变化(例如,旋转)并且然后在状态515词典顺序地对旋转进行排序。然后,通过拾取排序的列表中的每个串的最末字符来获取变换的串。例如,如在图5c的状态517所示的,通过从第一子集的变化中的每一个选择字符集直到所有字符集已经被识别来从排序的变化中获取输出,这引起长度l但是具有按不同顺序(描绘为图5cc1,c2,....cl)的w的字符的输出。

图5d描绘通过去除重复的字符图案对第一字符集521进行编码以生成压缩的第二字符集523。

图6至图9是描绘图像压缩的示例方法(诸如无损压缩)的流程图。参考图6,图像压缩的示例方法可以通常包括:利用使用像素的邻域来对色差进行编码的预测例程对彩色图像数据的流进行滤波、利用块排序例程来对彩色图像数据的被滤波的流进行排序,以及提供基于来自块排序例程的与数据图案相关联的数据关系所压缩的彩色图像数据的版本。通过参考图1至图4所讨论的图像处理系统的引擎(诸如图1的压缩引擎102、前置滤波器引擎104、排序引擎106,以及后置滤波器引擎108)可执行参考图6至图9描述的方法。

在框602,利用使用像素的邻域来对色差进行编码的预测例程来对彩色图像数据的流进行滤波。可以将色差编码为字符序列,其包括参考邻居像素的索引和具有非空增量的彩色通道的掩模。预测例程可以使用已经扫描的像素的邻域来识别邻居像素以用作参考。例如,通过将参考邻居的索引和通道掩模与零或被转换为单调趋于零的分布的更多非空残差一起添加到编码,彩色图像数据的流尺寸可以增加。可以对于特定像素(诸如不包括至少四个已经扫描的邻居像素的边缘或角像素)来使用合成邻域。通过诸如图1的前置滤波器引擎104之类的前置滤波器引擎可执行在框602的滤波操作。

在框604,利用块排序例程对彩色图像数据的被滤波的流进行排序,该块排序例程通过将输入分解为林登词语的非增序列来置乱数据以便与相比于被滤波的流减小输出的流中的改变的频率。通过诸如图1的排序引擎106之类的排序引擎可执行在框604的排序操作。

在框606,向目的地提供彩色图像数据的压缩版本。彩色图像数据的版本是基于与在框604执行的排序例程所开发的改变的频率相关联的数据关系被压缩的(并且通过在框602的滤波被准备为流)。通过诸如图1的压缩引擎102之类的压缩引擎可执行在框606的操作。

可以以其任何组合来使用以及与参考图6所描述的方法结合地来使用图7至图9的方法。参考图7,可以基于与块排序例程相关联的相关性水平、利用滤波器例程来对彩色图像数据的被排序的流进行滤波。例如,可以生成由在框602的前置滤波和在图6的框604的排序所发展的相关性以用于在框702的后置滤波例程。例如,行程长度编码技术的压缩位变体可以用于识别和利用数个系列的重复字节,通过移至开头变换技术对文字值进行变换(例如,用数据中的每个符号在最近使用的符号的堆栈中的索引来代替每个符号),以及使用斐波那奇编码对行程长度和文字两者进行熵编码(其中,例如,每个符号代码被唯一地分解为费氏数列之和,并且利用在低位优先比特顺序中使用的费氏数列的掩模来发出斐波那奇比特序列)。在先前示例中,移至开头变换例程可以不改变由行程长度编码变体编码的数据量,但是可以对行程长度编码字符集进行编码以准备被熵编码例程编码。在其他的示例中,可以以不同的顺序或操作的组合来执行编码例程。通过诸如图1的后置滤波器引擎108之类的后置滤波器引擎可执行诸如编码例程之类的框702的滤波操作。

参考图8,可以准备输入彩色图像数据用于通过将彩色图像数据分离为数个部分来进行压缩。在框802,通过基于压缩级别和/或存储器限制级别来确定像素的第一数量(例如,行数)和第二数量的像素(例如,列数)来识别平铺块尺寸。例如,系统或使用可以需要特定级别的压缩并且可以被限制到特定量的存储器,并且可以通过基于限制识别用于每个平铺块的行数和列数来确定平铺块尺寸。将输入彩色图像数据划分为在框802确定的尺寸的在框804的平铺块,并且在框806,从平铺块生成将用于框602的彩色图像数据的流。通过诸如图1的压缩引擎102或前置滤波器引擎104之类的压缩引擎或前置滤波器引擎可执行平铺块尺寸确定操作。

参考图9,可以将用于对特定目标像素进行编码的像素的邻域限制到仅仅已经被处理的像素(即,已经扫描的像素)。在框902,从左到右并且从上到下来扫描像素。在框904,当邻域中的邻居像素与目标像素的彩色分量相比较具有邻域的最小绝对差时,选择该邻居像素作为参考邻居。通过诸如图1的前置滤波器引擎104之类的前置滤波器引擎可执行邻域操作。通过基于在色彩方面最接近目标像素的被选择的邻居像素添加掩模以生成彩色图像数据的流,词典块排序例程可以对彩色图像数据的流进行排序以在与没有利用邻居像素和通道掩模信息被前置过滤的彩色图像数据相比较是有益的压缩率来执行。

尽管图4至图9的流程图图示出执行的特定次序,但执行的次序可以不同于所图示出的那些。例如,可以相对于所示出的次序将框的执行的次序搅乱。对于另一个示例,诸如对于通过在本文描述的方法压缩的数据的解压,执行的顺序可以是相反的。而且,可以并行地或在部分同时发生的情况下执行连续地示出的框。所有此类变化处于本说明书的范围内。

可以在任何组合中组合在本说明书(包括任何所附权利要求、摘要和附图)中公开的所有特征和/或如此公开的任何方法或处理的所有特征——除了其中这样的特征和/或要素中的至少一些是互斥的组合。

已经参考上文示例示出和描述了本说明书。然而,应当理解,在不背离在所附权利要求中的精神和范围的情况下,可以作出其他形式、细节,和示例。权利要求中的词“第一”、“第二”、或相关项的词的使用不用来将权利要求要素限制到次序或位置,而是仅仅用于区分单独的权利要求要素。

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