图像处理装置、图像处理方法、程序以及存储介质的制作方法

文档序号:2744022阅读:173来源:国知局
专利名称:图像处理装置、图像处理方法、程序以及存储介质的制作方法
技术领域
本发明涉及,对图像进行编码或者对已编码的图像进行解码的图像处理装置、图像处理方法、程序以及存储介质。
背景技术
在将排列输出称之为墙纸或纹理等的相同背景图案的应用程序所输出的打印数据展开成图像数据并进行打印的情形中,为了减小数据大小对图像数据进行压缩时,在能够很好地压缩背景图案自身的情况下,很好地压缩整个图像数据就容易。但是,背景图案其自身不怎么能很好地压缩的情况也不少,在这样的情况下,很好地压缩整个图像数据就未必容易。
图10是一例这样的打印数据,如图11所示,通过排列相同的图案来构成背景。
在现有的压缩技术中有,例如行程编码(run length encoding)、或者Delta-law编码那样的编码方法,其利用象素值成为与邻近的象素同值的倾向强的特点,参照邻近的象素,如果值相同就进行压缩。
另外还有如LZ77编码、或者LZ78编码那样的编码方法,其通过参照大范围的象素来检测值为相同的象素序列,并利用此进行压缩。利用这些方法,由于能够检测出在相当隔开的位置上的、具有相同值的象素并利用到压缩中,就能够很好地压缩上述的墙纸等。
另外还有如JPEG编码那样,能够很好地压缩背景图案其自身的编码方法。
另外,在日本专利申请公开2000-76424中说明了检测纹理的周期来进行压缩的方法。
但是,利用上述行程编码、或者Delta-law编码,由于在压缩上述墙纸等的情况下,该重复周期为例如1024象素那样大的值,就会有只参照邻近的象素则不能很好地压缩这样的缺点。
另外,利用上述LZ77编码、或者LZ78编码,由于在编码时要参照大范围的象素,就会有计算量大,编码所需时间长的缺点。另外,利用这些方法,由于在解码时要参照大范围的象素,就会有需要大容量的缓冲存储器这样的缺点,例如,就成为在使打印机具有解码功能的情况下成本增加的原因。
另外,利用上述JPEG,由于编码时的计算量大,就会有编码所需时间长的缺点。另外,利用此方法,也会有解码时的计算量大这样的缺点,例如,就成为在使打印机具有解码功能的情况下成本增加的原因。
另外,利用上述日本专利申请公开2000-76424,由于通过傅立叶分析或者自相关系数,就需要使用背景图案的数据进行庞大数量的计算,故不能高速地进行编码。
本发明就是鉴于以上问题而完成的,目的是在对具有周期性的图像、特别是墙纸等排列有背景图案的图像数据进行编码时,更高速地、且以更高压缩率来压缩整个图像。
另外本发明的其他目的是,减小对已编码的墙纸等排列有背景图案的图像的编码进行解码的解码电路的电路规模,且进行无需大量的缓冲存储器的,能够以低成本构成的解码。
另外,作为压缩数据的方法还有在与前面的数据序列相一致的情况下,对一致的数据的长度进行编码,在不一致的情况下,对数据自身进行编码的方法。
例如,在LZ77压缩法中,当与预定大小的移动窗口内的任意位置的数据相一致的情况下,对一致的数据序列的位置和一致的长度进行编码,在不一致的情况下对数据自身进行编码。
另外,在压缩图像数据的情况下,还有在预先确定的一处或者多处的位置,例如在与欲进行编码的数据的上方或者左侧的位置的数据序列相一致的情况下,对一致的长度进行编码,在不一致的情况下对数据自身进行编码的方法。
另一方面,如USP5450562所示,还有将最新出现的数据存储在高速缓冲存储器中,在高速缓冲存储器命中了的情况下,通过对存储有已一致的数据的索引进行编码,来编码成与对数据自身进行编码的情况相比更短的代码的方法。
但是在上述的方法中,在数据序列相一致的部分少的情况下对数据自身进行了编码的代码变多,就会有压缩率显著降低这样的缺点。
另一方面,在USP5450562所公开的方法中,即使在与前面的数据序列相一致的情况下也不能将该冗余性利用到压缩中,得到高的压缩率是困难的。
本发明就是鉴于以上问题而完成的,目的是在与前面的图像数据序列相一致的情况下利用该冗余性得到高的压缩率,同时即使在图像数据序列一致的部分少的情况下,也极力抑止压缩率的降低。
另外,在将输出称之为墙纸或纹理等的背景图案中重复的字符或图形应用程序所输出的打印数据展开成图像数据并进行打印的情形中,当为了减小数据大小对图像数据进行压缩时,在能够很好地压缩背景图案自身的情况下,很好地压缩整个图像数据就容易。
但是,背景图案其自身不怎么能很好地压缩的情况也多,在这样的情况下,很好地压缩整个图像数据就未必容易。作为这样的打印数据的一例如图10所示。在现有技术中,尽管能够很好地压缩字符部分的图像数据,但由于背景图案的部分的图像数据有不规则的图案,与邻近的图像数据的相关性低,所以不怎么能很好地压缩。由于背景图案一般面积都大,占整个页的比例高,在背景图案不能很好地压缩的情况下,页整体也不能很好地压缩。
本发明就是鉴于以上问题而完成的,其目的在于,提供一种包含编码方法以及对该编码进行解码的解码方法的图像处理方法,在压缩有背景图案的图像数据时,即使在背景图案与邻近的图像数据的相关性低的情况下,也能够很好地进行压缩。
另外以往,在压缩图像数据时,一般是利用在水平方向和垂直方向上持有相同象素值的象素相连续的倾向高的特点,参照与关注位置的相关性高的,正左侧或者正上方的位置来进行编码。
另外,在欲进行压缩的图像数据是施加了利用抖动矩阵(dithermatrix)的减色处理的图像数据的情况下,由于在施加减色处理时对邻接的象素适用不同的运算,与邻近的象素的相关性还不如与仅间隔了减色处理所使用的抖动矩阵的周期的象素的相关性高。因此在这种情况中就有,当已知减色处理所使用的抖动矩阵的周期的情况下,参照从关注位置仅间隔抖动矩阵的周期的、左侧或者上方的位置来进行编码的方法。
但是,利用上述方法,由于在图像数据的周期和抖动矩阵的周期不同的情况下,关注位置和参照位置的相关性不怎么高,就会有不能高效率地进行压缩的缺点。例如,在欲压缩的图像数据是在对分辨率不同的原图像施加分辨率变换以后施加了减色处理的图像数据的情况下,就会发生这样的问题。
本发明就是鉴于以上问题而完成的,目的是高效率地,特别是以短的代码对图像进行编码。

发明内容
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对图像进行编码的图像处理装置,包括减色装置,对图像使用预定大小的矩阵来施加减色处理;周期检测装置,检测上述图像的图案的周期;以及编码装置,使用依照上述周期和/或上述矩阵的大小的象素的相对位置关系,对施加了上述减色处理的图像进行编码。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对已编码的图像进行解码的图像处理装置,包括保存装置,保存已解码的象素序列的预定行数;解码装置,对包含在编码数据中的命令群进行解码;以及解码装置,依照由上述解码装置所解码的命令从上述保存装置读取象素序列,将所读取的象素序列保存到上述保存装置,同时将所读取的象素序列依次输出到预定的缓冲器,进而,在由上述解码装置所解码的命令是关于图像的行方向的命令的情况下,依照上述图像的图案的周期变更从上述保存装置进行读取的位置。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种对图像进行编码的图像处理方法,包括减色步骤,对图像使用预定大小的矩阵施加减色处理;周期检测步骤,检测上述图像的图案的周期;以及编码步骤,使用依照上述周期和/或上述矩阵的大小的象素的相对位置关系,对施加了上述减色处理的图像进行编码。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种对已编码的图像进行解码的图像处理方法,包括解码步骤,将已解码的象素序列的预定行数保存到预定的保存装置,对包含在编码数据中的命令群进行解码;解码步骤,依照由上述解码步骤所解码的命令从上述保存装置读取象素序列,将所读取的象素序列保存到上述保存装置,同时将所读取的象素序列依次输出到预定的缓冲器,进而,在由上述解码步骤所解码的命令是关于图像的行方向的命令的情况下,依照上述图像的图案的周期变更从上述保存装置进行读取的位置。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种压缩图像的图像处理装置,包括颜色变换装置,对图像使用抖动显示阵进行颜色变换处理,生成各种颜色的图像数据;以及命令输出装置,对每种颜色的图像数据,比较压缩对象的象素数据序列,和与该象素数据序列有预定的位置关系的象素数据序列,在输出表示相一致的象素数据序列的长度的命令的同时输出表示该比较内容的命令,生成各种颜色的图像数据的编码数据。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种压缩图像的图像处理装置,包括颜色变换装置,对图像使用抖动显示阵进行颜色变换处理,生成各种颜色的图像数据;编码装置,压缩上述各种颜色的图像数据并进行编码;以及输出装置,输出由上述编码装置编码的编码数据;进而上述编码装置备有,第1命令输出装置,比较压缩对象的列的象素数据序列,和与该列有预定的位置关系的列的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;第2命令输出装置,在上述长度为0的情况下,比较压缩对象的列的象素数据序列,和在该列中有预定的位置关系的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;保存装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,保存压缩对象的列的象素数据序列的一部分或者全部;第3命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,比较压缩对象的象素数据和保存在上述保存装置中的象素数据序列,作为上述压缩对象的象素数据,在输出表示相一致的象素数据在上述保存装置中的位置的命令的同时输出表示上述比较内容的命令;以及第4命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,且在由上述第3命令输出装置输出的比较结果判断为与压缩对象的象素数据相一致的象素数据不存在于上述保存装置的情况下,输出表示压缩对象的象素数据的命令;并生成包含由上述第1至第4命令输出装置的一部分或者全部输出的命令的编码数据。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对编码数据进行解码的图像处理装置,包括第1保存装置,保存已解码的象素数据序列;第2保存装置,将已解码的象素数据序列移位预定个数进行保存;第3保存装置,保存包含在上述编码数据中的原始象素数据序列;以及还原装置,确定对在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列的比较结果进行表示的各种命令的内容,依照所确定的内容使用保存在上述第1保存装置或者第2保存装置或者第3保存装置中的象素数据来还原图像。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种压缩图像的图像处理方法,包括颜色变换步骤,对图像使用抖动显示阵进行颜色变换处理,生成各种颜色的图像数据;以及命令输出步骤,对每种颜色的图像数据,比较压缩对象的象素数据序列,和与该象素数据序列有预定的位置关系的象素数据序列,在输出表示相一致的象素数据序列的长度的命令的同时输出表示该比较内容的命令,生成各种颜色的图像数据的编码数据。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种压缩图像的图像处理方法,包括颜色变换步骤,对图像使用抖动显示阵进行颜色变换处理,生成各种颜色的图像数据;编码步骤,压缩上述各种颜色的图像数据并进行编码;以及输出步骤,输出由上述编码装置编码的编码数据;进而上述编码步骤包括,第1命令输出步骤,比较压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;第2命令输出步骤,在上述长度为0的情况下,比较压缩对象的列的象素数据序列和在该列中有预定的位置关系的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;保存步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,将压缩对象的列的象素数据序列的一部分或者全部保存到预定的保存装置;第3命令输出步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,比较压缩对象的象素数据和由上述保存步骤所保存的象素数据,作为上述压缩对象的象素数据,在输出表示相一致的象素数据序列由上述保存步骤所保存的位置的命令的同时输出表示上述比较内容的命令;以及第4命令输出步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,且在由上述第3命令输出步骤输出的比较结果判断为与压缩对象的象素数据相一致的象素数据没有由上述保存步骤进行保存的情况下,输出表示压缩对象的象素数据的命令;并生成包含由上述第1至第4命令输出步骤的一部分或者全部输出的命令的编码数据。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种对编码数据进行解码的图像处理装置所运行的图像处理方法,所述图像处理装置备有保存已解码象素数据序列的第1保存装置;将已解码的象素数据序列移位预定个数进行保存的第2保存装置;以及保存包含在上述编码数据中的原始的象素数据序列的第3保存装置;该图像处理方法,确定对在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列的比较结果进行表示的各种命令的内容,依照所确定的内容使用保存在上述第1保存装置或者第2保存装置或者第3保存装置中的象素数据来还原图像。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对多个页的图像数据进行编码的图像处理装置,包括第1存储器,保存欲进行编码的页的图像数据;编码装置,对保存在上述第1存储器中的图像数据进行编码;以及第2存储器,保存前一页的图像数据;上述编码装置参照保存在上述第2存储器中的前一页的图像数据进行编码。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对已编码的多个页的图像数据进行解码的图像处理装置,包括解码装置,对编码进行解码;第1存储器,保存由上述解码装置所解码的图像数据;再编码装置,对保存在上述第1存储器中的图像数据进行编码;第2存储器,保存由上述再编码装置所编码的代码;以及再解码装置,对保存在上述第2存储器中的编码进行解码;上述解码装置,在对参照前一页的图像数据的编码进行了解码情况下,参照上述再解码装置所解码的图像数据进行解码,同时上述再编码装置,仅参照欲进行编码的页的图像数据进行编码。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种对多个页的图像数据进行编码的图像处理装置所运行的图像处理方法,所述图像处理装置备有保存欲进行编码的页的图像数据的第1存储器;以及保存前一页的图像数据的第2存储器;该图像处理方法包括编码步骤,对保存在上述第1存储器中的图像数据进行编码;上述编码步骤参照保存在上述第2存储器中的前一页的图像数据进行编码。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种备有第1存储器和第2存储器,对已编码的多个页的图像数据进行解码的图像处理装置所运行的图像处理方法,包括解码步骤,对编码进行解码;第1保存步骤,将由上述解码步骤所解码的图像数据保存到上述第1存储器;再编码步骤,对保存在上述第1存储器中的图像数据进行编码;第2保存步骤,将由上述再编码步骤所编码的代码保存到第2存储器;以及再解码步骤,对保存在上述第2存储器中的编码进行解码;上述解码步骤,在对参照前一页的图像的编码进行了解码的情况下,参照由上述再解码步骤所解码的图像数据进行解码,同时上述再编码步骤,仅参照欲进行编码的页的图像数据进行编码。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种对图像进行编码的图像处理装置,包括编码装置,比较关注数据后续的数据序列,和参照数据后续的数据序列,将相一致的长度的该关注数据后续的数据序列,编码成依照该关注数据和该参照数据的位置关系的编码命令;置换装置,在上述关注数据和上述参考数据为特定的位置关系的情况下,当由上述编码装置编码后,将对应于该特定的位置关系的编码命令置换成代码的长度更短的编码命令。
为了达到本发明的目的,提供如下的图像处理装置。
即,一种基于由编码命令所组成的编码数据来解码图像的图像处理装置,包括保存装置,保存已解码图像的数据;多个解码装置,通过读出保存在上述保存装置中,依照编码命令的位置上的数据,将该数据作为依照该编码命令的解码数据输出到外部;保持装置,保持依照将要解码的编码命令进行变化的值;由上述多个解码装置中的,依照上述保持装置所保持的值的解码装置,进行解码处理。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种对图像进行编码的图像处理方法,包括编码步骤,比较关注数据后续的数据序列,和参照数据后续的数据序列,将相一致长度的该关注数据后续的数据序列,编码成依照该关注数据和该参照数据的位置关系的编码命令;置换步骤,在上述关注数据和上述参考数据为特定的位置关系的情况下,当由上述编码步骤编码后,将对应于该特定的位置关系的编码命令置换成代码的长度更短的编码命令。
为了达到本发明的目的,提供如下的图像处理方法。
即,一种基于由编码命令组成的编码数据来解码图像的图像处理方法,包括保存步骤,将已解码图像的数据保存到预定的保存装置;多个解码步骤,通过读出保存在上述保存装置中,依照编码命令的位置上的数据,将该数据作为依照该编码命令的解码数据输出到外部;保持步骤,将依照要解码的编码命令进行变化的值保持到预定的保持装置;由上述多个解码步骤中的,依照上述保持装置所保持的值的解码步骤,进行解码处理。
本发明的其他特征以及优点,通过以附图为参照的下面的说明会弄明白。这里,在附图中,相同或者同样的结构附加相同的参照标号。


附图包含在说明书中,构成其一部分,用于图示本发明的实施形式,与说明书的记述一起用于说明本发明的原理。
图1是表示在打印图像时所使用的软件群和打印机之间关系的概念图。
图2是表示打印机1711的基本构成的框图。
图3是表示对一例包含在图1所示的打印机驱动器4所生成的编码数据中的各编码进行说明的表的图。
图4是表示对一例计数编码进行说明的表的图。
图5是说明图3和图4所示的各编码的使用例的图。
图6是打印机驱动器4所进行的主处理的流程图。
图7是表示步骤S4中的处理细节的流程图。
图8是表示步骤S10中的处理细节的流程图。
图9A和图9B是表示步骤S11中的处理细节的流程图。
图10是表示一例打印数据的图。
图11是表示构成图10的打印数据的各图案的图。
图12是表示解码电路13的详细的构成的框图。
图13是表示编码前或者解码后的图像数据的构成的图。
图14是说明图13所示的图像数据是如何保存在行缓冲器31的各个地址上的图。
图15是说明图13所示的图像数据在什么样的定时被处理的图。
图16是表示控制电路15所执行的打印控制处理步骤的流程图。
图17是表示本发明的实施形式中图像处理装置的基本构成的图。
图18是表示位图管理表的构成例的图。
图19是表示本发明第3实施形式中的打印机1711的基本构成的框图。
图20是表示对一例本发明第3实施形式中的打印机驱动器4所生成的编码数据中所包含的各编码进行说明的表的图。
图21是表示对一例接续在COPY UP命令、COPY LEFT命令后的、表示长度的编码(<字节数>)进行说明的表的图。
图22是说明图像数据、和利用RAW命令以及CACHE命令将此图像数据保存到高速缓冲存储器的方法的图。
图23是说明图像数据、和通过COPY UP命令以及COPY LEFT命令对此图像数据进行编码的方法的图。
图24是本发明第3实施形式中的打印机驱动器4所进行的主处理的流程图。
图25A和图25B是表示步骤S5011中编码处理细节的流程图。
图26是表示解码电路5013的基本构成的框图。
图27是表示高速缓冲存储器5036的详细的构成的框图。
图28是表示本发明第5实施形式中的打印机1711的基本构成的框图。
图29是表示本发明第5实施形式中的打印机驱动器4的处理步骤的流程图。
图30A和图30B是表示图29的步骤S6011的编码步骤细节的流程图。
图31是表示图28所示的解码电路6013的细节的框图。
图32是表示一例本发明第6实施形式中的打印机驱动器4所生成的编码表的图。
图33A是表示编码对象的图像数据的图。
图33B是表示编码对象的图像数据的图。
图34A和图34B是在步骤S5011中的本实施形式的编码处理的流程图。
图35是表示图19所示的解码电路513在本发明第6实施形式中的基本构成的框图。
具体实施例方式
现在参照附图对本发明的优选实施形式进行详细说明。

