CN1306789C - 图像处理设备、方法、程序及记录该程序的记录介质 - Google Patents

图像处理设备、方法、程序及记录该程序的记录介质 Download PDF

Info

Publication number
CN1306789C
CN1306789C CNB2004100012062A CN200410001206A CN1306789C CN 1306789 C CN1306789 C CN 1306789C CN B2004100012062 A CNB2004100012062 A CN B2004100012062A CN 200410001206 A CN200410001206 A CN 200410001206A CN 1306789 C CN1306789 C CN 1306789C
Authority
CN
China
Prior art keywords
pixel
gravity
value
center
image data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004100012062A
Other languages
English (en)
Other versions
CN1518332A (zh
Inventor
狩户信宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of CN1518332A publication Critical patent/CN1518332A/zh
Application granted granted Critical
Publication of CN1306789C publication Critical patent/CN1306789C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/405Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
    • H04N1/4051Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size
    • H04N1/4052Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size by error diffusion, i.e. transferring the binarising error to neighbouring dot decisions

Abstract

当输入具有针对每个像素的预定灰度值的图像数据、并且从初始像素开始查找图像数据、而且包括已查找像素在内的像素的灰度值的总和变为预定的阈值或更大值时,在作为已量化像素组的重心位置上产生圆点。在查找中,选择最靠近包括此像素在内的重心位置的未处理像素。如果存在多个未处理像素,则随机进行选择。对于像素选择,可以选择最靠近根据位置坐标所计算的中心位置的像素,而不是重心。同样,可以在已量化像素组的中心位置产生圆点。

Description

图像处理设备、方法、程序及记录该程序的记录介质
技术领域
本发明涉及对像素图像数据的量化处理。
背景技术
通常,对灰度图像数据进行量化。例如,对具有256个灰度级的灰度图像数据进行二进制化。在这种情况下,如果利用阈值对灰度图像数据进行简单的二进制化则误差较高。例如,假设灰度图像数据为0到255,而阈值为128。在这种情况下,如果像素数据(密度)是比阈值小的50,则二进制化之后的结果是0。这意味着所产生的误差是50(=50-0)。
因而,误差扩散方法被用于将量化时所产生的误差分散到周围的像素上。例如,在误差扩散方法中,将量化时所产生的误差加到位于此像素右边、下边、左下方和右下方的像素的数据上。例如,在日本专利申请未审公开No.H6-62253(图30、图31、图32)中对误差扩散方法进行了概述。
另一种公开的技术是利用预定的表格查找输入像素,直到所输入的图像数据的灰度值达到阈值来产生单元,并在单元的中心位置产生圆点(例如,日本专利申请未审公开No.H11-27528(图4、图6))。
但是,在使用误差扩散方法所量化的图像中,可能会产生图像质量问题。例如,如果按照行顺序从屏幕的左侧向右侧简单顺序地二进制化处于如接近灰度图像数据的高亮区的区域等圆点密度较低的区域中的像素,误差向右传播到该像素,作为结果而产生的圆点可能会像链连接。这种链型的特定图案被称为“蠕虫”。同样,在接近高亮区等圆点密度较低的区域中,圆点的产生可能会沿误差扩散方法的主扫描方向和子扫描方向延迟。换句话说,在印制了接近高亮区的区域的纸的顶端,即使误差传播,像素的灰度值也不容易达到阈值,并且可能会产生并不存在圆点的区域。同样,在对特定的灰度区域进行处理之后,可能会使此区域外部的数据(密度)失真。换句话说,在边缘转换的区域(在单色印刷时,位于以黑色印刷的部分和以白色印刷的部分之间的边界区域)中,在转换前传播的误差连续地在转换后传播,还将可能会导致圆点产生的失真。
发明内容
针对上述问题,本发明的第一目的是实现具有高图像质量的输出圆点,而不产生作为误差扩散方法的问题的蠕虫、圆点产生延迟以及区域外部数据失真。
出现上述图像质量问题的原因是在误差扩散方法中在误差扩散之后的每个像素的数据(密度)与误差扩散前每个像素附近的数据(密度)分布不匹配。
因此,本发明的第二目的是在对图像数据进行量化时,使像素的图像数据与图像的数据分布相匹配。
在上述日本专利申请未审公开No.H11-27528中,利用预定的表格来查找单元。但是,当根据表格实际上向左侧查找像素时,极有可能已经对该像素进行了处理,而所产生的单元变为失真形式(例如,三角形)。即使在具有这种形式的单元的中心形成圆点,该圆点仍可能与位于特定部分的相邻单元的圆点重叠着形成,其中输出圆点簇。
因此,本发明的第三目的是通过改进圆点的散布,获得视觉满足的打印输出。
本发明的第四目的是降低实现悦目的打印输出的处理的计算量,并增加整个设备的处理效率。
为了实现上述目的,本发明提供一种图像处理器,包括:像素组产生装置,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;像素组重心确定装置,用于确定由所述像素组产生装置所产生的像素组的重心的位置;以及已量化图像数据提供装置,用于向位于由所述像素组重心确定装置所确定的重心的像素提供已量化图像数据,其中所述像素组产生装置通过连续地选择与所述像素组重心确定装置所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生所述像素组。由此,利用所产生的圆点之间的均匀距离改进了圆点的散布,并能够获得令人满意的打印输出。
根据本发明的上述图像处理装置,其中,当存在最靠近所述像素组重心确定装置所确定的重心的位置的多个像素时,所述像素组产生装置在所述多个像素中随机选择一个要选择的像素。由此,可以抑制周期性图案的产生。
为了实现上述目的,本发明提供一种图像处理装置,包括:像素组产生装置,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;像素组重心确定装置,用于确定由所述像素组产生装置所产生的像素组的重心的位置;以及已量化图像数据提供装置,用于向位于由所述像素组重心确定装置所确定的重心的像素提供已量化图像数据,其中所述像素组产生装置连续选择与所述像素组重心确定装置所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,并且当所选择的像素组中的灰度图像数据值的总和超过阈值时,将灰度图像数据值超出的数量返回给所述像素组产生装置最后选中的像素。由此,将灰度值超出的数量返回给超过了阈值的像素,所以可以创建与输入图像的灰度值相匹配的圆点。
为了实现上述目的,本发明提供一种图像处理方法,包括:像素组产生步骤,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;像素组重心确定步骤,确定在所述像素组产生步骤中所产生的像素组的重心的位置;以及已量化图像数据提供步骤,向位于在所述像素组重心确定步骤中所确定的重心的像素提供已量化图像数据,其中所述像素组产生步骤通过连续地选择与所述像素组重心确定步骤中所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生所述像素组。
为了实现上述目的,本发明提供一种图像处理装置,包括:像素组产生装置,通过根据用于像素选择的第一参考点选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;像素组参考点确定装置,用于确定由所述像素组产生装置所产生的像素组的第二参考点;以及已量化图像数据提供装置,用于向位于由所述像素组参考点确定装置所确定的第二参考点的像素提供已量化图像数据,其中所述像素组产生装置更新所述第一参考点,并根据此第一参考点,选择像素。由此,可以获得令人满意的打印输出,并且与通过计算重心位置来选择未处理过的像素的情况相比,能够以较少的计算量进一步改进整个图像处理设备的处理效率。
根据本发明的上述图像处理设备,其中所述像素组产生装置每当选择所述像素时,更新所述第一参考点。由此,与固定所述第一参考点的情况相比,能够以更圆的形状创建所产生的像素组,从而使圆点之间的距离保持均匀,并可以获得令人满意的打印对象。
根据本发明的上述图像处理设备,其中所述像素组产生装置每当选择了所述像素预定次数时,更新所述第一参考点。由此,与每次更新所述第一参考点的情况相比,能够以较少的计算量改进整个设备的处理效率。
根据本发明的上述图像处理设备,其中所述像素组产生装置每当选中图像的灰度图像数据的总和变为预定值时,更新所述第一参考点。由此,所述像素组逐渐变为更圆的形状,并可以获得令人满意的打印圆点输出,以及与每次计算重心的情况相比,可以减少计算量。
根据本发明的上述图像处理设备,其中所述第一参考点是根据选中像素的位置而计算的中心位置。由此,包括计算每个像素的灰度值在内的计算是不必要的,并可以减少计算量。
根据本发明的上述图像处理设备,其中所述第二参考点是根据像素组的像素位置和灰度图像数据值而计算的重心位置。由此,可以产生与像素组的输入灰度值精确匹配的圆点,并可以获得令人满意的打印输出。
根据本发明的上述图像处理设备,其中所述第一参考点是根据选中像素的位置而计算的中心位置,而所述第二参考点是根据像素组的像素位置而计算的中心位置。由此,对于像素选择的参考点和用于产生圆点的参考点,包括计算灰度值在内的计算变得不必要,所以能够以较少的计算量提高整个设备的处理效率。
根据本发明的上述图像处理设备,其中所述像素组产生装置查阅存储了与所述第一参考点相对位置的表格,并按照存储在所述表格中的顺序选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止。由此,只通过查阅基于所述第一参考点的所述表格来选择像素,所以根据所述第一参考点选择像素的计算变得不必要,并可以减少计算量。
为了实现上述目的,本发明提供一种图像处理方法,包括:像素组产生步骤,通过根据用于像素选择的第一参考点选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;像素组参考点确定步骤,确定在所述像素组产生步骤中所产生的像素组的第二参考点;以及已量化图像数据提供步骤,向位于在所述像素组参考点确定步骤中所确定的第二参考点的像素提供已量化图像数据,其中所述像素组产生步骤更新所述第一参考点,并根据此第一参考点,选择像素。由此,可以获得令人满意的打印输出,并且与通过计算重心位置来选择未处理过的像素的情况相比,能够以较少的计算量进一步改进图像处理方法。
附图说明
图1是按照应用于单色输入图像的本发明示出了图像输出系统的方框图;
图2是按照本发明的实施例示出了图像处理设备的结构的方框图;
图3A、3B、3C是示出了表示灰度图像数据56(图3A)、初始扫描(图3B)和正常扫描(图3C)的灰度图像数据56的扫描方法的示意图;
图4A、4B是示出了在随机选择像素时的打印输出的实例(图4A)和在以固定顺序选择像素时的打印输出的实例(图4B)的示意图;
图5A、5B、5C、5D是示出了确定重心位置56d的方法的示意图,表示了在量化像素组56c的每个像素的灰度图像数据值的总和小于阈值时确定重心位置56d的方法(图5A),以及在量化像素组56c的每个像素的灰度图像数据值的总和大于等于阈值时确定重心位置56d的方法(图5B到5D);
图6A、6B、6C是示出了在将白色密度用作灰度图像数据时的实例的示意图,其中图6A示出了黑色密度,图6B示出了到白色密度的转换,而图6C示出了在提供了已量化图像数据之后所返回的黑色密度灰度图像数据;
图7是本发明实施例的操作的流程图;
图8A、8B、8C是示出了初始扫描(图8A)、正常扫描(图8B)和重心65d的确定(图8C)的示意图;
图9A到9D是示出了最后一次正常扫描(图9A)、量化像素组56c(图9B)、返回数据的确定(图9C)和重心65d的确定及提供已量化图像数据(图9D)的示意图;
图10A、10B是示出了正常扫描目标像素56e的选择方法的变体形式的示意图,其中图10A示出了正常扫描之前的状态,而图10B示出了正常扫描之后的状态;
图11A、11B、11C是示出了与阈值相关的变体形式的示意图,其中图11A示出了灰度图像数据56的实例,图11B示出了在阈值改变之后对像素组56c进行量化,而图11C示出了提供阈值改变之后的已量化图像数据;
图12A、12B、12C是示出了向已量化像素组56a中的多个像素提供已量化数据的变体形式的示意图,其中图12A示出了量化像素组56c,图12B示出了提供本实施例中的已量化图像数据,而图12C示出了将已量化数据提供给多个像素;
图13是示出了两个已量化像素组的重心相匹配时的实例的示意图;
图14是将按照本发明的图像输出系统应用于彩色输入图像时的方框图;
图15A、15B示出了沿主扫描方向查找初始像素时的实例;
图16A、16B示出了沿对角线方向查找初始像素时的实例;
图17示出了应用本发明的图像输出设备的方框图的实例;
图18是示出了本发明实施例的操作的流程图;
图19是示出了本发明实施例的操作的流程图;
图20A、20B、20C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图21A、21B、21C示出了RAM 67的结构及要存储的数值的实例的示意图;
图22A是示出了RAM 67的结构及要存储的数值的实例的示意图;
图23是示出了在超过阈值时重心计算处理操作的流程图;
图24是示出了白色密度计算处理操作的流程图;
图25A、25B、25C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图26A、26B、26C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图27是示出了阈值控制处理操作的流程图;
图28A、28B、28C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图29A、29B是示出了RAM 67的结构及要存储的数值的实例的示意图;
图30A、30B、30C是示出了根据像素选择的参考点来构造单元的概念的示意图;
图31A、31B、31C是示出了根据像素选择的参考点来构造单元的概念的示意图;
图32A、32B、32C是示出了根据像素选择的参考点来构造单元的概念的示意图;
图33A、33B、33C是示出了根据像素选择的参考点来构造单元的概念的示意图;
图34A、34B、34C是示出了根据像素选择的参考点来构造单元的概念的示意图;
图35是示出了本发明实施例的操作的流程图;
图36是示出了本发明实施例的操作的流程图;
图37是示出了阈值控制处理操作的流程图;
图38是示出了在超过阈值时灰度值计算处理操作的流程图;
图39是示出了白色密度计算处理的流程图;
图40是示出了白色密度计算处理的流程图;
图41A、41B、41C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图42A、42B、42C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图43A、43B、43C是示出了RAM 67的结构及要存储的数值的实例的示意图;
图44A、44B、44C是示出了RAM 67的结构及要存储的数值的实例的示意图;以及
图45A、45B是示出了用于选择未处理过的像素的表格的实例的示意图。
具体实施方式
现在,将参照附图,对本发明的优选实施例进行描述。
[第一实施例]
图1是表示将本发明应用于单色输入图像时,本发明图像输出系统的方框图。在此实例中,在主机50中产生灰度图像数据56(图1中的单色图像),并向如页式打印机等图像输出设备60发送。如页式打印机等图像输出设备60根据所提供的图像数据56再现单色图像。图像输出设备60包括:控制器62,执行图像处理,并向引擎70提供激光驱动数据69;以及引擎,根据激光驱动数据69产生图像。
主机50利用如文字处理器和图形工具等应用程序52产生文本数据、图形数据和位图数据。由安装在主机50中、针对图像输出设备的驱动器54将这些应用程序52所产生的每个数据进行栅格化,并转换为包括每个像素或圆点的单色数据的灰度图像数据56。灰度图像数据56是灰度图像数据值的集合,例如,其中每个像素具有8比特数值,0到255。
图像输出设备60还具有并未示出的微处理器和控制器62,控制器62具有由微处理器和所安装的控制程序构成的半色调处理部分66和脉冲宽度调制部分68。半色调处理部分66接收灰度图像数据56,并产生已量化图像数据30。将在后面对半色调处理部分66的结构进行描述。向脉冲宽度调制部分68发送已量化图像数据30。脉冲宽度调制部分68产生驱动数据69,所述驱动数据69具有关于是否存在针对每个圆点的激光驱动脉冲的信息。
引擎70中的激光驱动器72根据驱动数据69驱动用于图像绘制的激光二极管74。引擎70包括光敏鼓、传送带及其驱动部分,在图1中省略了这些部分。
按照本发明实施例的图像处理设备对应于将灰度图像数据56转换为已量化图像数据30的半色调处理部分66。
图2表示安装本发明实施例的图像处理设备的结构的方框图。图像处理设备包括灰度图像数据记录部分10、图像数据扫描部分(像素组产生装置)12、图像数据累计部分14、阈值记录部分16、阈值比较部分18、图像组重心确定部分20、已量化图像数据提供部分22和已量化图像数据记录部分24。
灰度图像数据记录部分10接收从主机50输出的灰度图像数据56,并对其进行记录。例如,灰度图像数据56针对每个像素具有8比特数值(0到255)。例如,此数值表示黑色的密度。
数据扫描部分(像素组产生装置)12扫描灰度图像数据56。将参照图3对灰度图像数据的扫描方法进行描述。
图3A示出了记录在灰度图像数据记录部分10中的灰度图像数据56。图3A示出了其中像素位于m到m+2行以及n到n+3列范围内的灰度图像数据。之后,像素将被写为(n,m)。像素(n,m)表示位于第m行、第n列的像素。在灰度图像数据中,假设已经对已量化像素组56a(像素(n,m)、(n+1,m)、(n,m+1)、(n+1,m+1)(n+2,m+1))进行了量化,并将已量化图像数据值“255”提供给像素(n+1,m+1)。
存在两类扫描方法,并且在不存在量化像素组56c时,执行初始扫描,以及在存在量化像素组56c时,执行正常扫描。
将参照图3B,对初始扫描方法进行描述。在初始扫描中,扫描目标是排除在已量化像素组56a之外的像素中、位于最左侧最高行的像素。主扫描方向是从左向右。在图3B中,最高行是行m,而位于此行最左侧的像素(n+2,m)是作为初始扫描的扫描目标的初始扫描目标像素56b。初始扫描目标像素56b构成了量化像素组56c。
将参照图3C,对正常扫描方法进行描述。由于像素(n+2,m)和像素(n+3,m)的灰度图像数据值相同,量化像素组56c(像素(n+2,m)、(n+3,m))的重心56d位于像素(n+2,m)和像素(n+3,m)的边界线的中点。在正常扫描中,扫描目标是最靠近重心56d的像素(排除在已量化像素组56a之外)。由于根据重心56d查找下一像素,以圆形产生了已量化像素组56a,而且即使在其重心56d创建了圆点,相邻圆点仍保持均匀的距离。通过这种圆点散布,可以获得悦目的打印输出。
在图3C中,最靠近重心56d的像素是(n+2,m+1)和像素(n+3,m+1)。如果与这种情况一样,存在多个最靠近重心56d的像素,最好随机选择扫描目标。如果不是随机而是以固定的顺序选择扫描目标,已量化像素组56a的形状趋向于特定的形状,而且如果在其重心56d创建圆点,整幅图像中的圆点的位置变为周期性的,并在打印输出中产生周期性的图案。这种周期性的图案易于被察觉,使得打印输出的图像不自然。另一方面,如果随机选择扫描目标,所产生的已量化像素组56a的形状并不会变得特定,而且即使在其重心56d创建圆点,也不会产生上述周期性图案,并将获得视目的打印输出。图4A示出了随机选择扫描目标像素时打印输出的实例,而图4B示出了不是随机而是如利用表格等以固定的顺序选择像素时打印输出的实例。如图4B所示,如果以固定的顺序选择像素,则从打印部分的左下向右上以特定的顺序创建圆点,产生了周期性的图案,并且能够识别此图案,使得打印输出不自然。另一方面,如图4A所示,如果随机选择像素,则并未产生周期性图案,并且可以获得悦目的打印输出。
在图3C中的实例的情况下,将像素(n+2,m+1)选为作为正常扫描的扫描目标的正常扫描目标像素56e。在正常扫描目标像素56e变为量化像素组56c的一部分之后,执行下一正常扫描。
在执行初始化扫描时,产生量化像素组56c,所以此后,重复执行正常扫描。将正常扫描目标像素56e并入到量化像素组56c中。但是,当量化像素组56c中的每个像素的灰度图像数据值的总和变为阈值(例如,255)或更大值时,量化像素组56c变为已量化像素组56a。换句话说,量化像素组56c是在变为已量化像素组56a之前变为扫描目标的像素集合。当量化像素组56c变为已量化像素组56a时,再次执行初始扫描。
图像数据扫描部分12向图像数据累计部分14输出量化像素组56c的每个像素的灰度图像数据值。图像数据扫描部分12也向像素组重心确定部分20输出量化像素组56c的每个像素的灰度图像数据值。
图像数据累计部分14从图像数据扫描部分12接收量化像素组56c的灰度图像数据值,确定其总和,并输出总和。在图3C所示实例的情况下,量化像素组56c(像素(n+2,m)、(n+3,m))的灰度图像数据值的总和是50+50=100。
阈值记录部分16记录了要与量化像素组56c的每个像素的灰度图像数据值的总和进行比较的阈值。例如,阈值为255。
阈值比较部分18将图像数据累计部分14的输出与从阈值记录部分16中读取出的阈值进行比较。而且,阈值比较部分18向像素组重心确定部分20发送比较结果(量化像素组56c的每个像素的灰度图像数据值的总和是否小于阈值或是否大于等于阈值)。如果量化像素组56c的每个像素的灰度图像数据值的总和为阈值或更大值,阈值比较部分18也请求已量化图像数据提供部分22提供已量化图像数据。
像素组重心确定部分20确定量化像素组56c的重心56d的位置。将重心56d的位置发送给图像数据扫描部分12。将参照图5,对重心56d的位置确定方法进行描述。重心56d的位置确定方法根据阈值比较部分18的比较结果而不同。
将参照图5A,对比较结果中量化像素组56c的每个像素的灰度图像数据值的总和小于阈值时的情况下,重心56d的位置确定方法进行描述。量化像素组56c的每个像素的数据值的总和是50+50+50+50=200,小于阈值(=255)。在这种情况下,考虑数据聚集在量化像素组56c的每个像素的中心来去定重心56d的位置。在图5A所示的情况下,量化像素组56c(像素(n,m)、(n+1,m)、(n,m+1)和(n+1,m+1))的每个像素的数据值全都相等,所以重心56d的位置位于像素(n,m)的右下角。
将参照图5B,对比较结果中量化像素组56c的每个像素的灰度图像数据值的总和为阈值或更大值时的情况下,重心56d的位置确定方法进行描述。量化像素组56c的每个像素的数据值的总和是50+50+50+50+65=265,大于阈值(=255)。在这种情况下,忽略超出阈值的灰度图像数据的数量。在图5B所示实例的情况下,只忽略了来自像素(n+1,m+2)的数据值的数值10,并将像素(n+1,m+2)的数据值作为55(=65-10)来确定重心56d的位置。重心56d的位置只是比图5A中的重心56d略微向右下方,位于像素(n+1,m+1)中。
将已忽略的灰度图像数据值“10”(返回数据)返回给像素(n+1,m+2)(参见图5C)。换句话说,灰度图像数据值“10”保留在像素(n+1,m+2)中。像素(n+1,m+2)也可以是另一量化像素组56c的组成元素。换句话说,像素(n+1,m+2)的灰度图像数据值“10”并未并入到已量化像素组56a中,而是在再次从初始像素开始查找时,变为了从作为量化像素组56c的重心开始的查找目标。用于以这种方式将返回数据值返回给原始像素(n+1,m+2),与将返回数据值返回给除已量化像素组56a之外的像素来传播误差的情况相比,与输入的像素灰度值的圆点分布精确匹配地创建圆点。并未忽略像素(n,m)、(n+1,m)、(n,m+1)和(n+1,m+1)的灰度图像数据值,所以并不保留这些灰度图像数据值。
如果在比较结果中量化像素组56c的每个像素的灰度图像数据值的总和为阈值或更大值,则向已量化数据提供部分22发送重心56d的位置。
参照图5B,对比较结果中量化像素组56c的每个像素的灰度图像数据值的总和为阈值或更大值时的情况下,重心56d的位置确定方法进行了描述,但在某些情况下,量化像素组56c的每个像素的灰度图像数据值的总和可以等于阈值。例如,在图5A到5C中,像素(n+2,m)、(n+3,m)、(n+2,m+1)、(n+3,m+1)和(n+3,m+2)的灰度图像数据值的总和是255(=阈值)。在这种情况下,如图5D(右半侧)所示,重心56d位于像素(n+3,m+1)中。并不产生返回数据。
当从阈值比较部分18接收到已量化图像数据提供请求时,已量化图像数据提供部分22向位于从像素组重心确定部分20发送过来的重心56d的像素提供等于阈值的已量化图像数据。参照图5C,已量化图像数据提供部分22向位于已量化像素组56a的重心56d的像素(n+1,m+1)提供等于阈值的已量化图像数据“255”。在图5C中,因为已经提供了已量化图像数据“255”,已量化像素组56a存在。当提供已量化图像数据时,已量化图像数据提供部分22向图像扫描部分12发送初始化请求,即,向图像数据扫描部分12请求初始扫描。由此,图像数据扫描部分12再次执行初始扫描。
现在,将对已量化图像数据的提供进行描述。通常,打印机不能打印针对每个像素的有区别的256个灰度级密度。例如,打印机能够针对每个像素或者打印白色(黑色密度为0)或者打印黑色(黑色密度为255)。所以,对于已量化像素组56a,向其重心所处于的像素提供等于阈值的已量化图像数据“255”。换句话说,在其重心所处于的像素处打印黑色圆点。圆点的形状是任意的。例如,使用圆形,但其他形状也可以接受。但是,最好圆点的重心位于圆点所处的像素中。
图6A到6C示出了将白色密度用作灰度图像数据时的实例。参照图6A,在每个像素中记录如黑色密度“205”等表示相对较暗的黑色的灰度图像数据值。在这种状态下,量化像素组56c的每个像素的灰度图像数据值的总和很快就会变为阈值或更大值。
所以,如图6B所示,将黑色密度转换为白色密度,即白色密度=255-黑色密度。例如,由图像数据扫描部分12(对应于白色密度转换装置)针对初始扫描目标像素56b周围的像素执行到白色密度的转换。最好在初始扫描目标像素56b的灰度图像数据值超过密度的中等程度(如,127 255/2)时,执行到白色密度的转换。在图6B中,量化像素组56c(像素(n,m)、(n+1,m)、(n,m+1)和(n+1,m+1))中每个像素的数据值的总和小于阈值。如果这些像素保留有黑色密度(参见图6A),只是像素(n,m)与(n+1,m)的数据值的总和(410=205+205)就已经超过其阈值(255)了。
如图6C所示,返回数据是245,而所提供的已量化图像数据是0。如果将此转换为白色密度,返回值变为10,而所提供的已量化图像数据变为255,与图5C相对应。
当提供了已量化图像数据0时,针对在向其提供了[已量化图像数据0]的像素周围的像素,打印黑色圆点,而对于在向其提供了已量化图像数据0的像素,不打印圆点。
已量化图像数据记录部分24记录由已量化图像数据提供部分22所提供的已量化图像数据。输出已量化图像数据记录部分24的记录内容,作为已量化图像数据30。
现在将参照图7中的流程图以及图8和图9,对本发明实施例的操作进行描述。
首先,图像数据扫描部分12从灰度图像数据记录部分10读取灰度图像数据56,并判断是否存在未扫描过的像素(S10)。如果不存在未扫描过的像素,即如果扫描已经完成(S10中的“是”),则处理结束。如果存在未扫描过的像素,即如果扫描未完成(S10中的“否”),图像数据扫描部分12执行初始扫描(S12)。换句话说,确定初始扫描目标像素56b。例如,如果存在如图8A所示的灰度图像数据56,像素(n,m)成为初始扫描目标像素56b。
然后,图像数据扫描部分12确定记录在初始扫描目标像素56b中的灰度图像数据值是否小于等于127(S14)。如果灰度图像数据值超过127(S14中的“否”),图像数据扫描部分12将灰度图像数据56的每个像素中的灰度图像数据值转换为白色密度(S16)(参见图6A和6B)。然后,向图像数据累计部分12发送已扫描像素的灰度图像数据值。如果灰度图像数据值小于等于127(S14中的“是”),图像数据扫描部分12向图像数据累计部分14发送已扫描像素的灰度图像数据值。在图8A中所示的实例中,记录在初始扫描目标像素56b中的灰度图像数据是50,所以不执行到白色密度的转换。
当从图像数据扫描部分12接收到已扫描像素的灰度图像数据值时,图像数据累计部分14计算数据值的累计总和(S18)。向阈值比较部分18发送数据值的累计总和。阈值比较部分18将数据值的累计总和与从阈值记录部分16中读取的阈值(=255)进行比较。并判断数据值的累计总和是否大于等于阈值(=255)(S20)。向图像组重心确定部分20发送判断的结果。这是因为像素组重心确定部分20的操作根据判断的结果而不同。
如果数据值的累计总和小于阈值(S20中的“否”),则将最近所扫描的像素并入到量化像素组56c中。然后,像素组重心确定部分20确定量化像素组56c的重心。像素组重心确定部分20在确定量化像素组56c的重心之前,从图像数据扫描部分12接收量化像素组56c的每个像素的位置和灰度图像数据值。将这些用于确定重心。以及,图像数据扫描部分12执行正常扫描(S24)。换句话说,确定正常扫描目标像素56e。处理返回到对数据值的累计(S18)。
参照图8A,记录在初始扫描目标像素56b中的灰度图像数据是50。这里,由图像数据累计部分14获得灰度图像数据值的累计总和=50(S18)。由于累计总和小于255(S20中的“否”),将初始扫描目标像素56b并入到量化像素组56c中(参见图8B),然后确定量化像素组56c的重心(S22)。重心是像素(n,m)的中心。与重心最为靠近的像素是像素(n+1,m)和(n,m+1)。如上所述,将距离重心的距离用于查找将要并入到已量化像素组56a中的下一个像素,所以最终将要产生的量化像素组56c的形状逐渐变为粗糙的圆形,以相互均匀的距离形成圆点,并改善了圆点的散布。这里,随机选择正常扫描目标像素56e,像素(n+1,m)变为正常扫描目标像素56e(S24)(参见图8B)。通过上述的随机选择扫描目标像素,最终将要产生的已量化像素组56a的形状并不总会变为相同的形状,不会出现周期性的圆点图案。
处理返回到数据值的累计(S18),并确定数据值的累计总和=50+50=100。由于累计总和小于255(S20中的“否”),将正常扫描目标像素56e并入到量化像素组56c中(参见图8C),然后确定量化像素组56c的重心(S22)。重心56d是像素(n+1,m)和像素(n,m+1)的边界线上的中点。此后,以这种方式重复扫描。
如果数据值的累计总和大于等于阈值(S20中的“是”),则将最近扫描的像素并入到量化像素组56c中。然后,像素组重心确定部分20确定返回数据(S30)。而且,像素组重心确定部分20确定量化像素组56c的重心(S32)。像素组重心确定部分20在确定量化像素组56c的重心之前,从图像数据扫描部分12接收量化像素组56c的每个像素的灰度图像数据值。将这些用于确定重心。在确定重心时,并不考虑返回数据。阈值比较部分18请求已量化图像数据提供部分22提供已量化图像数据。像素组重心确定部分20向已量化图像数据提供部分22发送重心的位置。图像数据扫描部分12向已量化图像数据提供部分22发送关于是使用了黑色密度还是使用了白色密度的信息。已量化图像数据提供部分22接收已量化图像数据提供请求,并向量化图像组56c的重心所处的像素提供已量化图像数据(S34)。如果使用黑色密度,则要提供的已量化图像数据是255,如果使用白色密度,则为0。而且,已量化图像数据提供部分22向图像数据扫描部分12请求初始化,并且处理返回到是否存在未扫描过的像素的确定(S10)。
参照图9A,量化像素组56c包括像素(n,m)、(n+1,m)、(n,m+1)和(n+1,m+1)。例如,通过按照(n,m)、(n+1,m)、(n+1,m+1)和(n,m+1)的顺序扫描像素,产生了量化像素组56c。重心56d位于像素(n,m)的右下角。最靠近重心56d的像素是像素(n+1,m+2)和像素(n,m+2)。这里,随机选择正常扫描目标像素56e,并将像素(n,m+2)选为正常扫描目标像素56e(S24)。
然后,处理返回到对数据值的累计(S18),并确定数据值的累计总和=50+50+50+50+65=265。由于累计总和大于255(S20中的“是”),将正常扫描目标像素56e并入到量化像素组56e中(参见图9B),然后确定返回数据(S30)。针对最后扫描的像素(n,m+2)计算返回数据。即,数据值的累计总和-阈值=265-255=10。因此,返回数据为10,返回给像素(n,m+2)(参见图9C)。将像素(n,m+2)的灰度图像数据作为从中减去了返回数据的数值,即65-10=55,并[利用此灰度图像数据]确定量化像素组56c的重心56d(S32)。重心的位置与图5C中相同(参见图9D)。并且已量化图像数据提供部分22向重心56d所处于的像素(n+1,m+1)提供已量化图像数据255(S34)。
按照本发明的实施例,向已量化像素组56a的重心56d所处的像素提供已量化的图像数据。由此,已量化图像数据与已量化像素组56a的灰度图像数据的密度相匹配。同样,已量化图像数据的数值等于阈值(=255),并且已量化像素组56a中每个像素的灰度图像数据的总和(不包括返回数据)也等于阈值,所以在已量化像素组56a的单元内不存在量化误差。
以这种方式,不具有量化误差并与灰度图像数据的密度分布相匹配的量化成为可能。因此,解决了由于误差扩散厚的每个像素的数据(密度)与误差扩散前在每个像素附近的数据(密度)的不匹配所引起的蠕虫问题。
在确定重心56d时,忽略了已量化像素组56a中的返回数据,并将其返回给该像素,所以即使已量化像素组56a中每个像素的灰度图像数据的总和超过阈值时,也不会产生量化误差。
这里,将返回数据返回给原始像素,并且不将该像素并入到已量化像素组56a中,但在初始像素的扫描中,并入到量化像素组56c中,从而可以创建与输入灰度值精确匹配的分布。
如果黑色密度较高,通过使用白色密度,可以防止将要并入到已量化像素组56a中的像素数目的急剧下降(参见图6)。
当存在与量化像素组56c的重心最为靠近的多个像素时,随机确定将要成为正常扫描目标像素56e的像素,所以改进了量化之后图像的图像质量。
本发明实施例的多种变体形式都是可能的。
例如,在主扫描方向是从左向右时,如果在灰度像素数据56的右端附近产生量化像素组56c,则在每个像素的毁的图像数据值的总和达到阈值之前,可能更多的像素不能并入到量化像素组56c中。在这种情况下,向量化像素组56c的重心提供最靠近每个像素的灰度图像数据值的总和的已量化图像数据。由于已量化图像数据不可能具有多达256个的灰度级,在已量化图像数据与总和之间可能会产生误差,但忽略此误差。
将参照图10A、10B,对用于选择正常扫描目标像素56e的方法的变体形式进行描述。如图10A所示,在量化像素组56c包括像素(n,m)和(n+1,m)(都具有灰度像素数据值=50)的情况下,重心56d位于像素(n,m)和像素(n+1,m)的边界线的中点。所以,最靠近重心56d的像素是像素(n,m+1)和像素(n+1,m+1)。在此变体形式中,并不随机选择正常扫描目标像素56e,而是将灰度像素数据值较小的像素选为正常扫描目标像素56e。在图10A和10B中,像素(n,m+1)的灰度像素数据值是50,而像素(n+1,m+1)的灰度像素数据值是80。由于像素(n,m+1)的灰度像素数据值较小,像素(n,m+1)被选为正常扫描目标像素56e(参见图10B)。由此,改进了对已量化图像的边缘的再现能力。换句话说,在颜色改变剧烈的边缘部分中,选择其灰度值较低的像素,而不是灰度值较高的像素,并将其并入到量化像素组56c中,而不并入其灰度值较高的像素,所以,可以与输入灰度值精确匹配地查生圆点,而不是利用突然超过阈值的灰度值的总和来创建圆点。
图10A、10B中每个像素的密度可以是白色密度。如果图10A、10B中的每个像素的密度是白色密度,则选择其白色密度较低的像素。这意味着选择了其黑色密度较高的像素。白色密度被用在初始扫描目标像素56b的黑色密度超过127是的情况下。因此,如果初始扫描目标像素56b的黑色密度超过127,则将其黑色密度较高的像素选为正常扫描目标像素56e。
将参照图11A、11B、11C,对涉及阈值的变体形式进行描述。当灰度图像数据56如图11A所示时,即使增加量化像素组56c的像素数目,灰度图像数据的总和仍难以达到阈值。在灰度图像数据56如图11A所示的情况下,所有像素的灰度图像数据值的总和是10×12=120,并未达到阈值(=255)。所以,改变阈值。例如,将阈值设置为50。于是,如图11B所示,如果量化像素组56c包括像素(n,m)、(n+1,m)、(n,m+1)、(n+1,m+1)和(n+1,m+2),灰度图像数据值的总和达到了阈值(=50)。在这种情况下,向重心56d所处的像素(n+1,m+1)提供已量化图像数据“50”(参见图11C)。这意味着与已量化图像数据“255”的情况相比,在像素(n+1,m+1)中打印了大约20%(50/255)大小的圆点。
阈值改变方面的实例如下。首先,事先在阈值记录部分16中记录多个阈值候选。例如,将255和50记录为阈值候选。这里,将阈值候选中最高的一个(如255)用作阈值。而且,如果即使量化像素组56c的像素数目达到了预定值(如12),而灰度数据值的总和仍未达到阈值,从阈值记录部分16中读取仅次于最高数值的阈值候选,并将其用作阈值。如果即使量化像素组56c的像素数目达到了预定值,而灰度数据值的总和仍未达到阈值,阈值比较部分18从阈值记录部分16中读取下一个最高的阈值候选,并将其用作阈值。以这种方式,逐渐降低所使用的阈值。例如,如果即使量化像素组56c的像素数目变为12,灰度图像数据值的总和仍未达到255,阈值比较部分18则从阈值记录部分60中读取出下一个最高的阈值候选(=50),并将其用作阈值。
如果阈值以这种方式随着灰度图像数据值的总和的下降而下降,即使对于灰度图像数据值较低的区域,仍能以特定的密度打印黑色圆点。因此,在灰度图像数据56中,可以防止在灰度图像数据值较低的区域中几乎不打印黑色圆点的情况。这意味着要打印的圆点的间隔几乎变为常数。因此,改进了圆点的散布。由此,抑制了低频噪声的产生。
在输入图像的灰度值连续处于中间值的区域(例如,灰度值“120”连续出现的情况)中,如果阈值是常数,已量化图像组56a差不多包括两个像素。如果包括在已量化像素组56a中的像素数目较少(如果已量化像素组56a的规模较小),要打印的圆点的数目增加,并且使圆点突出。所以,如上所述,通过改变阈值,以及通过将已量化像素组56a的规模保持恒定,以预定的密度产生圆点。以这种方式所产生的已量化像素组56a中产生圆点的位置是此像素组56a的重心。因此,可以获得与输入图像的输入分布精确匹配的输出圆点,并可以获得令人满意的打印输出。
将参照图12A、12B、12C,对针对一个已量化像素组56a、向多个像素提供已量化数据的变体形式进行描述。参照图12A,量化像素组56c包括像素(n,m)、(n+1,m)、(n,m+1)、(n+1,m+1)和(n+1,m+2)。这里,量化像素组56c的每个像素的灰度图像数据值的总和为255,达到了阈值(=255)。所以,根据上述实施例,向量化像素组56c的重心56d所处的像素(n+1,m+1)提供已量化图像数据“255”(参见图12B)。但是,在此变体形式的情况下,如图12C所示,向像素(n+1,m)、(n,m+1)和(n+1,m+2)提供已量化图像数据85=255/3。在这种情况下,向其提供了已量化图像数据的这些像素的重心是其顶端为像素(n+1,m)的中心、像素(n,m+1)的中心和像素(n+1,m+2)的中心的等边直角三角形的重心,并位于像素(n+1,m+1)中。同样,向其提供了已量化图像数据的像素的已量化像素数据的总和是85×3=255。
按照这种变体形式,向其提供了已量化图像数据的所有像素与已量化像素组56a的灰度图像数据的密度分布相匹配,并不产生量化误差。即使以这种方式向多个像素提供已量化的数据,利用脉冲宽度调制部分68,打印仍是可能的。
同样可能的是已经由已量化像素组56a确定的重心与位于已量化像素组56a当前确定的重心的像素相匹配。图13示出了此实例。如图13所示,已量化像素组56a包括五个像素(n+2,m+1)、(n+1,m+2)、(n+2、m+2)、(n+3,m+2)和(n+2,m+3)外部的20个周围的像素,而且位于像素组56a的重心的像素(n+2,m+2)与位于包括了五个像素的已量化像素组56a的重心的像素(n+2,m+2)相匹配。这是因为如果利用在构成已量化像素组56a(在图13所示实例的情况下,像素组包括20个周围的像素)的阶段中最后剩余的像素来创建已量化像素组56a,重心可以与已经计算过其重心的已量化像素组(在图13所示实例的情况下,大体上位于中心的五个像素的像素组)的重心相匹配。在这种情况下,在最靠近其中已经创建了圆点和其中并未创建圆点的像素位置的位置创建圆点。在图13所示的实例中,由大体上位于中心的五个像素在位置(n+2,m+2)创建圆点,所以向如(n+3,m+2)、(n+2,m+1)、(n+1,m+2)或(n+2,m+3)等最靠近20个周围像素的重心(n+2,m+2)而又未创建圆点的位置提供“255”。根本不可能创建圆点,但是最好以这种方式创建圆点,以便获得与输入灰度值精确匹配的圆点分布。
到此为止,已经对本发明的实施例进行了描述,其中假设将按照本发明的图像输出系统应用于单色输入图像。但是,按照本发明的图像输出系统也可以应用于彩色输入图像。图14是将按照本发明的图像输出系统应用于彩色输入图像时的方框图。
在此实例中,在主机50中产生RGB彩色图像数据55,并向如页式打印机等图像输出设备60发送。如页式打印机等图像输出设备60根据所提供的RGB彩色图像数据55再现彩色图像。图像输出设备60包括:控制器62,执行图像处理,并向引擎70提供激光驱动数据69;以及引擎,根据激光驱动数据69产生图像。
主机50利用如文字处理器和图形工具等应用程序52产生文本数据、图形数据和位图数据。由安装在主机50中、针对图像输出设备的驱动器54将这些应用程序52所产生的每个数据进行栅格化,并转换为包括像素或每个圆点的RGB数据的RGB彩色图像数据55。例如,彩色图像数据55是其中分别由8比特数值,即0到255表示每个像素中的各个颜色(红、绿、蓝)的RGB数据的集合。
图像输出设备60具有并未示出的微处理器和控制器62,控制器62包括由微处理器和所安装的控制程序实现的彩色转换部分64、半色调处理部分66和脉冲宽度调制部分68。
彩色转换部分64接收RGB彩色图像数据55,并产生总共为8×4=32比特的灰度图像数据56,其中分别以8比特表示四种颜色C(青)、M(紫)、Y(黄)和K(黑)。例如,灰度图像数据56与图3A、3B、3C所示的相同。在每个像素中,记录C(青)、M(紫)、Y(黄)和K(黑)中的一种颜色的密度,而不是黑色密度。如果如青等颜色的密度过高,与单色图像的情况一样,将其转换为白色密度。
半色调处理部分66接收灰度图像数据56,并产生已量化图像数据30。半色调处理部分66(对应于图2所示的图像处理设备)的结构与上述相同。向脉冲宽度调制部分68提供已量化图像数据30。脉冲宽度调制部分68产生驱动数据69,所述驱动数据69是关于是否存在针对每个圆点的激光驱动脉冲的信息。
引擎70中的激光驱动器72根据驱动数据69驱动用于图像绘制的激光二极管74。引擎70包括光敏鼓、传送带及其驱动部分,在图14中省略了这些部分。
可以构造半色调处理部分66(对应于图2所示的图像处理设备),使得图像输出设备60执行半色调处理程序。通常通过以允许图像输出设备60读取的格式记录在如软盘(注册商标)和CD-ROM等记录介质上来分配此半色调处理程序。由介质读取设备(如CD-ROM驱动器、软盘(注册商标)驱动器等)读取此程序,并安装在硬盘上。并且CPU在需要时从硬盘读取所需的程序,并执行所需的处理。图像输出设备60可以具有如ROM等记录介质,从而将半色调处理程序记录在该ROM中。
在上述实例中,当通过初始扫描查找初始像素时,在排除已量化像素组56a在外的未处理像素之外,位于最高行中沿扫描方向最左侧的像素是扫描目标和选择目标。例如,在图5D中,利用作为像素(n,m)的初始像素创建已量化像素组56a,然后执行初始扫描,并利用作为像素(n+2,m)的初始像素创建已量化像素组56a。通过顺序重复此过程,最终在一幅图像中创建如图15A所示的多个已量化像素组56a。
如图15A所示,利用偏移设置位于最高行的多个已量化像素组56a和位于最低行的多个已量化像素组56a。以及同样利用偏移设置位于该行以下行的已量化像素组56a。这是因为当创建已量化像素组56a为圆形形状,并且在未处理过的像素中选择位于最高行中最左侧的像素时,极有可能的是,在一行中相邻的已量化像素组56a之间(圆形之间的间隙)选择初始像素。
如果在上述创建的已量化像素组56a的重心中产生圆点,如图15B所示创建圆点。以这种方式,在上面行中圆点的中间位置产生下一行的圆点。由此,圆点看上去好像以对角线产生,并且由于人眼难以识别对角线方向,可以获得令人视觉满意的打印输出。
现在,将考虑通过沿对角线方向顺序查找,在初始扫描中选择初始像素的情况。例如,将描述在如图5C所示创建已量化像素组56a时的情况。为了沿对角线方向顺序查找,相对于扫描方向,从初始像素(n,m)向左下方顺序查找像素,以及当最后要扫描的像素完成时,以最高行(第一行)中最后未处理过的像素作为参考通过顺序查找左下方的像素,重复此过程。如果在第一行中不存在未处理过的像素,以图像右端(右侧行中最后一个像素)中位于最高位置的未处理过的像素作为参考通过顺序查找左下方的像素,重复此过程。如果将已查找过的像素并入到已量化像素组56a中,则排除此像素。在图5C所示的情况下,如果从像素(n,m)查找左下方的像素,并不存在适当的像素,所以查找位于像素(n,m)右侧的像素(n+1,m)。此像素已经被并入到已量化像素组56a中,所以排除此像素,并查找位于此像素左下方的像素(n,m+1)。由于此像素也被并入到已量化像素组56a中,查找位于左下方的下一像素,并且如果并不存在适当的像素,查找像素(n+2,m),并且由于此像素并未被并入到已量化像素组56a中,以此像素作为初始像素创建已量化像素组56a。
重复此过程,如图16A所示,创建最终在一幅图像中所获得的已量化像素组56a。沿对角线方向创建具有预定大小的圆形已量化像素组56a。但是,如果在已量化像素组的重心位置产生圆点,如图16B所示,在每行每列中沿直线粗略设置圆点。由于与图15B相比,圆点在视觉上更为突出,这种圆点创建实际上并不是令人满意的打印输出。
因此,查找位于最高行最左侧的未处理像素,于是可以获得令人满意的打印输出。当然,只要通过沿扫描方向执行初始扫描来查找初始像素,可以使用另外的方法。同样,如果沿子扫描方向执行初始扫描,可以获得完全相同的效果。例如,在这种情况下,选择位于最左列最高处的未处理像素。
[第二实施例]
现在,将参照图17到图29,对本发明的第二实施例进行描述。
图17是表示将本发明应用于其的图像输出设备60的硬件的方框图。图像输出设备60包括CPU 61、输入接口(输入I/F)63、ROM 65、RAM67和打印引擎70。与图1相对应,半色调处理部分66包括CPU 61、输入I/F 63、ROM 65和RAM 67,而脉冲调制部分68包括CPU 61、ROM65和RAM 67。引擎70对应于打印引擎70。
CPU 61通过内部总线与输入I/F 63、ROM 65、RAM 67和打印引擎70相互连接,以便执行包括计算重心位置和选择未处理像素在内的多种处理。后面将详细描述。
输入I/F 63用作主机50与图像输出设备60之间的接口,而且在本实施例中,输入从主机输出、具有针对每个像素的预定灰度值的栅格化输入数据。根据CPU 61的控制,将输入的图像数据存储在RAM 67中一次。
ROM 65存储多种程序。按照CPU 61的控制,读取程序,并执行多种处理。
RAM 67用作CPU 61执行处理时的工作存储器,并暂时存储执行数据。
打印引擎70具有与图1所示的引擎70相同的结构,并包括激光驱动器72和LD 74。
现在,将参照图16到图26,对直到根据输入图像数据创建圆点为止、图像输出设备60的操作进行描述。
首先,CPU 61读取存储在ROM 65中的程序,并开始处理(步骤S40)。此时,已经通过输入I/F 63将输入图像数据存储在RAM 67中。当然,可以利用此处理的开始作为触发,从主机50通过输入I/F 63将输入图像数据加载到RAM 67中。在这种情况下,将输入图像数据存储在作为RAM 67的预定区域的输入缓冲区中。图20A示出了此实例。
如图20A所示,RAM 67包括输入缓冲区671、工作存储区672和输出缓冲区673。输入缓冲区671具有二维结构,例如,将位于上述输入像素(n,m)的像素存储在输入缓冲区中的地址(n,m)中。构造输入缓冲区671使其与输入像素的位置相匹配。实际上,将输入图像数据的灰度值存储在此地址中。如图20B所示,当输入图5A或图8A所示的输入像素时,将每个灰度值存储在输入缓冲器671中。工作存储区672存储计算重心位置的结果和计算灰度值的结果,而且与输入缓冲器671的情况一样,构建输出缓冲区673使其与输入像素相匹配。后面将进行详细的描述。
然后,CPU 61确定初始像素,并计算初始密度重心(步骤S41)。为了确定初始像素,与第一实施例一样,CPU 61从存储在RAM 67的输入缓冲器671中的输入图像数据中,选择位于输入像素最高位置左侧的像素。换句话说,在图20B所示实例的情况下,CPU 61将位于对应于(n,m)的位置的像素确定为初始像素。以及CPU 61读取初始像素所处以及该地址所处的像素的灰度值,并计算重心。以下,假设(n,m)=(0,0)以简化解释。CPU 61利用以下公式计算重心。
(公式1)
X重心={{(量化像素组的重心的x坐标)×(量化像素组的灰度值的总和)}+{(选中的未处理像素的x坐标)×(选中的未处理像素的灰度值)}/(量化像素组的灰度值的总和+选中未处理像素的灰度值)
Y重心={{(量化像素组的重心的y坐标)×(量化像素组的灰度值的总和)}+{(选中的未处理像素的y坐标)×(选中的未处理像素的灰度值)}/(量化像素组的灰度值的总和+选中未处理像素的灰度值)
(X重心和Y重心是重心位置的坐标。)
将此公式存储在ROM 65中,并且在步骤S41中,CPU 61读取此公式,并进行计算。在初始像素的情况下,量化像素组的重心的x和y坐标以及量化像素组的重心的灰度值均假设为“0”以进行计算。如果将这些数值和读取出的初始像素的位置和灰度值代入(公式1)并进行计算,则重心位置,即(X重心,Y重心)变为(0,0)。CPU 61将计算过的重心位置和初始像素的灰度值存储在上述工作存储器672中(参见图20C)。这使得随后的计算处理变得平滑。
CPU 61将“-1”存储到与选中的初始像素相对应的输入缓冲器671的区域中。这是为了防止在下述未处理像素的选择中选择已经选中的像素。当在步骤S41中将初始像素判定为低密度时,CPU 61将“0”存储到与位于此点的初始像素相对应的输出缓冲器673的区域中,而当在步骤S41中将初始像素判定为高密度时,CPU 61将“255”存储到与位于此点的初始像素相对应的输出缓冲器673的区域中。这是为了在初始像素中未产生圆点(黑色或白色)时,执行正确的输出。即,为了执行在此像素中产生圆点的操作。将“-1”存储在输入缓冲器671中,但由于可以使用其他负值,并不局限于此。同样,可以通过准备具有与输入缓冲器671相同结构的存储区并在对应于选中像素的位置设置标记,来判断是否已经处理了选中像素。
CPU 61判断已确定的像素是否是低密度(步骤S42)。具体地,CPU61读取存储在ROM 65中的阈值“127”,将此阈值与从RAM 67的输入缓冲器671中读取处的像素的灰度值进行比较,并且如果灰度值低于阈值,处理转移到步骤S43,而如果灰度值等于或高于阈值,处理转移到步骤S53。当已确定的像素被判定为低密度时的情况(步骤S42中的“是”)是当选中像素具有低黑色分量和高白色分量时的情况。执行此步骤以转移到后面处理中用于产生黑色圆点的处理。另一方面,如果判定已确定的像素不是低密度(步骤S42中的“否”),则选中像素具有高黑色分量和低白色分量,所以处理转移到后面处理中用于产生白色圆点的处理(步骤S53)。
当在步骤S42中判定已确定像素是低密度时(步骤S42中的“是”),CPU 61选择未处理像素(步骤S43)。这里,如第一实施例所述,利用重心来选择未处理像素。如上所述,由于利用重心来选择像素,最终所产生的已量化像素组的形状变为圆形,并且通过产生位于其重心的圆点,圆点之间的距离变得均匀,并可以获得令人视觉上满意的打印输出。对于未处理像素的这种选择,选择与步骤S41中所计算的重心最为接近的像素,但是,输入图像数据存储在RAM 67的输入缓冲器的预定位置中,所以选择地址(1,0)中的图像或地址(0,1)中的图像数据。这是因为这两个像素位于距地址(0,0)相等的距离。必须选择一个像素,而且在这种情况下,与第一实施例一样,CPU 61随机选择一个。如果不是随机而是以固定顺序选择像素,则将以规则的图案排列已量化像素组的形状,而且如果在重心的位置创建圆点,则产生如图4所示的周期性图案。通过随机选择像素,可以获得令人视觉上满意的打印输出。如果这里CPU 61选择像素(1,0),则如图8B所示,将紧跟在选中像素之后的像素与初始像素一起并入到量化像素组56c中。
在这种情况下,如上述(公式1)所示,重心位置并不总是整数。所以可以选择最靠近重心的像素,或者可以选择与重心所处的像素最靠近的像素。由此,可以将重心的位置计算为整数,可以减少CPU 61所要处理的计算量。如果所计算的重心位置包括小数点,可以分别在重心位置的x和y坐标值上加上0.5,从而可以选择其中重心处于此位置的像素。
对于选中像素,如图20C和图21A所示,CPU 61将“0”存储在RAM67的输出缓冲器673的响应区域中。
然后,CPU 61执行阈值控制处理(步骤S44)。当阈值为常数时的情况下,在后面将进行描述,在输入图像数据的灰度值较低的区域中,输出圆点的密度较低,而在灰度值为中间值(如“120”)的区域中,输出圆点的密度变高,因此在整个打印输出中,圆点分布密度并非常数。在打印输出中,在某些区域产生了许多圆点,而在其他区域产生了较少圆点,而且在整幅图像上,不能获得令人满意的打印输出。所以,通过改变阈值,已量化像素组56a的规模,即构成已量化像素组56a的像素数目变为恒定,并且可以获得具有恒定密度的圆点分布。在上述实例中,只选择了两个像素,像素(0,0)和像素(1,0),所以并不改变阈值,而且CPU 61转移到下一处理。后面,将对改变阈值的情况下的处理进行描述。
然后,CPU 61判断密度的总和是否达到阈值(步骤S45)。换句话说,其判断包括选中的未处理像素的灰度值在内的密度的总和(灰度值的总和)达到阈值“255”。具体地,CPU 61读取写入在RAM 67的工作存储器672中的像素的灰度值和存储在步骤S43中所选中的像素的输入缓冲器671中的灰度值,计算其总和,并与存储在ROM 65中的阈值(在此情况下为数值“255”)相比较。例如,在图20C所示实例的情况下,存储在工作存储器672中的灰度值是“50”,以及存储在地址(1,0)中的灰度值是“50”,所以其总和是“100”。这意味着总和并未达到阈值。
当灰度值的总和未超过阈值时(步骤S45中的“否”),CPU 61计算包括选中的未处理像素在内的重心(步骤S46)。具体地,CPU 61利用上述(公式1)进行计算。如果先前确定的重心的x和y坐标是(0,0),而重心的灰度值是“50”,并且未处理像素的x和y坐标是(1,0),而其灰度值是“50”),则要计算的重心位置是(0.5,0)。按照CPU 61的控制,将步骤S46中计算出来的重心位置存储在RAM 67的工作存储器672中。在步骤S41中,初始像素的重心位置被存储在工作存储器672中,但这里重写步骤S41中计算出的重心位置,并进行存储。图21A示出了这种存储之后的实例。
然后,CPU 61计算灰度值(步骤S47)。这里,计算写入在RAM 67的工作存储器672中的灰度值与步骤S43中所选择的像素的灰度值的总和。在RAM 67的工作存储器672中再次重写计算结果。图21B示出了此实例。
这里,CPU 61将“-1”存储在与在未处理像素的选择中所选中的像素相对应的输入缓冲器671的区域中(步骤S43)。这是为了防止在选择未处理像素时再次选择这些像素。在计算灰度值时,执行此处理,因为存储在输入缓冲器671中的灰度值被存储在工作存储器672中,作为其总和数值,而随后的处理不再需要该灰度值。
然后,CPU 61判断步骤S46中所计算的灰度值的总和是否等于阈值(步骤S48)。具体地,CPU 61在读取在步骤S47中存储在RAM 67的工作存储器672中的灰度值和存储在ROM 65中的阈值,并进行比较。在图21B的情况下,灰度值的总和并未达到阈值(步骤S48中的“否”),所以,与第一实施例一样,将未处理像素顺序并入到量化像素组56c中,并重复处理,直到总和数值达到阈值(在此情况下为“255”)。换句话说,将至此已经并入到量化像素组56c中的像素的灰度值的总和存储在RAM 67的工作存储器672中,所以,通过将此数值与阈值进行比较,继续构建量化像素组56c,直到灰度值的总和达到阈值。如上所述,CPU 21将“0”存储在与选中的未处理像素相对应的输出存储器673的位置中。
当CPU 61判定总和等于阈值时(步骤S48中的“是”),处理转移到步骤S49,并由CPU 61执行在位于已经计算过的重心位置中的像素中创建黑色圆点的处理。具体地,将“255”写入到RAM 67的输出缓冲器673中与输入像素的位置相对应的地址位置中。与输入缓冲器一样,输出缓冲器的结构是二维结构,并具有与输入像素的位置相对应的地址空间。在将“255”写入重心所处的地址中时,之后,可以实际地在与该位置相对应的位置产生圆点。
CPU 61判断是否存在未处理像素(步骤S51)。换句话说,CPU 61判断是否对写入在RAM 67的输入缓冲器671中的所有灰度值执行了上述处理,而且如果存在未处理像素(“是”的情况下),处理再次转移到步骤S41,重复上述处理,而如果对于所有像素,处理已经结束(“否”),CPU 61转移到步骤S52,而且处理结束(步骤S52)。
如果在步骤S45中密度的总和超过了阈值(“否”的情况下),处理转移到步骤S55,并且如果超过阈值,则执行重心计算处理(步骤S55)。如图21C所示,当最终选中的像素是位于(1,2)的像素时,即当在步骤S43中选中的像素是此像素时,量化像素组的灰度值的总和是“265”,超过了阈值“255”。因此,在这种情况下,在步骤S45中选择“是”,并且处理转移到步骤S55。图23示出了在灰度值的总和超过阈值时的重心计算处理的操作。
首先,CPU 61从阈值中减去密度的总和,即至此在步骤S46中计算的灰度值的总和(步骤S550)。例如,在图5B所示实例的情况下,阈值是“255”,而至此在步骤S46中计算的灰度值的总和是“200”,所以CPU 61计算255-200=55。如上所述,在RAM 67的工作存储器672中存储了至此选中的像素的灰度值的总和,而在ROM 65中存储了阈值,所以CPU 61读取这些数值并进行计算。
并且,CPU 61利用数值“55”作为像素(1,2)的灰度值来计算重心(步骤S551)。具体地,CPU 61利用以下公式计算重心。
(公式2)
X重心={{(量化像素组的重心的x坐标)×(量化像素组的灰度值的总和)}+{(选中的未处理像素的x坐标)×(步骤S550中的计算值)}}/{(量化像素组的灰度值的总和)+步骤S550中的计算值}
Y重心={{(量化像素组的重心的y坐标)×(量化像素组的灰度值的总和)}+{(选中的未处理像素的y坐标)×(步骤S550中的计算值)}}/{(量化像素组的灰度值的总和)+步骤S550中的计算值}
(X重心和Y重心是重心位置的坐标。)
与(公式1)的差别在于并未使用选中的未处理像素的灰度,而是使用了通过其使已量化像素组56c的灰度值与阈值相同的灰度值。与(公式1)的情况相同,事先将此公式存储在ROM 65中,并且在CPU61执行此步骤时,通过从ROM 65中读取来执行。这里,通过与至此所计算的灰度值的总和相加从而等于阈值,来计算步骤S43中最终选择的像素的灰度值,并根据此灰度值确定重心的位置。并且CPU 61将所计算出的重心位置再次写入到RAM 67的工作存储器672中(参见图22A中的工作存储器672)。CPU 61从最终选中的像素的原始灰度值中减去在步骤S550所计算的计算结果,并将此结果的数值再次写入输入缓冲器中与选中像素相对应的区域中(步骤S50)。由此,将像素的灰度值存储在返回数据中。在图22A所示实例的情况下,从最终选中的像素(1,2)的灰度值“65”中减去步骤S550中所计算的“55”,并将结果“10”再次写入到RAM 67的输入缓冲器671的地址(1,2)中(参见图22A中的输入缓冲器671)。并不将此像素并入到已量化像素组56a中,而是在初始扫描中并入到量化像素组中,并用于计算重心位置。如上所述,返回像素并未返回给除已量化像素组56a之外的像素,而是再次存储在返回数据所产生的像素中,从而可以创建与输入灰度值精确匹配的圆点分布。而且,CPU 61执行产生位于利用公式2所确定的重心位置的黑色圆点的处理。如上所述,通过在输出缓冲器中与输入像素位置相对应的地址中写入“255”来执行此处理。然后,处理转移到步骤S51,并重复上述处理。CPU 61通过将输入缓冲器671中的目标像素的灰度值设置为“0”(参见图22A中的输入缓冲器671),来构建已量化像素组56a。而且,CPU 61将“255”存储在与重心位置所处的像素相对应的输出缓冲器673的地址中。由此,CPU 61可以在随后的处理中在重心位置所处的像素中产生圆点。图22A示出了此实例。
如果在步骤S42中确定的像素不是低密度(“否”的情况下),处理转移到白色密度处理(步骤S53)。图22A示出了此处理的细节。由于像素的灰度值具有比白色分量更多的黑色分量,此处理用于产生白色圆点。在以下的描述中,假设输入如图6A、6B、6C所示的数据,作为输入像素的数据。在这种情况下,假设初始像素位于图6A中的(n,m),分别将图6A所示的灰度值存储在RAM 67的输入缓冲器671中(参见图25A)。还假设与黑色密度处理的情况一样,位置坐标对应于输入缓冲器的地址。假设根据作为白色密度处理前一级中的处理的步骤S41,初始像素是(n,m),利用公式1计算其重心位置位于(n,m),其位置坐标已经存储在RAM 67的工作存储器672中,而且其灰度值“205”也已经存储在存储器672中。“-1”也被存储在与初始像素的位置相对应的输入缓冲器671的地址中。
在白色密度处理中,CPU 61选择未处理像素(步骤S530)。对于这种情况下的未处理像素的选择,与上述步骤S43中一样,利用重心。这是为了保持圆点之间距离的均匀。由于初始像素是(n,m),如果使用重心,存在两个最靠近的像素(n+1,m)和(n,m+1)。与步骤S43一样,CPU 61随机选择像素。这是为了抑制圆点中周期性图案的形成。这里,假设选择了像素(n+1,m)。如上所述,当将重心用于选择未处理像素时,可以选择与重心所处的像素最靠近的像素,而不是使用重心位置本身。
然后,CPU 61从输入灰度值的最大值中减去包括初始像素在内、在步骤S530中选择的未处理像素的灰度值(步骤S531)。在图6A所示实例的情况下,位于(n,m)的初始像素的灰度值是“205”,所以从输入灰度值的最大值“255”中减去此数值,而结果是“50”。如果在步骤S530中选择的未处理像素是(n+1,m),则从最大值“255”中减去其灰度值“205”,并得到结果“50”。此输入像素的灰度值的最大值已经被存储在ROM 65中,而选中像素的灰度值已经被存储在RAM 67的输入缓冲器671中,所以CPU 61读取这些数值,并进行计算。按照CPU 61的控制,将计算结果存储在RAM 67的工作存储区672中(参见图25B)。
如果针对具有高黑色分量和低白色分量的像素组执行与像素为低密度时的情况相类似的处理(步骤S43到步骤S49),而不在图18所示的处理中的步骤S42中判断像素是否为低密度,则存在以下问题。由于存在许多具有高黑色分量的像素,当从来自初始像素的量化像素组中确定重心位置,直到达到阈值时,量化像素组很快达到阈值。例如,在图6A的情况下,当查找两个像素((n,m)和(n+1,m))时,就达到了阈值。在这种情况下,根据重心位置所产生的黑色圆点是这两个像素中的一个(例如(n,m))。并将剩余的返回数据返回给(n+1,m),而再次从初始像素(如(n+1,m))开始查找包括此像素在内的量化像素组,于是将要利用重心选择的像素是(n+1,m)。如果初始像素的灰度值与此相加,由这两个像素创建了已量化像素组,并根据重心位置,在这两个像素之一创建黑色圆点。通过重复此过程,大多数像素都产生黑色圆点,而只在出现较少的剩余返回数据时,才产生白色圆点。由此,作为误差扩散方法的一个问题,针对具有高黑色分量和低白色分量的像素组而创建的白色圆点以蠕虫形状排列,而输出结果不能令人视觉上得到满足。因为这样的原因,根据步骤S42中所判定的白色密度和黑色密度,执行不同的处理。
然后,CPU 61产生黑色圆点(步骤S532)。这是因为在步骤S530中产生的像素具有高黑色分量和低白色分量,而最终在打印引擎70中,针对图像数据中具有高黑色分量的像素产生圆点。而且在下述白色圆点产生处理(步骤S537)中,打印图像数据,使得针对位于重心位置的像素,并不产生圆点。如上所述,对于在步骤S530中选择的像素,CPU 61在RAM 67的输出缓冲器673的相应地址位置存储在图6A的情况下的输入灰度值的最大值“255”(参见图25B和25C)。
然后,CPU 61执行阈值控制处理(步骤S533)。与上述步骤S44一样,通过在包括选中的未处理像素在内的输入灰度值较低的区域中改变阈值(步骤S530),将以预定规模的已量化像素组56a产生的白色圆点以预定的密度分布在整个打印输出上。在上述实例中,在此阶段只选择了位于(n,m)和(n+1,m)的像素,所以并不改变阈值。后面,将对阈值控制处理的细节进行描述。
然后,CPU 61判断灰度值的总和是否超过阈值(步骤S534)。至此选中的像素的灰度值的总和已经被存储在工作存储器672中,所以CPU 61从存储器672读取该数值,并与存储在ROM 65中的阈值相比较。在图25B所示实例的情况下,“50”被存储在工作存储器672中,所以CPU 61将其与最大值“255”比较并判定总和并未达到阈值。
如果总和未超过阈值(步骤S534中的“否”),处理转移到步骤S535,并由CPU 61计算包括未处理像素在内的重心位置。对重心的计算与上述(公式1)相同。按照CPU 61的控制,将计算出的重心位置存储在工作存储器672中。当完成初始像素(n,m)和选中像素(n+1,m)的重心位置时,根据(公式1)为(n+0.5,m)。与黑色分量处理的情况一样,按照CPU 61的控制,将其存储在工作存储器672中。图26A示出了实例。
然后,CPU 61计算灰度值的总和(步骤S536)。计算写入在选中像素的输入缓冲器671中的灰度值和写入在RAM 67的工作存储器672中的灰度值的总和。按照CPU 61的控制,在工作存储器672中存储计算结果。与上述黑色分量处理的情况一样,CPU 61将“-1”存储在与选中的未处理像素相对应的输入缓冲器671的地址中。这是为了防止在随后的处理中将此像素选择为未处理像素(参见图26A)。
然后,CPU 61判断灰度值的总和是否等于阈值(步骤S537),并且,如果判定为相等(“是”的情况下),CPU 61执行在位于步骤S535中所计算的重心位置处的像素中产生白色圆点的处理(步骤S538)。具体地,CPU 61将“0”存储在位于重心位置的输出缓冲器的预定地址中。如上所述,此时,已经针对已量化像素组存储了输入灰度值的最大值(“255”),除了输出缓冲区中位于重心位置的像素,而且用于指示不产生圆点的“0”存储于位于重心位置的像素。重复这些处理,直到当从量化像素组56c的灰度值中减去最大值时,数值的总和达到阈值为止(步骤S537中的“否”)。
然后,判断是否存在未处理像素(步骤S539),而且如果存在未处理像素,处理再次转移到步骤S41(“是”的情况下),并重复处理,直到不存在未处理像素为止。当不存在未处理像素时(“否”的情况下),处理结束(步骤S539)。
当在步骤S534中灰度值的总和超过了阈值(“是”的情况下),处理转移到步骤S541,并由CPU 61执行在超过阈值的情况下执行的重心计算处理。如图23所示,这里的重心计算处理与上述步骤S55中的计算处理相同。换句话说,CPU 61从ROM 65中读取阈值(在此情况下为“255”),从步骤S534中计算的灰度值的总和中减去阈值,并存储在RAM 67的工作存储器672中(步骤S550),并根据此数值、利用(公式2)计算重心(步骤S551)。在图26所示实例的情况下,如果在步骤S550中最终选择了(n+1,m+2),至此所选择的灰度值的总和变为“265”,由于“200”存储在存储器672中,而且在从最大值“255”中减去选中像素的灰度值“190”时,此数值是“65”。此数值超过了阈值“255”,所以在步骤S534中选择“是”,并且处理转移到步骤S541。而且(阈值)-(密度的总和)变为255-200,即“55”。利用此数值作为选中像素(n+1,m+2)的灰度值,在步骤S551中计算重心位置。
CPU 61将计算出的重心位置再次存储在RAM 67的工作存储区672中(参见图26C中的工作存储器672),计算返回数据,并将该数值重写在与此像素相对应的RAM 67的输入缓冲器671[的区域]中,并进行保存(参见图26C中的工作存储器672)。这是为了防止此像素被并入到已量化像素组中。由此,可以创建与输入灰度值精确匹配的白色圆点。而CPU 61将“0”存储在输出缓冲器中的相应位置上,从而在计算出的重心位置创建白色圆点(步骤S542,参见图26C中的输出缓冲器)。然后,处理再次转移到步骤S539,并重复上述处理。
现在,将参照图27,对步骤S44和步骤S533中的阈值控制处理进行描述。
如上所述,如果在包括初始像素和未处理像素在内的选中像素中(步骤S43和步骤S530),持续出现低输入灰度值或中间灰度值,则已量化像素组56a的规模不再恒定,而要产生的黑色圆点和白色圆点的密度不再恒定。在这种情况下,打印输出中的圆点分布不再恒定,其中某些区域中圆点较为突出,而其他区域中圆点较少,并且不能得到令人满意的打印输出。因此,根据量化像素组56c的像素数目改变阈值,从而创建预定规模的已量化像素组56a,而且圆点密度变得恒定。
如图27所示,当处理转移到阈值控制处理(步骤S44、步骤S533)时,CPU 61执行改变阈值的处理(步骤S441)。这里,CPU 61利用包括每次选择的未处理像素在内的像素数目和量化像素组56c的灰度值的总和,来改变用于步骤S45和S534的阈值。而且利用此改变后的阈值,CPU 61在步骤S45和步骤S534中判断灰度值的总和是否超过了阈值。具体地,利用存储在RAM 67的工作存储器中的量化像素组56c的像素数目和灰度值的总和确定修改后的阈值。以预定的函数来表示此公式,并由CPU 61读取存储在ROM 65中的这个函数,并将存储在工作存储器672中的像素数目和灰度值的总和输入到此函数中以确定阈值。可以从一开始,就将修改后的阈值存储在ROM 65中,从而CPU 61在阈值改变处理(步骤S441)中读取该阈值,并执行处理。
将对图28A、28B、28C示出的特定实例进行描述。当输入图像的灰度值输入为图11A时,如图28A所示,将该数据存储在RAM 67的输入缓冲器671中。并在步骤S41中,将位于(n,m)的像素选为初始像素,并将其重心计算为(n,m),所以CPU 61将重心位置和灰度值存储在如图28B所示的工作存储器672中。工作存储器672也具有用于存储选中像素数目的区域672a。在步骤S41中,只选择了初始像素(n,m),所以CPU 61将“1”存储在区域672a中(参见图28B)。
然后,当在步骤S43中,选择未处理像素(n+1,m)时,将作为包括初始像素在内的选中像素的数目的总和的“2”存储在工作存储器672的像素数目存储区672a中。并在步骤S46和步骤S47中计算包括未处理像素在内的重心位置和灰度值的总和,并将图28C所示的数值存储在工作存储器672中。
然后,重复步骤S43到S48,假设四个像素((n,m)、(n+1,m)、(n,m+1)和(n+1,m+1))将被并入到量化像素组56c中。而且如果在步骤S43中再次选择未处理像素(n+1,m+2),则由于至此已经选择了5个像素,将“5”存储在像素数目存储区672a中(参见图29A)。如果在步骤S441中存储在ROM 64中的预定像素数目是4,则量化像素组56c的像素数目(5)超过了预定的像素数目(4),所以CPU 61通过阈值改变处理(步骤S441)计算阈值改变。
在步骤S442中,CPU 61利用量化像素的数目“5”和至此的灰度值的总和“40”读取存储在ROM 65中的函数,并计算改变之后的阈值。作为结果,将阈值从“255”变为“50”。由于至此的灰度值总和“40”并未超过阈值“50”,处理转移到步骤S46和S47,并计算包括最后选中的像素(n+1,m+2)在内的重心位置和灰度值的总和。如上所述,将计算结果存储在工作存储器672中,由于在步骤S48中,灰度值的总和“50”等于阈值“50”,处理转移到步骤S49,之后,将“255”存储在输出缓冲器中,如图29B所示,从而在此像素中产生圆点,并完成一系列的处理。对于白色密度处理S53中的阈值控制处理S573,也执行相同的处理。
在此实例中,描述了阈值减小的情况,但是如果在输入灰度值中连续出现中间灰度值,可以将阈值计算为更大值。
由于根据已量化像素组56c的像素数目和灰度值改变阈值,所以已量化像素组56a的规模几乎恒定不变,并以恒定的密度产生圆点。同样,利用重心执行圆点的开关,因而可以产生与输入图像的灰度值的分布精确匹配的圆点。
当上述一系列处理结束时,CPU 61读取写入在RAM 67的输出缓冲器673中的“255”(产生黑色圆点的情况下)或“0”(产生白色圆点的情况下),向打印引擎70输出此数目,并可以获得预定的打印输出。
如以上按照本发明所述,可以获得高图像质量输出圆点,而不会产生蠕虫、圆点产生延迟和区域外侧的数据失真,而这些都是误差扩散方法所存在的问题。同样,按照本发明,对像素的图像数据进行量化,匹配图像的数据分布。同样,按照本发明,改进了圆点的散布,并能够得到令人视觉上满意的打印输出。
[第三实施例]
将参照图30到图45,对本发明的第三实施例进行描述。在第三实施例中,根据针对像素选择的参考点,选择未处理像素,并创建预定大小的单元,并在该单元的重心位置产生圆点。在第二实施例中,针对像素选择的参考点位于重心位置,并在每次选择像素时进行更新,但是在第三实施例中,并不是每次更新参考点,而是根据创建单元的预定更新方案,进行更新。由此,每次不需要计算重心位置,可以提高包括其他处理在内的整个处理速度,而且与固定参考点来选择未处理像素的情况相比,最终要产生的单元的形状更为接近圆形,并且可以获得令人视觉上满意的输出圆点。
首先,将参照图30A到图34C,对此实施例的要点进行描述。图30A到图32C示出了针对像素选择的参考点位于量化像素组的中心位置,并在每次选择未处理像素时进行更新时的实例,而图33A到图34C示出了参考点位于中心位置而且每隔一次进行更新时的实例。
这里,中心位置不是利用灰度值的重心位置,而是根据坐标位置的中心位置,而如果位置的坐标是(x,y),则根据以下公式(在以下公式中,N是量化像素组的像素数目)计算中心位置。
(公式3)
x=∑ixi/N
y=∑iyi/N
针对输入数据,将描述输入图30A所示的每个像素和灰度值的情况。为了简化解释,图30A是输入了三像素乘四像素的图像数据时的实例,但是也可以输入一帧图像数据。
当输入图30A中的输入图像数据时,首先选择初始像素,与第一和第二实施例一样,选择未处理像素中位于最高最左侧的这个像素。这是因为最终所产生的已量化像素组(单元)在一副图像中更为可能地沿对角线排列,而且沿对角线方向所产生的圆点人眼更为不易识别。在图30A所示实例的情况下,将位于(n,m)的像素选为初始像素。
当将初始像素并入到量化像素组56c中,并利用(公式3)计算其中心位置时,中心位置56f出现在图30B所示的位置上。然后,选择位于与中心位置最靠近的位置上的未处理像素56e,并且,如果存在多个合适的像素,与第一实施例一样,随机选择像素。如第二实施例中所述,这是为了抑制周期性图案的产生(参见图4A、4B)。在图30B所示实例的情况下,位于(n+1,m)和(n,m+1)的两个像素最靠近中心位置56f,而这里选择了(n+1,m)。现在,如图30C所示,将选中的未处理像素56e并入到量化像素组56c中,并计算量化像素组56c针对像素选择的参考点,即中心位置,于是中心位置位于图30C中的位置56f。由于此时量化像素组56c的灰度值的总和是“100”,继续选择未处理像素56e。在此实施例中,也与第一实施例相同,将阈值设置为“255”,并且选择未处理像素56e,直到灰度值的总和达到此数值。
于是,选择最靠近此参考点(中心位置)56f的像素,但是在图30c所示实例的情况下,存在两个像素(n,m+1)和(n+1,m+1),所以随机选择像素(n,m+1)作为未处理像素56e。
并将选中的未处理像素56e并入到量化像素组56c中,并利用(公式3)计算其中心位置,于是中心位置位于位置56f。此时量化像素组56c的灰度值的总和是“165”,未达到阈值,所以继续选择未处理像素56e。由于最靠近中心位置56f的像素是位于(n+1,m+1)的像素,将此像素选为未处理像素56e。
现在,将选中的未处理像素56e并入到量化像素组56c中,并利用(公式3)计算其中心位置,于是中心位置位于图31B所示的位置。量化像素组56c的灰度值的总和是“215”,未达到阈值。所以选择未处理像素56e。由于有四个像素(n,m+2)、(n+1,m+2)、(n+2,m)和(n+2,m)最靠近中心位置56f,在此情况下随机选择位于(n,m+2)的像素。
并将选中的未处理像素56e并入到量化像素组56c中,而其灰度值的总和是“265”,超过了阈值。在这种情况下,与第一实施例一样,将与阈值相同数量的灰度值并入到量化像素组56c中,而将剩余的灰度值返回给未处理像素56e,使得此像素之后被选为未处理像素。与第二实施例的情况相同,这是为了使圆点的产生与输入灰度值精确匹配。这里,将“10”提供给位于(n,m+2)的像素作为返回数据(图31C)。
现在,至此创建的量化像素组56c的灰度值的总和已经达到阈值,所以量化像素组56c变为已量化像素组56a,并在其重心位置产生圆点。按照与第二实施例的(公式1)相同的方式,计算重心位置,并获得图32A中的重心位置56d。
并且,在位于重心位置56d的像素中产生圆点,即在图32B所示的位置产生圆点。如果与第一和第二实施例一样,每次都计算重心位置,如(公式1)和(公式2)所示,计算量增加,但是如果计算针对像素选择的参考点作为中心位置,而在最后计算重心,则可以减少计算量,而且已量化像素组逐渐变圆,保持了圆点间的距离,并能够获得令人视觉上满意的圆点输出。
不需要每次都度针对像素选择的参考点进行更新,而可以每隔一次进行更新,或者以每隔两次的间隔进行更新,或者以预定次数进行更新。将参照图33A到图34C,对每隔一次更新参考点时的实例进行描述。
可以在位于用于像素选择的中心位置的像素中产生圆点,而不需要计算重心位置本身。例如,在图32A所示实例的情况下,在图32C中的位置上产生圆点。在这种情况下,中心位置可能会位于多个像素之间,但在这种情况下,可以随机选择一个像素,或者利用预定的表格从多个像素中选择一个像素。
现在,将参照图33A到图34C,对每隔一次更新参考点(在这种情况下为中心位置)的情况进行描述。与图30一样,将描述输入图像数据输入为图33A的情况。而且与图30B一样,选择初始像素,并计算其中心位置56f,于是[中心位置]位于图33B所示的位置。并且随机选择最靠近参考点(中心位置56f)的像素作为未处理像素56e,于是选择了位于(n+1,m)的像素。
然后,将选中的未处理像素56e并入到量化像素组56c中,但是并不根据从并入之后的量化像素组计算的中心位置56f来选择下一个要选择的未处理像素56e,而是根据并入之前的中心位置56f来选择。此时,并不更新参考点。如图33C所示,最靠近56f的像素是(n,m+1),并将此像素选为未处理像素56e。
于是,在选中的未处理像素56e并入之后,量化像素组56c变为图34A所示那样。由于每隔一次更新参考点,计算此时所创建的量化像素组56c的中心位置56f,于是中心位置56f移动到图34A中所示的位置。
现在,利用此更新中心位置作为参考,选择最靠近此位置的未处理像素56e,并将此像素并入到量化像素组56c中,于是结果变为图34B所示那样。而且不需要更新参考点,将最靠近前一计算中计算的中心位置56f的像素选为未处理像素56e(选择位于(n,m+2)的像素),并创建量化像素组56c。
与图30A、30B、30C中的实例一样,包括选中像素在内的灰度值的总和超过了阈值,所以,将超出的数量返回给选中像素作为返回数据。并计算用于产生圆点的重心位置,于是重心位置位于图34C中的位置56d,所以在此位置上产生圆点。而且当更新参考点时,参考点56f移动到图34C所示的位置。
通过以这种方式不是每次而是每隔一次地更新针对像素选择的参考点,可以进一步减少计算量,并且可以提高包括其他处理在内的整个图像处理设备的处理速度。参考点可以在从初始像素选择开始的第四次未处理像素选择进行更新,于是可以在第三次未处理像素选择和第二次未处理像素选择进行更新,减少更新参考点的次数。
以上是概述,现在将参照图35到图40中的流程图,对特定的处理进行描述,并将参照图41A到图44C,对RAM 67的实例进行描述。将利用每隔一次更新参考点的情况,对此处理的实例进行描述。
当此处理开始时(步骤S60),如图35所示,CPU 61确定初始像素,并将针对未处理像素选择的参考点设置为初始像素的坐标(步骤S61)。在图41A所示RAM 67的结构的情况下,将输入图像数据输入到如图41A所示的输入缓冲器671中。每个像素的灰度值与图30A、30B、30C相同。RAM 67的结构类似于图20A、20B、20C,但工作存储器672包括两个区域672(b)和672(c)。与第二实施例一样,由CPU61控制存储在包括这些区域672(b)和672(c)在内的RAM 67中的数值。构造区域672(b),从而输入选中的未处理像素的灰度值,以便后面计算重心位置。而构建区域672(c),从而存储参考点的位置坐标的总和以及灰度值的总和以及未处理像素选择的计数值。
对于初始像素,如图41B中的输入缓冲器671所示,选择最高最左侧的未处理像素,即选择像素(n,m)。对于选中像素,存储“-1”,以便不被选为未处理像素,并将选中像素的灰度值存储在区域672(b)中。并且,在区域672(c)中分别存储利用公式3计算的参考点、即(0,0),灰度值的总和“50”,以及选择计数,由于只选择了初始像素,选择计数为“1”。
返回到图35,CPU 61接下来判断已确定的像素是否具有低密度(步骤S62)。与第二实施例一样,这是因为在产生黑色圆点的处理和产生白色圆点的处理之间必须执行不同的处理。与第二实施例一样,阈值为“127”,并且将存储在ROM 65中的此数值与步骤S61中所选择的像素的灰度值相比较来做出此判断。在图41B所示实例的情况下,选中像素的灰度值是“50”,所以将该像素判定为低密度(步骤S62中的“是”),并且处理转移到步骤S63。
在步骤S63中,CPU 61选择未处理像素。在本实施例中,选择最靠近在步骤S61中所设置的参考点的像素。在图41B所示实例的情况下,作为参考点的中心位置是(0,0),所以两个像素(n+1,m)和(n,m+1)最靠近此位置,与第二实施例一样,随机选择二者之一,而在这种情况下,选择了像素(n+1,m)。这是为了抑制周期性图案的产生。如图41C所示,CPU 61将针对选中像素的位置的“-1”存储在输入缓冲器671中,将作为至此选中像素数目的“2”存储在工作存储器672的区域672(c)中,并在输出缓冲器673中相应的像素位置中存储“0”。
然后,CPU 61执行阈值控制处理(步骤S64)。与第二实施例一样,在连续出现具有低输入灰度值的像素的区域中,多个选中像素的灰度值的总和不能轻易地达到阈值,而已量化像素组的规模不能保持在恒定的大小,所以为了防止这种情况,根据选中像素的数目,改变阈值。
图37示出了表示阈值控制处理操作的流程图。与第二实施例一样,CPU 61首先判断构成量化像素组的像素数目是否达到预定的像素数目(步骤S640)。如果数目超过了预定的像素数目,则执行阈值改变处理(步骤S641),否则不执行阈值改变处理,而处理转移到步骤S65。在图41C所示实例的情况下,量化像素组的像素数目未达到预定的像素数目(如第二实施例中的“4个”),所以并不改变阈值,而处理转移到步骤S65。
返回到图35,CPU 61判断密度的总和是否超过了阈值(步骤S65)。与第二实施例一样,CPU 61将存储在工作存储器672的区域672(c)中的灰度值与步骤S62中所选择的未处理像素的灰度值的总和与存储在ROM 65中的阈值“255”相比较。如果结果是超过了阈值,处理转移到步骤S75,如果不是,处理转移到步骤S66。在图41B所示实例的情况下,初始像素的灰度值是“50”,并且选中的未处理像素的灰度值是“50”,所以其总和是“100”,未超过阈值“255”,因而处理转移到步骤S66。
在步骤S66中,CPU 61判断是否更新参考点。这里,每隔一次对参考点进行更新,所以当存储在区域672(c)中的选择计数为奇数计数时,更新参考点。如果每三次对参考点进行更新,当选择计数为4、7、10、……时,更新参考点。如果[当更新参考点时]固定计数,读取存储在区域672(c)中的数值,当选择计数达到已存储的数值时,更新参考点。对于更新方案,首先,可以在距初始像素选择的第四选择时,更新参考点,然后下一次,在第三选择时进行更新,减少从第一次更新开始更新参考点的选择计数,当此计数到来时,更新参考点。在图41C所示实例的情况下,区域672(c)中的选择计数是“2”,并不是奇数计数,所以不更新参考点(步骤S66中的“否”),以及处理转移到步骤S68。事先将更新的选择计数存储在ROM 65中,并由CPU61经这些数值与存储在区域672(c)中的计数进行比较,以执行处理。
在步骤S68中,CPU 61计算灰度值。CPU 61计算写入在工作存储区672(b)中的灰度值与步骤S63中所选择的灰度值的总和,并将此数值存储在区域672(c)中用于存储灰度值的总和的位置。这里,初始像素的灰度值与选中的未处理像素的灰度值的总和是“100”,所以存储此数值。
然后,如图36所示,CPU 61判断灰度值的总和是否等于阈值“255”(步骤S69)。在图41C所示实例的情况下,将“100”存储在工作存储器672的区域672(c)中,作为灰度值的总和,并未达到阈值,所以选择“否”,而处理转移到步骤S63。
并再次选择未处理像素(步骤S63)。利用中心位置作为参考选择未处理像素,而且如果选择了多个像素,随机选择一个像素。如图42A所示,选择位于(n,m+1)的像素。将选中像素的灰度值存储在区域672(b)中相应的位置上,并且也将“0”存储在输出缓冲器673中。并将选择计数“3”存储在区域672(c)中。同样,将“-1”存储在输入缓冲器671的选中像素上。
然后,CPU 61转移到阈值处理中(步骤S64)。由于像素数目并未达到预定的像素数目(例如,与第二实施例一样,“4个”),处理转移到步骤S65,而不改变阈值。在图42A所示实例的情况下,计算出的密度总和是“165”,与上述情况一样,并未达到阈值,所以在步骤S65中选择“否”,而处理转移到步骤S66。
然后,CPU 61判断是否更新参考点(步骤S66)。在图42A所示实例的情况下,存储在区域672(c)中的选择计数是“3”,与更新计数“3”相匹配,所以选择“是”,并计算参考点。由CPU 61利用上述(公式3)计算参考点。如图42A所示,将结果(0.3,0.3)(省略掉小数部分)存储在区域672(c)中。在未处理像素的下一选择中,将此参考点用于计算。
然后,将灰度值的总和“165”存储在区域672(2)中(步骤S68),并判断此数值是否与阈值相同(步骤S69)。由于总和并未达到阈值,处理再次转移到步骤S63中,并选择未处理像素。如图42B所示,选择(n+1,m+1)作为未处理像素,然后执行上述处理,并将计算值存储在区域672(b)和672(c)中。但是,未处理像素选择计数是“4”,所以并不更新参考点,并利用图42A中所使用的中心位置,选择下一未处理像素。
然后,执行从步骤S64到步骤S69的处理,而且如果在处理再次转移到步骤S63时(由于灰度值的总和“215”并未达到阈值,所以处理转移到步骤S63),RAM 67的已存储数值处于图42B中的状态下,并且此时利用参考点来选择未处理像素,则在步骤S63中选择位于位置(n,m+2)的像素。在这种情况下,密度的总和值为“265”,超过了阈值“255”,所以在步骤S65中选择“是”,而处理转移到步骤S75。
图38示出了表示在超过了阈值时的灰度值计算处理的流程图。与第二实施例一样,首先执行从阈值中减去密度总和的处理(步骤S750)。在图42B所示的实例中,存储在区域672(c)中的灰度值的总和是“215”,而阈值是“255”,所以结果为“40”。然后把最后选择的未处理像素(n,m+2)的灰度值认为是“40”,对重心进行计算,包括此像素(步骤S751)。这是为了产生与灰度值精确匹配的圆点。
与第二实施例的情况一样,利用(公式2)计算重心。并将表示产生圆点的“255”存储在与位于计算重心位置的像素相对应的输出缓冲器673的位置上(参见图43C中的输出缓冲器673),并将剩余的灰度值返回给选中像素(n,m+2)(图36中的步骤S77)。被认为其灰度值包括此返回数据的像素(n,m+2)变为此后的未处理像素选择目标。
而且,如果存在未处理像素(步骤S72中的“是”),处理返回到步骤S61,并重复上述处理。如果不存在未处理像素(步骤S72中的“否”),完成这一系列的处理。
另一方面,当在步骤S69中,阈值和灰度值的总和(存储在工作存储器672的区域672(c)中的数值)相等时,在步骤S69中选择“是”,并且CPU 61转移到步骤S70,计算重心位置。通过将存储在工作存储器672(b)中的每个灰度值代入(公式1)中,计算重心位置。
并且CPU 61将表示针对位于计算重心位置的像素产生圆点的“255”存储在输出缓冲器673的相应区域中(步骤S71)。然后,重复上述处理,直到不再存在未处理像素为止。
返回到图35,如果在步骤S62中已确定的像素不是低密度(否),处理转移到步骤S80,并执行白色密度处理。图39示出了表示此处理的流程图。与第二实施例的情况一样,这也是为了在像素的灰度值具有比白色分量更多的黑色分量时执行在重心位置上产生白色圆点的处理。这里,将对每隔一次更新针对未处理像素选择的参考点的情况进行描述。同样,将对存储图43A中输入缓冲器671中所示的输入图像数据的情况进行描述,其中在每个区域672(b)和672(c)中存储选为步骤S61中的参考像素的(n,m)、参考点(0,0)和未处理像素选择计数“1”。
另一方面,当在步骤S62中判定已确定的像素为低密度时,不是将输入灰度值“205”,而是将当从输入灰度值的最大值中减去输入灰度值时的数值“50”存储为区域672(b)中的灰度值,并将“255”存储在输入缓冲器673的相应区域中(参见图43B)。
返回到图39,进入了白色密度处理(步骤S80)的CPU 61首先选择未处理像素(步骤S801)。对于此选择,与图35中的处理一样,选择最靠近作为参考点的中心位置的像素。如果存在多个这种像素,随机选择像素。如图43C所示,选择位于(n+1,m)的像素作为未处理像素。对于选中像素,将“-1”存储在输入缓冲器671中,使得此后不再将此像素选为未处理像素,并且将选择计数“2”存储在工作存储器672的区域672(c)中。
然后,CPU 61转移到步骤S802,并从输入灰度值的最大值中减去选中像素的输入灰度值。在步骤S801中所选择的未处理像素的灰度值是“205”,而最大值是阈值“255”,所以相减的结果是“50”。将此数值存储在区域672(b)的相应位置中(参见图43C)。
然后,CPU 61转移到步骤S803,并执行黑色圆点产生处理。与第二实施例一样,在与步骤S802中所选中的未处理像素相对应的位置上,将“255”存储在输出缓冲器673中(参见图43C)。
然后,CPU 61转移到阈值控制处理(步骤S804)。在图43C所示的实例中,选中像素的数目未达到预定的像素数目,所以并不改变阈值。阈值控制处理的细节与上述图37相同。与第二实施例一样,这是为了将已量化像素组的规模保持在预定的大小。
然后,CPU 61判断是否更新参考点(步骤S806)。与图35中的处理一样,是通过在至此选择了未处理像素时的计数是否达到预定计数来进行判断的。在此实例中,每隔一次更新参考点,即在选择计数为3、5、7、……时进行更新。在图43C所示的时间点,选择计数“2”被存储在区域672(c)中,所以不更新参考点,选择“否”,处理转移到步骤S808。
CPU 61在步骤S808中计算灰度值。与上述实施例一样,CPU 61计算步骤S801中所选择的未处理像素的灰度值与存储在工作存储器672的区域672(c)中的灰度值。在图43C所示实例的情况下,选中的未处理像素的灰度值是“50”,而只有初始像素的灰度值“50”被存储在区域672(c)中,所以其总和是“100”。并将此数值再次存储在区域672(c)中(参见图43C)。
然后,CPU 61转移到步骤S809,并判断灰度值的总和是否等于阈值“255”。如果判定为相等(是),处理转移到步骤S810,而如果判断为不等(否),处理再次转移到步骤S801,并选择未处理像素。
在图43C所示实例的情况下,灰度值的总和是“100”,所以选择“否”,并再次选择未处理像素(步骤S801)。针对未处理像素的选择,根据参考点(存储在区域672(c)中的数值)选择未处理像素,于是如图44A所示,选择了(n,m+1)。如图44A所示,选择计数“3”被存储在区域672(c)中。并且从最大值中减去选中像素的灰度值,并将结果“65”(=255-190)存储在工作存储器672的区域672(b)中(步骤S802)。“255”被存储在输出缓冲器673的相应区域中(步骤S804),并判断包括选中像素在内的灰度值的总和是否达到了阈值(步骤S805),由于总和是“165”,选择“否”,处理转移到步骤S806。
在步骤S806中,“3”存储在区域672(c)中,与更新的预定计数“3”相匹配,所以选择“是”,并计算参考点,包括未处理像素在内(步骤S807)。利用上述(公式3),根据先前选中的三个像素位置计算参考点,并得到(0.3,0.3)(省略小数部分)。将此数值存储在工作存储器672(c)的区域672中。在步骤S801中,根据此参考点,选择未处理像素。
然后,CPU 61计算灰度值的总和“165”并将其存储在区域672(c)中(步骤S808),并判断此数值是否等于阈值(步骤S809)。由于灰度值的总和未达到阈值“255”,再次选择未处理像素。在从步骤S801到步骤S808的处理之后,如图44B所示,每个数值均被存储在RAM 67中。由于此时灰度值的总和是“215”,并未达到阈值,再次选择未处理像素(步骤S801)。
现在,CPU 61利用存储在区域672(c)中的中心位置作为参考点来选择未处理像素,并选择了像素(n,m+2)(参见图44C)。在这种情况下,也是根据未更新的参考点来选择未处理像素的。
然后,CPU 61执行上述从步骤S802到步骤S804的处理,并判断包括选中的未处理像素在内的灰度值的总和是否超过了阈值(步骤S805)。在图44C所示的实例中,灰度值的总和是“265”,超过了阈值,所以选择“是”,处理转移到步骤S815。
对于超过阈值时白色密度处理中的灰度值计算处理(步骤S815),执行与图35中的处理相同的处理。在此处理中,CPU 61从阈值中减去密度的总和(存储在区域672(c)中的灰度值的总和),并将此数值“40”(=255-215)存储在区域672(b)的相应位置中,作为最近选中的像素的灰度值(步骤S750,参见图44C)。
然后,利用存储在区域672(b)中的数值,计算重心(步骤S751)。利用第二实施例的(公式2)来计算重心。并将用于产生白色圆点的“0”存储在与位于重心位置的像素相对应的输出缓冲器673的区域中(参见图44C),并将剩余密度,即灰度值返回给最后选中的像素(图40中的步骤S817)。
处理转移到步骤S812,如果存在未处理像素(“是”的情况下),处理转移到图35中的步骤S61,重复上述处理,直到不存在未处理像素为止。如果在步骤S812中不存在未处理像素(“否”的情况下),则上述一系列处理完成,并根据存储在输出缓冲器673中的数值,由打印引擎70在打印介质上产生圆点,而得到打印输出。
如上所述,利用参考点来选择未处理像素,而按照预定的更新方案(在本实施例的情况下为计数),对参考点进行更新,所以与每次都计算重心的情况相比,计算量减少,而包括此处理在内的整个图像输出设备60的处理效率提高。同样,最终所产生的已量化像素组的形状变圆,并获得了令人视觉上满意的输出圆点。
如果参考点是重心,则通过更新参考点来创建已量化像素组,所以与通过以固定的参考点选择未处理像素而创建已量化像素组的情况相比,参考点移向位于图像改变的边缘部分、具有较高灰度值的区域。换句话说,由于将每个像素的灰度值用于计算重心,所以重心移向具有大灰度值的像素。因此,参考点移动以靠近边缘部分的边界,并在靠近边界的像素上创建圆点。这使得位于边缘边界上的打印输出清晰,并能够获得令人满意的打印输出。
同样,如果参考点是重心,参考点移向绘制了细线的部分中更为靠近细线的位置。这也是因为细线部分具有高灰度值,而且重心移向该方向。同样,一旦移动到细线上的参考点连续创建量化像素组,而不偏离细线,除非在附近的微小区域中出现具有更高灰度值的像素。这样,在靠近细线的像素上,或细线上产生了圆点,并能够获得表现出清晰线条的打印输出。
在上述实例中,最后计算重心位置,并在出现在该位置上的像素上创建圆点,但也可以在用于未处理像素选择的中心位置上产生圆点,而不计算重心位置。在这种情况下,在图36中的步骤S70中,在图38中的步骤S751中和在图39中的步骤S810中,不是计算重心位置,而是计算中心位置,并将最终的“255”或“0”存储在与位于中心位置的像素相对应的输出缓冲器673的位置中,并在那里产生圆点。
针对未处理像素的选择,可以准备如图45A、45B所示的针对未处理像素选择的表格,并利用此表格选择未处理像素。换句话说,如图45A所示,利用“1”作为参考点来选择未处理像素。具体地,图45A中“1”的坐标是(0,0),“2”的坐标是(0,-1),“3”的坐标是(0,1),“4”的坐标是(1,0),“5”的坐标是(-1,0),“6”的坐标是(-1,-1),“7”的坐标是(1,1),“8”的坐标是(1,-1),而“9”的坐标是(-1,1),并且利用位于“1”的像素作为参考点,按照表格中所示的号码的顺序选择未处理像素。这些位置坐标示出了与作为参考的参考点之间的相对关系,例如,存储在ROM 65中,并且CPU 61在需要时进行读取,并确定位置。
例如,在图33A、33B、33C中所示,每隔一次更新参考点的实例的情况下,将初始像素(n,m)设置为位于表格中“1”的像素,而对于下一次要选择的未处理像素,选择位于表格中“2”的像素,即图33中的像素(n,m+1)。然后选择位于表格中“3”的像素,但在这种情况下,图33A、33B、33C中并不存在相应的像素,所以,选择位于“4”的像素,即像素(n+1,m)。当选择计数达到预定计数时,移动参考点,例如,将位于表格中“1”的像素认作图33A、33B、33C中的(n+1,m),并选择位于“2”的像素。
这使其无需每次(或每隔预定的计数)计算中心位置,进一步减少了计算量。同样,无需进行计算,以便选择最靠近针对像素选择的参考点的像素,所以可以进一步减少计算量。但是,即使在这种情况下,仍然必须按照预定的更新方案,更新参考点。这是因为已量化像素组逐渐变为圆形形状,而如果在其中心(或重心)产生圆点,圆点间的距离被保持为常数,从而可以获得令人满意的打印输出。即使使用如图45B所示的具有另一种图案的表格,仍然可以获得完全相同的效果。对于每个已量化像素组,可以切换这些表格。
在上述实施例中,将计数用于更新方案,但是也可在构成量化像素组的像素的灰度值的总和达到预定值时,更新参考点。例如,通过在灰度值的总和达到具有预定间隔的50、100、150、……时更新参考点,或者通过在灰度值的总和是其中初始值较大,而[数值的]间隔逐渐减小的127、190、221和236时,更新参考点,可以获得相同的效果。

Claims (13)

1、一种图像处理装置,包括:
像素组产生装置,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;
像素组重心确定装置,用于确定由所述像素组产生装置所产生的像素组的重心的位置;以及
已量化图像数据提供装置,用于向位于由所述像素组重心确定装置所确定的重心的像素提供已量化图像数据,其中
所述像素组产生装置通过连续地选择与所述像素组重心确定装置所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生所述像素组。
2、按照权利要求1所述的图像处理装置,其特征在于,当存在最靠近所述像素组重心确定装置所确定的重心的位置的多个像素时,所述像素组产生装置在所述多个像素中随机选择一个要选择的像素。
3、一种图像处理装置,包括:
像素组产生装置,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;
像素组重心确定装置,用于确定由所述像素组产生装置所产生的像素组的重心的位置;以及
已量化图像数据提供装置,用于向位于由所述像素组重心确定装置所确定的重心的像素提供已量化图像数据,其中
所述像素组产生装置连续选择与所述像素组重心确定装置所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,并且当所述像素组中的灰度图像数据值的总和超过阈值时,将灰度图像数据值超出的数量返回给所述像素组产生装置最后选中的像素。
4、一种图像处理方法,包括:
像素组产生步骤,通过选择像素直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;
像素组重心确定步骤,确定在所述像素组产生步骤中所产生的像素组的重心的位置;以及
已量化图像数据提供步骤,向位于在所述像素组重心确定步骤中所确定的重心的像素提供已量化图像数据;其中
所述像素组产生步骤通过连续地选择与所述像素组重心确定步骤中所确定的重心的位置最为靠近的像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生所述像素组。
5、一种图像处理设备,包括:
像素组产生装置,通过根据用于像素选择的第一参考点选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;
像素组参考点确定装置,用于确定由所述像素组产生装置所产生的像素组的第二参考点;以及
已量化图像数据提供装置,用于向位于由所述像素组参考点确定装置所确定的第二参考点的像素提供已量化图像数据;其中
所述像素组产生装置更新所述第一参考点,并根据此第一参考点,选择像素。
6、按照权利要求5所述的图像处理设备,其特征在于所述像素组产生装置每当选择所述像素时,更新所述第一参考点。
7、按照权利要求5所述的图像处理设备,其特征在于所述像素组产生装置每当选择了所述像素预定次数时,更新所述第一参考点。
8、按照权利要求5所述的图像处理设备,其特征在于所述像素组产生装置每当所述像素组的灰度图像数据的总和变为预定值时,更新所述第一参考点。
9、按照权利要求5所述的图像处理设备,其特征在于所述第一参考点是根据选中像素的位置而计算的中心位置。
10、按照权利要求5所述的图像处理设备,其特征在于所述第二参考点是根据像素组的像素位置和灰度图像数据值而计算的重心位置。
11、按照权利要求5所述的图像处理设备,其特征在于所述第一参考点是根据选中像素的位置而计算的中心位置,而所述第二参考点是根据像素组的像素位置而计算的中心位置。
12、按照权利要求5所述的图像处理设备,其特征在于所述像素组产生装置查阅存储了与所述第一参考点相对位置的表格,并按照存储在所述表格中的顺序选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止。
13、一种图像处理方法,包括:
像素组产生步骤,通过根据用于像素选择的第一参考点选择像素,直到每个像素的灰度图像数据值的总和变为阈值或更大值为止,来产生像素组;
像素组参考点确定步骤,确定在所述像素组产生步骤中所产生的像素组的第二参考点;以及
已量化图像数据提供步骤,向位于在所述像素组参考点确定步骤中所确定的第二参考点的像素提供已量化图像数据;其中
所述像素组产生步骤更新所述第一参考点,并根据此第一参考点,选择像素。
CNB2004100012062A 2003-01-09 2004-01-02 图像处理设备、方法、程序及记录该程序的记录介质 Expired - Fee Related CN1306789C (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2003002975 2003-01-09
JP20032975 2003-01-09
JP2003104348 2003-04-08
JP2003104348 2003-04-08
JP2003154202 2003-05-30
JP2003154202A JP4062175B2 (ja) 2003-01-09 2003-05-30 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
CN1518332A CN1518332A (zh) 2004-08-04
CN1306789C true CN1306789C (zh) 2007-03-21

Family

ID=32931116

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100012062A Expired - Fee Related CN1306789C (zh) 2003-01-09 2004-01-02 图像处理设备、方法、程序及记录该程序的记录介质

Country Status (6)

Country Link
US (1) US7474441B2 (zh)
EP (1) EP1475954B1 (zh)
JP (1) JP4062175B2 (zh)
CN (1) CN1306789C (zh)
AT (1) ATE421838T1 (zh)
DE (1) DE60325941D1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4706237B2 (ja) * 2004-11-19 2011-06-22 ブラザー工業株式会社 データ処理装置、データ処理方法、およびデータ処理プログラム
US7852317B2 (en) 2005-01-12 2010-12-14 Thinkoptics, Inc. Handheld device for handheld vision based absolute pointing system
JP4165570B2 (ja) * 2005-05-16 2008-10-15 セイコーエプソン株式会社 画像処理装置,画像処理方法,及び画像処理プログラム
JP4773170B2 (ja) 2005-09-14 2011-09-14 任天堂株式会社 ゲームプログラムおよびゲームシステム
US8913003B2 (en) 2006-07-17 2014-12-16 Thinkoptics, Inc. Free-space multi-dimensional absolute pointer using a projection marker system
CN101123667B (zh) * 2006-08-11 2010-05-12 致伸科技股份有限公司 图像处理方法与装置
JP4702234B2 (ja) * 2006-09-11 2011-06-15 セイコーエプソン株式会社 画像処理装置、画像出力装置、画像処理方法、画像処理プログラム、およびそのプログラムを記録した記録媒体
US9176598B2 (en) 2007-05-08 2015-11-03 Thinkoptics, Inc. Free-space multi-dimensional absolute pointer with improved performance
JP4937868B2 (ja) * 2007-09-14 2012-05-23 株式会社リコー 画像処理装置、画像記録装置、プログラムおよび記録媒体
US10102439B2 (en) * 2008-01-14 2018-10-16 Hewlett-Packard Development Company, L.P. Document verification method and system
JP4560564B2 (ja) * 2008-03-28 2010-10-13 シャープ株式会社 画像処理装置、画像形成装置、画像処理方法、プログラムおよびその記録媒体
TWI509468B (zh) * 2012-04-06 2015-11-21 Pixart Imaging Inc 影像定位方法及使用該方法之互動影像系統
EP3754962B1 (en) * 2014-07-01 2022-12-21 Canon Kabushiki Kaisha Image processing apparatus, image processing method, printing medium and storage medium
CN105741283A (zh) * 2016-01-28 2016-07-06 青岛易科锐自动化技术有限公司 一种计算机色彩对比定量评价方法
WO2019088259A1 (ja) * 2017-11-06 2019-05-09 Hoya株式会社 電子内視鏡用プロセッサ及び電子内視鏡システム
US10211848B1 (en) * 2018-03-27 2019-02-19 Synaptics Incorporated Delta sigma modulator systems and methods

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578713A (en) * 1984-07-20 1986-03-25 The Mead Corporation Multiple mode binary image processing
CN1170298A (zh) * 1996-05-17 1998-01-14 富士胶片公司 用于校正线性图像传感器的输出信号的装置及其方法
JPH1127528A (ja) * 1997-07-02 1999-01-29 Ricoh Co Ltd 疑似中間調処理方法、装置および記録媒体
JP2000022952A (ja) * 1998-07-07 2000-01-21 Ricoh Co Ltd 画像処理方法、画像処理プログラムを記録した媒体及び画像処理装置
CN1247350A (zh) * 1998-09-10 2000-03-15 明碁电脑股份有限公司 灰度图像二值化处理系统及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3031590B2 (ja) 1992-08-07 2000-04-10 シャープ株式会社 中間調画像記録装置
JPH07210672A (ja) 1994-01-12 1995-08-11 Canon Inc 二値化方法及び装置
JPH11313209A (ja) 1998-04-30 1999-11-09 Toshiba Corp 画像処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578713A (en) * 1984-07-20 1986-03-25 The Mead Corporation Multiple mode binary image processing
CN1170298A (zh) * 1996-05-17 1998-01-14 富士胶片公司 用于校正线性图像传感器的输出信号的装置及其方法
JPH1127528A (ja) * 1997-07-02 1999-01-29 Ricoh Co Ltd 疑似中間調処理方法、装置および記録媒体
JP2000022952A (ja) * 1998-07-07 2000-01-21 Ricoh Co Ltd 画像処理方法、画像処理プログラムを記録した媒体及び画像処理装置
CN1247350A (zh) * 1998-09-10 2000-03-15 明碁电脑股份有限公司 灰度图像二值化处理系统及方法

Also Published As

Publication number Publication date
JP4062175B2 (ja) 2008-03-19
DE60325941D1 (de) 2009-03-12
EP1475954B1 (en) 2009-01-21
US7474441B2 (en) 2009-01-06
JP2004363639A (ja) 2004-12-24
EP1475954A3 (en) 2005-05-11
ATE421838T1 (de) 2009-02-15
EP1475954A2 (en) 2004-11-10
CN1518332A (zh) 2004-08-04
US20040174569A1 (en) 2004-09-09

Similar Documents

Publication Publication Date Title
CN1306789C (zh) 图像处理设备、方法、程序及记录该程序的记录介质
CN1127715C (zh) 字符显示装置和字符显示方法
CN1221390C (zh) 打印装置和方法、打印控制装置和方法和计算机程序产品
CN1185616C (zh) 图像处理方法和图像处理装置
CN1774031A (zh) 图像处理装置及图像处理方法、以及计算机程序
CN1234533C (zh) 记录装置及记录方法
CN1059063C (zh) 通过变换图像数据的格式来保证画面质量的图像处理装置及方法
CN1809116A (zh) 图像处理装置、方法、图像形成装置、图像读取处理装置
CN1557090A (zh) 阈值矩阵产生方法、图像输出系统、存储介质、灰度再现方法、阈值矩阵、图像处理方法、图像处理装置、图像形成装置以及打印机驱动器
CN1940912A (zh) 文件作成系统、文件作成方法、程序以及存储介质
CN1445978A (zh) 利用校正表的彩色图像数据的校正方法
CN1187953C (zh) 图像处理装置、印刷控制装置、图像处理方法和记录媒体
CN101052990A (zh) 图像放大装置及程序
CN1764228A (zh) 图像处理装置、图像形成装置、图像处理方法
CN1625221A (zh) 图像形成装置、图案形成方法及其程序
CN1969314A (zh) 图像处理设备和方法、存储介质及其程序
CN1525733A (zh) 图像数据中具有不同特征的区域之间的边界检测方法
CN1677475A (zh) 液晶显示器件及其驱动方法
CN1809117A (zh) 图像处理装置及方法、图像形成装置、图像读取处理装置
CN1171462C (zh) 固体彩色摄像装置
CN1805499A (zh) 图像处理装置、图像形成装置、图像读取处理装置及方法
CN1957594A (zh) 点数据处理装置、图像输出系统及其方法
CN1947409A (zh) 对每多个像素进行多值化的图像处理装置
CN1810508A (zh) 打印装置、其控制方法、打印用数据生成装置和生成方法
CN1817047A (zh) 用于处理具有排列的不同色彩分量的图像的图像处理装置,图像处理程序,电子照相机,以及图像处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070321

Termination date: 20210102