利用熵编码的彩色图像数据的无损压缩的制作方法

文档序号:83950阅读:208来源:国知局
专利名称:利用熵编码的彩色图像数据的无损压缩的制作方法
本发明涉及连续色调图像的无损压缩。更特别地,本发明提供一种压缩位于扫描行上的像素的数字连续色调图像的方法,每个像素具有由至少一个颜色通道值定义的像素值,颜色通道值具有为B个位(B>1)的精度。应理解,颜色通道也可包括单个黑白通道。
本发明还涉及一种计算机程序产品,用于当该计算机程序产品在其中执行该方法的计算机和设备、特别是打印控制器上运行时执行该方法。最后,本发明涉及一种用于解压缩已经利用本发明被压缩的图像数据的方法。
背景技术
通常用页面描述语言(PDL)来定义被发送到打印机的页面。PDL的实例是来自Adobe系统有限公司的PostScript。在计算机上运行的PDL解释器解释该PDL,从而为要被打印的每页产生数字页面图像。这些页面图像可以是能够直接被传到打印引擎的形式,或者这些页面图像能以数字连续色调图像的形式被存储,数字连续色调图像可在将它们传到打印引擎之前进一步被处理。例如当需要在PDL解释器中不可用的特殊的图像处理时,后者方法可被用来例如将连续色调图像转换为该打印引擎能够接受的格式。
对于使用后者方法的彩色打印机,连续色调图像必须被存储并且可能被传送到图像处理硬件。然而,连续色调图像的数据量可能非常大。例如,对于A4大小的600dpi连续色调(每个颜色通道8位)CMYK图像来说,需要大约140兆字节。这意味着,花费相当大的存储量来存储该图像,并且花费相当长的时间量来传输该图像。这个问题的通常的解决方案是压缩该连续色调图像。
例如,图11示出了打印控制器的示意图,该打印控制器也被称为“光栅图像处理器”(RIP)或者“色彩服务器”。该打印控制器解释打印作业(例如,用PostScript来定义的打印作业),在磁盘上存储页面图像并且当需要时从那里将页面图像传输到打印机引擎。
彩色打印控制器包含解释进入的打印作业并将该打印作业转换为未被压缩的连续色调彩色页面图像的PDL解释器112。直接在生成页面图像之后,由本发明的压缩器114压缩这些页面图像。得到的被压缩的页面图像被存储在形成页面存储器的硬盘116上。当该引擎需要打印该作业时,该被压缩的页面图像从该硬盘被读取并通过打印机接口电缆118(例如,火线)被传输到该引擎。
图12示出了通过打印机接口电缆118被连接到图11的打印控制器的打印机。
在缓冲器122中接收来自该打印控制器的被压缩的页面图像。该被压缩的图像数据从缓冲器122被传到将被压缩的页面图像转换为未被压缩的图像的解压器124。通过图像处理模块126传递未被压缩的图像,以将该未被压缩的图像转换为被用来驱动打印机引擎128的引擎专用位图。
直接在PDL解释器之后压缩图像数据的事实节约了图像往返于硬盘传输时的带宽,从而允许使用比未被压缩的数据所需要的磁盘更慢的磁盘。还允许更小的磁盘。同样,降低了通过打印机接口电缆传输图像所需的带宽,因此可以使用具有较少可用带宽的接口。
各种各样的无损图像压缩技术可用于压缩连续色调图像,这些技术例如JPEG-LS。
JPEG-LS基于HP的LOCO-1算法,并且已经被ISO/ITU-T选为连续色调图像的无损压缩标准。在M.Weinberger、G.Seroussi、G.Saipiro的“LOCO-1A Low Complexity,Context-Based,LosslessImage Compression Algorithm(低复杂度、基于上下文的无损图像压缩算法)”中给出了该算法的说明,该文献在www.hpl.hp.com/loco/HPL-98-19 3Rl.pdf上可得到。
然而,提供合理压缩量的压缩技术压缩图像要花费比PDL解释器在相同计算机上执行时生成相同图像所花费的时间多得多的时间。这意味着,如果将这种压缩方法用于压缩页面图像,则打印机的性能会降低到无法接受的水平。
足够快的现有技术(例如,简单的1维行程长度压缩)平均并没有提供足够的压缩。