在图17中说明本实施形式的图像处理装置的基本构成。在本实施形式中,作为图像处理装置使用一般的个人计算机和/或工作站。
1701是CPU,在使用保存在RAM1702和/或ROM1703中的程序和/或数据来进行本装置整体的控制的同时,也进行后面说明的图像压缩处理。1702是RAM,在备有暂时存储从外部存储装置1704和/或存储介质驱动器1709所装入的程序和/或数据的存储区的同时,还备有在CPU1701执行各种处理的时候所使用的工作区。1703是ROM,保存本装置整体的控制程序(例如引导程序)和/或控制数据(例如本装置的设定数据)。1704是硬盘等的外部存储装置,保持从存储介质驱动器1709所安装的程序和/或数据等。另外,在RAM1702内不能设置上述工作区的大小的情况下,也可以作为文件来提供不足部分。1705、1706分别是键盘和鼠标,分别作为定点设备来使用,能够向本装置输入各种指示。1707是显示装置,由CRT和/或液晶画面等构成,能够显示图像和/或字符等。1708是图像输入装置,由数码相机和/或扫描器等构成,能够通过摄影和/或扫描等的操作将图像作为数字数据输入到RAM1702和/或外部存储装置1704。
1709是存储介质驱动器,从CD-ROM和/或DVD-ROM等的存储介质读入程序和/或数据等,将所读入的程序和/或数据输出到RAM1702和/或外部存储装置1704等。1710是I/F(接口),经由因特网和/或LAN等从外部的设备接收压缩处理对象的图像,或者反之对外部的设备发送压缩了的图像等,作为与外部的设备之间进行数据的发送接收时的I/F来工作。1711是打印机,作为扩展已压缩图像并向纸张等的记录介质进行打印的图像扩展装置来工作。1712是连接上述各部件的总线。
图1是表示在打印图像时所使用的软件群和打印机之间关系的概念图。在外部存储装置1704内储存着操作系统2(下面记为OS)、应用程序3、打印机驱动器4以及端口驱动器5。
OS2管理图1所示的各部件(打印机1711除外),以及应用程序3、打印机驱动器4和端口驱动器5等的软件。应用程序3是,例如文字处理软件那样的应用软件,按照由操作者使用键盘1705和/或鼠标1706所指示的内容进行文档的生成·打印等。4是打印机驱动器,经由OS2接收应用程序3所发出的打印指令,并将该打印指令变换成打印机1711能够解释的打印机命令。5是端口驱动器,经由OS2接收打印机驱动器4所变换的打印机命令,并经由未图示的并行端口发送到打印机1711。然后打印机1711,按照从端口驱动器5接收到的打印机命令进行打印。
图2是表示打印机1711的基本构成的框图。图中,11是并行端口,接收从端口驱动器5输出的打印机命令。12是FIFO(先入先出)存储器,存储包含在并行端口11接收到的打印机命令中的编码数据(详见后面说明),将所存储的数据按照先入先出的顺序输出到解码电路13。解码电路13,对FIFO存储器12中所存储的码序列数据进行解码,并将已复原的图像数据输出到移位寄存器16。打印机引擎14是激光打印机引擎,根据控制电路15的指示,按照解码电路13所输出的图像数据进行打印。15是控制电路,例如由单片CPU构成,进行并行端口11、FIFO存储器12、解码电路13以及打印机引擎14的控制。16是移位寄存器,将解码电路13解码了的字节数据分割成多个象素,按每个象素依次输出到打印机引擎14。
下面,就进行打印时,图1、2所示的各部件的动作进行说明。
操作者使用键盘1105和/或鼠标1106来操作应用程序3生成打印数据,而且,当输入对所生成的打印数据进行打印的指示后,打印指令经由OS2从应用程序3传给打印机驱动器4。打印机驱动器4基于从应用程序3所发出的打印指令,生成将成为打印对象的图像数据,接着对此图像数据使用抖动矩阵进行抖动处理,并进行2值化处理。此外,这时打印机驱动器4基于后面说明的编码步骤,从施加了2值化处理的图像数据生成编码数据,同时输出用纸尺寸、指定图像数据(位图数据)的行的长度和行数等的打印控制命令、指定压缩参数的压缩参数命令、表示页结束的页结束命令。端口驱动器5将打印机驱动器4所生成的一系列命令群和上述编码数据发送到打印机1711。
控制电路15经由并行端口11接收打印机命令。在接收到的打印机命令中,打印控制命令、压缩参数指定命令,为了打印控制被保持在控制电路15的内部。另外,在接收到的打印机命令中,编码数据被保存到FIFO存储器12。此后,当控制电路15通过页结束命令的接收等,检测出构成1页的打印机命令的接收已完成时,向打印机引擎14指示打印开始。当指示了打印开始后,打印机引擎14向移位寄存器16要求图像数据的输出。移位寄存器16预先从解码电路13读出解码数据,并保存所读出的解码数据。然后,当接受来自打印机引擎14的输出要求后,将保存好的解码数据输出到打印机引擎14,同时当移位寄存器16内有空的缓冲区时,向解码电路13要求后续的解码数据的输出。这样编码数据依次进行解码并作为图像数据(解码数据)被输出,当1页的图像数据的输出全部结束后,打印完成。这里,当背景图案的图像输出指令从应用程序3被发出后,打印机驱动器4以后面说明的步骤检测出此指令,求得背景图案的周期。另外在打印机驱动器4检测出背景图案的情况下,当对图像数据进行编码时,按照后面说明的步骤利用背景图案的周期进行编码。
接着,参照图3和图4所示的表,就图1所示的打印机驱动器4生成的编码进行说明。
图3是对一例包含在图1所示的打印机驱动器4所生成的编码数据中的各编码进行说明的表。在本实施形式中进行说明的编码指定为以下4种操作中的一个复制预定行上方的行的数据序列的上复制,复制相同行的预定字节左侧的数据序列的近左复制,复制相同行的预定字节左侧的数据序列的远左复制,以及直接指定数据的原始数据。此外,上复制和近左复制所参照的预定位置是依照上述抖动矩阵的周期的值,远左复制所参照的预定位置是依照背景图案的周期的值。
如图3所示,代码(命令码)以“0”开始的情况是RAW命令,将后续的8位数据(<data8>)原封不动地作为原始数据进行指定。代码以“10”开始的情况是COPY UP命令,仅进行后续的计数编码(<count>)所示的字节数的上复制。代码以“110”开始的情况是COPY NEAR LEFT命令,仅进行后续的计数编码(<count>)所示的字节数的近左复制。代码以“1110”开始的情况是COPY FAR LEFT命令,仅进行后续的计数编码(<count>)所示的字节数的远左复制。代码以“11110”开始的情况是COUNT HIGH命令,表示将后续的计数编码(<count>)所示的数的64倍,相加到后续的COPY UP、或者COPY NEAR LEFT、或者COPY FAR LEFT命令中的任何一个命令码中的情况。代码以“11111”开始的情况是EOB命令,表示码序列的结束。
图4是表示对一例计数编码进行说明的表的图。如该图所示,命令码的位是“111111”的情况表示COUNT0编码,其表示计数为0的情况。命令码的位以“0”开始的情况表示COUNT1编码,其表示计数为1的情况。命令码的位以“10””开始的情况表示COUNT2-3编码,后续1位的数据(<data1>)为0的情况,作为命令码就成为“010”,作为含义就意味着2字节。另一方面,后续1位的数据(<data1>)为1的情况,作为命令码就成为“011”,作为含义就意味着3字节。也就是,命令码的位序以“01”开始的情况,就是意味着2字节或者3字节的长度。
另外,命令码的位以“110”开始的情况,表示COUNT4-7编码,由于成为后续有2位的数据,就意味从4字节到7字节的长度,命令码的位以“1110”开始的情况,表示COUNT8-15编码,由于成为后续有2位的数据,就意味从8字节到15字节的长度,命令码的位以“11110”开始的情况,表示COUNT16-31编码,由于成为后续有2位的数据,就意味从16字节到31字节的长度,命令码的位以“111110”开始的情况,表示COUNT32-63编码,由于成为后续有2位的数据,就意味从32字节到63字节的长度。
接着参照图5,就图3和图4所示的编码的使用例进行说明。此外,该图所示的码序列是从上开始按记载的顺序来进行解释的。
在该图中,码序列“0 00000000”如下来进行解释。也就是,由于开头的“0”是RAW命令,将后续的8位数据“00000000”原封不动地作为原始数据进行指定。接着,码序列“110 0”如下来进行解释。开头的“110”是近左复制命令,由于后续的“0”是COUNT1编码,故表示1字节的近左复制。接着,码序列“10 10 1”如下来进行解释。也就是,开头的“10”是上复制命令,由于后续的“10”是COUNT2-3编码,故表示将2相加到后续的1位“1”上的值,即3字节的上复制。接着,码序列“11110 10 1”如下来进行解释。也就是,“11110”是COUNT HIGH命令,由于后续的“10”是COUNT2-3编码,故表示将2相加到后续的1位“0”上的值的64倍,即将128相加到后续的命令的计数上。
接着,码序列“1110 111111”如下来进行解释。也就是,“1110”是远左复制命令,由于后续的“111111”是COUNT0编码,故表示0字节的远左复制。但是,在此情况下,因为COUNT HIGH 2命令在前,故相加128,表示128字节的远左复制。接着,“11111”是EOB命令,表示码序列的结束。后续的“0000000”是用于对齐字节边界的填充编码,没有特别的含义。此外,在编码成上述的编码(图像数据命令)时,在上复制位置、近左复制位置以及远左复制位置的选定时,为了提高压缩率需要注意以下情况。
例如,在将8位的灰度级原图像减色成1位的2值图像或者4位以下的灰度级图像的情况下,一般是使用抖动矩阵对各矩阵内的每个象素使用不同的阀值进行运算处理来减色的。这种情况下,由于邻接的象素利用不同的阀值进行运算,又因为即使原图像的象素值相同,减色后的象素值成为不同值的情况多,相关性低,所以即使参照邻接的象素提高压缩率也是困难的。
因为抖动矩阵是周期性地进行应用的,又因为不是应用与邻接象素相同的阀值,而是与稍微间隔的象素,通常是仅间隔抖动矩阵周期的象素相同的阀值,所以与这样的象素间的相关性就高。因此,通过取代邻接象素来参照符合抖动矩阵的周期的稍微间隔的象素,就能够提高压缩率。
关于上位置,虽然能够原封不动地应用与抖动矩阵的周期相等行数。但关于近左位置和远左位置,由于编码的单位是字节单位,在图像不满8位的情况下,有必要更加注意。例如,在象素是1位,抖动矩阵的基本周期是12象素的情况下,就成为1.5字节的周期,由于编码的单位是1字节,以字节单位应用相同阀值的周期就成为3字节,就需要将此周期应用于近左位置。关于远左位置也同样,例如,在象素是1位,背景图案的周期是1024象素即128字节,抖动矩阵的基本周期是12象素的情况下,由于在背景图案的相差1周期的位置上应用不同的阀值,故相关性低,提高压缩率就困难。在这种情况下,就需要将作为128字节与3字节的最小公倍数384字节的间隔位置设为远左位置。
接着,参照图6所示的流程图,对打印机驱动器4的处理细节进行说明。图6是打印机驱动器4所进行的主处理的流程图。当从操作系统2调用打印机驱动器4后,首先在步骤S1判断调用的种类是否是绘图指令。在调用的种类是绘图指令的情况下,使处理进入步骤S2进行绘图处理。作为绘图处理具体就是,将经由操作系统2从应用程序3所指示的字符、图形或者位图等变换成8位灰度级图像,并记录到RAM1702或者外部存储装置1704。
接着,在步骤S3判断调用的种类是否是位图绘制指令。在调用的种类不是位图绘制指令的情况下结束处理。另一方面,在调用的种类是位图绘制指令的情况下,在步骤S4进行后面说明的背景图案周期的检测处理,结束处理。
另一方面,在步骤S1中调用的种类不是绘图指令的情况下,处理进入步骤S7,判断调用的种类是不是页结束指令。在调用的种类是页结束指令的情况下,使处理进入步骤S8,进行2值化处理。具体就是使用抖动矩阵将在步骤2记录到RAM1702或者外部存储装置1704的8位灰度级的图像变换成黑白1位的图像。
接着,在步骤S9输出打印控制命令,具体就是指定用纸尺寸、供纸盒、分辨率、灰阶数、1行的字节数、1页的行数等打印所需要的条件的命令。接着,在步骤S10输出编码时所使用的,指定以下参数的压缩参数指定命令指定上复制时复制源是哪一行上方的位置的上复制垂直偏移值、指定近左复制时复制源是相同行的哪一字节左侧的位置的近左复制水平偏移值、以及指定远左复制时复制源是相同行的哪一字节左侧的位置的远左复制水平偏移值。
这里,上复制垂直偏移值和近左复制水平偏移值,依照步骤S8中所使用的抖动矩阵,预先通过理论或者试验求出最优值,并使用此值。另外,远左复制水平偏移值,使用符合步骤S4中所求出的背景图案的周期值。
接着,在步骤S11按照后面说明的编码步骤对图像数据进行编码。此时,使用在步骤S10输出的压缩参数指定命令所指定的上复制垂直偏移值、近左复制水平偏移值以及远左复制水平偏移值进行编码。接着在步骤S12输出对在步骤S11中所编码的图像数据的大小和行数进行指定的图像数据命令首标。接着在步骤S13输出在步骤S11中所编码的图像数据。接着在步骤S15输出指定页结束的命令(页结束命令)并结束处理。
另一方面,在步骤S7中调用的种类不是页结束指令的情况下,处理进入步骤S16,进行符合调用的种类的其他处理,例如与页开始指令或者打印能力询问指令等相对应的处理,然后结束。
接着,参照图7就上述步骤S4中的处理细节进行如下说明。图7是表示上述步骤S4中的背景图案的周期检测处理的细节的流程图。
当接受到位图绘制命令后,首先在步骤S21判断此位图(下面记为第1位图)的宽度是否是256象素以上。在该位图的宽度不是256象素以上的情况下结束处理。这里,背景图案一般都具有,例如1024象素那样的较大的宽度和高度,另外,由于将较小的宽度或者高度的位图作为对象进行处理时,管理位图的表(下面记为位图管理表)的大小将变大,另外检索位图管理表的处理时间也变长,所以在较小的宽度或者高度的位图的情况下,就不进行背景图案周期的检测处理。这里位图管理表是对包含在1页内的位图进行管理的预先确定了固定大小的表,在本实施形式中,仅对满足后面说明的条件的位图,保存与此位图相关的信息。具体就是如图18示例那样,管理位图的左上角的X坐标、Y坐标、宽度以及高度。另外,每当开始各页的处理位图管理表就被初始化为空。
回到图7,在位图的宽度为256象素以上的情况下,处理进入步骤S22,判断位图的高度是否是256象素以上。在位图高度不是256象素以上的情况下结束处理。
在位图高度是256象素以上的情况下,处理进入步骤S23,判断位图管理表的检索是否已结束。在没有结束的情况下处理进入步骤S24,参照位图管理表中保存的位图的左上角的Y坐标、高度,检索与第1位图的左上角的Y坐标、高度一致者。然后,在不一致的情况下返回步骤S23,进行检索直到上述检索的对象到达位图管理表的末尾。另一方面,在找到一致者(第2位图的左上角的Y坐标、高度)的情况下,处理进入步骤S25,判断第1位图是否邻接在第2位图的右侧。具体就是参照位图管理表,如果第2位图的左上角的X坐标+第2位图的宽度=第1位图的左上角的X坐标的话,第1位图就邻接在第2位图的右侧。在邻接在右侧的情况下,处理进入步骤S27。
另一方面,在不邻接在右侧的情况下,处理进入步骤S26,判断第1位图是否邻接在第2位图的左侧。具体就是,如果第2位图的左上角的X坐标=第1位图的左上角的X坐标+第1位图的宽度的话,第1位图就邻接在第2位图的左侧。在邻接在左侧的情况下,处理进入步骤S27,在不邻接在左侧的情况下处理返回步骤S23。
在步骤S27中,对第1位图的宽度和通过后面说明的处理所求出的背景周期进行比较。此外,每当开始各页的处理背景周期就被初始化为0。在背景周期比第1位图的宽度大的情况下,处理进入步骤S29。另一方面,在背景周期是第1位图的宽度以下的情况下,处理进入步骤S28,在步骤S28将第1位图的宽度代入背景周期,处理进入步骤S29。
在步骤S29中,对第2位图的宽度和背景周期进行比较。在背景周期比第2位图的宽度大的情况下,处理进入步骤S31。另一方面,在背景周期是表中当前位图的宽度以下的情况下,处理进入步骤S30,在步骤S30将第2位图的宽度代入背景周期,处理进入步骤S31。这样,迄今为止的背景周期以及左右邻接的两个位图的宽度中的最大的值就被重新代入背景周期。由于通过在用纸的左端或者右端对背景位图背景进行修剪,就有成为比周期还要小的宽度的情况,使用最大的值的理由,就是为了消除此影响。
在步骤S31中,判断位图管理表是否已满。在位图管理表已满的情况下,由于没有重新保存(登录)相关位图的信息的空间,不作任何处理就结束处理。另一方面,在位图管理表没有满的情况下,将第1位图的左上角的X坐标、左上角的Y坐标、宽度以及高度保存到位图管理表并结束处理。
当这样结束1页的处理后,在此页内邻接位图的宽度的最大值就保存到背景周期中。另外,在邻接位图不存在此页内的情况下,就将0保存到背景周期中。
接着,参照图8,就图6的步骤S10中的处理细节进行如下说明。图8是表示步骤S10中的处理细节的流程图。首先在步骤S41判断上述步骤S4中所求出的背景周期是否为0。在背景周期不是0的情况下,即检测出背景图案的周期的情况下,处理进入步骤S42,求得背景周期和1字节的象素数的最小公倍数。例如,在背景周期是1024象素,1象素由1位构成的情况下(1字节的象素数是8),该最小公倍数就是1024。另外,在背景周期是511象素,1象素由4位构成的情况下(1字节的象素数是2),该最小公倍数就是1022。由于编码的单位是1字节,故此处理是为了将象素单位的周期变换成字节单位的周期而进行的。
接着在步骤S43,将在步骤S42中所求出的最小公倍数变换成字节单位。具体就是用1字节的象素数除以最小公倍数。接着在步骤S44求得在步骤S43中所求出的字节单位的背景周期和抖动周期的最小公倍数。例如,在背景周期是128字节抖动周期是2字节的情况下,就是128字节。另外,在背景周期是511字节,抖动周期3字节的情况下,就是1533。由于在背景周期不是抖动周期的整数倍的情况下,通过在仅间隔背景周期的点中施加不同的抖动处理,就成为不同的象素值,故此处理是为了参照进行相同抖动处理的点而进行的。
接着在步骤S45,判断在步骤S44中所求出的最小公倍数是否不满行长的90%。在不满行长的90%的情况下,处理进入步骤S47,将符合上述步骤S8的2值处理中所使用的抖动矩阵的上复制和近左复制的位置,以及在步骤S44所求出的最小公倍数(远左复制位置)作为指定压缩参数的命令(压缩参数指定命令)进行输出,结束处理。
另一方面,在步骤S4 1中背景周期为0的情况下,以及步骤45、步骤44中所求出的最小公倍数是行长的90%以上的情况下,处理进入步骤S46,将背景周期设定为缺省值。由于这些情况是不能检测出背景周期或者背景周期过大没有对压缩率提高给予大的贡献的情况,故取而代之设定为缺省值。缺省值被预先确定成与近左复制的位置不同。例如,在抖动周期为16象素,1字节的象素数是8的情况下,近左复制的位置就是2字节的左侧。在此情况下将背景周期的缺省值确定为1字节。如前所述,一般来说与仅间隔抖动周期的点之间的相关性高,但在打印数据是象通常的文本或者表那样,以黑白2值来显示的情况下,就成了与不进行抖动处理的情况相同的结果。另外,由于与和抖动周期没有关系地进行邻接的点之间的相关性高,故在相关情况下,间隔1字节位置也比间隔2字节位置相关性高,可以对压缩率的提高作出贡献。
接着在步骤S47,将与上述步骤S8的2值处理中所使用的抖动矩阵的相符合的上复制和近左复制的位置,以及在步骤S46所设定的缺省的背景周期(远左复制位置)作为指定压缩参数的命令(压缩参数指定命令)进行输出,结束处理。
接着参照图9A和图9B,就图6的步骤S11中的编码处理的细节进行说明。图9A和图9B是表示步骤S11中的处理细节的流程图。
首先在步骤S51将行编号Y初始化为0。接着在步骤S52将从行开头的字节偏移X初始化为0。
接着在步骤S53,判断上位置是否在有效的图像区域中。具体就是判断在图8的步骤S47中所输出的表示上复制位置的行数(下面用Z来表示)是否也大于行编号Y。由于表示上复制位置的行数Z为行编号Y以下的情况,就是上位置在有效的图像区域中(存在于编码对象的位图内的区域)的情况,故在步骤S54,求得从当前位置(X、Y)开始的字节序列和从上位置(X、Y-Z)开始的字节序列连续相一致的长度。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。
接着在步骤S55,判断步骤S54中所求出的长度是否为0。在步骤S54中所求出的长度不为0的情况下,处理进入步骤S56,判断步骤S54中所求出的长度(计数)是否比63大。在步骤S54中所求出的长度比63大的情况下,处理进入步骤S57,将COUNT HIGH命令输出到RAM1702或者外部存储装置1704,接着在步骤S58,将用64除以在步骤S54所求出的长度算出的商(计数的高位)输出到RAM1702或者外部存储装置1704,处理进入步骤S59。另一方面,在步骤S56中,当在步骤S54所求出的长度是63以下的情况下,处理进入步骤S59。
接着,在步骤S59将COUNT UP命令输出到RAM1702或者外部存储装置1704,接着在步骤S60,将用64除以在步骤S54所求出的长度算出的余数(计数的低位)输出到RAM1702或者外部存储装置1704。
另一方面,在步骤S53中表示上复制位置的行数Z比行编号Y大的情况下,以及当在步骤S55所求出的长度为0的情况下,处理进入步骤S62,判断近左位置是否在有效的图像区域中。具体就是判断上述步骤S47中所输出的表示近左复制位置的字节数(下面用W来表示)是否比从行开头的字节偏移X大。由于表示近左复制位置的字节数W为从行开头的字节偏移X以下的情况,就是近左位置在有效的图像区域中的情况,故处理进入步骤S63,求得从当前位置(X、Y)开始的字节序列和从近左位置(X-W、Y)开始的字节序列连续相一致的长度(计数)。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。
接着在步骤S64,判断步骤S63中所求出的长度是否为0。在步骤S63中所求出的长度不为0的情况下,处理进入步骤S65,判断步骤S63中所求出的长度(计数)是否比63大。在步骤S63中所求出的长度比63大的情况下,处理进入步骤S66,将COUNT HIGH命令输出到RAM1702或者外部存储装置1704,接着在步骤S67,将计数的高位,即用64除以在步骤S63所求出的长度算出的商输出到RAM1702或者外部存储装置1704,处理进入步骤S68。另一方面,在步骤S65中,当在步骤S63所求出的长度是63以下的情况下,处理进入步骤S68。
接着,在步骤S68将COUNT NEAR LEFT命令输出到RAM1702或者外部存储装置1704,接着在步骤S60,将计数的低位,即用64除以在步骤S63所求出的长度算出的余数输出到RAM1702或者外部存储装置1704。
另一方面,在步骤S62中表示近左复制位置的字节数W比从行开头的字节偏移X大的情况下,以及当在步骤S64所求出的长度为0的情况下,处理进入步骤S69,判断远左位置是否在有效的图像区域中。具体就是判断图8的步骤S47中所输出的表示远左复制位置的字节数(下面用R来表示)是否比从行开头的字节偏移X大。由于表示远左复制位置的字节数R为从行开头的字节偏移X以下的情况,就是远左位置在有效的图像区域中的情况,故处理进入步骤S70,求得从当前位置(X、Y)开始的字节序列和从远左位置(X-R、Y)开始的字节序列连续相一致的长度(计数)。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。接着在步骤S71,判断步骤S70中所求出的长度是否为0。在步骤S70中所求出的长度不为0的情况下,处理进入步骤S72,判断步骤S70中所求出的长度是否比63大。在步骤S70中所求出的长度比63大的情况下,处理进入步骤S73,将COUNTHIGH命令输出到RAM1702或者外部存储装置1704,接着在步骤S74,将计数的高位,即用64除以在步骤S70所求出的长度算出的商输出到RAM1702或者外部存储装置1704,处理进入步骤S75。另一方面,在步骤S72中,当在步骤S70所求出的长度是63以下的情况下,处理进入步骤S75。
在步骤S75中,将COUNT FAR LEFT命令输出到RAM1702或者外部存储装置1704,接着在步骤S60,将计数的低位,即用64除以在步骤S70所求出的长度算出的余数输出到RAM1702或者外部存储装置1704。
另一方面,在步骤S69中表示远左复制位置的字节数R比从行开头的字节偏移X大的情况下,以及当在步骤S71所求出的长度为0的情况下,处理进入步骤S76,将RAW命令输出到RAM1702或者外部存储装置1704,接着将当前位置(X、Y)的数据(1字节部分)作为原始数据输出到RAM1702或者外部存储装置1704。
当上述的处理结束后,处理进入步骤S78,将已处理的字节相加到X。接着在步骤S79,判断X是否到达行末,即判断X是否等于1行的字节数。在X比1行的字节数小的情况下,处理返回步骤S53,继续进行处理。另一方面,在X等于1行的字节数的情况下,处理进入步骤S80,将1相加到行编号Y,在步骤S81判断图像的处理是否结束,即判断Y是否和图像的行数相等。在Y比图像的行数小的情况下,处理返回S52,继续进行处理。另一方面,在Y等于图像的行数的情况下,处理进入步骤S82,将EOB命令输出到RAM1702或者外部存储装置1704,接着在步骤S83,仅将为了对齐字节边界所需的数目(例如通过上述的编码处理以使输出到RAM1702、或者外部存储装置1704的位序的长度成为8的倍数)的位“0”输出到缓冲器,结束处理。
接着,参照图12,就图2所示的解码电路13的构成详细进行说明。图12是表示解码电路13的详细的构成的框图。
在该图中,输入缓冲器21,保存从FIFO存储器12读出的编码数据。输入缓冲器21,至少能够保持4字节的数据,在缓冲器中产生空闲,且FIFO存储器12中有数据的情况下,从FIFO存储器12读出数据并进行保存。另外,当保持在位计数器23中的处理完的位数成为8位以上的情况下,输入缓冲器21删除不需要的处理完的数据。
选择器22是例如11组的8输入选择器,通过根据位计数器23所表示的处理完的位数对保存在输入缓冲器21中的编码数据进行选择,进行命令解码电路24处理所需要的、命令的开始位置的对齐。由于相对于输入缓冲器21以字节单位来保持数据,命令是位单位的可变长度数据,所以为了有8处的开始位置这一点是必要的。
位计数器23,保存输入缓冲器21所保存的编码数据中的处理完的位数。另外,位计数器23通过加上从命令解码电路24所输出的命令的位数,来更新位计数器中所保存的值。另外,位计数器23在输入缓冲器删除了处理完的数据的情况下,减去已删除的位数。另外,在命令解码电路24对EOB命令进行解码时,位计数器23从命令解码电路24接收EOB信号,进行字节边界对齐的处理。具体就是,如果位计数器的低位3位全部是0就什么也不作,如果不是这样就在加上8的同时清除低位3位。
命令解码电路24由例如只读存储器或者布线逻辑(wired logic)构成。对由选择器22进行了位置对齐、并保存在输入缓冲器21中的编码数据进行解码,根据已解码的命令将前面说明的或者后面说明的各种信号输出到计数器26、上复制输出电路27、远左复制输出电路28、近左复制输出电路29、原始数据输出电路30以及位计数器23。
行长寄存器25保持控制电路15预先输出的、1行的字节数。
计数器26保持COPY UP、COPY NEAR LEFT、或者COPY FARLEFT命令的处理字节数,每进行1字节的数据输出就进行相减运算。计数器26能够独立地设定高位6位和低位6位,在命令解码电路24解码了COUNT HIGH命令时,将命令解码电路24所输出的处理字节数的相加值保存到计数器26的高位。另外,在命令解码电路24解码了COPY UP、COPY NEAR LEFT、或者COPY FAR LEFT命令时,将命令解码电路24所输出的处理字节数保存到计数器26的低位。
上复制输出电路27,根据计数器26所保持的处理字节数,读取并输出行缓冲器31所输出的上复制位置的数据。远左复制输出电路28,根据计数器26所保持的处理字节数,读取并输出行缓冲器31所输出的远左复制位置的数据。近左复制输出电路29,根据计数器26所保持的处理字节数,读取并输出可变级移位寄存器38所输出的近左复制位置的数据。原始数据输出电路30,输出命令解码电路24所输出的1字节的原始数据。
列计数器41保持行缓冲器31的当前的列地址,每向行缓冲器31进行写入就相加所写入的数据的大小,由此求得计数值。然后在此计数值达到行长寄存器25所保持的1行的字节数的情况下,复位成0。
行缓冲器31保持多行的解码数据,根据减法电路40所输出的地址,进行解码数据的输入或者输出。
行计数器32保持行缓冲器31的当前的行地址,每当上述计数值复位成0就进行计数增加,在计数的结果达到行数寄存器36所保持的行数的情况下,复位成0。另外当行数被输出到行数寄存器36时,行计数器32复位成0。
乘法电路33,通过计算行计数器32所保持的当前的行地址和行长寄存器25所保持的1行的字节数的积,输出行缓冲器31的当前的行的开始地址。加法电路34,通过计算乘法电路33所输出的当前的行的开始地址和列计数器41所保持的当前的列地址的和,输出行缓冲器31的当前的地址。背景周期寄存器39,保持控制电路15预先输出的、背景周期字节数。
减法电路40,当由远左复制输出电路接收到指示远左复制的读取的信号时,从加法电路34所输出的当前的地址减去背景周期寄存器39所保持的背景周期字节数并进行输出,同时当由远左复制输出电路没有接收到指示远左复制的读取的信号时,原封不动地输出加法电路34所输出的当前的地址。
输出缓冲器35,每当从上复制输出电路27、远左复制输出电路28、近左复制输出电路29或者原始数据输出电路30输出解码数据,就保存所输出的解码数据。另外,当从移位寄存器16要求图像数据的输出时,输出缓冲器35就输出所保存的解码数据。
行数寄存器36,保持控制电路15预先输出的、行数(上复制垂直偏移值)。
级数寄存器37,保持控制电路15预先输出的、表示近左位置的字节偏移值。可变级移位寄存器38,由移位寄存器和选择器构成,构成与级数寄存器37所保持的表示近左位置的字节偏移值相等的级数的移位寄存器,输出将所输出的解码数据延迟了比用级数寄存器37保持的用表示近左位置的字节偏移值所指定的值仅小1的次数的数据。
当命令解码电路24解码COPY UP命令后,就解码与它相连续的计数并保存到计数器26的低位,同时将指示上复制的读取的信号输出到上复制输出电路27。在计数器26的高位中,当COUNT HIGH命令没有在先发出的情况下保存0,当其在先发出了的情况下保存表示COUNT HIGH命令的高位计数。上复制输出电路27,读出在行缓冲器31中保存在加法电路34、减法电路40输出的地址(换言之就是当前的位置)上的数据,并输出到行缓冲器31(因为是覆盖相同数据,也可以不进行此处理),同时输出到输出缓冲器35。另一方面,将所读出的解码数据输入到可变级移位寄存器38(下面从开头起)。然后已经保持在可变级移位寄存器38中的数据一级一级地进行移位,从可变级移位寄存器38的最终级,输出与当前位置的下一位置相对应的近左复制位置的1字节。接着,列计数器41进行计数增加,计数器26进行计数减少。就这样进行解码数据的输出直到计数器26达到0。
当命令解码电路24解码COPY FAR LEFT命令后,就解码后续的计数并保存到计数器26的低位,同时将指示远左复制的信号输出到远左复制输出电路28。在计数器26的高位中,当COUNT HIGH命令没有在先发出的情况下保存0,当其在先发出了的情况下保存表示COUNT HIGH命令的高位计数。这里,为了输出指示远左位置的数据读取的信号,远左复制输出电路读取在行缓冲器31中保存在从加法电路34的输出(当前的地址)减去背景周期寄存器39所保持的背景周期值的值,即远左位置的地址上的解码数据,并写入到行缓冲器31的当前位置,同时也输出到输出缓冲器35。另外,将已读出的解码数据输入到可变级移位寄存器38。然后保持在可变级移位寄存器38中的数据一级一级地进行移位,从可变级移位寄存器38的最终级,输出与当前位置的下一位置相对应的近左复制位置的1字节。接着,列计数器41进行计数增加,计数器26进行计数减少。就这样进行解码数据的输出直到计数器26达到0。
当命令解码电路24解码COPY NEAR LEFT命令后,就解码后续的计数并保存到计数器26的低位,同时将指示近左复制的信号输出到近左复制输出电路29。在计数器26的高位中,当COUNT HIGH命令没有在先发出的情况下保存0,当其在先发出了的情况下保存表示COUNT HIGH命令的高位计数。近左复制输出电路,将可变级移位寄存器38所输出的近左复制位置的1字节的解码数据输出到输出缓冲器35,同时写入到行缓冲器31的当前位置。另外,将已读出的1字节的解码数据输入到可变级移位寄存器38。保持在可变级移位寄存器38中的数据一级一级地进行移位,从可变级移位寄存器38的最终级,输出与当前位置的下一位置相对应的近左复制位置的1字节。接着,列计数器41进行计数增加,计数器26进行计数减少。就这样进行解码数据的输出直到计数器26达到0。
当命令解码电路24解码RAW命令后,就将后续的1字节的原始数据(解码数据)输出到原始数据输出电路30。原始数据输出电路30将此解码数据输出到输出缓冲器35,同时写入到行缓冲器31的当前位置。另外,将此解码数据输入到可变级移位寄存器38。另外保持在可变级移位寄存器38中的数据一级一级地进行移位,从可变级移位寄存器38的最终级,输出与当前位置的下一位置相对应的近左复制位置的1字节。
当命令解码电路24解码COUNT HIGH命令后,就解码后续的计数并保存到计数器26的高位。
接着,参照图13和图14,就行缓冲器31的数据输入输出的动作进行说明。图13是说明编码前或者解码后的图像数据的构成,作为一例说明1行的长度是10字节的情况。如图所示,从起始行的左侧按00、01、...09的顺序字节(图像数据)进行排列,从下一行的的左侧按10、11、...19的顺序字节进行排列。以下的行也同样如此。
图14说明在行缓冲器31的各个地址上图13所示的图像数据是如何来保存的图。作为一例说明1行的长度为10字节,表示上复制位置的行数为3行的情况。
当最初将行计数器32和列计数器41都设为0后,对行地址0且列地址0进行最初的数据输入输出。此外,直到最初的3行的图像被写入之前,从行缓冲器31所输出的数据都是不确定的。
当从行缓冲器31的、行地址0且列地址0读取数据,然后当向相同的地址写入图11所示的字节00后,列计数器41进行计数增加,保持为1。接着从行地址0且列地址1读取数据,然后当向相同的地址写入的字节01后,列计数器41进行计数增加,保持为2。当这样写入10字节后,由于列计数器41将保持为10,与行长寄存器25所保持的1行的字节数相等,列计数器41就保持为0,行计数器32进行计数增加保持为1。接着从行地址1且列地址0读取数据,然后当向相同的地址写入的字节10后,列计数器41进行计数增加,保持为1。由于当这样写入20字节的数据后,列计数器41保持为0,同时行计数器32进行计数增加保持为3,就与行数寄存器36所保持的行数相等,行计数器32就保持为0。
由于这里行计数器32和列计数器41都为0,就读取最初被写入的字节00,然后字节30被写入。这样,在依次读取3行上的数据以后,当前的行的数据被覆盖,行缓冲器31作为所谓的环形存储器来进行动作。
接着参照图15,来说明行缓冲器31和可变级移位寄存器38的动作定时。图15说明图13所示的图像数据在什么样的定时被处理的,作为一例说明1行的长度为10字节,表示上复制位置的行数为3行,表示近左复制位置的字节偏移值为2字节的情况。
图中,A1是表示开始的3行的处理正好结束的时刻。正如上面的说明,由于这时行计数器32和列计数器41都复位成0。从行缓冲器31读取图11所示的字节00。在A1时刻,上复制电路27进行动作的情况下,当在A2时刻对正从行缓冲器31读取的数据进行确定后,字节00就被输入到上复制电路27。接着,上复制输出电路27直到A3时刻都输出解码数据。在A3时刻中,所输出的解码数据作为字节30被保存到行缓冲器31。这时时钟脉冲被输入到可变级移位寄存器38,可变级移位寄存器38中所保持的数据一级一级地进行移位,同时在起始级移位寄存器中保持所输出的解码数据,即数据字节30。另外,由于可变级移位寄存器38构成级数寄存器37所保持的、比表示近左位置的字节偏移值小1的级数的移位寄存器,可变级移位寄存器38的最终级输出比可变级移位寄存器38的起始级延迟1字节的数据,即字节29。这样每当输出解码数据,就保存到输出缓冲器35,同时一级一级地移位可变级移位寄存器38所保持的数据。
在C1时刻近左复制输出电路29进行动作的情况下,可变级移位寄存器38的最终级正输出的近左位置的数据字节,即数据字节30被输入到近左复制输出电路。接着,上复制输出电路27直到A3时刻都输出解码数据。在C3时刻中所输出解码数据作为数据字节32被保存到输出缓冲器35,下面与上述例子同样地进行动作。
远左复制输出电路28或者原始数据输出电路30在数据输出的情况下也同样地进行动作。
接着参照图16,说明控制电路15所执行的打印控制步骤。图16是表示控制电路15所执行的打印控制处理步骤的流程图,与数据的接收等其他的处理(未图示)并行地进行动作。
当打印控制步骤起动后,首先在步骤S101判断是否有可打印的页,具体就是判断是否接收到换页命令并存在未打印的页。在没有可打印的页的情况下,在步骤S101进行待机直到接收到换页命令并产生可打印的页。
在存在可打印的页的情况下,处理进入步骤S102,向打印机引擎14指示打印的开始。接着,在步骤S103将通过页的打印条件指定命令所指定的1行的字节数设定到行长寄存器25。接着在步骤S104将通过页的压缩参数指定命令所指定的表示上复制位置的行数、表示近左复制位置的字节偏移值以及表示远左位置的字节偏移值分别设定到行数寄存器36、级数寄存器37以及背景周期寄存器39。接着,在步骤S105进行等待直到1页的打印结束。当打印开始后,由解码电路13基于设定到上述寄存器的值进行解码。当1页的打印结束后,处理返回步骤S101,等待可打印的页。
这样,由于使用在编码时所使用了的压缩参数进行解码,就总是能够得到正确的解码数据。
根据上面的说明,利用本实施形式,由于检测背景图案的周期,并参照符合所检测出的周期的位置来进行编码,就能够高效率地压缩背景图案。另外,由于仅参照符合所检测出的周期的位置以及所限定的少数的位置来进行编码,就能够高速地进行压缩。另外,由于在检测背景图案的周期时,不使用背景图案的数据自身,仅利用背景图案的大小和位置来进行检测,就能够高速地检测周期。另外,由于依照1字节的象素数以及抖动周期来校正所检出的背景图案的周期,即使是进行了抖动处理的图像也能够高效率地进行压缩。另外,由于在没有检测出背景图案的周期的情况下,使用缺省的参照位置来进行编码,与不进行这样的处理相比就能够高效率地进行压缩。
此外虽然在上述的实施形式中是,当近左复制位置在图像的左端附近从图像的左端超出范围的情况下不进行参照这样来构成的,但也可以取代此是其他的方法,例如向前一行的右侧进行蔓延,或者在左复制位置从图像的左端超出范围的情况下参照固定值0。
另外,虽然在上述的实施形式中,以图像数据的1字节为单位来进行编码和解码,但也可以取代此是其他的单位,例如以1象素或者2字节等为单位。
另外,虽然在上述的实施形式中,处理的是黑白图像,但也可以取代此处理彩色图像。
另外,虽然在上述的实施形式中,1象素是由1位来构成的,但也可以取代此是其他的值,例如2位、4位或者8位。
另外,虽然在上述的实施形式中,是利用硬件来进行解码的,但也可以取代此用软件来进行解码。
另外,虽然在上述的实施形式中,进行抖动处理,但也可以进行取代此的别的矩阵处理,或者不进行抖动处理。
另外,虽然在上述的实施形式中,利用背景图案的横方向的周期性进行压缩处理,但也可以取代此利用纵方向或者纵横两方的周期性进行压缩。
另外,虽然在上述的实施形式中,在检测出不同周期的情况下将最大值设为周期,但也可以取代此,将不同周期中频率最高的值设为周期。
另外,虽然在上述的实施形式中,编码的处理单位是1页,但也可以适用于以将多个页设为1个的,N in 1(N=2、4等)的图像为单位进行同样的编码。在此情况下对每N页进行编码。
由于本实施形式中的图像处理装置的基本构成和第1实施形式相同,如图17所示那样,故省略该说明。
图19是表示本发明第3实施形式中的打印机1711的基本构成的框图。图中,511是并行端口,接收从端口驱动器5所输出的打印机命令。512是FIFO(先入先出)存储器,存储包含在并行端口511接收到的打印机命令中的编码数据(详见后面说明),并将所存储的数据按照先入先出的顺序输出到解码电路513。解码电路513,对FIFO存储器512中所存储的码序列数据进行解码,将已复原的图像数据输出到打印机引擎514。打印机引擎514是激光打印机引擎,根据控制电路515的指示,按照解码电路513所输出的图像数据进行打印。图像数据对青、品红、黄和黑的各色以面顺序进行输出。515是控制电路,例如由单片CPU构成,进行并行端口511、FIFO存储器512、解码电路513以及打印机引擎514的控制。
下面,就进行打印时,图1、19所示的各部件的动作,进行说明。
由于关于用来将由打印控制命令和编码数据所形成的一系列打印机命令发送到打印机1711的处理,和第1实施形式相同,省略该说明。
控制电路515经由并行端口511接收打印机命令。在接收到的打印机命令中,打印控制命令、压缩参数指定命令,为了打印控制被保持在控制电路515的内部。另外,在接收到的打印机命令中,编码数据被保存到FIFO存储器512。此后,当通过页结束命令的接收等,控制电路515检测出构成1页的打印机命令的接收已完成时,向打印机引擎514指示打印开始。指示打印开始后,打印机引擎514从未图示的供纸盒供给用纸,当用纸到达预定的位置时,向解码电路513要求解码数据的输出。解码电路513预先从FIFO存储器512读出编码数据,将通过解码而被复原的图像数据保持到内部的缓冲器,当从打印机引擎514要求图像数据的输出时,输出保持在内部的缓冲器中的图像数据。当保持图像数据的缓冲器中出现空闲时,解码电路513从FIFO512读出后续的编码数据,进行解码并保持到内部的缓冲器。这样编码数据依次进行解码并作为图像数据被输出,当1页的图像数据的输出全部结束后,打印完成。
接着,参照图20和图21所示的表,就本实施形式中的打印机驱动器4所生成的编码进行说明。
图20是表示对一例本发明第3实施形式中的打印机驱动器4所生成的编码数据中所包含的各编码进行说明的表的图。此外,在本实施形式中进行说明的各编码是以位单位可变长度的,例如以从2位到18位的位序来进行表示。与哈夫曼(Huffman)编码相同,各编码构成为通过从开始按顺序进行查找就能够识别编码。
如图20所示,编码的位序以“1”开始的情况,就是COPY UP命令。此命令指示,从预先确定的预定行上方的位置,复制<字节数>所表示的长度的字节序列。
另外,编码的位序以“01”开始的情况,就是CACHE命令。此命令指定在高速缓冲存储器(尽管在本实施形式中设置在CPU1701内,但并不限于此,也可以设置在CPU1701的外部)内<3位数据>所表示的位置的1字节的数据。
另外,编码的位序以“001”开始的情况,就是RAW命令。此命令指定持有<8位数据>的值的1字节的数据。
另外,编码的位序以“0001”开始的情况,就是COPY LEFT命令。此命令指示,从预先确定的预定字节左侧的位置,复制<字节数>所表示的长度的字节序列。
另外,编码的位序以“0000”开始的情况,就是EOB命令。指示编码数据的结束。
图21是对一例接续上述COPY UP命令、COPY LEFT命令后的、表示长度的编码(<字节数>)进行说明的表。如图21所示,编码的位序以“1”开始的情况,指示1字节的长度。
另外,编码的位序以“01”开始的情况,就是1位的数据(取值0或者1)接续,在接续的1位的数据为0的情况下,作为命令码就是“010”,作为含义就意味着2字节。另一方面,在接续的1位的数据为1的情况下,作为命令码就是“011”,作为含义就意味着3字节。也就是,编码的位序以“01”开始的情况,就意味着2字节或者3字节的长度。
另外,由于编码的位序以“001”开始的情况,是2位的数据接续,就意味着从4字节到7字节的长度,由于编码的位序以“0001”开始的情况,是3位的数据接续,就意味着从8字节到15字节的长度,由于编码的位序以“00001”开始的情况,是4位的数据接续,就意味着从16字节到31字节的长度,由于编码的位序以“000001”开始的情况,是5位的数据接续,就意味着从32字节到63字节的长度,由于编码的位序以“0000001”开始的情况,是6位的数据接续,就意味着从64字节到127字节的长度,由于编码的位序以“0000000”开始的情况,是7位的数据接续,就意味着从128字节到255字节的长度。
此外,预先求出这些编码在多数的图像数据中各命令的出现频率,与哈夫曼(Huffman)编码相同,通过将短的代码分配给出现频率高的命令,将比较长的代码分配给出现频率低的命令,就能够提高压缩率。
接着,参照图22在说明RAW命令和CACHE命令的动作的同时,就保存在高速缓冲存储器中的数据进行说明。图22是说明图像数据和利用RAW命令以及CACHE命令将此图像数据保存到高速缓冲存储器的方法的图。
如该图所示,10字节的图像数据00、01、02、03、04、05、06、07、08和06从左进行排列。高速缓冲存储器是8字节的容量,最初为空。
首先,最初的图像数据00可以编码成编码001 00000000即RAW00命令,编码或者解码了此命令的结果,就是将数据00保存在为空的高速缓冲存储器的起始位置。
下一个图像数据01可以编码成编码001 00000001即RAW01命令,编码或者解码了此命令的结果,就是将数据01保存在为空的高速缓冲存储器的起始位置,已保存在起始位置的数据00移动到下一个位置。这样直到图像数据07为止的8字节的数据被编码或者解码后,高速缓冲存储器就被填满。下一个图像数据08可以编码成编码001 00010000即RAW08命令,编码或者解码了此命令的结果,就是将数据08保存在为空的高速缓冲存储器的起始位置,已经保存的从数据07到数据01的7字节的数据依次移动到下一个位置,保存在高速缓冲存储器的最后的数据00被丢弃。
由于相同的数据保存在高速缓冲存储器的位置2,下一个图像数据06可以编码成编码01 010即CACH2命令,编码或者解码了此命令的结果,就是将保存在位置2的数据06移动到高速缓冲存储器的起始位置,保存在位置2以前的数据08和数据07依次移动到下一个位置,保存在位置2以后的数据不进行变更。
此外,在编码或者解码了COPY UP命令或者COPY LEFT命令的情况下,保存在高速缓冲存储器的数据不进行变更。
接着,参照图23就COPY UP命令和COPY LEFT命令的动作进行说明。图23是说明图像数据和利用COPY UP命令以及COPYLEFT命令对此图像数据进行编码的方法的图。如该图所示,在构成图像数据的象素序列中,10字节的图像数据01、23、45、67、89 、AB、89和AB在最下行从左侧进行排列,图像数据01、23、45、67、89、AB、00、00、00和00在该行上方第4行从左侧进行排列。当前欲编码或者解码的图像数据是最下行,另外预先设定为COPY UP命令参照上方第4行,COPY LEFT命令参照2字节左侧。
此外,在上述图像数据是使用抖动矩阵施加了抖动处理的图像的情况下,由于对邻接数据进行不同的处理,就存在仅间隔抖动矩阵的周期的位置的数据比已邻接的数据的相关性高这样的倾向。由此在施加了抖动处理的图像的情况下,进行确定以使COPY UP命令或者COPY LEFT命令所参照的位置和关注位置之间的相关性最高。即,依照在生成欲进行编码的图像数据时所使用的抖动矩阵的周期来进行确定。
这里由于最下行的图像数据中起始的6字节01、23、45、67、89和AB和上方第4行的起始6字节是相同排列,就能够编码成编码1 001 10即COPY UP6命令。接着由于下一个的4字节89、AB、89和AB和从相同行的2字节左侧开始的4字节是相同的排列,就能够编码成编码0001 001 00即COPY LEFT4命令。
接着,参照图24所示的流程图来说明本实施形式中的打印机驱动器4的处理细节。图24是打印机驱动器4所进行的主处理的流程图。
当打印机驱动器4接收来自操作系统2的指令后,判断指令的种类是否是绘图指令(步骤S505)。在记录的种类是绘图指令的情况下,处理进入步骤S506,进行绘图处理(步骤S506)。具体就是,将经由操作系统2从应用程序3所发送的字符、图形或者位图等变换成使用了红、绿、蓝3种颜色的各色8位的图像,并记录到RAM1702。
另一方面,在上述指令的种类不是绘图指令的情况下,处理进入步骤S507,进而判断指令的种类是否是页结束指令(步骤S507)。在指令的种类是页结束指令的情况下,处理进入步骤S508,进行颜色变换处理(步骤S508)。具体就是,使用预定的抖动矩阵,将步骤S506中记录到RAM1702的使用了红、绿、蓝3种颜色的各色8位的图像,变换成由青、品红、黄和黑4种颜色形成的,例如各色4位的图像。
接着,输出打印条件指定命令,具体就是指定用纸尺寸、供纸盒、分辨率、灰阶数、1行的字节数、1页的行数等打印所需要的条件的命令(步骤S509)。
然后,接着对青、品红、黄和黑的各色反复从步骤S5010到步骤S5014的处理,输出每种颜色的图像数据命令。作为各步骤中具体的处理,首先输出符合步骤S508中所使用的抖动矩阵的压缩参数,即编码时将要使用的、COPY UP命令和COPY LEFT命令将要参照的位置(步骤S5010)。接着按照后面说明的编码步骤,编码图像数据(步骤S5011)。此时,使用步骤S5010所输出的压缩参数指定的、COPY UP命令和COPY LEFT命令参照的位置进行编码。接着,输出对步骤S5011所编码的图像数据的大小和行数进行指定的首标(步骤S5012)。接着输出步骤S5011所编码的图像数据(步骤S5013)。接着判断青、品红、黄和黑的各面的处理是否全部结束(步骤S5014)。在青、品红、黄和黑的各面的处理没有全部结束的情况下,处理返回步骤S5010,进行下一个面的处理。另一方面,当青、品红、黄和黑的各面的处理全部结束后,处理进入步骤S5015,输出指定页的结束的命令(步骤S5015)。
另一方面,在步骤S507中的判断,在指令的种类不是页结束指令的情况下,处理进入步骤S5016,进行符合调用的种类的其他处理,例如与页开始指令或者打印能力询问指令等相对应的处理(步骤S5016)。
接着,就上述步骤S5011中的编码处理,参照表示对相同处理的细节进行说明的流程图的图25A和图25B进行说明。
首先,将当前位置即进行编码的象素的位置设定到图像的左端上方(步骤S5020)。接着判断COPY UP的参照位置是否有效(步骤S5021)。具体就是,对COPY UP的参照位置为上方第4行的情况,在当前位置是从起始行开始上方第4行以上的情况下就判断COPYUP的参照位置为有效。在COPY UP的参照位置有效的情况下,处理进入步骤S5022,对从当前位置开始的字节序列(象素数据序列)和从COPY UP的参照位置开始的象素数据的字节序列进行比较,求得值是一致的字节序列的长度(步骤S5022)。此外这时,在到达行末的情况以及长度达到255字节的情况下,就中止处理。
接着判断步骤S5022所求出的长度是否为0(步骤S5023)。由于在不是0的情况下,就判断为能够编码成COPY UP命令,处理进入步骤S5029,输出COPY UP命令,即编码1和接续在其后的表示字节数(求出的长度)的编码,处理进入步骤S5032。
另一方面,当在步骤S5021判断COPY UP的参照位置为无效的情况下,或者在步骤S5023判断步骤S5022所求出的长度为0的情况下,处理进入步骤S5024,判断COPY LEFT的参照位置是否有效(步骤S5024)。具体就是,对COPY LEFT的参照位置为2字节左侧的情况,在当前位置是从左端开始间隔2字节以上的情况下就判断COPY LEFT的参照位置为有效。在COPY LEFT的参照位置有效的情况下,处理进入步骤S5025,对从当前位置开始的字节序列(象素数据序列)和从COPY LEFT的参照位置开始的字节序列进行比较,求得相一致的字节序列的长度(步骤S5025)。此外这时,在到达行末的情况以及长度达到255字节的情况下,就中止处理。
接着判断步骤S5025所求出的长度是否为0(步骤S5026)。由于在不是0的情况下,就判断为能够编码成COPY LEFT命令,处理进入步骤S5030,输出COPY LEFT命令,即编码0001和接续在其后的表示字节数(求出的长度)的编码,处理进入步骤S5032。
另一方面,当在步骤S5024判断COPY LEFT的参照位置为无效的情况下,或者在步骤S5026判断步骤S5025所求出的长度为0的情况下,处理进入步骤S5027,检索高速缓冲存储器,判断当前位置的字节(象素数据)是否登录在高速缓冲存储器中(步骤S5027)。由于在当前位置的字节登录在高速缓冲存储器中的情况下,就判断为能够编码成CACHE命令,处理进入步骤S5031,输出CACHE命令,即编码01和接续在其后的表示高速缓冲存储器命中了的高速缓冲存储器的位置的3位数据(步骤S5031),并更新高速缓冲存储器(步骤S5037)。具体就是,在将当前位置的字节保存在高速缓冲存储器的起始位置的同时,进行将从高速缓冲存储器的起始位置到高速缓冲存储器命中了的高速缓冲存储器的位置之前的数据依次移动到高速缓冲存储器的下一个位置的处理。
另一方面,当在步骤S5027判断为当前位置的字节没有登录在高速缓冲存储器中的情况下,处理进入步骤S5028,输出RAW命令,即编码001和接续在其后的与当前位置的字节相等的8位的原始数据(步骤S5028),并更新高速缓冲存储器(步骤S5036)。具体就是,在将当前位置的字节保存在高速缓冲存储器的起始位置的同时,进行将从高速缓冲存储器的起始位置到高速缓冲存储器最终之前的数据依次移动到高速缓冲存储器的下一个位置的处理。
接着,仅将当前位置前移用COPY UP、COPY LEFT、CACHE或者RAW命令所处理的字节数(步骤S5032)。接着,判断是否处理了全部的图像数据(步骤S5033)。在没有处理完全部的图像数据的情况下,处理返回步骤S5021,进行上述的编码处理。另外,在处理完全部的图像数据的情况下,处理进入步骤S5034,输出EOB命令,即编码0000(步骤S5034),进而,输出位0(直到达到8的整数倍)以使所输出的编码的总位数成为8的整数倍(步骤S5035)。
接着,就解码电路5013进行说明。图26是表示解码电路5013的基本构成的框图。在该图中输入缓冲器5021保存从FIFO存储器512所读出的编码数据。5021至少能够保存4字节的数据,在输入缓冲器5021中产生空闲,且FIFO存储器512中有数据的情况下,从FIFO存储器512读出数据进行保存。另外,当保持在位计数器5023中的处理完的位数成为8位以上的情况下,输入缓冲器5021删除不需要的处理完的数据。
选择器5022,是例如11组的8输入选择器,通过根据位计数器5023所表示的处理完的位数对保存在输入缓冲器5021中的编码数据进行选择,进行命令解码电路5024进行处理所需要的、命令的开始位置的对齐。由于相对于输入缓冲器5021以字节单位来保持数据,命令是位单位的可变长度数据,所以为了有8处的开始位置这一点是必要的。
位计数器5023,保存输入缓冲器5021所保存的编码数据中的处理完的位数。另外,位计数器5023计数从命令解码电路24所输出的命令的位数,并将位计数器5023中所保存的值更新成已计数的值。另外,位计数器5023在输入缓冲器5021删除了处理完的数据的情况下,从所保存的值中减去已删除的位数。另外,在命令解码电路5024对EOB命令进行解码时,位计数器5023从命令解码电路5024接收EOB信号,进行字节边界对齐的处理。具体就是,如果位计数器的低位3位全部是0就什么也不作,如果不是这样就进行在将8加到所保存的值的同时清除低位3位的处理。
命令解码电路5024,由例如只读存储器或者布线逻辑(wiredlogic)构成,对由选择器5022进行了位置对齐、并保存在输入缓冲器5021中的编码数据进行解码,根据已解码的命令将前面说明的或者后面说明的各种信号输出到高速缓冲存储器输出电路5025、上复制输出电路5026、左复制输出电路5027、原始数据输出电路5028以及位计数器5023。
高速缓冲存储器输出电路5025,在命令解码电路5024解码了CACHE命令时接收表示高速缓冲存储器的位置的3位的数据,从高速缓冲存储器5036读取并输出该位置的数据。上复制输出电路5026,在命令解码电路5024解码了COPY UP命令时接收应复制的字节数,依照接收到的字节数反复从行缓冲器5035读取数据,并输出所读取的数据。左复制输出电路5027,在命令解码电路5024解码了COPY LEFT命令时接收应复制的字节数,依照接收到的字节数反复从可变级移位寄存器5039读取数据,并输出所读取的数据。原始数据输出电路5028,在命令解码电路5024解码了RAW命令时接收表示原始数据的8位的数据,并输出所接收的数据。
行长寄存器5029,保持包含在已接收到的打印控制命令中的1行的字节数。列计数器5030,保持行缓冲器5035的当前的列地址,每向行缓冲器5035进行写入就进行计数增加,另外在该结果达到行长寄存器5029所保持的1行的字节数的情况下,复位成0。行数寄存器5031,保持包含在已接收到的压缩参数的、表示COPY UP命令进行参照的位置的行数。行计数器5032,保持行缓冲器5035的当前的行地址,每当列计数器5030达到行长寄存器5029所保持的1行的字节数并复位成0就进行计数增加。此外,在达到行数寄存器5031所保持的行数的情况下,复位成0。另外当行数被输出到行数寄存器5031时,行计数器5032复位成0。
乘法电路5033,通过计算行计数器5032所保持的当前的行地址和行长寄存器5029所保持的1行的字节数的积,输出行缓冲器5035的当前的行的开始地址。加法电路5034,通过计算乘法电路5033所输出的当前的行的开始地址和列计数器5030所保持的当前的列地址的和,输出行缓冲器5035的当前的地址。
行缓冲器5035,保持多个行的解码数据,根据加法电路5034所输出的地址,进行解码数据的输入或者输出。行缓冲器5035,构成由行数寄存器5031保持的行数所指定的大小的环形存储器。
高速缓冲存储器5036,在高速缓冲存储器输出电路5025或者原始数据输出电路5028解码了图像数据时存储图像数据,另外输出高速缓冲存储器输出电路5025将要参照的数据。级数寄存器5038保持表示COPYLEFT命令要参照的位置的字节偏移值。可变级移位寄存器5039,由移位寄存器和选择器构成,构成与级数寄存器5038所保持的表示字节偏移值相等的级数的移位寄存器,输出将已输出的解码数据延迟了比用级数寄存器5038所保持的字节偏移值指定的值仅小1的次数的数据。
在上面的构成中,当命令解码电路5024解码COPY UP命令后,就解码与它相连续接续其后的字节数,将解码了的字节数输出到上复制输出电路5026。然后在行缓冲器5035中,位于从当前行还要靠上保存在行数寄存器5031中的行数的,且被解码了的字节数部分的解码数据群从行缓冲器5035被读出到上复制输出电路5026,上复制输出电路5026从加法电路5034输出的地址(换言之就是当前位置)开始按顺序写入所读出的解码数据群。另一方面,将已读出的解码数据群输入到可变级移位寄存器5039(下面从开头起)。然后已经保持在可变级移位寄存器5039中的数据一级一级地进行移位,从可变级移位寄存器5039的最终级,输出与当前位置的下一位置相对应的COPY LEFT命令所参照的位置的1字节。接着,列计数器5030进行计数增加。就这样进行解码数据的输出直到所指定的字节数的处理结束。
另一方面,当命令解码电路5024解码COPY LEFT命令后,接着就解码接续其后的后续的字节数,将解码了的字节数输出到左复制输出电路5027。然后从可变级移位寄存器5039读取此字节数部分的解码数据,输入到左复制输出电路5027。当左复制输出电路5027输出此解码数据后,所输出的解码数据被写入到行缓冲器503 5的当前位置(加法电路5034输出的地址),同时被输入到可变级寄存器5039。另外保持在可变级移位寄存器5039中的数据一级一级地进行移位,从可变级移位寄存器5039的最终级,输出与当前位置的下一位置相对应的COPY LEFT命令所参照的位置的1字节。接着,列计数器5030进行计数增加。就这样进行解码数据的输出直到所指定的字节数的处理结束。
当命令解码电路5024解码RAW命令后,就将接续其后的后续的8位的原始数据输出到原始数据输出电路5028。当原始数据输出电路5028输出此数据后,所输出的解码数据被写入行缓冲器5035的当前位置,同时被输入到可变级寄存器5039。另外保持在可变级移位寄存器5039中的数据一级一级地进行移位,从可变级移位寄存器5039的最终级,输出与当前位置的下一位置相对应的COPY LEFT命令所参照的位置的1字节。接着,列计数器5030进行计数增加。另外,将已输出的解码数据存储到高速缓冲存储器5036的起始位置。
当命令解码电路5024解码CACHE命令后,就将表示接续其后的后续的3位的高速缓冲存储器内的位置的数据输出到高速缓冲存储器输出电路5025。高速缓冲存储器输出电路5025从高速缓冲存储器5036读取所指定位置的解码数据并输出该解码数据。所输出的解码数据被写入行缓冲器5035的当前位置,同时被输入到可变级寄存器5039。另外保持在可变级移位寄存器5039中的数据一级一级地进行移位,从可变级移位寄存器5039的最终级,输出与当前位置的下一位置相对应的COPY LEFT命令所参照的位置的1字节。接着,列计数器5030进行计数增加。另外,将已输出的解码数据存储到高速缓冲存储器5036的起始位置。
接着参照图27,就高速缓冲存储器5036的构成进行说明。图27是表示高速缓冲存储器5036的详细的构成的框图。
在该图中,5051是第1移位寄存器,由8位8级的移位寄存器构成。第1移位寄存器5051能够存储直到8个由原始数据输出电路5028或者高速缓冲存储器输出电路5025所输出的1字节的图像数据。构成第1移位寄存器5051的各级寄存器在从控制电路5055输入移位脉冲的情况下,存储前一级寄存器所存储的数据。
5052是第1移位寄存器,由1位8级的移位寄存器构成。构成第2移位寄存器5052的各级寄存器保持表示在第1移位寄存器5051所对应的寄存器中是否存储着数据的1位的信息。构成第2移位寄存器5052的各级寄存器在从控制电路5055输入移位脉冲的情况下,存储前一级寄存器所存储的数据。
5053是选择器,根据所输入的地址,即应参照的高速缓冲存储器的位置,选择并输出构成第1移位寄存器5051的各级寄存器中的一个所存储的数据。
5054是编码器,当输入指示从高速缓冲存储器读取的读取信号时,根据所输入的地址,即应参照的高速缓冲存储器的位置,输出对构成第2移位寄存器5052的各级寄存器中的一个进行清除的信号。
5055是控制电路,当输入指示向高速缓冲存储器写入的写入信号时,根据保持在第2移位寄存器5052中的表示在第1移位寄存器5051所对应的寄存器中是否存储着数据的信息,对第1移位寄存器5051和第2移位寄存器5052需要移位的各级输出移位脉冲。当在此之前的任何级中都没有存储数据的级存在的情况下不输出移位脉冲,在不是这样的情况下输出。
当原始数据输出电路5028输出解码数据后,所输出的解码数据被输入到第1移位寄存器5051,同时写入信号被输入到控制电路5055。由于存储着数据的级相连续,故控制电路5055将移位脉冲输出到起始级和在前一级中存储着数据的级,表示第1移位寄存器5051的起始级中所输入的解码数据,和第2移位寄存器5052的起始级中的数据是有效的值1被分别存储,同时前一级的数据被存储到在前一级中存储着数据的级。
当高速缓冲存储器输出电路5025接收表示高速缓冲存储器的位置的信息后,接收到的表示高速缓冲存储器的位置的信息即地址被输入到选择器5053和编码器5054,同时读取信号被输入到编码器5054。选择器5053根据所输入的地址选择并输出存储在第1移位寄存器5051中的数据。另外,编码器5054根据所输入的地址对输出了数据的级输出清除信号。此结果就是,输出了第2移位寄存器5052的数据的级的寄存器被清除。
当高速缓冲存储器输出电路5025读取选择器5053所输出的数据,并作为解码数据输出后,所输出的解码数据被输入到第1移位寄存器5051,同时写入信号被输入到控制电路5055。由于第2移位寄存器5052的进行了高速缓冲存储器的读取的级被清除,存储有数据的级就不相连续,因此控制电路5055将移位脉冲输出到从起始级到进行了高速缓冲存储器读取的级为止的级,故表示第1移位寄存器5051的起始级中所输入的解码数据,和第2移位寄存器5052的起始级中的数据是有效的值1被分别存储,同时前一级的数据被存储在从第1移位寄存器5051和第2移位寄存器5052的第2级到进行了高速缓冲存储器的读取的级为止的级。
这样维持高速缓冲存储器5036以使解码了RAW命令或者CACHE命令的数据按新的顺序存储。
如上面的说明那样,由于本实施形式的图像处理装置,与前面的数据序列相一致的部分是对相一致的长度进行编码,就能够以高压缩率来编码如图像数据那样相同的数据序列进行排列的情况多的数据。
另外,由于在与前面的数据序列不相一致的情况下对高速缓冲存储器进行检索,在高速缓冲存储器命中了的情况下,对高速缓冲存储器的位置进行编码,就能够编码成与对数据自身进行编码的情况相比更短的代码。即使在与前面的数据序列相一致的情况少的情况下也能够尽量防止压缩率的降低。
另外,在对数据序列相一致的长度进行了编码的情况下,由于不更新高速缓冲存储器,故能够防止用长数据序列改写高速缓冲存储器造成的压缩率的降低。
虽然在第3实施形式中,用硬件来进行解码处理,但并不限于此,也可以用软件来进行。另外,虽然在第3实施形式中,用软件来进行编码(压缩)处理,但也并不限于此,也可以使用专用的硬件来进行。另外,虽然在第3实施形式中,编码的单位数据的大小是1字节,但并不限于此,也可以是,例如1象素或者2字节。
另外,虽然在第3实施形式中,当在高速缓冲存储器充满时选择要删除的数据的时候,使用对最长间隔中没有被参照过的数据进行删除,所谓的LRU法,但并不限于此,也可以使用例如模拟LRU法或者模拟随机法等。
由于表示在打印图像时所使用的软件群和打印机之间关系的概念图和第1实施形式相同,如图1所示那样,故省略该说明。
图28是表示本实施形式中的打印机1711的基本构成的框图。在图28中,6011是并行端口,从端口驱动器5接收打印机命令。6012是FIFO(先入先出)存储器,存储并行端口11接收到的编码数据(详见后面说明),将所存储的数据按照先入先出的顺序输出到解码电路6013。解码电路6013,对FIFO存储器12中所存储的码序列数据进行解码,并输出到打印机引擎6014和再编码电路6017。打印机引擎6014是激光打印机引擎,根据控制电路6015的指示,按照解码电路6013所输出的图像数据进行打印。
6015是控制电路,例如由单片CPU构成,进行并行端口6011、FIFO存储器6012、解码电路6013、再编码电路6017、页存储器6018、再解码电路6019以及打印机引擎6014的控制。6017是再编码电路,编码并输出从解码电路6013所输出的图像数据。6018是页存储器,保存再编码电路6017所输出的至少1页的编码。6019是再解码电路,解码并输出由再编码电路6017编码后保存到页存储器6018的编码。
下面,就打印动作进行说明。
当操作者在计算机侧操作应用程序3生成打印数据,并指示打印后,打印指令经由操作系统2从应用程序3被传递到打印机驱动器4。打印机驱动器4基于从应用程序3所发行的打印指令,变换成图像数据。然后,打印机驱动器4基于后面说明的编码步骤,从已生成的图像数据生成编码数据,并与指定用纸尺寸、位图数据的行的长度和行数等的打印控制命令,指定压缩参数的压缩参数指定命令以及表示页结束的换页命令同时输出。
端口驱动器5将打印机驱动器4所生成的一系列打印机命令发送到打印机1711。控制电路6015经由并行端口6011接收打印机命令。如果接收到的打印机命令是打印控制命令或者压缩参数指定命令的话,为了打印控制就保持在控制电路6015的内部。另外,再接收到的打印机命令是编码数据的情况下,就保存到FIFO存储器6012。此后,当通过页结束命令的接收等,检测出构成1页的打印机命令的接收已完成时,向打印机引擎6014指示打印开始。指示打印开始后,在打印机引擎6014能够接受图像数据时,向解码电路6013要求图像数据的输出。
解码电路6013,在被打印机引擎6014要求图像数据的输出的情况下,从FIFO存储器6012读出编码数据,并将解码了的图像数据输出到打印机引擎6014。这样编码数据依次进行解码并作为图像数据被输出,当图像数据的输出全部结束后,1页的打印完成。
再编码电路6017,每当解码电路6013输出图像数据,就编码所输出的图像数据。如果再编码电路6017所进行的编码处理是不参照前页的数据仅参照该页的数据进行编码的编码处理,就可以是任何处理,例如仅参照左邻、仅参照上邻、参照左邻和上邻双方、或者参照预定的字节数左侧的位置以及预定的行数上方的位置的数据来进行编码。由再编码电路6017所编码的代码被保存到页存储器6018。这样当1页的打印结束时,已打印的页的图像数据就被编码并保存到页存储器6018接着当构成第2页的打印机命令的接收结束后,同样地开始打印,图像数据依次输出到打印机引擎6014,同时由再编码电路6017进行编码并保存到页存储器6018。另外,在再解码电路6019起动第2页的打印之前,根据控制电路6015的指示来开始动作,读取并解码保存到页存储器6018的、前一页的图像数据已编码的代码。保存过已读取的编码的区域就成为空区域。
再解码电路6019与解码电路6013输出图像数据一致步调输出已解码的数据。此数据,在解码电路6013对参照前一页的图像数据的编码进行了解码的情况下,作为参照数据来使用,在其他的情况下不使用被丢弃。
由于本实施形式中打印机驱动器4所生成的编码和第1实施形式相同,如图3、4所示那样,故省略该说明。
另外,由于图3和图4中所表示的编码的实例在图5中进行了说明,该说明如上述那样,故省略该说明。
接着,参照图29所示的流程图,就本实施形式中打印机驱动器4的处理细节进行说明。
当从操作系统2调用打印机驱动器4后,首先在步骤S601判断调用的种类是否是绘图指令。在调用的种类是绘图指令的情况下,在步骤S602进行绘图处理。具体就是,将经由操作系统2从应用程序3所指示的字符、图形或者位图等变换成8位灰度级图像,进行记录并结束处理。
在步骤S601中调用的种类不是绘图指令的情况下,在步骤S7,判断调用的种类是不是页结束指令。在调用的种类是页结束指令的情况下,在步骤S8,进行2值化处理。具体就是使用抖动矩阵将在步骤602所记录的8位灰度级的图像变换成黑白1位的图像。
接着,在步骤S609输出打印条件指定命令,具体就是指定用纸尺寸、供纸盒、分辨率、灰阶数、1行的字节数、1页的行数等打印所需要的条件的命令。
接着,在步骤S610输出编码时所使用的,指定以下参数的压缩参数指定命令指定上复制时复制源是哪一行上方的位置的上复制垂直偏移值和指定左复制时复制源是相同行的哪一字节左方的位置的左复制水平偏移值。
这里,上复制垂直偏移值和左复制水平偏移值,依照步骤S608中所使用的抖动矩阵,预先通过理论或者试验求出最优值,并使用此值。
接着,在步骤S6011按照后面说明的编码步骤对图像数据进行编码。此时,使用在步骤S6010输出了的压缩参数指定命令所指定的上复制垂直偏移值和左复制水平偏移值进行编码。接着在步骤S6012输出对在步骤S6011中所编码的图像数据的大小和行数进行指定的图像数据命令首标。接着在步骤S6013输出在步骤S6011中所编码的图像数据。接着在步骤S6014输出指定页结束的换页命令。接着在步骤S6015将当前页的图像数据传送到前页存储器并结束处理。
在步骤S607中调用的种类不是页结束指令的情况下,在步骤S6016,进行符合调用的种类的其他处理,例如与页开始指令或者打印能力询问指令等相对应的处理,然后结束。
接着参照图30A和图30B,就图29的步骤S6011中的编码处理的细节进行说明。
首先在步骤S6051将行编号Y初始化为0。接着在步骤S6052将从行开头的字节偏移X初始化为0。接着在步骤S6053,判断上位置是否在有效的图像区域中。具体就是判断在图29的步骤S6047中所输出的表示上复制位置的行数是否也不小于行编号Y。由于表示上复制位置的行数也不小于行编号Y的情况,就是上位置在有效的图像区域中的情况,故在步骤S6054,求得从当前位置(X、Y)和上位置(X、Y-表示上复制位置的行数)开始的字节序列连续相一致的长度。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。
接着在步骤S6055,判断步骤S6054中所求出的长度是否为0。在步骤S6054中所求出的长度不为0的情况下,在步骤S6056,判断步骤S6054中所求出的长度是否比63大。在步骤S6054中所求出的长度比63大的情况下,在步骤S6057,将COUNT HIGH命令输出到缓冲器,接着在步骤S6058,对用64除以计数的高位,即在步骤S6054所求出的长度算出的商进行编码并输出到缓冲器,进入步骤S6059。在步骤S6056中,当在步骤S6054所求出的长度不比63大的情况下,直接进入步骤S6059。
接着,在步骤S6059将COUNT UP命令输出到缓冲器,接着在步骤S6060,对用64除以计数的低位,即在步骤S6054所求出的长度算出的余数进行编码并输出到缓冲器。
在步骤S6053中表示上复制位置的行数比行编号Y小的情况下,以及在步骤S6055中的长度为0的情况下,在步骤S6062,判断左位置是否在有效的图像区域中。具体就是判断图29的步骤S6047中所输出的表示左复制位置的字节数是否也不小于从行开头的字节偏移X。由于表示左复制位置的字节数也不小于从行开头的字节偏移X的情况,就是左位置在有效的图像区域中的情况,故在步骤S6063,求得从当前位置(X、Y)和左位置(X-表示左复制位置的字节数、Y)开始的字节序列连续相一致的长度。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。
接着,在步骤S6064,判断步骤S6063中所求出的长度是否为0。在步骤S63中所求出的长度不为0的情况下,在步骤S6065,判断步骤S6063中所求出的长度是否比63大。在步骤S6063中所求出的长度比63大的情况下,在步骤S6066,将COUNT HIGH命令输出到缓冲器,接着在步骤S6067,对计数的高位,即用64除以在步骤S6063所求出的长度算出的商进行编码并输出到缓冲器,进入步骤S6068。在步骤S6065中,当在步骤S6063所求出的长度比63不大的情况下,直接进入步骤S6068。
接着,在步骤S6068将COUNT LEFT命令输出到缓冲器,接着在步骤S6060,对计数的低位,即用64除以在步骤S6063所求出的长度算出的余数进行编码并输出到缓冲器。
在步骤S6062中表示左复制位置的字节数比从行开头的字节偏移X小的情况下,以及在步骤S6064中的长度为0的情况下,在步骤S6069,判断有效的图像是否保存在前一页存储器中。具体就是判断页编号是否不为1。由于页编号不为1的情况,就是在步骤S6015没有将图像数据传送到前页存储器的情况,故在步骤S6070,求得从当前页的图像数据的当前位置(X、Y)和保存在前一页存储器中的图像数据的当前位置(X、Y)开始的字节序列连续相一致的长度(计数)。此外这时,在直到行末都连续相一致的情况下,设为在行末进行中止。另外,在连续相一致的长度,超过作为计数编码的最大值的4095字节的情况下,设为在4095字节进行中止。
接着在步骤S6071,判断步骤S6070中所求出的长度是否为0。在步骤S6070中所求出的长度不为0的情况下,在步骤S6072,判断步骤S6070中所求出的长度是否比63大。在步骤S6070中所求出的长度比63大的情况下,在步骤S6073,将COUNT HIGH命令输出到缓冲器,接着在步骤S6074,对计数的高位,即用64除以在步骤S6070所求出的长度算出的商进行编码并输出到缓冲器,进入步骤S6075。在步骤S6072中,当在步骤S6070所求出的长度比63不大的情况下,直接进入步骤S6075。接着在步骤S6075,将COUNT PREVIOUS PAGE命令输出到缓冲器,接着在步骤S6060,对计数的低位,即用64除以在步骤S6070所求出的长度算出的余数进行编码并输出到缓冲器。
当在步骤S6069中页编号为1的情况下,以及在步骤S6071中长度为0的情况下,在步骤S6076,将RAW命令输出到缓冲器,接着将当前位置(X、Y)的数据1字节作为原始数据输出到缓冲器。
在任何情况下,进入步骤S6078,将已处理的字节数相加到X。接着在步骤S6079,判断X是否到达行末,即判断X是否等于1行的字节数。在X比1行的字节数小的情况下,返回步骤S6053,继续进行处理。在X等于1行的字节数的情况下,在步骤S6080,将1相加到行编号Y,接着在步骤S6081判断图像的处理是否结束,即判断Y是否和图像的行数相等。
在Y比图像的行数小的情况下,返回S6052,继续进行处理。在Y等于图像的行数的情况下,在步骤S6082,将EOB命令输出到缓冲器,接着在步骤S6083,仅将为了对齐字节边界所需数目的位“0”输出到缓冲器,结束处理。
接着,参照图31,就图28所示的解码电路6013的细节进行说明。此外,图31是表示图28所示的解码电路6013的细节的框图。
在图31中,输入缓冲器6021,保存从FIFO存储器6012读出的编码数据。输入缓冲器6021,至少能够保持4字节的数据,在缓冲器中产生空闲,且FIFO存储器6012中有数据的情况下,从FIFO存储器6012读出数据进行保存。另外,当保持在位计数器6023中的处理完的位数成为8位以上的情况下,输入缓冲器6021删除不需要的处理完的数据。
选择器6022是例如11组的8输入选择器,通过根据位计数器6023所表示的处理完的位数对保存在输入缓冲器6021中的编码数据进行选择,进行命令解码电路6024进行处理所需要的、命令的开始位置的对齐。由于相对于输入缓冲器6021以字节单位来保持数据,命令是位单位的可变长度数据,所以为了有8处的开始位置这一点是必要的。
位计数器6023,保存输入缓冲器6021所保存的编码数据中的处理完的位数。另外,位计数器6023通过加上从命令解码电路6024所输出的命令的位数,来更新位计数器中所保存的值。另外,位计数器6023在输入缓冲器删除了处理完的数据的情况下,减去已删除的位数。另外,在命令解码电路6024对EOB命令进行解码时,位计数器6023从命令解码电路6024接收EOB信号,进行字节边界对齐的处理。具体就是,如果位计数器的低位3位全部是0就什么也不作,如果不是这样就在加上8的同时清除低位3位。
命令解码电路6024,由例如只读存储器或者布线逻辑(wiredlogic)构成。对由选择器6022进行了位置对齐、并保存在输入缓冲器6021中的编码数据进行解码,根据已解码的命令将前面说明的或者后面说明的各种信号输出到计数器6026、上复制输出电路6027、前页复制输出电路6028、左复制输出电路6029、原始数据输出电路6030以及位计数器6023。
计数器6026,保持COPY UP、COPY LEFT、或者COPYPREVIOUS PAGE命令的处理字节数,每进行1字节的数据输出就进行相减运算。计数器6026能够独立地设定高位6位和低位6位,在命令解码电路6024解码了COUNT HIGH命令时,将命令解码电路6024所输出的处理字节数的相加值保存到计数器6026的高位。另外,在命令解码电路6024解码了COPY UP、COPY LEFT、或者COPY PREVIOUS PAGE命令时,将命令解码电路6024所输出的处理字节数保存到计数器6026的低位。
上复制输出电路6027,根据计数器6026所保持的处理字节数,从行缓冲器6031读取上复制位置的数据并进行输出。
相当于上复制位置的行缓冲器6031的地址被保持在内置于上复制输出电路6027的寄存器中。此寄存器的初始值,由控制电路6015预先写入相当于上复制位置的值,每当解码电路6013输出1字节的图像数据就自动地进行加法运算,同时在该结果超过了行缓冲器6031的最终地址的情况下,自动地再次设定为行缓冲器6031的起始地址。
前页复制输出电路6028,根据计数器6026保持的处理字节数,读取并输出再解码电路6019输出的前一页的相同位置的图像数据。
左复制输出电路6029,根据计数器6026所保持的处理字节数,从行缓冲器6031读取左复制位置的数据并进行输出。
相当于左复制位置的行缓冲器6031的地址被保持在内置于左复制输出电路6029的寄存器中。此寄存器的初始值,由控制电路6015预先写入相当于左复制位置的值,每当解码电路6013输出1字节的图像数据就自动地进行加法运算,同时在该结果超过了行缓冲器6031的最终地址的情况下,自动地再次设定为行缓冲器6031的起始地址。
原始数据输出电路6030,输出命令解码电路6024所输出的1字节的原始数据。
行缓冲器6031,保持多个行的解码数据,根据上复制电路6027或者左复制电路6029输出的地址,进行解码数据的读出,同时将上复制电路6027、前页复制电路6028、左复制电路6029或者原始数据输出电路6030所输出的数据写入到当前位置。
相当于当前位置的行缓冲器6031的地址被保持在内置于行缓冲器6031的寄存器中。此寄存器的初始值,由控制电路6015预先写入行缓冲器6031的起始地址,每当解码电路6013输出1字节的图像数据就自动地进行加法运算,同时在该结果超过了行缓冲器6031的最终地址的情况下,自动地再次设定为行缓冲器6031的起始地址。
当命令解码电路6024解码COPY UP命令后,解码后续的计数并保存到计数器6026的低位,同时将信号输出到上复制输出电路6027。计数器6026的高位,在没有在先发出COUNT HIGH命令的情况下保存0,在先发出了的情况下保存表示COUNT HIGH命令的高位计数。上复制位置的数据被从行缓冲器6031读取并输入到上复制输出电路6027。当上复制输出电路6027输出此数据后,所输出的解码数据就被写入到行缓冲器6031的当前位置。就这样进行解码数据的输出直到计数器6026达到0为止。
当命令解码电路6024解码COPY PREVIOUS PAGE命令后,解码后续的计数并保存到计数器6026的低位,同时将信号输出到前页复制输出电路6028。计数器6026的高位,在先没有发出COUNTHIGH命令的情况下保存0,在先发出了的情况下保存表示COUNTHIGH命令的高位计数。前一页的相同位置的数据被从再解码电路6019输入到前页复制输出电路6028。当前页复制输出电路6028输出此数据后,所输出的解码数据就被写入到行缓冲器6031的当前位置。就这样进行解码数据的输出直到计数器6026达到0为止。
当命令解码电路6024解码COPY LEFT命令后,解码后续的计数并保存到计数器6026的低位,同时将信号输出到左复制输出电路6029。计数器6026的高位,在先没有COUNT HIGH命令的情况下保存0,在先发出了的情况下保存表示COUNT HIGH命令的高位计数。左复制位置的数据被从行缓冲器6031读取并输入到左复制输出电路6029。当左复制输出电路6029输出此数据后,所输出的解码数据就被写入到行缓冲器6031的当前位置。就这样进行解码数据的输出直到计数器6026达到0为止。
当命令解码电路6024解码RAW命令后,将后续的1字节的原始数据输出到原始数据输出电路6030。当原始数据出电路6030输出此数据后,所输出的解码数据就被写入到行缓冲器6031的当前位置。
当命令解码电路6024解码COUNT HIGH命令后,解码后续的计数并保存到计数器6026的高位。
由于表示在打印图像时所使用的软件群和打印机之间关系的概念图和第1实施形式相同,如图1所示那样,故省略该说明。
另外由于本实施形式中的图像处理装置的基本构成和第1实施形式相同,如图17所示那样,故省略该说明。
另外由于本实施形式中的打印机1711的基本构成和第3实施形式相同,如图19所示的那样,故省略该说明。
另外由于本实施形式中的打印动作由于与第3实施形式相同,故省略该说明。
接着,参照图32和图21所示的表,就在本实施形式中的打印机驱动器4生成的编码进行说明。
图32是表示一例在本实施形式中的打印机驱动器4所生成的编码表的图。在本实施形式中进行说明的各编码是以位单位可变长度的,例如以从2位到18位的位序来进行表示。与哈夫曼(Huffman)编码相同,各编码构成为通过从开始按顺序进行查找就能够识别编码。
此外,本实施形式中设为在编码时参照2处的左参照位置和2处的上参照位置,符合减色处理时所使用的抖动显示阵的特性,例如,确定为左参照位置是关注位置的1字节左侧和4字节左侧的位置,另外上参照位置是关注位置的4行上方和2行上方且2字节左侧的位置。
如图32所示,编码的位序以“1”开始的情况就是COPY UP1命令。在此命令之后接续表示后面说明的长度的编码,指示从预先确定的高优先级的上参照位置,复制接续其后的编码所表示的长度的字节序列。
另外,编码的位序以“110”开始的情况就是COPY UP2命令。在此命令之后接续表示后面说明的长度的编码,指示从预先确定的低优先级的上参照位置,复制接续其后的编码所表示的长度的字节序列,并且调换高优先级的上参照位置和低优先级的上参照位置。
另外,编码的位序以“001”开始的情况就是RAW命令。在此命令之后接续表示原始数据的8位数据,指定持有接续其后的8位数据的值的1字节的数据。
另外,编码的位序以“010”开始的情况就是COPY LEFT1命令。在此命令之后接续表示后面说明的长度的编码,指示从预先确定的高优先级的左参照位置,复制接续其后的编码所表示的长度的字节序列。
另外,编码的位序以“0001”开始的情况就是COPY LEFT2命令。在此命令之后接续表示后面说明的长度的编码,指示从预先确定的低优先级的左参照位置,复制接续其后的编码所表示的长度的字节序列,并且调换高优先级的左参照位置和低优先级的左参照位置。
另外,编码的位序为“0000”的情况就是EOB命令,指示码块的结束。
当在低优先级的参照位置上数据相一致的情况下,以后在该参照位置上数据相一致的可能性就高。从而,在输出识别低优先级的参照位置的更长的代码时,如果提高该参照位置的优先级以在以后用更短的代码来进行识别的话,此后当在该参照位置上数据一致的情况下,将要输出的代码的长度就会变短。所以,通过执行COPY UP2命令、COPY LEFT2命令,来调换高优先级的参照位置和低优先级的参照位置,今后所输出的代码的长度就会变短。
接续在图32所示的COPY UP1命令、COPY UP2命令、COPYLEFT1命令或COPY LEFT2命令之后的,表示长度的编码的编码表的一例如第3实施形式中说明了的图21所示的那样。
接着参照图33A、图33B,就编码处理举出实例来进行说明。图33A表示编码对象的图像数据,图33B是表示被编码的数据的图,如图33A所示,10字节的图像数据(关注数据)00、00、12、34、56、78、00、BC、DE和00在最下行从左侧进行排列,图像数据12、34、56、78、9A、BC、DE、00、00、和00(参照数据)在比该行高2行的行从左侧进行排列。当前正要进行编码或者解码的图像数据是最下行,另外在此时刻,设高优先级的左参照位置为1字节左侧的位置(即低优先级的左参照位置为4字节左侧的位置)、低优先级的上参照位置为2行上方且2字节左侧的位置(即高优先级的上参照位置为4行上方的位置)形成。
这里最下行的起始字节00能够编码为位序001 00000000、即表示原始数据00的RAW命令。
另外,下一个字节00,能够编码为位序0101,即从高优先级的左参照位置、即1字节左侧的位置复制1字节的长度的COPY LEFTI命令。
另外,随后的字节序列12、34、56、78能够编码为位序011 00100,即从低优先级的上参照位置、即2行上方且2字节左侧的位置复制4字节的长度的COPY UP2命令。此结果,就是上参照位置的优先级进行调换,以后的COPY UP1命令和COPY UP2命令将分别参照从低优先级变成高优先级的2行上方且2字节左侧的位置,和从高优先级变成低优先级的4行上的位置。
下一个字节00能够再次编码为位序001 00000000、即表示原始数据00的字节的RAW命令。
另外,随后的字节序列BC、DE、00能够编码为位序1011,即从高优先级的上参照位置、即2行上方且2字节左侧的位置开始复制3字节的长度的COPY UP1命令。
如上面那样,就能够编码图像数据。由于本实施形式中打印机驱动器4的处理,遵循与第3实施形式相同的图24所示的流程图,故省略其说明。
接着,就步骤S5011中本实施形式的编码处理,参照表示相同处理的流程图的图34A以及图34B来进行说明。遵循该此程图的程序作为上述流程图的子程序被安装到打印机驱动器4。
首先在步骤S7019,按照预定的初始值,即按照在上述步骤S5010中所求出的压缩参数来分别设定高优先级的上参照位置、低优先级的上参照位置、高优先级的左参照位置以及低优先级的左参照位置。接着,在步骤S7020,将当前位置、即进行编码的图像的位置设定到图像的起始行左端。
接着,在步骤S7021,判断对应当前位置的高优先级的上参照位置是否正参照有效的图像数据。在高优先级的上参照位置正参照有效的图像数据的情况下,在步骤S7022,比较从当前位置开始的字节序列和从高优先级的上参照位置开始的字节序列来求得与高优先级的上参照位置相一致的长度。此外这时,在到达行末的情况下以及长度达到255字节的情况下,就中止处理。接着,在步骤S7023,判断与步骤S7022所求出的高优先级的上参照位置相一致的长度是否为0。在不是0的情况下,由于能够编码成COPY UP1命令,就在步骤S7024输出表示COPY UP1命令、即编码1和表示接续在其后的字节数(在步骤S7022所求出的长度)的编码,处理进入步骤S7040。
另一方面,当在步骤S7021判断为高优先级的上参照位置是无效的情况下,或是当在步骤S7023,判断为与步骤S7022所求出的高优先级的上参照位置相一致的长度是0的情况下,都在步骤S7025,判断对应当前位置的高优先级的左参照位置是否正参照有效的图像数据。在高优先级的左参照位置正参照有效的图像数据的情况下,在步骤S7026,比较从当前位置开始的字节序列和从高优先级的左参照位置开始的字节序列来求得与高优先级的左参照位置相一致的长度。此外这时,在到达行末的情况下以及长度达到255字节的情况下,就中止处理。接着在步骤S7027,判断与步骤S7026所求出的高优先级的左参照位置相一致的长度是否为0。在不是0的情况下,由于能够编码成COPY LEFT1命令,就在步骤S7028输出表示COPYLEFT1命令、即编码010和表示接续在其后的字节数(在步骤S7026所求出的长度)的编码,处理进入步骤S7040。
不管是当在步骤S7025判断为高优先级的左参照位置是无效的情况下,还是当在步骤S7027判断为与步骤S7026所求出的高优先级的左参照位置相一致的长度是0的情况下,都在步骤S7029,判断对应当前位置的低优先级的上参照位置是否正参照有效的图像数据。在低优先级的上参照位置正参照有效的图像数据的情况下,在步骤S7030,比较从当前位置开始的字节序列和从低优先级的上参照位置开始的字节序列来求得与低优先级的上参照位置相一致的长度。此外这时,在到达行末的情况下以及长度达到255字节的情况下,就中止处理。接着在步骤S7031,判断步骤S7030所求出的与低优先级的上参照位置相一致的长度是否为0。在不是0的情况下,因为能够编码为COPY UP2命令,就在步骤S7032输出COPY UP2命令、即编码011和表示接续在其后的字节数(在步骤S7030所求出的长度)的编码,接着在步骤S7033调换高优先级的上参照位置和低优先级的上参照位置,处理进入步骤S7040。
当在步骤S7029判断为低优先级的上参照位置是无效的情况下,或是在步骤S7031判断为与步骤S7030所求出的低优先级的上参照位置相一致的长度是0的情况下,都在步骤S7034,判断对应当前位置的低优先级的左参照位置是否正参照有效的图像数据。在低优先级的左参照位置正参照有效的图像数据的情况下,在步骤S7035,比较从当前位置开始的字节序列和从低优先级的左参照位置开始的字节序列来求得与低优先级的左参照位置相一致的长度。此外这时,在到达行末的情况下以及长度达到255字节的情况下,就中止处理。接着在步骤S7036,判断步骤S7035所求出的与低优先级的上参照位置相一致的长度是否为0。在不是0的情况下,因为能够编码为COPY LEFT2命令,就在步骤S703 7输出COPY LEFT2命令、即编码0001和表示接续在其后的字节数(在步骤S7035所求出的长度)的编码,接着在步骤S7038调换高优先级的左参照位置和低优先级的左参照位置,处理进入步骤S7040。
不管是当在步骤S7034判断为低优先级的左参照位置是无效的情况下,还是当在步骤S7036判断为与步骤S7035所求出的低优先级的左参照位置相一致的长度是0的情况下,都在步骤S7039,输出RAW命令、即编码001和接续在其后的当前位置的1字节的数据,处理进入步骤S7040。
在步骤S7040中,仅将当前位置前移用COPY UP1、COPY UP2、COPY LEFT1、COPY LEFT2或RAW命令所处理的字节数。接着在步骤S7041,判断是否处理了全部的图像数据。在没有处理完全部的图像数据的情况下,返回步骤S7021,继续编码。在处理完全部的图像数据的情况下,在步骤S7042输出EOB命令、即编码0000,接着在步骤S7043,将编码向字节边界进行对齐。具体就是,在已输出的编码的总位数不是8的整数倍的情况下,输出位0直到到达8的整数倍为止。这样,当编码的处理结束后就返回。
接着使用表示图19所示的解码电路513在本实施形式中的构成的图35,就相同电路的细节进行说明。图35是表示在图19所示的解码电路513在本实施形式中的基本构成的框图。
在图35中,输入缓冲器7021保存从FIFO存储器512所读出的编码数据。输入缓冲器7021至少能够保存4字节的数据,在输入缓冲器5021中产生空闲,且FIFO存储器512中有数据的情况下,从FIFO存储器512读出数据并进行保存。另外,当保持在位计数器7023中的处理完的位数成为8位以上的情况下,输入缓冲器7021删除不需要的处理完的数据。
第一选择器7022是例如11组的8输入选择器,通过根据位计数器7023所表示的处理完的位数对保存在输入缓冲器7021中的编码数据进行选择,进行命令解码电路7024处理所需要的、命令的开始位置的对齐。由于相对于输入缓冲器7021以字节单位来保持数据,命令是位单位的可变长度数据,所以为了有8处的开始位置这一点是必要的。
位计数器7023,保存输入缓冲器7021所保存的编码数据中的处理完的位数。另外,位计数器7023通过加上从命令解码电路7024所输出的命令的位数来更新保存在位计数器中的值。另外,位计数器7023在输入缓冲器7021删除了处理完的数据的情况下,减去已删除的位数。另外,在命令解码电路7024对EOB命令进行解码时,位计数器7023从命令解码电路7024接收EOB信号,进行字节边界对齐的处理。具体就是,如果位计数器的低位3位全部是0就什么也不作,如果不是这样就在加上8的同时清除低位3位。
命令解码电路7024,由例如只读存储器或者布线逻辑(wiredlogic)构成,对由第一选择器7022进行了位置对齐的、保存在输入缓冲器7021的编码数据进行解码,在已解码的命令是EOB命令的情况下,向位计数器7023、上优先FF7029以及左优先FF7030输出信号,在已解码的命令是COPY UP1命令或COPY UP2命令的情况下向第二选择器7025以及第三选择器7026输出信号,在已解码的命令是COPY LEFT1命令或COPY LEFT2命令的情况下,向第四选择器7027以及第五选择器7028输出信号,在已解码的命令是RAW命令的情况下向原始数据输出电路7036输出信号。另外,命令解码电路7024在解码了COPY UP1、COPY UP2、COPY LEFT1或者COPYLEFT2命令的情况下,也解码并输出编码所表示的字节数,同时在解码了RAW命令的情况下,也解码并输出编码所表示的8位数据。
7025是第二选择器,在上优先FF7029保持0的情况下,输出命令解码电路7024在解码COPY UP1命令时输出的信号,另外在上优先FF7029保持1的情况下,输出命令解码电路7024在解码COPYUP2命令时输出的信号。
7026是第三选择器,在上优先FF7029保持0的情况下,输出命令解码电路7024在解码COPY UP2命令时输出的信号,另外在上优先FF7029保持1的情况下,输出命令解码电路7024在解码COPYUP1命令时输出的信号。
7027是第四选择器,在左优先FF7030保持0的情况下,输出命令解码电路7024在解码COPY LEFT1命令时输出的信号,另外在左优先FF7030保持1的情况下,输出命令解码电路7024在解码COPYLEFT2命令时输出的信号。
7028是第五选择器,在左优先FF7030保持0的情况下,输出命令解码电路7024在解码COPY LEFT2命令时输出的信号,另外在左优先FF7030保持1的情况下,输出命令解码电路7024在解码COPYLEFT1命令时输出的信号。
7029是上优先FF,对表示第一上复制电路7031或第二上复制电路7032的任意一个被优先使用的值进行保持。另外上优先FF7029在命令解码电路7024解码了COPY UP2命令时反转所保持的值。
7030是左优先FF,对表示第一左复制电路7033或第二左复制电路7034的任意一个被优先使用的值进行保持。另外左优先FF7030在命令解码电路7024解码了COPY LEFT2命令时反转保持的值。
7031是第一上复制电路,在从第二选择器7025接收了信号时,一并接收应复制的字节数,根据所接收的字节数,反复从行缓冲器7035读取数据并输出已读取的数据。
7032是第二上复制电路,在从第三选择器7026接收了信号时,一并接收应复制的字节数,根据所接收的字节数,反复从行缓冲器7035读取数据并输出已读取的数据。
7033是第一左复制电路,在从第四选择器7027接收了信号时,一并接收应复制的字节数,根据所接收到字节数,反复从行缓冲器7035读取数据并输出已读取的数据。
7034是第二左复制电路,在从第五选择器7028接收了信号时,一并接收应复制的字节数,根据所接收的字节数,反复从行缓冲器7035读取数据并输出已读取的数据。
7035是行缓冲器,作为保持多个行的解码数据的环形存储器来进行动作,输出保存在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033或第二左复制电路7034所输出的地址上的数据,同时将已解码的数据保存在当前地址寄存器7037所输出的地址上。
7036是原始数据输出电路,接收在命令解码电路7024解码了RAW命令时,同时被输出的表示原始数据的8位的数据,并输出已接收的数据。
7037是当前地址寄存器,输出表示当前将要进行解码的数据位置的地址,同时每当解码了的数据被保存到行缓冲器7035时就进行计数增加。
另外,在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033以及第二左复制电路7034上保持分别表示第一上复制位置、第二上复制位置、第一左复制位置以及第二左复制位置的地址,每当当前地址寄存器7037进行计数增加就同样地进行计数增加。
当命令解码电路7024解码COPY UP1命令后,就解码后续的计数,并将信号输出第二选择器7025和第三选择器7026。然后,根据上优先FF7029保持的值,从第二选择器7025或第三选择器7026的任意一方输出信号,根据该信号第一上复制电路7031或第二上复制电路7032的任意一方进行动作。
例如,在上优先FF7029保持的值是0的情况下,当解码COPYUP1命令时第二选择器7025将信号输出到第一复制电路7031,第三选择器7026不输出信号。第一上复制电路7031将保持在内部的、表示第一上复制位置的地址输出到行缓冲器7035,读取保存在行缓冲器7035中的第一上复制位置的数据,将所读取的数据作为解码数据输出到打印引擎514。当前地址寄存器7037输出表示当前位置的地址,行缓冲器7035在该地址上保存解码数据。接着,分别保持在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033以及第二左复制电路7034的内部的,表示第一上复制位置的地址、表示第二上复制位置的地址、第一左复制位置的地址和表示第二左复制位置的地址、以及表示当前地址寄存器7037保持的当前位置的地址进行计数增加。此动作根据所指定的字节数进行反复。
当命令解码电路7024解码COPY UP2命令后,解码后续的计数,并将信号输出到第二选择器7025和第三选择器7026。然后,根据上优先FF7029保持的值,从第二选择器7025或第三选择器7026的任意一方输出信号,根据该信号第一上复制电路7031或第二上复制电路7032的任意一方进行动作。
例如,在上优先FF7029保持的值是0情况下,当解码COPY UP2命令时第三选择器7026将信号输出到第二复制电路7032,第二选择器7025不输出信号。第二上复制电路7032与上述的第一上复制电路7031的动作同样地进行动作,由于上优先FF7029保持的值反转成为1,故后续的COPY UP1命令对应于第二上参照位置,另外COPYUP2命令对应于第一上参照位置。
命令解码电路7024在解码了COPY LEFT1命令和COPY LEFT2命令的情况下,也与上述的COPY UP1命令和COPY UP2命令同样地进行动作。
当命令解码电路7024解码RAW命令时,解码后续的8位数据,并将信号输出到原始数据输出电路7036。原始数据输出电路7036将接收到的8位数据原封不动地作为解码数据输出到打印引擎514。当前地址寄存器7037输出表示当前位置的地址,行缓冲器7035将解码数据保存到该地址。接着,分别保持在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033以及第二左复制电路7034的内部的,表示第一上复制位置的地址、表示第二上复制位置的地址、表示第一左复制位置的地址和表示第二左复制位置的地址,以及当前地址寄存器7037保持的表示当前位置的地址进行计数增加。
当命令解码电路7024解码EOB命令后,位计数器7023如前所述进行字节边界对齐的处理,同时将上优先FF7029以及左优先FF7030初始化为初始值,例如0。
此外,分别保持在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033以及第二左复制电路7034的内部的,表示第一上复制位置的地址、表示第二上复制位置的地址、表示第一左复制位置的地址和表示第二左复制位置的地址,以及当前地址寄存器7037保持的表示当前位置的地址,设定为使用基于预先由控制电路515通过压缩参数指定命令所指定的位置的初始值。
另外,由于行缓冲器7035作为环形存储器来进行动作,在分别保持在第一上复制电路7031、第二上复制电路7032、第一左复制电路7033以及第二左复制电路7034内部的,表示第一上复制位置的地址、表示第二上复制位置的地址、表示第一左复制位置的地址和表示第二左复制位置的地址,以及当前地址寄存器7037保持的表示当前位置的地址为行缓冲器7035的末尾地址的情况下,因计数增加时进行绕回而保存行缓冲器7035的起始地址。
根据以上说明,使用作为本实施形式中的图像编码装置、图像解码装置来发挥功能的图像处理装置,在参照了编码为较长编码的参照位置的情况下,由于通过调换参照位置与编码的对应关系,就能够在以后参照了该参照位置时编码为较短的代码,所以不管数据的周期如何都能够高效率地进行压缩。
另外,在图像数据的周期与抖动显示阵的周期不同的情况下,有与在关注位置邻近,而且和减色处理时适用于关注位置的演算近似的演算所适用的位置的相关性高的倾向。由于这样的位置限于少数的位置,另外通过预先检查抖动显示阵、或预先使用各种图像数据来取得统计就能够进行确定,故通过从这样的位置以及仅间隔抖动显示阵的周期的位置中作为参照位置预先选择多个位置,不管图像数据的周期如何都能够有效地进行编码。
另外,有图像数据的周期在大范围上是恒定的倾向。因此,在低优先级的参照位置上数据相一致的情况下,以后在该参照位置的数据相一致的可能性也高。因此,通过在输出了识别低优先级的参照位置的较长的代码时,提高该参照位置的优先级今后使用较短的代码来识别,此后在该参照位置上数据相一致了的情况下输出的编码就变短,所以与不进行优先级的调换的情况相比,就能够有效地进行编码。
另外,虽然在实施实施形式中,调换2个的参照位置的优先级别,但也可以取代此而调换至少3个的参照位置的优先级别。
如以上说明的那样,利用本发明,在对具有周期性的图像、特别是墙纸等排列有背景图案的图像数据进行编码时,就能够更高速地,且以更高压缩率来压缩整个图像。
另外利用本发明,能够减小对已编码的墙纸等排列有背景图案的图像的编码进行解码的解码电路的电路规模,且进行无需大量的缓冲存储器的,就能够以低成本构成的解码。
另外如以上详细地进行了说明那样,利用本发明,在与前面的图像数据序列相一致的情况下利用该冗余性得到高的压缩率,同时即使在图像数据序列一致的部分少的情况下,也能够极力抑止压缩率的降低。
另外如以上详细地进行了说明那样,在本发明中,由于除了关注位置的左侧以及上方,还参照前一页的相同位置来进行编码,即使是与左侧以及上方的参照位置的相关性低的图像,在后续的页使用同样的背景图案的情况等,在编码与前一页的相关性高的图像时能够高效率地进行压缩。
另外,在本发明中,由于对应该参照的前一页的图像数据进行编码并保持,与原封不动地保持图像数据的情况相比,就能够用更小容量的存储器来保持前一页的图像数据。
另外,根据以上的说明,利用本发明,就能够高效率地特别是以短的代码来编码图像。
权利要求
1.一种对图像进行编码的图像处理装置,其特征在于,包括减色装置,对图像使用预定大小的矩阵来施加减色处理;周期检测装置,检测上述图像的图案的周期;以及编码装置,使用依照上述周期和/或上述矩阵的大小的象素的相对位置关系,对施加了上述减色处理的图像进行编码。
2.如权利要求1所述的图像处理装置,其特征在于上述减色装置使用预定大小的抖动矩阵来对图像施加抖动处理。
3.如权利要求1所述的图像处理装置,其特征在于上述周期检测装置还包括,图像保存装置,保存关于包含在打印对象的1页中的至少一个图像中的、预定的尺寸以上的图像的信息;使用关于保存在上述图像保存装置中的图像的信息,将在邻接的图像中最大的尺寸设为上述周期。
4.如权利要求3所述的图像处理装置,其特征在于作为关于上述图像的信息,包含图像左上角的坐标,宽度以及高度。
5.如权利要求1所述的图像处理装置,其特征在于上述编码装置还包括,第1命令输出装置,比较编码对象的列的象素序列,和与该列有预定的位置关系的列的象素序列,求得相一致的象素序列的长度,并作为该相一致的象素序列,与表示上述比较内容的命令一起输出表示上述长度的命令;第2命令输出装置,在上述长度为0的情况下,比较编码对象的列的象素序列,和在该列中有预定的位置关系的象素序列,求得相一致的象素序列的长度,并作为该相一致的象素序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;第3命令输出装置,进而在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,输出表示编码对象的象素数据的命令;以及第4命令输出装置,在通过第1至第3命令输出装置的任何一个所求出的长度为预定长度以上的情况下,在输出预定命令的同时输出用该预定的长度除以该长度所得出的商;并生成包含由上述第1至第4命令输出装置的一部分或者全部输出的命令的编码数据。
6.如权利要求5所述的图像处理装置,其特征在于上述第1命令输出装置比较编码对象的列的象素序列,和与该列依照上述抖动矩阵的大小相隔离的列的象素序列。
7.如权利要求5所述的图像处理装置,其特征在于上述第2命令输出装置还包括,比较编码对象的列的象素序列,和在该列中有第1位置关系的象素序列,求得相一致的象素序列的长度,并作为该相一致的象素序列,输出表示上述比较内容的命令的同时输出表示上述长度的命令的装置;以及比较编码对象的列的象素序列,和在该列中有第2位置关系的象素序列,求得相一致的象素序列的长度,并作为该相一致的象素序列,输出表示上述比较内容的命令的同时输出表示上述长度的命令的装置;上述第2位置关系显示比上述第1位置关系还要远的位置关系。
8.如权利要求7所述的图像处理装置,其特征在于上述第1位置关系依照上述矩阵的大小来确定。
9.如权利要求7所述的图像处理装置,其特征在于上述第2位置关系依照上述周期来确定。
10.一种对已编码的图像进行解码的图像处理装置,其特征在于,包括保存装置,保存已解码的象素序列的预定行数;解码装置,对包含在编码数据中的命令群进行解码;以及解码装置,依照由上述解码装置所解码的命令从上述保存装置读取象素序列,将所读取的象素序列保存到上述保存装置,同时将所读取的象素序列依次输出到预定的缓冲器,进而,在由上述解码装置所解码的命令是关于图像的行方向的命令的情况下,依照上述图像的图案的周期变更从上述保存装置进行读取的位置。
11.如权利要求10所述的图像处理装置,其特征在于还包括,延迟装置,输出使由上述解码装置所解码的象素序列,仅延迟预定个数的象素的数据;上述预定个数是依照在对上述图像进行减色处理时所使用的矩阵的大小来确定。
12.如权利要求10所述的图像处理装置,其特征在于上述保存装置是保存表示包含在上述解码装置将要解码的命令中的上复制位置的行数的、已解码的象素序列的环形存储器。
13.如权利要求10所述的图像处理装置,其特征在于上述解码装置还包括,第1命令解码装置,在上述解码装置解码了的命令是表示读取包含在比解码对象的行还往上的行中的象素序列的命令的情况下,读取位于上述保存装置中进行解码的象素的位置的数据,将该数据依次输出到上述预定的缓冲器;第2命令解码装置,在上述解码装置解码了的命令是表示读取包含在解码对象的行中的象素序列的命令的情况下,读取位于上述保存装置中从进行解码的象素的位置依照上述周期所移动的位置的数据,或者由上述延迟装置所输出的数据,输出到上述保存装置中进行解码的象素的位置,同时将该数据依次输出到上述预定的缓冲器;第3命令解码装置,在上述解码装置解码了的命令是表示解码对象的象素的命令的情况下,将表示该命令的数据输出到上述保存装置中进行解码的象素的位置,同时将该数据依次输出到上述预定的缓冲器;以及第4命令解码装置,在上述解码装置解码了的命令是表示将要读取的象素序列的长度的命令的情况下,将该命令所表示的长度保存到上述预定的缓冲器。
14.如权利要求13所述的图像处理装置,其特征在于上述第1、2命令解码装置,从上述保存装置或者上述延迟装置读出使用了由所解码的命令所指定的第1长度和由上述第4命令解码装置解码的命令所指定的第2长度的长度的象素序列。
15.一种对图像进行编码的图像处理方法,其特征在于,包括减色步骤,对图像使用预定大小的矩阵施加减色处理;周期检测步骤,检测上述图像的图案的周期;以及编码步骤,使用依照上述周期和/或上述矩阵的大小的象素的相对位置关系,对施加了上述减色处理的图像进行编码。
16.一种对已编码的图像进行解码的图像处理方法,其特征在于,包括解码步骤,将已解码的象素序列的预定行数保存到预定的保存装置,对包含在编码数据中的命令群进行解码;解码步骤,依照由上述解码步骤所解码的命令从上述保存装置读取象素序列,将所读取的象素序列保存到上述保存装置,同时将所读取的象素序列依次输出到预定的缓冲器,进而,在由上述解码步骤所解码的命令是关于图像的行方向的命令的情况下,依照上述图像的图案的周期变更从上述保存装置进行读取的位置。
17.一种程序,其特征在于使计算机执行权利要求15所述的图像处理方法。
18.一种计算机可读取的存储介质,其特征在于保存权利要求17所述的程序。
19.一种压缩图像的图像处理装置,其特征在于,包括颜色变换装置,对图像使用抖动矩阵进行颜色变换处理,生成各种颜色的图像数据;以及命令输出装置,对每种颜色的图像数据,比较压缩对象的象素数据序列,和与该象素数据序列有预定的位置关系的象素数据序列,在输出表示相一致的象素数据序列的长度的命令的同时输出表示该比较内容的命令,生成各种颜色的图像数据的编码数据。
20.一种压缩图像的图像处理装置,其特征在于,包括颜色变换装置,对图像使用抖动矩阵进行颜色变换处理,生成各种颜色的图像数据;编码装置,压缩上述各种颜色的图像数据并进行编码;以及输出装置,输出由上述编码装置编码的编码数据;进而上述编码装置备有,第1命令输出装置,比较压缩对象的列的象素数据序列,和与该列有预定的位置关系的列的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;第2命令输出装置,在上述长度为0的情况下,比较压缩对象的列的象素数据序列,和在该列中有预定的位置关系的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;保存装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,保存压缩对象的列的象素数据序列的一部分或者全部;第3命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,比较压缩对象的象素数据和保存在上述保存装置中的象素数据序列,作为上述压缩对象的象素数据,在输出表示相一致的象素数据在上述保存装置中的位置的命令的同时输出表示上述比较内容的命令;以及第4命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,且在由上述第3命令输出装置输出的比较结果判断为与压缩对象的象素数据相一致的象素数据不存在于上述保存装置的情况下,输出表示压缩对象的象素数据的命令;并生成包含由上述第1至第4命令输出装置的一部分或者全部输出的命令的编码数据。
21.如权利要求20所述的图像处理装置,其特征在于上述颜色变换装置,通过对图像使用抖动矩阵,将使用了红、绿、蓝的图像,颜色变换成使用了青、品红、黄和黑的图像;上述编码装置,对青、品红、黄和黑的各色的图像数据进行编码。
22.如权利要求20所述的图像处理装置,其特征在于上述第3命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,比较压缩对象的象素数据和保存在上述保存装置中的象素数据序列,作为上述压缩对象的象素数据,在输出表示相一致的象素数据在上述保存装置中的位置的命令的同时输出表示上述比较内容的命令;进而,将上述相一致的象素数据保存到上述保存装置。
23.如权利要求20所述的图像处理装置,其特征在于上述第4命令输出装置,在由上述第1命令输出装置所求出的长度和由上述第2命令输出装置所求出的长度同时为0的情况下,且在由上述第3命令输出装置输出的比较结果判断为与压缩对象的象素数据相一致的象素数据不存在于上述保存装置的情况下,输出表示压缩对象的象素数据的命令;进而,将上述压缩对象的象素数据保存到上述保存装置。
24.如权利要求20所述的图像处理装置,其特征在于上述保存装置是高速缓冲存储器,上述第3命令输出装置,作为压缩对象的象素数据,在输出表示压缩对象的象素数据使得发生了高速缓冲存储器命中的上述高速缓冲存储器的位置的命令的同时输出表示上述比较内容的命令。
25.如权利要求20所述的图像处理装置,其特征在于上述输出装置,进行填补以使将要输出的编码数据的总位数为8的倍数。
26.如权利要求20所述的图像处理装置,其特征在于上述预定的位置关系,是依照上述抖动矩阵的周期的位置关系。
27.一种对编码数据进行解码的图像处理装置,其特征在于,包括第1保存装置,保存已解码的象素数据序列;第2保存装置,将已解码的象素数据序列移位预定个数进行保存;第3保存装置,保存包含在上述编码数据中的原始象素数据序列;以及还原装置,确定对在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列的比较结果进行表示的各种命令的内容,依照所确定的内容使用保存在上述第1保存装置或者第2保存装置或者第3保存装置中的象素数据来还原图像。
28.如权利要求27所述的图像处理装置,其特征在于上述第1保存装置是行缓冲器,是具有上述编码数据的生成时的压缩对象的列的象素数据序列,和与该列有预定的位置关系的列的象素序列的间隔部分的大小的环形存储器。
29.如权利要求27所述的图像处理装置,其特征在于上述第2保存装置,由移位寄存器和选择器构成,将已编码的象素数据序列移位上述编码数据的生成时的压缩对象的列的象素数据序列和在该列中有预定的位置关系的列的象素序列的间隔部分。
30.如权利要求27所述的图像处理装置,其特征在于上述第3保存装置是高速缓冲存储器。
31.如权利要求27所述的图像处理装置,其特征在于上述解码装置,当表示通过在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列,和与该列有预定的位置关系的列的象素数据序列的比较所求得的,在各自的象素数据序列中相一致的象素数据序列的长度以及该比较内容的命令的情况下,读出保存在通过该命令所确定的上述第1保存装置中的象素数据序列,追加到保存在上述第1保存装置中的象素数据序列的末尾进行保存,同时保存到上述第2保存装置的起始位置。
32.如权利要求27所述的图像处理装置,其特征在于上述解码装置,当表示通过在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列,和在该列中有预定的位置关系的列的象素数据序列的比较所求得的,在各自的象素数据序列中相一致的象素数据序列的长度以及该比较内容的命令的情况下,从上述第2保存装置读出通过该命令所确定的个数的象素数据序列,追加到保存在上述第1保存装置中的象素数据序列的末尾进行保存,同时保存到上述第2保存装置的起始位置。
33.如权利要求27所述的图像处理装置,其特征在于上述解码装置,当表示通过在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列,和保存在预定保存装置中的压缩对象的列的象素数据序列的一部分或者全部的象素数据序列的比较所确定的,在各自的象素数据序列中相一致的象素数据在上述预定的保存装置中的位置以及该比较内容的命令的情况下,读出保存在通过该命令所确定的上述第3保存装置中的象素数据序列,追加到保存在上述第1保存装置中的象素数据序列的末尾进行保存,同时保存到上述第3保存装置的起始位置。
34.如权利要求27所述的图像处理装置,其特征在于上述解码装置,当表示压缩对象的象素数据的命令情况下,将该命令所表示的象素数据追加到保存在上述第1保存装置中的象素数据序列的末尾进行保存,同时保存到上述第3保存装置的起始位置。
35.一种压缩图像的图像处理方法,其特征在于,包括颜色变换步骤,对图像使用抖动矩阵进行颜色变换处理,生成各种颜色的图像数据;以及命令输出步骤,对每种颜色的图像数据,比较压缩对象的象素数据序列,和与该象素数据序列有预定的位置关系的象素数据序列,在输出表示相一致的象素数据序列的长度的命令的同时输出表示该比较内容的命令,生成各种颜色的图像数据的编码数据。
36.一种压缩图像的图像处理方法,其特征在于,包括颜色变换步骤,对图像使用抖动矩阵进行颜色变换处理,生成各种颜色的图像数据;编码步骤,压缩上述各种颜色的图像数据并进行编码;以及输出步骤,输出由上述编码装置编码的编码数据;进而上述编码步骤包括,第1命令输出步骤,比较压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;第2命令输出步骤,在上述长度为0的情况下,比较压缩对象的列的象素数据序列和在该列中有预定的位置关系的象素数据序列,求得相一致的象素数据序列的长度,作为该相一致的象素数据序列,在输出表示上述比较内容的命令的同时输出表示上述长度的命令;保存步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,将压缩对象的列的象素数据序列的一部分或者全部保存到预定的保存装置;第3命令输出步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,比较压缩对象的象素数据和由上述保存步骤所保存的象素数据,作为上述压缩对象的象素数据,在输出表示相一致的象素数据序列由上述保存步骤所保存的位置的命令的同时输出表示上述比较内容的命令;以及第4命令输出步骤,在由上述第1命令输出步骤所求出的长度和由上述第2命令输出步骤所求出的长度同时为0的情况下,且在由上述第3命令输出步骤输出的比较结果判断为与压缩对象的象素数据相一致的象素数据没有由上述保存步骤进行保存的情况下,输出表示压缩对象的象素数据的命令;并生成包含由上述第1至第4命令输出步骤的一部分或者全部输出的命令的编码数据。
37.一种对编码数据进行解码的图像处理装置所运行的图像处理方法,所述图像处理装置备有保存已解码象素数据序列的第1保存装置;将已解码的象素数据序列移位预定个数进行保存的第2保存装置;以及保存包含在上述编码数据中的原始的象素数据序列的第3保存装置;其特征在于,确定对在上述编码数据的生成时所进行的,压缩对象的列的象素数据序列和与该列有预定的位置关系的列的象素数据序列的比较结果进行表示的各种命令的内容,依照所确定的内容使用保存在上述第1保存装置或者第2保存装置或者第3保存装置中的象素数据来还原图像。
38.一种程序,其特征在于使计算机执行权利要求35所述的图像处理方法。
39.一种计算机可读取的存储介质,其特征在于保存权利要求38所述的程序。
40.一种对多个页的图像数据进行编码的图像处理装置,其特征在于,包括第1存储器,保存欲进行编码的页的图像数据;编码装置,对保存在上述第1存储器中的图像数据进行编码;以及第2存储器,保存前一页的图像数据;上述编码装置参照保存在上述第2存储器中的前一页的图像数据进行编码。
41.一种对已编码的多个页的图像数据进行解码的图像处理装置,其特征在于,包括解码装置,对编码进行解码;第1存储器,保存由上述解码装置所解码的图像数据;再编码装置,对保存在上述第1存储器中的图像数据进行编码;第2存储器,保存由上述再编码装置所编码的代码;以及再解码装置,对保存在上述第2存储器中的编码进行解码;上述解码装置,在对参照前一页的图像数据的编码进行了解码情况下,参照上述再解码装置所解码的图像数据进行解码,同时上述再编码装置,仅参照欲进行编码的页的图像数据进行编码。
42.一种对多个页的图像数据进行编码的图像处理装置所运行的图像处理方法,所述图像处理装置备有保存欲进行编码的页的图像数据的第1存储器;以及保存前一页的图像数据的第2存储器;其特征在于,包括编码步骤,对保存在上述第1存储器中的图像数据进行编码;上述编码步骤参照保存在上述第2存储器中的前一页的图像数据进行编码。
43.一种备有第1存储器和第2存储器,对已编码的多个页的图像数据进行解码的图像处理装置所运行的图像处理方法,其特征在于,包括解码步骤,对编码进行解码;第1保存步骤,将由上述解码步骤所解码的图像数据保存到上述第1存储器;再编码步骤,对保存在上述第1存储器中的图像数据进行编码;第2保存步骤,将由上述再编码步骤所编码的代码保存到第2存储器;以及再解码步骤,对保存在上述第2存储器中的编码进行解码;上述解码步骤,在对参照前一页的图像的编码进行了解码的情况下,参照由上述再解码步骤所解码的图像数据进行解码,同时上述再编码步骤,仅参照欲进行编码的页的图像数据进行编码。
44.一种程序,其特征在于使计算机执行权利要求42所述的图像处理方法。
45.一种计算机可读取的存储介质,其特征在于保存权利要求44所述的程序。
46.一种对图像进行编码的图像处理装置,其特征在于,包括编码装置,比较关注数据后续的数据序列,和参照数据后续的数据序列,将相一致的长度的该关注数据后续的数据序列,编码成依照该关注数据和该参照数据的位置关系的编码命令;置换装置,在上述关注数据和上述参考数据为特定的位置关系的情况下,当由上述编码装置编码后,将对应于该特定的位置关系的编码命令置换成代码的长度更短的编码命令。
47.如权利要求46所述的图像处理装置,其特征在于上述编码装置,比较关注数据后续的数据序列,和参照数据后续的数据序列,在相一致的长度为0的情况下,将该关注数据编码成表示该关注数据的编码命令。
48.如权利要求46所述的图像处理装置,其特征在于上述置换装置,在上述关注数据和上述参考数据为第1位置关系的情况下,当由上述编码装置编码后,将对应于该第1位置关系的第1编码命令和对应于第2位置关系的第2编码命令进行调换,而且,上述第2编码命令的编码长度比上述第1编码命令的编码长度短。
49.如权利要求46所述的图像处理装置,其特征在于上述图像是对原图像使用预定大小的矩阵施加了减色处理的图像。
50.一种基于由编码命令所组成的编码数据来解码图像的图像处理装置,其特征在于,包括保存装置,保存已解码图像的数据;多个解码装置,通过读出保存在上述保存装置中,依照编码命令的位置上的数据,将该数据作为依照该编码命令的解码数据输出到外部;保持装置,保持依照将要解码的编码命令进行变化的值;由上述多个解码装置中的,依照上述保持装置所保持的值的解码装置,进行解码处理。
51.如权利要求50所述的图像处理装置,其特征在于上述保存装置是环形存储器。
52.如权利要求50所述的图像处理装置,其特征在于上述图像处理装置是打印机。
53.如权利要求50所述的图像处理装置,其特征在于由上述多个解码装置所解码的解码数据被依次保存到上述保存装置。
54.一种对图像进行编码的图像处理方法,其特征在于,包括编码步骤,比较关注数据后续的数据序列,和参照数据后续的数据序列,将相一致长度的该关注数据后续的数据序列,编码成依照该关注数据和该参照数据的位置关系的编码命令;置换步骤,在上述关注数据和上述参考数据为特定的位置关系的情况下,当由上述编码步骤编码后,将对应于该特定的位置关系的编码命令置换成代码的长度更短的编码命令。
55.一种基于由编码命令组成的编码数据来解码图像的图像处理方法,其特征在于,包括保存步骤,将已解码图像的数据保存到预定的保存装置;多个解码步骤,通过读出保存在上述保存装置中,依照编码命令的位置上的数据,将该数据作为依照该编码命令的解码数据输出到外部;保持步骤,将依照要解码的编码命令进行变化的值保持到预定的保持装置;由上述多个解码步骤中的,依照上述保持装置所保持的值的解码步骤,进行解码处理。
56.一种程序,其特征在于使计算机执行权利要求54所述的图像处理方法。
57.一种计算机可读取的存储介质程序,其特征在于保存权利要求56所述的程序。
全文摘要
提供一种图像处理装置和图像处理方法,其能够高效地对图像进行编码。为了达到上述目的,例如,使用具有预定大小的抖动矩阵对图像进行减色处理。输出打印控制命令,并输出压缩参数指定命令,其指定在编码中使用的上复制垂直偏移值(依照该矩阵的值)、近左复制水平偏移值(依照该矩阵的值)、以及远左复制水平偏移值(依照背景图案的周期的值)。依照编码步骤进行图像数据的编码。
文档编号G03F3/08GK1424849SQ02155529
公开日2003年6月18日 申请日期2002年12月5日 优先权日2001年12月6日
发明者坂本阳一 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1