颜色查找表压缩的制作方法

文档序号:16513267发布日期:2019-01-05 09:28阅读:363来源:国知局
颜色查找表压缩的制作方法
颜色管理系统实现在各种设备(诸如图像扫描仪、数码相机、计算机监视器、打印机)与相应介质的颜色表示之间的受控转换。设备特性文件为颜色管理系统提供了用于在颜色空间之间转换颜色数据的信息,诸如在本机设备颜色空间和设备无关颜色空间之间、在设备无关颜色空间与本机设备颜色空间之间、以及在源设备颜色空间直接与目标设备颜色空间之间。附图说明图1是框图,展示了具有压缩颜色表的示例存储器设备。图2是框图,展示了对用于图1的存储器设备的颜色表进行压缩的示例方法。图3是框图,展示了具有压缩颜色表的另一示例存储器设备。图4是框图,展示了具有图2的示例方法的附加特征的示例方法。图5是框图,展示了图4的示例方法的示例方法。图6是框图,展示了对压缩颜色表进行解码的示例方法。图7是框图,展示了结合图2和图4至图6的方法以及图1和图3的存储器设备的示例的示例系统。具体实施方式在以下具体实施方式中参照了附图,这些附图形成了具体实施方式的一部分,并且作为能够实践本公开的特定示例而以示意方式被示出。应当理解的是,在不脱离本公开的范围的情况下,可以利用其他示例并且可以做出结构或逻辑改变。因此,下面的具体实施方式不以限制的意义来进行理解,并且本公开的范围由所附权利要求来限定。应当理解的是,除非另外特别说明,否则本文描述的各种示例的特征可以部分地或全部地彼此组合。颜色空间是具有轴并且以数值方式描述颜色的系统。一些输出设备(如打印设备)可以采用一种类型的青色-品红色-黄色-key(黑色)(cmyk)颜色空间,而一些软件应用和显示设备可以采用一种类型的红色-绿色-蓝色(rgb)颜色空间类型。例如,在cmyk颜色空间中表示的颜色具有青色值、品红色值、黄色值和黑色值,这些值组合起来以数值方式来表示颜色。颜色特性文件是表征颜色空间的一组数据。在一个示例中,颜色特性文件可以利用设备相关颜色空间(诸如源颜色空间或目标颜色空间)与设备无关颜色空间(诸如特性文件连接空间(profileconnectionspace))之间的映射或相反的映射来描述观看规范或特定设备的颜色属性。可以使用表(诸如查找表)并应用插值法,或者通过用于变换的一系列参数,来指定映射。捕获或显示颜色的设备和软件程序——包括打印机、监视器、电视、操作系统、浏览器和其他设备及软件——可以包括包含硬件和编程的各种组合的特性文件。icc特性文件是一种示例颜色特性文件,其是根据由国际颜色协会(icc)颁布的标准来表征颜色空间的一组数据。然而,本公开的使用icc特性文件的示例仅用于示意,并且本说明书适用于其他类型的颜色特性文件或颜色空间。icc特性文件框架已被用作在各种颜色空间之间进行通信和交换的标准。icc输出特性文件包括颜色表对,所谓的a2b和b2a颜色查找表,其中,a和b分别表示设备相关颜色空间和设备无关颜色空间。对于不同的设备,存在不同的查找表渲染意图(renderingintent)对。例如,icc特性文件允许从0到2枚举的三个颜色表对,使得用户能够从以下这三种可能渲染意图中选择一种:可感知度、色度或饱和度。icc特性文件经常作为硬件和编程的各种组合被嵌入在颜色文档中,以实现不同设备之间的颜色保真度,这增大了这些文档的总大小。随着对空间的更精细采样以及更大的位深,颜色表的大小也将会增大。提供各种颜色空间之间的变换的颜色表广泛用于颜色管理,常见的示例是从设备无关颜色空间(诸如cielab,即,l*a*b*)到设备相关颜色空间(诸如rgb或cmyk)的变换以及相反的变换。对于设备(诸如彩色打印机),颜色表经常被嵌入在打印机固件或其他硬件中,其中,颜色表消耗存储(storage)设备中的计算机存储器(memory)。在一些场景中,存储这些颜色表所消耗的固件存储器的量可能会成为问题,尤其是当颜色设备中的查找表的数量增加以支持多个颜色空间、打印介质和偏好时。对空间进行更精细采样以及更大位深的趋势也导致了表大小的增大,进一步加剧了这些存储器问题。另外,高效存储器使用和存储空间消耗的问题适用于嵌入在颜色文档(诸如icc源特性文件)中的颜色表。在使用嵌入特性文件的应用中,嵌入特性文件表示开销。图1展示了包括压缩颜色表102、或压缩原始颜色表的示例存储器设备100。存储器设备100可以被包括在打印机墨盒上。压缩颜色表102包括原始颜色表的利用有损压缩以所选压缩比所压缩的第一组节点104。第一组节点包括颜色表的原始节点与有损压缩颜色表的相应重构节点之间的色差,在所选压缩比处,该色差处于所选误差阈值之内。针对第二组节点,包括校正信息106、或校正数据。第二组节点包括颜色表的原始节点与有损压缩颜色表的相应重构节点之间的色差,在所选压缩比处,该色差处于所选误差阈值之外。在一个示例中,利用有损压缩所压缩的第一组节点104以及校正信息106被存储为可以利用无损压缩进一步压缩的位流。在对压缩颜色表102进行重构时,将校正信息106应用于与第二组节点相对应的重构节点。例如,第一组节点104可以包括原始颜色表的利用有损压缩所压缩的所有节点。第二组节点可以包括原始颜色表的包括处于误差阈值之外的色差的节点。在对有损压缩的第一组节点104进行重构时,应用校正信息106以使与第二组节点相对应的重构节点的色差处于一定误差量之内,该误差量可以包括第二且更严格的误差阈值。在一个示例中,校正信息106包括原始颜色表的第二组节点。在另一示例中,校正信息包括残差值,这些残差值可以应用于与重构颜色表中的第二组节点相对应的重构节点,以使与第二组节点相对应的重构节点处于第二、更严格的误差量之内。在一个示例中,校正信息可以包括颜色表中的第二组节点,其中,重构的第二组节点包括处于误差阈值之外的色差。包括第二组节点的校正信息可以被存储在位流中或被存储作为单独的文件,而不以所选压缩比进行有损压缩。例如,可以利用无损压缩、色差在所选误差阈值之内的有损压缩来压缩该颜色表中的包括处于误差阈值之外的色差的该组节点,或者可以不压缩而对其进行存储。在第二示例中,校正信息可以包括残差值,这些残差值可以与重构表的第二组节点一起被包括,用于将重构的第一组节点的误差校正为处于所选误差阈值之内。在一个实例中,诸如对于在中性轴上或接近中性轴的节点,残差值通常校正所有误差。在另一实例中,诸如对于在红色或深蓝色颜色空间中的节点,残差值将误差校正为在误差阈值上或在误差阈值附近。在第二示例中,校正信息包括对于重构节点而言可接受的误差量。图2展示了可用于对颜色表、或原始颜色表进行压缩的示例方法200。在202处,针对原始颜色表中的原始节点与由采用有损压缩的所选比的经有损压缩和重构的原始节点产生的重构节点之间的色差来定义误差阈值。在204处,利用有损压缩以所选压缩比将颜色表的第一组节点压缩为位流。第一组节点包括处于误差阈值之内的色差。在206处,针对颜色表的具有处于误差阈值之外的色差的第二组节点,生成校正信息。在一个示例中,利用无损压缩来进一步压缩有损压缩位流。压缩颜色表的位流可以被存储在可被包括在打印机墨盒上的存储器设备(诸如存储器设备100)上。在方法200的一个示例中,利用有损压缩来对原始颜色表的第一组节点进行变换以获得量化系数。可以使用多维重新排序(诸如三维z字形排序)来将量化系数重新排序成一维位流。根据量化系数来计算系数位分配表。可以将系数位分配表应用于量化系数,以在解压缩时对系数进行重构。量化系数和系数位分配表作为位流被存储在存储器设备上。可以使用多维重新排序(诸如三维z字形排序)将量化系数重新排序成一维位流,这可能会向系数位分配表引入大量冗余。可以利用无损压缩来进一步压缩系数位分配表和有损压缩系数,其可以被写入存储器设备100上的二进制文件。无损压缩和有损压缩是数据压缩形式,其包括使用比原始表示要少的位来对信息进行编码。在无损压缩中,在原始数据与重构压缩数据之间不存在数字差。在有损压缩中,在对压缩数据进行重构时,一部分原始数据丢失。在方法200中可以采用各种有损压缩系统和无损压缩系统。在一个示例中,可以使用离散余弦变换或dct来实施有损压缩,离散余弦变换表达以按不同频率振荡的余弦函数之和的形式来表示的有限数据点序列,但是也可以采用其他系统。dct压缩可特别适用于可以以多个维度表达颜色表的示例。例如,icc特性文件可以包括三维或四维颜色表,并且因此可以使用三维或四维dct过程来执行有损压缩。另一种有损压缩系统可以基于小波(诸如spiht(多级树集合分裂)和speck(集合分裂嵌入块))。可以使用各种无损系统来实施无损压缩,包括lempel-ziv-markov链算法过程(或lzma)、gzip(或gnu-zip)过程、或其他合适的无损系统。示例方法200可以被实施为包括用于对系统进行控制的一个或多个硬件设备和程序的组合,诸如具有处理器和存储器的计算设备,以便执行方法200来将颜色表压缩成文件或位流。例如,方法200可以被实施为用于控制处理器来执行方法200的一组可执行指令。本公开的其他方法也可以被实施为用于对系统进行控制的硬件和编程的组合。颜色表可以包括存储器设备上的数组或其他数据结构,其利用作为颜色查找表(clut)的更简单的数组索引运算来代替运行时运算。图3展示了包括压缩颜色表302的示例存储器设备300。存储器设备300上所存储的压缩颜色表302包括也是利用无损压缩来压缩的以下各项:通过对原始颜色表的有损压缩生成的量化系数304;系数位分配表(cbat)306,其可应用于对量化系数304进行解码;以及针对重构节点表的校正信息308。校正信息可以包括来自原始颜色表的节点,当经由所选择的有损压缩来压缩时,这些节点产生超出阈值的重构误差。在一个示例中,压缩颜色表包括由方法100、200中的一种或两种产生的位流。在一个示例中,可以利用无损压缩来对压缩颜色表304、cbat306和校正信息308进行进一步压缩。示例存储器设备300可以被实施为包括一个或多个易失性或非易失性计算机存储介质的组合。计算机存储介质可以被实施为用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何合适的方法或技术。传播的信号本身并不可作为存储介质或存储器设备。存储器设备可以被包括作为包括处理器和存储器的系统的一部分,以便存储用于控制处理器来执行颜色变换的一组计算机指令。示例包括作为打印机墨盒的一部分而被包括的存储器设备,其可以由打印机读取以基于诸如墨料或介质参数的规范或设备规范来执行颜色变换。图4展示了示例方法400,该示例方法可以用作创建存储器设备100和300的方法200中的一种或两种的具体实施方式。示例方法400可以分阶段实施,包括利用颜色表数据的特定特性的有损阶段以及用于进行高数据压缩的无损阶段。在一个示例中,连续地执行该方法的这些阶段。方法400的示例包括在402处向原始颜色表应用dct过程,诸如多维dct过程。特别地,在402处,可以向原始颜色表应用j输入维dct过程。一般而言,特性文件可以包括要被处理的n个颜色表,诸如clut1、clut2、……、clutn,并且输入颜色空间包括j输入个通道。在一个示例中,表示不同渲染意图的多个颜色表可以与一个icc特性文件被包括在一起。另外,输出颜色空间包括j输出个通道,并且在icc特性文件的许多示例中,j输入和j输出可以是3或4个通道。对于每个输出通道,相应的查找表包含mj输入个节点。在402处,向颜色表cluti应用j输入维dct变换提供了dct系数,在该示例中,包括与原始颜色表中的节点一样多的系数。在402处的dct过程产生了ac系数和dc系数,在404处对这些系数进行量化和处理。通俗地说,对恒定基函数进行缩放的系数被称为dc系数,而其他系数被称为ac系数。在404处,在一个示例中,使用固定步长δ来对ac系数进行量化,并且将其取整为最接近的整数。另外,在404处,dc系数也被取整为最接近的整数,所以它们被有效地量化到步长δ=1。量化产生了j输入维量化系数。在404处的进一步处理中,将j输入维量化系数重新排序成具有所选顺序的一维数据流。因为dct变换之后的能量集中在低频域中,所以所选顺序可以基于多维z字形排序(诸如三维z字形排序),其可用来对量化系数进行重新排序。在执行三维排序时,遍历可以被配置为使得以c的递增顺序访问平面i+j+k=c,并且在每个平面内执行二维z字形前进。这种从低频到高频的量化系数遍历可能会向系数位分配表引入大量冗余,这可以在压缩时提供对数据的高效打包(packing)。所产生的量化系数的一维数据流可以写入二进制文件。在406处,可以利用无损压缩(诸如上文描述的lzma或另一种无损压缩)来压缩二进制文件中的量化系数的一维数据流,以根据存储器设备300的有损压缩304创建压缩量化系数。在408处,应用量化系数以计算系数位分配表(cbat),该系数位分配表可用于对压缩颜色表进行解码。系数位分配表存储与为每个系数分配多少个位相关的信息。例如,个位被用于将范围-0.5至l-0.5中的实数量化为整数值,其中,表示log2(l)的上取整函数,并且上取整函数将该实数映射为最小的后续整数。提供附加位以用于符号,因为系数可以是负数。每个输出通道可以对应于单独的系数位分配表。因此,具有j输出个输出通道的特性文件将包括j输出个系数位分配表。每个系数位分配表中的节点对应于原始颜色表的节点。在408处,可以应用示例过程来为j输出个输出通道中的每一个计算系数位分配表。对于给定的输出通道,该输出通道的量化dct系数表示为qi,j,其中,i(从1到n)是颜色表编号,并且j(从1到mj输入)是节点编号。如果qi,j为0,则qi,j所需的位数bi,j为bi,j=0,并且如果qi,j不为0,则在一个示例中,固定位数a可以分配给系数位分配表的每个节点,并用于确定每个系数位分配表的大小。可以根据每个i(从1到n)颜色表所需的最大位数bi,j来确定系数位分配表在节点位置j处的值,或lj。可以根据如针对每个j(从1到mj输入)确定的的最大数来确定固定位数a。在该示例中,用于输出通道的一个系数位分配表的总大小因此是amj输入个位。可以重复以上过程以确定每个输出通道的大小,并且总大小为j输出个系数位分配表的大小之和。在406处,诸如利用无损压缩来压缩这j输出个系数位分配表,以创建存储器设备300的压缩系数位分配表306。经由无损压缩可以显著减小系数位分配表的总大小。404中的所选步长δ影响压缩,并且较大的步长δ实现较大的压缩量。然而,404中的所选步长δ还针对每个节点影响颜色表中的原始节点与该原始节点的重构压缩值之间的误差量,并且较大的步长δ产生较大的误差量。对于一些重构压缩值,该误差量对于应用来说可能是可接受的,诸如通常是感知不到的。在这类情况下,色差或误差量处于所选误差阈值之内。在其他情况下,诸如对于在中性轴周围的颜色,误差量对于应用来说可能是太容易感知的。在这类情况下,误差量处于所选误差阈值的范围之外。在一个示例中,处于所选误差阈值的范围之外的误差量是大于所选误差阈值的误差量。为了实现足够高的步长以提供有损压缩的益处,一个或多个节点可以包括处于所选误差阈值的范围之外的误差量。在410处确定包括处于所选误差阈值的范围之外的误差量的节点。针对这样的节点,在412处生成用于修改这些节点的校正信息,以便创建存储器设备300上的校正信息308。图5展示了方法500,该方法可以在确定原始颜色表中要利用校正信息修改的节点时实施。在一个示例中,使用所选步长和所选误差阈值来执行方法500。在502处,使用有损压缩技术(诸如方法400的402、404、408中的dct)来压缩原始颜色表。在504处,经由解码来对压缩颜色表进行重构以便逆转压缩并产生重构颜色表。在506处,将重构颜色表的节点与原始颜色表进行比较以便确定误差量。在一个示例中,节点的误差量是原始颜色表中和该节点相关联的值与重构颜色表的和该节点相关联的值之间的差。在506的一个示例中,将重构颜色表的每个节点与其在原始颜色表中的相应节点进行比较,以确定此节点的误差量。在一个示例中,可以采用修改后的步长将402、404和408的过程再次应用于原始颜色表,从而包括处于所选误差阈值之内的更多节点。例如,如果重构颜色表的具有处于所选阈值之外的误差量的节点量对于给定应用来说太大,则可以使用更小的步长δ对原始颜色表重复过程402、404、408。在508处识别出包括处于所选误差阈值的范围之外的误差量的该一个或多个节点,并且在508处针对所识别出的节点包括校正信息。在412的一个示例中,在508处所识别的原始颜色表的节点利用无损压缩作为校正信息被存储在存储器设备300上,以减小存储器设备300上的数据大小。在412的另一示例中,在508处所识别的原始颜色表的节点的校正信息包括残差值,这些残差值可以被加到重构节点上(或从重构节点中减去)以使重构节点处于针对该节点的所选误差阈值之内。校正信息包括这些残差值,然后可以在存储器设备300上无损地压缩这些残差值。在一些示例中,存储器设备上的校正信息308可以包括原始颜色的节点以用于替换颜色表的一组重构节点,并且包括可以应用于颜色表的重构节点的残差值。在一些示例中,应用于重构节点的残差值可以使重构节点的最终值处于比与第一组节点相关联的误差阈值更严格的第二误差阈值之内。在另一示例中,应用于重构节点的残差值可以使重构节点的最终值与原始节点大体上相同。方法500的应用提供了用于无损地存储具有显著视觉重要性的节点的选项,这些节点在有损压缩之后可能包括可感知的误差,诸如中性轴周围的节点。这改善了被解码的压缩颜色表的性能。当在410处不进行有损压缩而存储超出色差的所选误差阈值的节点时,存储器设备300上的数据(与原始颜色表相比)的压缩比与所选步长δ相关。特别地,随着所选步长δ增大,压缩比首先增大,达到压缩比的峰值,并且然后减小。不受特定理论的约束,随着所选步长δ增大,压缩变得更加强力并且误差量变得更大。随着处于所选误差阈值的范围之外的节点数量增加,更多节点不进行有损压缩而被存储或者以更低压缩比而被存储,这减小颜色表压缩效率。针对所选误差阈值的压缩比峰值为色差的所选误差阈值提供了最佳压缩比。另外,压缩比峰值随着误差阈值的增大而增大。在一个示例中,可以使用以下过程来选择有损压缩的最佳压缩比:首先确定可接受误差阈值,其中,超出阈值的节点不进行有损压缩而被存储,然后确定与关系的峰值压缩比相对应的所选步长δ。图6展示了对方法400的压缩数据表(诸如存储器设备300上的压缩颜色表302的示例)进行解码的方法600。在602处,向压缩颜色表应用标准无损解压缩技术(诸如逆lzma或逆gzip(即,在406处应用的无损压缩的逆转)),以提供包括系数位分配表、量化dct系数和另外存储的节点(位置和值)的二进制流。系数位分配表可用于确定二进制流中多少个位属于每个节点位置。在604处,向这些量化dct系数应用系数位分配表(cbat),以重构dct系数。在606处,向dct系数应用逆dct变换。在608处,将这些系数乘以量化器步长δ并取整为最接近的整数,以获得初始重构颜色表。在610处,向初始重构颜色表应用校正信息,以获得最终重构颜色表。在一个示例中,校正信息包括原始颜色表的节点,其替换初始重构颜色表的节点。在另一示例中,校正信息包括残差值,这些残差值可以应用于初始重构颜色表的节点,以获得最终重构颜色表。最终重构的j输入维到j输出维颜色表可以应用于颜色管理系统。将对颜色表进行压缩的方法(诸如方法400)应用于公开可获得的cgats21_crpc7.iccicc特性文件并对其进行分析。在此特性文件中,b2a表是l*a*b*到cmyk,所以j输入=3,j输出=4,并且m=33。因此,每个输出通道存在mj输入=333个节点。字节深度(用于存储如在icc字节深度字段中指示的值的字节数)为b=2。在一个b2a表中总共存在bj输出mj输入=2*4*333=287,496个字节。存在n=3种渲染意图,所以对于将被压缩的所有b2a表,存在287,496*3=862,488个字节。a2b表是从cmyk到l*a*b*,所以j输入=4,j输出=3,并且针对每个输出通道存在174个节点。表1示出了每种类型的颜色表的参数值。表1类型b2aa2b字节深度22j输入34j输出43m3317n33总大小(字节)862,4881,503,378b2a颜色表是使用有损压缩方法来压缩的,并被应用于a2b表以评估压缩性能。表2示出了针对所选误差阈值量(δe)1、2和3的峰值有损压缩比值、平均误差量、以及误差量的标准偏差。在这里,以cie1976δe为单位来计算误差,但是也可以使用其他误差度量。表2δe最大压缩比平均δe标准偏差δe115.52:10.390.25241.65:10.600.40368.71:10.780.54对于cgats21_crpc7.iccicc特性文件,误差阈值1对应于峰值有损压缩比15.52:1,误差阈值2对应于峰值有损压缩比41.65:1,误差阈值3对应于峰值有损压缩比68.76:1。平均误差以及误差的标准偏差也相对较小,表明好的性能。图7展示了可以用于在存储器设备704上创建和使用压缩颜色表702的示例系统700。在一个示例中,存储器设备704可以对应于示例存储器设备100、300。示例系统700包括具有处理器708和存储器710的计算设备706,该处理器和存储器被配置为将本公开的示例方法(诸如方法200、400、500)实施为在存储器710中所存储的用于控制处理器708来执行该方法的一组计算机可读指令。在一个示例中,该组计算机可读指令可以被实施为计算机程序712,该计算机程序可以包括被配置为在计算设备706上运行的硬件和编程的各种组合。计算机程序712可以被存储在存储器710中并且可由处理器708执行以便创建存储器设备704上的压缩颜色表702。存储器设备704可以被包括在可消耗产品714中,诸如具有液体墨料容器、干燥调色剂粉末、或与打印机一起使用的其他打印或标记物质的打印机墨盒。在一个示例中,打印机墨盒包括与打印或标记物质相对应的颜色表,诸如与黑色、青色、品红色、或黄色墨料相对应的颜色表。存储器设备704可以可操作地耦接到具有处理器718和存储器720的另一计算设备716,以读取和应用压缩颜色表702。在一个示例中,计算设备716包括固有打印能力,并且可以被配置为可接受存储器设备704并且将压缩颜色表702解压缩和读取为颜色查找表的激光打印机或喷墨打印机。计算设备716可以包括一组计算机可读指令,该组计算机可读指令被存储在存储器720中并且可由处理器718执行以便执行方法(诸如方法600)来对颜色表702进行解压缩或以其他方式应用颜色表702。尽管本文已经展示和描述了特定示例,但是在不脱离本公开的范围的情况下,各种各样的替代和/或等效实施方式可代替所示出和描述的特定示例。本申请旨在覆盖本文所讨论的特定示例的任何修改或变化。因此,旨在使本公开仅由权利要求及其等同来限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1