发明内容本发明的目的是提供一种能够在通用处理器上有效地实现并且允许无损压缩PDL生成的图像的低复杂度的软件解决方案,该软件解决方案的执行时间远小于PDL解释器在相同的计算机上生成图像所花费的时间。
这将允许压缩在与被用来运行PDL解释器相同的计算机上实现,而无需额外的硬件并且没有大的性能损失。
本发明的另一目的是提供一种压缩系数至少与现有技术的无损图像压缩算法一样好的低复杂度的压缩器。
本发明的另一目的是允许解压器的简单的硬件实现方案。
通过权利要求
1中所要求保护的压缩方法达到这些和其它目的。
根据这种方法,像素值与基于相邻像素预测的预测像素值进行比较。由于在许多情况下像素值并不会在位置上快速变化,所以实际像素值与预测像素值之间的差通常很小,并且如果不多的话,将有几个前导零位。通过去掉这些前导零位,该数据被恢复为较少位,这有效地导致了压缩。
在从属权利要求
中陈述了更有利的方面。这些方面说明了被用来以这样的方式准备图像数据,使得实际像素值与预测像素值之间的最终的差变得甚至更小,从而导致更好的压缩。
压缩针对PDL生成的图像被优化,但是该压缩也可有利地被用于其它种类的数字图像,例如用于扫描图像。
在下文中,将参考本发明的优选实施方式的公开内容,并且特别是参考附图,更加详细地论述本发明的这些和另外的特征、方面和优点,其中图1示出由典型的PDL解释器缩放为双倍分辨率的图像像素;图2示出如根据本发明所生成的那样的针对扫描行的数据块和代码块的构造;图3示出根据本发明的行程长度码中的行程长度字段的解释的实例;图4示出在像素扫描行中的PREV和LEFT颜色的说明;图5示出预测器的实例;
图6示出描述根据本发明的第一实施方式的颜色值的压缩方法的流程图;图7A/B示出第一实施方式中的颜色通道数据的组合的示意性表示;图8示出描述根据本发明的第一实施方式的完整的压缩方法的流程图;图9示出描述根据本发明的第二实施方式的完整的压缩方法的流程图;图10示出描述根据本发明的第二实施方式的灰度值压缩方法的流程图;图11示出打印控制器的示意图;和图12示出打印机的示意图。
具体实施方式根据本发明的压缩的概况本发明基本上打算供PDL(页面描述语言,诸如Postscript)解释器生成的页面图像的压缩使用。这种图像有特定的特性,这些特性将在下面描述。针对这些图像,这种压缩是最优的,但是这种压缩也可被用于其它种类的数字图像,例如,用于扫描图像。在后者情况下,扫描仪噪声消极地影响压缩比,但是试验已揭示,仍然可达到合理的压缩比。在这种情况下,噪声抑制预处理步骤将改善结果,因为该噪声抑制预处理步骤会增加行程长度压缩的机会,尽管随后压缩不再是无损的。
此外,已经用软件实现了依照本发明的压缩器,以致压缩图像所需的执行时间平均远远小于PDL解释器在相同计算机上生成相同图像所花费的时间。这允许压缩器在运行PDL解释器的相同的计算机上被实现,而无需额外的硬件并且没有大的性能损失。
压缩格式是简单的,以便用硬件简单地实现解压器。这尤其意味着,能够限制解压器所需的存储器数量。
同样,已经设计了压缩器,以致硬件实现的解压器能够以固定的速率产生被解压的像素数据。这意味着,被压缩的数据的最大局部展开必定受到限制。
要被压缩的图像的图像特性要被压缩的图像是优选地由PDL解释器生成的彩色或黑白连续色调图像。除非特别定义,否则在下面的说明中,术语“彩色”涉及天然色调和黑白浅灰。PDL生成的图像有某些典型特性-在颜色不变的区域中(例如,许多页面中的白色背景),没有噪声。这意味着,为了压缩颜色不变的区域,可以使用象行程长度编码这样的简单机制来压缩。
-为了将所采样的图像缩放到设备分辨率,大多数PDL(象PostScript)使用最邻近插值法。最邻近插值法给装置像素提供最接近于该装置像素的初始像素的颜色。例如,如图1中所示,对于在600dpi的装置上所打印的PostScript作业中的300-dpi图像来说,每个初始像素被映射到2×2个装置像素上。
现在将描述本发明的第一实施方式,该第一实施方式是用于有色图像的压缩方法。
第一实施方式中的压缩图像格式被压缩的图像格式由连续字节组成,每个字节包含两个4位半字节。每个字节中的第一半字节是该字节的高阶4位;每个字节中的第二半字节是该字节的低阶4位。在这个第一实施方式中,压缩图像格式中的数据的最小单位是半字节。用半字节作为数据的最小单位而不是用位运算的原因是因为在通用处理器上半字节比单个位更有效地被处理。由多个半字节组成的所有数用最高阶的头半字节和最低阶的尾半字节表示。
被压缩的图像格式以扫描行在该页面上出现的顺序被组织为连续的信息块,每个信息块描述一个扫描行。选择扫描行式的构造(与页面式的构造相对)的原因是扫描行式的构造允许基于扫描行处理,而无需必须存储完整的被压缩的页面图像。
图2示出了扫描行的信息块的基本形式的实例。每个信息块由代码块紧跟其后的数据块组成。
数据块和代码块中的前4个半字节每个形成了长度字段,该长度字段以多个8字节来说明该数据/代码块的长度。紧跟着这个长度字段的是实际的代码/数据半字节。块末端的任何未使用的半字节值被设为0。数据/代码块最多可长(2^16-1)*8=524288个字节。长度字段允许基于扫描行浏览被压缩的数据(快速跳过扫描行数据)。
代码块包含连续的代码半字节,这些代码半字节是解压器的指令,说明要被生成的像素,从扫描行上的第一像素开始并朝着最后一个像素运算。
代码块中的某些代码需要附加数据。这个附加数据以与相对应代码在相同的扫描行的代码块中出现的顺序相同的顺序被存储在数据块中。
第一实施方式中所使用的压缩代码给出了PDL生成的图像的属性(无噪声的颜色不变的较大区域),2维行程长度编码将很好地压缩多个PDL生成的图像。然而,包含被采样的图像的页面(例如,照片)通常有许多不同的颜色,而许多像素的颜色与其先前被处理的相邻像素不同,所以行程长度编码将不会很好地执行。对于这种情况,附加代码是必需的。本发明提供一种在上述两种情况下都很好地执行的方法。
首先,将描述根据本发明的具有专用代码的基本2维行程长度压缩方法。
LEFT代码定义代码LEFT,该代码LEFT表示当前像素与其左边的相邻像素颜色相同。给这个代码加上行程长度,以表示该代码应该被重复若干次。这是第一维上的行程长度编码。作为第一个在扫描行上运行的代码LEFT表示相对应的像素具有白色。
TOP代码为了在2维进行行程长度编码,定义代码TOP,该代码TOP表示当前像素与上面的像素颜色相同。给这个代码加上行程长度,以表示该代码应该被重复若干次。这是第二维上的行程长度编码。第一扫描行上的代码TOP表示相对应的像素为白色。
注意,这个代码非常有助于以例如设备分辨率的一半压缩包含被采样的图像的页面。由于PostScript/PDF的最邻近插值法,在缩放到设备分辨率之后,对这样一个图像,每隔一个扫描行与上一个扫描行相同(见图1)。这意味着,在这种情况下,这样一个图像内的每隔一个扫描行可使用TOP行程(run)来压缩。
NEW代码由于不能使用代码TOP或者LEFT来编码每个像素,所以不得不增加产生新颜色的像素的代码,该代码在被压缩的数据中被规定。代码NEW表示当前像素具有在该数据块中用高阶头半字节以C、M、Y、K的顺序被规定为未被压缩的颜色值的颜色。对于四个颜色通道中的每一个来说,值0对应于无油墨覆盖,而值255对应于全油墨覆盖。
为了减少压缩格式的最不利情况的展开(以允许简单的硬件解压器),给这个代码增加行程长度,以表示该代码应被重复若干次。
增加行程长度如上所述,上面的代码LEFT、TOP和NEW中的每个都有增加的行程长度。行程长度值的概率分布大致是负指数分布的。
一种增加行程长度的简单方式是要增加说明行程长度的额外的半字节。然而,这将意味着,每个代码将变为2个半字节长(第一半字节用于代码而第二半字节用于行程长度)。还意味着,由于,例如后面跟着行程长度为1的代码TOP的行程长度为1的代码TOP将与行程长度为2的代码TOP意义相同,所以该代码中有相当多的冗余。
为了防止这些问题,将相同代码的连续出现解释为一个行程。在代码LEFT、TOP和NEW的每个代码值中,为行程长度保留1位,以被称为L。
通过连接每个代码中的行程长度位来形成二进制数,共同解释几个连续的代码LEFT、TOP或NEW。给该数增加取决于连续代码数量的偏移值,以形成实际的行程长度值。
结果是,用单个代码半字节能规定长度为1或2的TOP、LEFT或NEW行程。用2个半字节能规定长度为3、4、5或6的行程,等等。
下表1示出所连接的行程长度位的解释。
表1所连接的行程长度位的解释在图3中,示出了如何解释NEW、LEFT和TOP代码序列及其行程长度的实例。作为实例,解码十六进制串EDCCDDBA。
下面,描述除了上述TOP、LEFT和NEW代码之外可以使用的非行程长度码。
PREV代码为了允许有效压缩页面上全分辨率二进制采样的图像,增加了产生具有如下所述的PREV颜色的一个像素的代码PREV。
每个扫描行的开头,PREV颜色被设为K-黑色(C=0,M=0,Y=0,K=255)。
每次LEFT颜色改变为不同的颜色时,就将PREV颜色设为LEFT颜色的旧值。
图4示出了示例性扫描行,该扫描行的前5个像素具有黄色,中间5个像素具有青色,而后5个像素具有品红色。那么在第一像素,PREV颜色是K-黑色而LEFT颜色是白色。在第二直至第6像素,PREV颜色是白色而LEFT颜色是黄色。在第7像素直至第11像素,PREV颜色是黄色而LEFT颜色是青色。在第12直至第16像素,PREV颜色是青色而LEFT颜色是品红色。
如果扫描行上的颜色在两个颜色(例如,黑色和白色)之间交替,则PREV代码可被用来在扫描行上为每个颜色转变规定颜色。这个代码产生1个像素,所以不需要行程长度。
TOPL、TOPR代码代码TOPL规定当前像素与其西北方的相邻像素颜色相同。代码TOPR规定当前像素与其东北方的相邻像素颜色相同。这些代码产生1个像素,所以不需要行程长度。
下面的表2示出了到目前为止已经定义的代码。编号是任意的并反映代码的最终编号。代码1到7(“0001”到“0111”)仍然可用。
表2针对2维行程长度编码所定义的代码用于压缩颜色值的附加代码到目前为止已经定义的代码允许压缩大多数简单页面。然而,包含被采样的图像(例如,照片)的页面包含许多颜色不同于其先前被处理的相邻像素的像素,所以要使用NEW代码来表示这些像素,这导致展开而不是压缩。由于被采样的图像中的连续颜色值经常类似,所以可能压缩那些颜色值。
现在将参考图6说明一种根据本发明的用于压缩高度关联的颜色值的方法。
基本策略由下列步骤组成1)基于前面的值预测值。
2)确定预测值与实际值之间的差额。
3)针对经常出现(小差额)的值用短代码来编码该差额,而针对较不经常出现的值用较长的代码来编码该差额。
不同的无损图像压缩算法(象JPEG无损、JPEG-LS等等)使用类似的策略。差别大多数在预测器的结构和差值的编码上。
由于将被打印的每个页面都必须经过压缩器,所以压缩时间必须短。这意味着,不得不使用能够在通用处理器上有效实现的简单的预测器和差值的简单编码。
由于关于附近的像素值编码了考虑中的像素的灰度值,所以不仅访问了当前像素的值(图6中的步骤S1),而且访问了之前已经被处理的预定相邻像素的值(这些像素值在解压步骤中也可用)。在预测步骤中,那些相邻像素值被用来准备预测像素值。
预测步骤(图6S2)在文献中已经提出了基于像素X的先前被解码的北方、西方和西北方像素值来预测像素X的值的各种各样的方法。在图5中,示出了JPEG无损中所使用的预测器。其它算法使用更复杂的(非线性的)预测器(例如,JPEG-LS)或者当图像正被压缩时而被修改的自适应预测器。
由于需要一种快速的算法,所以在本实施方式中使用一种简单的预测器像素X左边的像素的颜色(或者如果X是该扫描行上第一像素则是白色)。也可选择更高级的预测器。应根据情况作出选择,因为通常这种预测器将增加压缩系数,但压缩器的执行时间也会增加。
确定色差的步骤大多数无损压缩算法是针对灰度图像定义的,而差额是预测值与实际像素值之间的灰度级的差。为了压缩彩色图像,该算法独立地被用于每个颜色通道。这样一种方法的缺点是,由于颜色通道通常强烈相关,所以压缩不是最优的。
在根据本发明的编码方法中,与所有颜色通道值一起工作。基本上,在CMYK图像的情况下,将确定4个颜色差值,并将这些差值组合成一个单个颜色差值。注意,对于具有N个颜色通道的图像的压缩来说,要确定N个颜色通道差值并将这些差值组合成单个颜色差值。
在低油墨覆盖值时,对许多CMYK打印机来说,K通道经常为0。为了最优使用这一点,已经定义了2种模式用于说明色差值CMY模式和CMYK模式。
在CMYK模式,在所有4个颜色通道上确定色差。
CMY模式可以在K通道值并不变化时使用。在CMY模式,在3个通道(K与所预测的K值相同)上确定色差。
去相关(图6S3,S4)由于颜色通道的值通常相关,将不确定初始通道值的色差值,但是将首先如下转换这些差值在CMYK模式C1=MC2=(K-M+128)mod 256C3=(C-M+128)mod 256C4=(Y-M+128)mod 256在CMY模式C1=MC2=(Y-M+128)mod 256C3=(C-M+128)mod 256这个去相关步骤改善了压缩而没有大的性能损失。其它转换也能对颜色通道进行去相关。
确定差额将去相关步骤S3用于所预测的颜色值C*、M*、Y*、K*,并输送已去相关的预测值C1*、C2*、C3*和C4*。同样,将去相关步骤S4用于要被压缩的像素的实际颜色值C、M、Y、K,并输送已去相关的预测值C1、C2、C3和C4。
然后,在最终的已去相关的颜色值之间确定差值ΔC1、ΔC2、ΔC3和ΔC4。如将被理解的那样,在CMY模式仅确定三个差值ΔC1、ΔC2、ΔC3。
编码色差的步骤目标是将已去相关的颜色值的通道差ΔC1、ΔC2、ΔC3(和ΔC4)编码为通常小的单个组合数ΔC(在CMY模式为24位而在CMYK模式为32位)。然后,通过从这个数去掉先导零半字节能够有效地编码该数。
差值的变换(图6S6)通过将每个通道差值ΔC1、ΔC2、ΔC3和ΔC4转换为相应的字节值ΔC1’、ΔC2’、ΔC3’和ΔC4’来开始,这些字节值能够表示任何可能的色差值并且对于小色差来说是小值。
每个通道的差值可以是正的或者是负的。为了将这些值组合成单个色差值,将这些值映射到正值上,当差额的绝对值小时,该正值小。这可以通过用跳过不可能的差值的这种方式将差值0、1、-1、2、-2等等映射到值0、1、2、3、4、5等等来完成。例如,当去相关预测器通道C1*、C2*、C3*和C4*中的一个通道的值为2时,不映射低于-2的负差值ΔC、ΔC2、ΔC3和ΔC4以及高于253的正差值,因为这些值不可能出现(所有颜色通道值在0到255的范围内)。
这个映射可使用下列公式完成设P为去相关预测器的颜色通道的字节值,而设A为去相关实际颜色通道的相对应的颜色通道的字节值。那么下面的C语言表达式执行上面所描述的映射(A==P?0(P<128?(A>2*P?A(A>P?2*(A-P)-12*(P-A)))(A<=2*P-255?255-A(A>P?2*(A-P)-12*(P-A)))))在实际的压缩器软件中,这些值被预先计算好并被存储在256×256字节的查询表中。
可替换地,可以使用将差值0、-1、1、-2、2等等映射到值0、1、2、3、4、5等等的映射。也可能是其它类似的映射,例如,基于从实际文件中收集并被存储在256×256的查询表中的统计量的映射。
当开始解码时,解压器可以如下反转这个转换。设P为去相关预测器的颜色通道的字节值,而设C是被转换的色差值,则下面的C语言函数可被用来确定已去相关的实际颜色通道值的颜色通道值unsigned char color(unsigned char P,unsigned char C){ int M0=(C&1)?-10 //布线(wiring)int M7=(P&128)?-10 //布线int C0=M0^(C>>1); //“异或”int P7=(M7^P)<<1; //“异或”int C7=M7^C; // “异或”int PP=P7-C; //加法器int PC=P-C0; //加法器int res=(PP&256)?C7PC;//多路转换(mux)return res;}这个函数反映了能够用硬件实现转换的方式。
通过将该转换用于颜色通道的差额(ΔC1,ΔC2,ΔC3和ΔC4),得到3个(在CMY模式中)或4个(在CMYK模式中)色差字节值ΔC1’、ΔC2’、ΔC3’(和ΔC4’),这些色差字节值说明色差并且通常很小。
组合颜色通道(图6S7)在下一步骤S7中,将转换后的差值ΔC1’、ΔC2’、ΔC3’(和ΔC4’)组合为通常小的单个数ΔC。为了这样,合并单独值的位,如图7A(CMYK)和7B(CMY)中所示。
如在图7A中能够看到的那样,在CMYK模式,简单地交织4个色差值ΔC1’、ΔC2’、ΔC3’和ΔC4’的位。在CMY模式(图7B),并不简单地交织每个差值的位。原因是ΔC1’通道的值通常大于其它通道的值。针对一组有代表性的测试图像用实验确定这些位的最优排列次序。在CMYK模式,这也可作为对交织的替换方案来完成。
合并的结果是单个24或32位数ΔC,该数ΔC表示色差并且针对小色差来说具有小值。
本发明范围内的可替换的方法是使用C维查询表,其中C是颜色通道的数量。该查询表用C个色差值来编索引,而且该表中的每个条目包含唯一的号码,以致经常出现的色差具有小值而很少出现的色差具有较大的值。可以基于从测试图像所收集的统计量来填充该表。
编码差值(图6S8/S9)最后的步骤是通过从ΔC中去除高阶0半字节(S8)并针对剩余值生成代码(S9)来以压缩格式有效地编码数ΔC。在编码步骤S9中,生成一个代码半字节,并将该代码半字节存储在代码块(图2)中,而且生成整数个相关的数据半字节,并将这些数据半字节存储在数据块中。
通过使用6个代码半字节值以使用1、2、3、4、5或6个额外的数据半字节来表示色差ΔC,可以编码色差值并实现压缩。如果,在CMYK模式,色差ΔC不能使用6个数据半字节来表示,则用初始代码NEW来表示未被压缩的颜色值(将8个数据半字节用于颜色值,即每个颜色通道2个数据半字节)。
这6个新的代码将被称为NEW1到NEW6并且具有代码值1到6,其中,NEW1具有1个数据半字节 NEW6具有6个数据半字节,以表示色差值ΔC。
第7个自由代码半字节被用于新的代码NEM6,该新的代码NEM6与NEW6作用相同但是也在CMY与CMYK模式之间切换模式。
由新代码生成的像素数量NEW1到NEW6代码中的每一个和代码NEM6能够给每个代码生成1个像素。然而,页面上的大多数被采样的图像的分辨率低于设备分辨率。
PostScript解释器将最邻近插值法用于按比例放大图像。这导致行中的几个像素具有完全相同的值(参见图1)。该压缩器可以使用LEFT代码来压缩这种情况,但是,如果允许NEW1到NEW6和NEM6代码生成N个相同像素的行程,则更有效。每个图像的开头N固有地被设为1。
这意味着,需要增加允许改变N的代码。这并不经常发生,所以并不需要短代码来改变N。
为了使其成为可能,利用了以下事实,即上面定义的NEW1到NEW6代码的一些被编码的色差值将不出现。
第一半字节0(代码NEWi*)N→1永远不会出现的自变量值是具有为零的第一半字节的自变量值(由于在将其编码之前去掉了该值的先导零半字节)。使用那些自变量值如下改变半字节代码值2到6的意义如果该自变量值的第一半字节为零,则代码2到6将被解释为代码NEW2*到NEW6*。这些代码与代码NEW2到NEW6意义相同,除了这些代码总是只产生1个像素而不是N个像素(当前的N值),并且还将N设为1。
代码INCN→N+1永远不会出现的另一种组合是代码半字节1与零自变量值,因为这意味着该像素的颜色与其西方的相邻像素的颜色相同,而使用代码LEFT来编码那种情况。使用这种组合来定义新的代码INC,该新的代码INC产生颜色与左边像素相同的像素并且N的增量为1。
代码NEW如果不能仅仅用6个半字节来表达该颜色,则压缩器不可能总是使用NEW1*到NEW6*代码之一来将N复位为1。因此,具有大于1个新颜色值(即,L>1)的代码NEW也将N设为1。
下表3示出了所有代码半字节及其解释
表3代码半字节及其解释的概要根据本发明的压缩方法既然已经定义了被压缩的图像格式,将解释根据本发明的示例性压缩器可用来产生这种格式的方法。参考图8。
像素处理顺序该示例性压缩器起始于图像的第一扫描行来逐个扫描行地处理图像,并且继续直到已处理所有扫描行,(步骤S26到S29)。对于每个扫描行来说,该压缩器起始于该扫描行上的最左边的像素来处理所有像素,直到该扫描行上的所有像素已被处理。新扫描行一开始,就在初始化步骤S11将PREV和LEFT像素设为“白色”。
每个像素的步骤该压缩器试图通过设法将不同代码用于以下面的固定顺序压缩像素来压缩每下一个像素1)该像素与TOP颜色进行比较(S12)。这是北方相邻像素的颜色,或者如果当前像素在第一扫描行上,则颜色为白色。如果发现匹配,则该压缩器通过生成一个或多个TOP代码来生成TOP行程,并通过给这个行程加上所有后面能用TOP行程编码的像素来使这个行程的长度最大化(S13)。然后,该过程从步骤1对下一个未被压缩的像素重新开始(S26,S27)。
2)如果前面的步骤并不允许编码该像素,则该像素与LEFT颜色进行比较(S14)。这是西方相邻像素的颜色,或者如果当前像素在一扫描行的开始处,则颜色为白色。如果发现匹配,则该压缩器通过生成一个或多个LEFT代码来生成LEFT行程,并通过给这个行程加上所有后面能用LEFT行程编码的像素来使这个行程的长度最大化(S15)。然后,该过程从步骤1对下一个未被压缩的像素重新开始(S26,S27)。
3)如果前面的步骤并不允许编码该像素,则该像素与PREV颜色进行比较(S16)。此前已经解释了PREV颜色的值。如果发现匹配,则该压缩器生成PREV代码(S17)。然后,该过程从步骤1对下一个未被压缩的像素重新开始(S26,S27)。
4)如果前面的步骤并不允许编码该像素,则该像素与TOPL颜色进行比较(S18)。这是西北方相邻像素的颜色,或者如果该西北方相邻像素不存在,则颜色为白色。如果发现匹配,则该压缩器生成TOPL代码(S19)。然后,该过程从步骤1对下一个未被压缩的像素重新开始(S26,S27)。
5)如果前面的步骤并不允许编码该像素,则该像素与TOPR颜色进行比较(S20)。这是东北方相邻像素的颜色,或者如果该东北方相邻像素不存在,则颜色为白色。如果发现匹配,则该压缩器生成TOPR代码(S21)。然后,该过程从步骤1对下一个未被压缩的像素重新开始(S26,S27)。
6)如果前面的步骤并不允许编码该像素,则应用此前在“用于压缩颜色值的附加代码”部分中所描述的用于压缩颜色值的方法(S22)。如果K通道值与所预测的K通道值相同,则CMY模式被用来压缩该颜色,否则就使用CMYK模式。然后检查(S23)是否产生可接受的NEWi代码,即,模式不变的6个或更少个半字节的色差值。如果是这样,则与色差半字节一起生成NEW1到NEW6代码中的适当的一个代码(S24)。如果不是这种情况,则生成代码NEW,而新的颜色值不被压缩地被写到数据块中(S25)。
如果前面的模式不同于被用来压缩该像素的模式,并且如果该色差值的长度为6个半字节或更少,则与该色差半字节一起生成代码NEM6。如果该色差值比6个半字节长,则生成代码NEW,并且新的颜色值未被压缩地被写到数据块。这些步骤没有在图8中明确地示出,但是这些步骤可被认为形成步骤S24和S25的部分。
如果N的值大于具有那个颜色的连续像素的数量,而色差值的长度为5个半字节或更少,则与之前加上一空的半字节的色差半字节一起生成NEW2*到NEW6*代码中的适当的一个代码。如果这不可能,则为当前像素和下一个像素生成代码NEW,并将当前像素和下一像素的颜色值未被压缩地写到数据块。这些步骤没有在图8中明确地示出,但是可被认为形成步骤S24和S25的部分。
然后,该过程从步骤S11对下一个未被压缩的像素重新开始(S26,S27)。
行程长度至少为2的代码NEW使得N被复位为1。
为了该压缩器在适当的时候增加N,每次LEFT行程跟随在范围1到6中的代码(表示新的颜色),该压缩器都存储其状态(除非一状态之前已经被存储了少于32个像素)。从那一点开始,记住在扫描行上具有相同的颜色的最少M个连续像素。
如果压缩器确定增加N将允许更好的压缩,则压缩器将其状态恢复到先前存储的状态(从而放弃存储那一状态之后它生成的任何输出)并且通过生成一个或多个INC代码来对M的值增加N。接着,压缩在用所存储的状态表示的点重新开始。
本发明范围内的可能的简化的实例压缩步骤3、4和5可以以不同的顺序完成,而没有显著的压缩损耗。
压缩步骤3、4和5可以不考虑压缩器,而对大多数图像来说没有显著的压缩损耗。然后,可以从该压缩格式中去除相对应的代码PREV、TOPL和TOPR。
压缩步骤1和2可被交换,而压缩没有显著的变化。
不是具有CMYK和CMY模式,而是只有CMYK模式工作,虽然有一些压缩损耗。利用一种模式,可以从压缩格式中去除代码NEM6。
N可以被固定为1,虽然有一些压缩损耗。然后,可以从压缩格式中去除代码INC和NEW2*到NEW5*。
代码NEW的行程长度降低了压缩格式的最大展开。如果不需要最大展开,则代码NEW不需要行程长度。
根据本发明的解压方法对于每个连续的扫描行,从图像的第一扫描行开始并且继续到最后一个扫描行,解压器处理来自代码块的代码半字节,并从数据块中取出相对应的数据半字节。从最左边的像素开始给扫描行上的连续像素分配解压缩后的颜色值。
实际上,给每个像素一次分配一颜色。
-当该解压器遇到代码PREV时,该解压器给当前像素分配(该解压器记住的)PREV颜色。上文解释了PREV颜色的值。
-当该解压器遇到代码值1(十六进制为0001)到6(十六进制为0110)之一时,该解压器检查数据块中的下一个数据半字节的值。
如果该数据半字节为非零,则该代码被解释为代码NEW1到NEW6之一。在那种情况下,通过反转压缩器所应用的转换步骤,该解压器根据当前模式结合数据块中的差值存储而根据预测器的颜色值重建下一个像素的颜色值。这个颜色值随后被分配给从当前的像素开始的N个连续像素。
预测器的颜色值是扫描行上的先前被解压的像素的颜色,或者如果当前像素是该扫描行上的第一个,则为白色。
如果该数据半字节为零,而该代码值大于1,则该代码被解释为代码NEW2*到NEW6*之一。在那种情况下,通过反转压缩器所应用的转换步骤,该解压器根据当前模式结合数据块中的差值存储而根据预测器的颜色值重建颜色值。这个颜色值随后被分配给当前像素。另外,该解压器将N设为1。
如果该数据半字节为零,而该代码值为1,则该代码被解释为代码INC。在那种情况下,该解压器将先前被解压的像素的颜色(或者如果当前像素是该扫描行上的第一像素,则颜色为白色)分配给当前像素。另外,该解压器将N增加1。
-当该解压器遇到代码NEM6(代码值0111)时,通过反转压缩器所应用的转换步骤,该解压器切换当前模式,并根据当前模式结合数据块中的差值存储而根据预测器的颜色值重建颜色值。这个颜色值随后被分配给从当前的像素开始的N个连续像素。
-当该解压器遇到代码TOPL(代码值1000)时,该解压器复制来自先前被解压的西北方相邻像素的颜色,并将该颜色分配给当前像素。如果没有这样的相邻像素,则该解压器给当前像素分配白色。
-当该解压器遇到代码TOPR(代码值1001)时,该解压器复制来自先前被解压的东北方相邻像素的颜色,并将该颜色分配给当前像素。如果没有这样的相邻像素,则该解压器给当前像素分配白色。
-当该解压器遇到代码TOP(代码值101L)时,该解压器收集来自数据块的所有紧随的TOP代码,并利用上面描述的方法确定行程长度R。然后,给从当前像素开始的R个像素的每一个分配来自其北方的相邻像素的颜色。如果该解压器正在第一扫描行上进行解压,则所有R个像素都分配为白色。
-当该解压器遇到代码LEFT(代码值110L)时,该解压器收集来自代码块的所有紧随的LEFT代码并利用上面描述的方法确定行程长度R。然后,给从当前像素开始的R个像素分配来自其左边的相邻像素的颜色。如果当前像素是扫描行上的第一像素,则给所有R个像素都分配白色。
-当该解压器遇到代码NEW(代码值111L)时,该解压器收集来自代码块的所有紧随的NEW代码,并利用上面描述的方法确定行程长度R。然后,该解压器从该数据块中取出R个未被压缩的颜色值,并将这些颜色值分配给从当前像素开始的随后的R个像素。如果行程长度R大于1,则该解压器将N设为1。
压缩方法的评估为了评估压缩方法的性能,使用压缩器来压缩一系列图像,并将结果(压缩时间和压缩系数)与用JPEG-LS压缩相同图像的结果进行比较。也将压缩时间与采用Adobe PostScript解释器生成这些页面的时间进行比较。
所有测试是在2.4GHz的Pentium 4上完成的。在AdobePostScript解释器上运行PostScript测试文件,并压缩得到的600dpi连续色调CMYK位图。该位图的大小是A4(4958×7040像素),得到未被压缩的大小为136345千字节。在PostScript解释器上,DeviceRGB的解释被设为sRGB,而DeviceCMYK的解释被设为欧洲地区墨水标准(Euroscale)。使用了欧洲地区墨水标准输出简档。
所用的PostScript测试文件包含复杂但逼真的页面描述。已经包括了特别构造的PostScript文件(chrisA4.ps),该PostScript文件包含带有许多非常精细的细节(像片镶嵌页面,其包含由许多非常小的图像组成的页面大小的图像)的极为复杂的页面。这不是非常逼真的页面,但该页面被用来探究可压缩性的边界。
为了将新压缩器的压缩性能与无损图像压缩中的现有技术进行比较,将本发明的结果与JPEG-LS产生的那些结果进行比较。
JPEG-LS基于HP的LOCO-1算法,并且已经由ISO/ITU-T选为连续色调图像的无损压缩的标准。在M.Weinberger、G.Seroussi、G.Saipiro的“LOCO-1A Low Complexity,Context-Based,Lossless Image Compression Algorithm”中给出了该算法的说明,该文献可在www.hpl.hp.com/loco/HPL-98-193R1.pdf上得到。
与其它无损连续色调图像压缩算法(无损JPEG、CALIC、FELICS)相比,JPEG-LS相对简单而且快速,并且JPEG-LS产生更好的压缩。JPEG-LS的压缩性能比JPEG2000无损(参见Diego Santa Cruz、Touradj Ebrahimi的“An analiticals tudy of JPEG 2000functionalities(JPEG 2000功能性的分析性研究)”,其可在www.jpeg.org/public/wgln1815.pdf上得到)稍好一些。
已经为Adobe photoshop选择了JPEG-LS插件程序来测试JPEG-LS。这是报告页面需要的压缩时间的有效实现方案。该JPEG-LS插件程序可在http://www.hpl.hp.com/loco上得到。注意,JPEG-LS已经被设计为通用的无损连续色调图像压缩技术,不专用于压缩PDL生成的连续色调图像。
在下面的表4中呈现了详细的测量结果。
表4测量结果第一列列出了测试页的名称。名称没有特殊的意义,除了这些名称正好是文件以其被存储的名称。第二列表示现有技术的AdobePostScript解释器将页面的PostScript描述转换为要被压缩的图像的执行时间。第三列表示新的压缩方法的执行时间,而第四列表示得到的被压缩数据量。第五列表示JPEG-LS压缩器的执行时间,而第六列表示得到的被压缩数据量。该表的最后一行表示所有测试图像的平均值。
新方法的平均压缩时间为0.6秒,该平均压缩时间是PostScript解释器生成页面的执行时间的大约20%。JPEG-LS的平均压缩时间是8.12秒,该平均压缩时间比新压缩方法慢大约13.5倍。从这些结果中也清楚,由于与PDL解释时间相比太慢,所以JPEG-LS并没有满足我们的要求。
通过新压缩所产生的被压缩数据量平均小于JPEG-LS所产生的量。对于包含分辨率等于设备分辨率的样本图像的一些非常复杂的页面(“chrisA4.ps”和“model-puzzle.ps”)来说,JPEG-LS比新方法产生更少的被压缩数据,但是这种页面在实践中很少。
用硬件实现该压缩格式有允许用硬件简单地实现解压器的若干属性。
当长度为3的NEW代码后面直接跟着NEW6或者NEM6代码时,该格式的最大局部展开发生。该NEW代码占用2个代码半字节+3*8个数据半字节。该NEW6或者NEM6代码占用1个代码半字节+6个数据半字节。这意味着,在这种情况下产生4个CMYK像素值总共需要33个半字节,因此最坏情况的局部展开为1/32=3.1%。这意味着,必须处理未被压缩的数据的速度最多比产生未被压缩像素的速度高3.1%。
已经以每个代码产生至少一个像素的这种方式构造了该压缩格式。
对于需要整体解释连续出现的代码的代码LEFT、TOP和NEW,仅仅特殊的情况发生。当已经解释了这些代码之一的第一代码半字节时,明确了连续颜色值的来源-对于代码LEFT所有代码与左边颜色相同-对于代码TOP所有代码来自目标像素之上的像素-对于代码NEW所有代码来自被压缩的数据流。
在那一点,可以开始将颜色转移到新像素,并且可以与代码解释并行地进行。代码解释器可进行组合连续代码,直到遇到不同的代码。然后知道了有多少像素必须被生成。由于由这些代码所产生的像素的数量增加得比需要编码这个数量的半字节的数量增加得快,所以该代码解释器将总是在已经转移了那个数量的新颜色值之前,结束确定像素数量。因此,在已经产生正确数量的像素之后,该代码解释器停止将颜色值转移到新像素。
现在将描述本发明的第二实施方式,该第二实施方式是用于连续色调黑白(灰度值)图像的压缩方法。
在第二实施方式中所使用的机制与上述第一实施方式的那些机制相同,即-一行接一行地完成压缩。对于每一行来说,被压缩的数据由2个部分组成,这两个部分即“数据块”和“代码块”。
-对于每个像素或者每组相同像素来说,在代码块中生成了代码或一系列代码。对于某些代码(NEWi代码)来说,在数据块中存储的附加数据是必要的。在每个扫描行的末端,把数据块和代码块放在一起,以生成当前行的被压缩的数据。
第二实施方式使用减少的代码组并且是面向位的(与面向半字节的第一实施方式相对)。更特别地,代码总是长3个位,但数据块中的相关联的部分具有可变的长度(位的数量)。在第二实施方式中所使用的代码如下被定义。
-代码TOP、LEFT和FREV具有与第一实施方式中的意义相同的意义这些代码分别将像素的行程编码为与上方、左边像素相同的颜色或先前颜色。
-代码NEW编码新的颜色;尽管行程长度定义机制不同于第一实施方式的行程长度定义机制,这个代码仍能够定义相同像素的行程,如稍后将解释的那样。
-代码NEW1到NEW4和NEW3*以及NEW4*分别编码灰度值与预测值(在本实例中为左边的像素)的灰度值相差1到4个位或者2个或3个位的量的像素或者相同像素的行程(一次转换为正整数)。
代码字长3个位,而且可以采用下表5中所列出的任意值。
表5代码概要代码的定义如下-LEFT和TOP代码没有相关联的数据部分。一起解释几个相同的代码,而“L”位被用来以与第一实施方式几乎相同的方式编码相对应像素的数。
-PREV代码没有相关联的数据部分。该PREV代码生成具有当前先前颜色的像素。
-NEW1/NEW2/NEW3/NEW4代码当要被编码的当前像素不能由LEFT、TOP或者PREV代码表达时,计算当前像素和左边像素的颜色值之间的差额,并随后(通过与第一实施方式中相同的机制)将该差额转换为正整数。如果这个差额(8位整数)在截断先导零位之后能够适合1、2、3、或者4位,则选择相对应的NEWi代码。另外,形成相关联的数据部分,该相关联的数据部分对应于该差额并因此分别长1、2、3或4个位。代码NEW1到NEW4产生像素的行程,在处理文件期间维持该像素行程的长度(称为N)。
-INC/NEW3*/NEW4*代码当前行程长度值N开始被设为1,并且利用INC代码来增加1,该INC代码也产生左边颜色的像素。当该值太高时(即,当一组N个像素不适合输入数据时),N可被复位为1为此,如以初始格式使用NEWi*代码。由于NEWi*代码具有以0开始的相关联的数据部分作为MSB(最高有效位),所以解码器将识别出这些代码。
-NEW代码当不能利用先前的代码之一来编码新的颜色值时,使用NEW代码。该NEW代码的数据部分包含新的灰度值(8位),但是也可以如下面将说明的那样包含行程长度信息。最后,连续的至少两个NEW代码以与第一实施方式中的方式相同的方式将N的值复位为1。
这些代码利用其数据部分来区分代码000NEW1/PREV与这个代码相关联的数据长1个位。这意味着,当前像素与其左边像素之间的差额仅用1个位来表达。数据位被设为0的情况是不可能的,因为这将意味着两个像素之间没有差别。从而,这种可能性被用来编码PREV代码。
代码001NEW2/NEW与这个代码相关联的数据长2个位。这意味着,当前像素与其左边像素之间的差额可用2个位表达。数据部分的MSB(最高有效位)为0的情况被用于NEW代码。在那种情况下,2位长的数据部分的LSB(最低有效位)是被用来以与LEFT和TOP代码中的L位几乎相同的方式(尽管在那些代码中,该L位位于代码本身中)将若干个NEW代码聚集在一起的行程长度位。在被聚集在一起的若干个NEW代码的情况下,聚集所有NEW代码的这2个位的数据部分,并将这些数据部分置于数据块中,以及然后将所有NEW颜色值(每个8位)置入数据块中。
然而,注意,取决于该NEW颜色值,跟随NEW代码的代码NEW2可能导致被解码器误解。因此,防止代码NEW2跟随任何NEW代码。
代码010NEW3/NEW3*这个代码的相关联的数据部分长3个位。当在当前像素与其左边像素之间的差额用3个位来表达时,使用这个代码。NEW3*代码是具有其MSB被设为0的数据部分的NEW3代码。该NEW3*代码被用来将N值复位为1,并利用这2个附加数据位编码差额。由于在这种实施方式中,NEW2*代码不可用,该NEW3*也被用于能够用1个位表达的差额。
代码011NEW4/NEW4*/INC这个代码的相关联的数据部分长4个位。当在当前像素与其左边像素之间的差额用4个位来表达时,使用这个代码。NEW4*代码是具有其MSB被设为0的数据部分的NEW4代码。该NEW4*代码被用来将N值复位为1,并用这3个附加数据位来编码差额。INC代码是具有等于0(所有4个位)的数据部分的NEW4代码。该INC代码被用来将N值增加1,并生成颜色与左边像素的颜色相同的像素。
代码10LLEFT
没有与这个代码相关联的数据。当要编码的像素与其左边像素颜色相同时,使用该代码。“L”位是被用来将若干个LEFT代码聚集在一起的行程长度位(与第一实施方式中的机制相同)。
代码11LTOP没有与这个代码相关联的数据。当要编码的像素与其上方像素颜色相同时,使用该代码。“L”位是被用来将若干个TOP代码聚集在一起的行程长度位(与第一实施方式中的机制相同)。
图9示出了根据本发明的第二实施方式的通用编码过程的流程图。尽管由于使用较少的代码而丢失了某些步骤,这个过程还是很大程度上与参考图8所描述的第一实施方式相类似。由于在上文中对代码说明的基础上很容易理解,所以这里省略了图9的完整说明。
该过程的单独步骤已经根据图8中的相对应步骤被编号。已经给图9中的参考编号设置了撇号。
图10描述了根据第二实施方式形成过程的基本NEWi代码,如图9中用参考编号S22’指出的那样。由于这个过程仅在一个颜色通道上工作,所以第一实施方式的若干步骤是多余的。剩下的那些步骤已经用如图6中的相对应的参考编号来进行编号(设置了撇号),并在下面列出。对于每个步骤的详细解释,读者可以查阅上文中图6的说明以及对第二实施方式的代码的说明。
在步骤S1’中访问考虑中的像素实际值,而在步骤S2’中根据相邻像素(例如,左边的像素)确定预测值。然后,在步骤S5’中确定实际值与预测值的差额,而在步骤S6’中将这个值转换为针对小差额小而针对较大差额较大的正整数。实际的转换可以基于可能在用通用的或专用的转换数据组之前已经填充好了的查询表(LUT)的使用。
然后,通过切断先导零位来将得到的差值截断(S8’),而且在步骤S9’中将剩余的非零位编码到NEWi代码中,如上文中所述的那样。
上面已经详细描述了其两种实施方式的本发明为无损压缩提供了新的压缩方法和格式,并为(优选地)PDL生成的连续色调页面图像数据提供了解压缩方法。
与象JPEG-LS那样的现有技术无损图像压缩算法相比,如针对一组有代表性的测试文件所测量的那样,该新方法平均更快。这允许在与被用来运行PDL解释器相同的计算机上实现压缩,而无需额外的硬件并且没有大的性能损失。
本发明是如此描述的,显而易见可以多种方式改变。对本领域的技术人员来说是显而易见的这种变型和修改意图被包括在随后的权利要求
的范围内。
例如,尽管该方法针对PDL生成的图像被优化,该方法也可被用来压缩来自其它来源的图像。
此外,上面的说明集中于压缩每个颜色通道8位的CMYK彩色图像和8位连续色调黑白图像。但是本领域的任何技术人员将意识到,可以修改该方法来压缩多种其它的连续色调图像,诸如RGB连续色调彩色图像、每个颜色值超过4个通道的连续色调彩色图像或者针对颜色通道的精度不同于8位的图像,或者其它连续色调单色(灰阶)图像。
同样地,可以用其它的、类似的代码代替如第一实施方式和第二实施方式中所描述的实际代码形式,而且第一实施方式的那些代码也可被用于第二实施方式中,并且反之亦然。
权利要求
1.一种压缩位于扫描行上的像素的数字连续色调图像的方法,每个像素的像素值由至少一个颜色通道值定义,颜色通道值具有B个位(B>1)的精度,该方法产生被压缩的图像数据并且包括,对于要被编码的当前像素,所述当前像素具有实际像素值,利用固定的规则,基于来自相同图像的至少一个先前处理过的像素的像素值预测一预测像素值,基于所述预测像素值和要被编码的所述当前像素的实际像素值的差值来确定一差别参数,以及对于值等于零的不中断序列的最高阶位的存在,检查所述差别参数,去除至少一部分所述最高阶零位,并且,如果剩余预定限制内的多个位,则生成具有预定的固定长度的压缩代码,所述代码表示剩余位的数量。
2.根据权利要求
1所述的方法,其中,压缩代码包括代码类型名称符和多个剩余位名称符。
3.根据权利要求
1所述的方法,还包括除了所述压缩代码之外,生成至少一个数据代码,并且将所述剩余位包括到一个或多个数据代码中。
4.根据权利要求
1所述的方法,其中基于所述预测像素值与实际像素值的差值来确定差别参数的步骤包括将所述差值映射到所映射的差值上,所述所映射的差值对于每个可能的差值都是唯一并且对于所述差值的小绝对值具有小值。
5.根据权利要求
3所述的方法,其中所述压缩代码和所述数据代码全部包括相等的、固定数量的位。
6.根据权利要求
5所述的方法,其中所述代码每个包括4个位。
7.根据权利要求
3所述的方法,其中所述数据代码包括可变数量的位
8.根据权利要求
1到7中的任何一个所述的方法,其中,所述像素值由至少2个颜色通道来定义,每个颜色通道具有B个位的精度,其中,在确定色差参数的步骤中,根据预定的方案首先通过去相关转换来转换每个像素值。
9.根据权利要求
1到8中的任何一个所述的方法,其中,所述像素值由至少2个颜色通道来定义,每个颜色通道具有B个位的精度,其中,在确定色差参数的步骤中还包括根据预定的置换方案,通过连接每个颜色通道的所述差值的位,分别组合每个颜色通道的差值或者每个颜色通道的转换后的像素值的差值。
10.根据权利要求
1所述的方法,其中所述相同扫描行上的先前被编码的相邻像素的像素值被用作所述预测像素值。
11.根据权利要求
1所述的方法,还包括检查要被编码的当前像素的实际像素值是否等于先前被编码的像素的实际像素值,该先前被编码的像素位于相同扫描行上并且与当前像素隔着具有不同于当前像素的像素值的像素值的一个像素,或者隔着都具有相等的、不同于当前像素的像素值的像素值的多个像素,并且如果这样,则为那个当前像素生成专用的通用代码。
12.根据权利要求
1所述的方法,还包括行程长度编码步骤,其中,要被压缩的当前像素与其先前处理过的相邻像素中的特别预定的一个像素进行比较,并且如果所述像素的像素值相等,则针对下一个要被编码的像素重复所述比较步骤,从而最大化相同扫描行上的像素的行程长度,该相同扫描行上的像素的值分别等于特别预定的相邻像素的值,并且针对那些像素生成行程长度码,所述行程长度码包括一个或多个固定长度的位组,每个位组包括代码类型名称符和行程长度名称符,该行程长度名称符以位表示法详细说明所述行程长度编码步骤的行程长度。
13.根据权利要求
12所述的方法,其中,当行程长度位表示法比一个行程长度名称符中能够容纳的长时,在连续位组的行程长度名称符上划分行程长度位表示法。
14.一种解压被压缩的图像数据的方法,其包括检查被包括在代码中的代码类型名称符,并且如果所述代码类型名称符将该代码命名为压缩代码,则针对要从涉及压缩代码的数据代码中读取的多个剩余位检查多个剩余位名称符。
15.根据权利要求
14所述的解压被压缩的图像数据的方法,还包括检查被包括在当前代码中的代码类型名称符,并且如果所述代码类型名称符将该代码命名为行程长度码,则搜索具有与当前代码相同的代码类型名称符的所有紧随的代码,检查因此被发现的代码中所包括的行程长度名称符并通过连接所述行程长度名称符来形成行程长度。
16.一种计算机程序产品,其包括用于执行根据权利要求
1到13中的任何一个所述的方法的计算机可读代码。
17.一种用于压缩位于扫描行上的像素的数字连续色调图像的设备,每个像素的像素值由至少一个颜色通道值来定义,颜色通道值具有B个位(B>1)的精度,该设备产生被压缩的图像数据并且包括,编码模块,用于编码当前像素,所述当前像素具有实际像素值,预测器,用于利用固定的规则,基于至少一个来自相同图像的先前处理过的像素的像素值预测一预测像素值,差别参数确定器,用于基于所述预测像素值和要被编码的所述当前像素的实际像素值的差值来确定差别参数,和检查模块,用于对于值等于零的不中断序列的最高阶位的存在而检查该差别参数,切断模块,用于去除至少一部分所述最高阶零位,并且,如果剩余在预定限制内的多个位,则该设备包括用于生成具有预定固定长度的压缩代码的压缩代码生成器,所述代码包括代码类型名称符和表示剩余位数量的多个剩余位名称符。
18.根据权利要求
17所述的设备,还包括行程长度检查器,用于将要被压缩的当前像素与其先前处理过的相邻像素中的特别预定的一个像素进行比较,并且如果所述像素的像素值相等,则针对下一个要被编码的像素重复所述比较步骤,从而最大化相同扫描行上的像素的行程长度,相同扫描行上的像素的值分别等于其特别预定的相邻像素的值,以及行程长度码生成器,用于为那些像素生成行程长度码,那些像素由所述行程长度检查器通过在所述行程长度码中包括一个或多个固定长度的位组来找到,每个位组包括代码类型名称符和行程长度名称符,该行程长度名称符以位表示法详细说明所述行程长度编码步骤的行程长度。
19.根据权利要求
18所述的设备,其中,当行程长度位表示法比一个行程长度名称符中能够容纳的长时,所述行程长度码生成器在连续位组的行程长度名称符上划分行程长度位表示法。
专利摘要
一种压缩位于扫描行上的像素的数字连续色调图像的方法,每个像素的像素值由至少一个颜色通道值定义,颜色通道值具有B个位(B>1)的精度,该方法产生被压缩的图像数据并且包括针对要被编码的当前像素,所述当前像素具有实际像素值,利用固定的规则,基于来自相同图像的至少一个先前处理过的像素的像素值预测一预测像素值;基于所述预测像素值和要被编码的所述当前像素的实际像素值的差值确定差别参数;并对于值等于零的不中断序列的最高阶位的存在,检查该差别参数;去除至少部分所述最高阶零位;并且,如果剩余在预定限制内的多个位,则生成具有预定的固定长度的压缩代码,所述代码表示剩余位的数量。为了以在实际压缩过程中能够更有效地压缩图像数据的方式来准备图像数据,公开了若干图像数据的预处理步骤。
文档编号H04N1/417GK1993976SQ200580025638
公开日2007年7月4日 申请日期2005年7月26日
发明者M·L·M·卢特默, P·索布卡克, J·马利克 申请人:奥西-技术有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1