CN1964423A - 采用双份误差行存储器产生图像网点的方法和装置 - Google Patents
采用双份误差行存储器产生图像网点的方法和装置 Download PDFInfo
- Publication number
- CN1964423A CN1964423A CNA2006101143313A CN200610114331A CN1964423A CN 1964423 A CN1964423 A CN 1964423A CN A2006101143313 A CNA2006101143313 A CN A2006101143313A CN 200610114331 A CN200610114331 A CN 200610114331A CN 1964423 A CN1964423 A CN 1964423A
- Authority
- CN
- China
- Prior art keywords
- error
- value
- point
- read
- storage
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/40—Picture signal circuits
- H04N1/405—Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
- H04N1/4051—Halftoning, 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/4052—Halftoning, 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Facsimile Image Signal Circuits (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种能够同时读写数据的采用双份误差行存储器产生图像网点的装置及方法。该装置包括缓冲存储器A、缓冲存储器B和存储控制器,其特征在于,所述存储控制器包括缓冲存储器A读写控制电路、缓冲存储器B读写控制电路以及缓冲存储器选择电路;所述缓冲存储器选择电路用于生成对缓冲存储器A和缓冲存储器B的读或写操作的选择信号;所述缓冲存储器A读写控制电路连接至所述缓冲存储器A,用于根据所述读写选择信号对缓冲存储器A进行读和写操作,所述缓冲存储器B读写控制电路连接至所述缓冲存储器B,用于根据所述读写选择信号对缓冲存储器B进行读和写操作。本发明的装置及方法能同时读写存储器中的数据,可以应用于执行误差扩散,使得误差扩散快速执行。
Description
技术领域
本发明涉及一种图像网点生成的方法和装置,尤其涉及一种利用双份缓冲存储器实现数据读写并行的图像网点生成方法和装置。
背景技术
在图像处理领域中,数字半色调是一种将连续色调的图像转换成二值色调图像的技术,这一技术常用于打印机、计算机显示器及其它二值的电子显示设备上再现彩色或灰度的图像,着重解决的问题是如何使得半色调图像达到一种连续调图像的视觉效果。有许多实现方法,主要分为三类:规则抖动法、误差扩散法和最佳化的方法。其中误差扩散方法是近些年来被广泛采用的数字半色调技术。
在通常的调频挂网方法中,误差扩散方法是最常用的方法。误差扩散方法是把原图像的每个像素点的灰度值与阈值相比较产生网点的同时,把像素点的灰度值与阈值之间的误差扩散到该像素点周围的像素点上,例如对于一个256级灰度的图像,阈值为127,有一个像素点的灰度值为150,经比较可知,该像素点应记为白色网点(其灰度值为255),但实际上该像点并不是真正的白色,与白色之间存在的灰度差为105,于是将105这个误差按一定的方法分散到该像素点周围的像素点上。
将误差扩散到周围像素点的方法有很多种,其中Floyd-Steinberg误差扩散算法是一种最通用的误差扩散方法,该算法是将一个像素的误差分配到周围的四个点上。该算法首先比较当前像素点的灰度值与阈值,将该像素点记为1或0,即白色或黑色网点,然后计算误差,分配误差到周围的像素点,修改周围像素点的灰度值。图1A是基于Floyd-Steinberg算法的误差扩散分配示意图,如图所示,按Floyd-Steinberg误差扩散算法,当前像素*的误差将按图中所示的比例被分配到它所相邻的四个像素上去。即将误差的7/16加到当前像素点右边第一个像素点上,误差的3/16加到下一行左边第一个像点上,误差的5/16加到下一行正对的像点上,误差的1/16加到下一行右边第一个像点上,这样把当前像点的误差分散到周围的像点上,反复进行该过程,对图像中的每个像点进行同样的半色调化和灰度值的修正即可。
从理论上说,误差扩散方法能很好的反映原图的层次关系和颜色,如果我们进行误差扩散的点越多,效果会越好,故在此基础上又提出能涉及很多点的算法。例如,Stucki算法进一步改善了Floyd-Steinberg算法。图2A是基于Stucki算法的误差扩散分配示意图,如图所示,按Stucki误差扩散算法,当前像素*的误差被分配到如图所示的12个相邻像素上去,这12个位置上的某些位置的误差分配比例相同,只需要5个不同的误差分配比例,其中D1=1/44,D2=2/44,D3=5/44,D4=4/44,D5=8/44。由于Stucki算法涉及了更多的点,因此输出图像的效果更好。
在图像处理过程中,误差扩散的点越多,需要进行的运算量越大,处理数据的速度也越慢。对于利用硬件电路实现高速产生调频网点的装置而言,误差扩散的点越多,电路规模越大,影响调频网点产生速度的因素也越多,其中存储器的读写操作一直是影响调频网点产生速度的一个重要因素。在传统的误差扩散实现方法中,需要用到大量的存储器读写操作,存储器的存取速度在基于误差扩散算法的***中,往往成为速度的瓶颈,而这一缺陷也一直制约着误差扩散方法的广泛应用。
虽然现有技术对高速生成调频网点的方法进行了多种探索,但是在误差扩散时,仍然要对存储器进行至少一次读和一次写的操作,且读和写分别进行,大大影响了网点产生的速度。
发明内容
针对上述问题,本发明提供了一种能够同时读写数据的采用双份误差行存储器产生图像网点的装置,包括缓冲存储器A、缓冲存储器B和存储控制器,其特征在于:
所述存储控制器包括缓冲存储器A读写控制电路、缓冲存储器B读写控制电路以及缓冲存储器选择电路;
所述缓冲存储器选择电路用于生成对缓冲存储器A和缓冲存储器B的读写选择信号,以选择对缓冲存储器A和缓冲存储器B的读或写操作
所述缓冲存储器A读写控制电路连接至所述缓冲存储器A,用于根据所述读写选择信号对缓冲存储器A进行读和写操作,所述缓冲存储器B读写控制电路连接至所述缓冲存储器B用于根据所述读写选择信号对缓冲存储器B进行读和写操作。
本发明进一步提供了一种利用误差扩散装置执行误差扩散的图像处理方法,该图像由多行像素点构成,该装置包括误差行存储器,用于存储当前处理行每个位置点的误差累积值;寄存器堆,用于寄存当前处理行各点对其周围点的误差分配值;该方法包括,以行为单位依次处理各个点,处理过程为:
首先,初始化误差行存储器的值为0;
步骤1,初始化寄存器堆的值为0;
读取当前处理行中第1个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤2,
利用上个步骤读入的点的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤3,
根据寄存器堆中相应位置的误差分配值计算误差累积完成点的误差累积值并将其写入到误差行存储器的相应位置;
利用上个步骤读入的点的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤4,重复步骤3,直到下一行点的误差累积值全部计算并写入到误差行存储器的相应位置;
步骤5,重复步骤1-4,依次处理下一行,直到全部行处理完,结束。
本发明的采用双份误差行存储器产生图像网点的装置及图像网点生成方法简单地采用双份缓冲存储器进行数据读写并行操作,大大地提高了处理速度。
附图说明
图1A和图1B所示为现有技术中基于Floyd-Steinberg算法的误差扩散分配示意图;
图2A、图2B和图2C所示为现有技术中基于Stucki算法的误差扩散分配示意图;
图3所示为现有技术中Floyd-Steinberg算法的误差扩散装置组成图;
图4所示为误差分配寄存器堆控制电路由多路选择器构成的框图;
图5所示为图3中的误差分配寄存器结构图;
图6所示为图3的误差扩散装置对存储器读写操作周期示意图;
图7所示为本发明第一实施例的误差扩散装置组成图;
图8所示为图7所示装置的误差行存储器控制电路结构图;
图9所示为图8所示装置中缓冲存储器控制电路结构图;
图10所示为本发明的误差扩散装置对存储器读写操作周期示意图;
图11所示为现有技术中Stucki算法的误差扩散装置组成图;
图12所示为图10所示装置中的误差分配/累积寄存器堆结构图;
图13所示为本发明第二实施例的误差扩散装置组成图;
图14所示为误差扩散n行示意图;
图15所示为最终误差累积值和中间误差累积值组成的数据包。
具体实施方式
下面结合说明书附图来说明本发明的具体实施方式。
我们先简要介绍本发明在进行调频网点产生的处理过程中利用到的几个基本电路。
在误差扩散中,每个点对其周围的点都有误差扩散,相应地,对于当前处理点来说,也会被周围的点的误差扩散所影响,因此需要处理完影响到当前像素点的所有点,才能处理当前像素点。
以Floyd-Steinberg算法为例,由于一个像素点的误差扩散到其周围四个点,因此我们容易得到一个规律,即,任意一个像素点仅被其周围的4个点的误差扩散所影响,如图1B所示。也就是说,假设一个图像由n行m列个像素点组成,i为行数,j为列数(以后均表示相同意义),则在处理完第i-1行的点Pi-1,j+1时,第i-1行的所有像素点汇聚到像素点Pi,j上的误差扩散就已经可以计算出来了。因此在第i-1行的其余的点还没有全部处理完之前,我们需要一个存储器来保存第i-1行中的点对像素点Pi,j的误差累积值,以便在处理第i行的点时可以将其取出并用于计算Pi,j的网点值和它对周围的像素的误差扩散。由于图像由多行像素点组成,而这样的存储器通常按行来存储各点的误差累积值,因此,我们将这样一个存储器称为误差行存储器,我们优选地采用SRAM(静态随机存取存储器)作为误差行存储器。
这样,我们计算某个像素点的网点值和误差扩散时,在获取当前像素的灰度值后,就可以利用从误差行存储器中读出的上一行的像素点在该点的误差累积值,再加上当前像素的左边的点对该点的误差扩散,得到该点的最终灰度值,再和阈值比较便可生成当前像素的网点,同时可以得到其分配给周围点的误差值,我们将每个像素根据误差扩散算法分配给相邻像素的误差值,也就是前面所说的误差扩散,称为误差分配值。
接着,在得到一个像素点对其周围点的误差分配值后,还需要将这些误差分配值暂存一段时间以用于处理该像素的误差扩散所影响到的像素点。我们利用寄存器组来暂存这些误差分配值。容易理解,寄存器组的个数取决于算法的种类,如对于Floyd-Steinberg算法,需要3个寄存器组来暂存每个像素点的误差分配值(以后说明)。我们称这些寄存器组为一个寄存器堆。
上面介绍了误差扩散电路中需要用到的几个基本电路单元。下面参照图3说明现有技术中利用Floyd-Steinberg算法进行误差扩散的误差扩散装置组成。
如图所示,该装置1包括误差行存储器2,误差行存储器控制电路误差行存储器控制电路3,误差分配寄存器堆4,误差分配寄存器堆控制电路5,灰度生成电路6,阈值比较电路7,误差生成电路8,共七部分。
误差行存储器2和误差分配寄存器堆4的功能已经在上文中详细地进行了说明,这里不再赘述。
其中,误差行存储器控制电路3负责完成误差行存储器2的读和写操作,其从误差行存储器2中读出当前处理点Pij的误差累积值提供给灰度生成电路6用于计算当前点的最终灰度值,以及利用误差分配寄存器堆控制电路5输出的误差分配值计算出Pi+1,j-1误差累积值并写入误差行存储器2;
其中,误差分配寄存器堆控制电路5用于控制误差分配寄存器堆4的移位更新、清零等操作,即将来自误差生成电路8的误差分配值暂存到误差分配寄存器堆4中,以及为误差行存储器控制电路误差行存储器控制电路3和灰度生成电路提供计算所需要的误差分配值。误差分配寄存器堆控制电路5可以由多路选择器来实现。其与误差分配寄存器的连接关系如图4所示。
误差分配寄存器堆的结构如图5所示。假设Pij为第i行的当前处理点,Pi,j-1和Pi,j-2点为其前面处理过的点,图中E1-E4代表误差分配系数,其中E1=1/16,E2=3/16,E3=5/16,E4=7/16(由于E4是当前点对左边点的误差分配值,计算下一行点的误差累积值时并不使用,因此仅需要存储当前点的误差分配值Pi,jE4)。阴影部分为用于计算图1B所示点*的误差累积值所用到的三个点的误差分配值,其被提供给误差行存储器控制电路3进行加法计算。
灰度生成电路6用来产生源像素的最终灰度,而最终像素的灰度值等于源像素的值加上从误差行存储器中读出的对应该位置的误差累积值再加上误差分配寄存器堆中缓冲的同一行的以前像素对当前像素的误差分配值。因此,灰度生成电路6由一个加法器组成,它的输入连接到点的源像素和误差分配寄存器堆控制电路5以及误差行存储器控制电路误差行存储器控制电路3,它的输出则提供给阈值比较电路7和误差生成电路8;其根据当前处理像素的灰度值和误差行存储器控制电路误差行存储器控制电路3的输出值及误差分配寄存器堆控制电路5的输出值得出最终的像素灰度,提供给阈值比较电路7产生网点和误差生成电路8得出该像素的误差分配值。
阈值比较电路7用来将灰度生成电路6所产生的最终灰度值与阈值进行比较产生网点。
误差生成电路8用来将由灰度生成电路6所产生的最终灰度值通过与阈值进行比较计算而产生当前像素的误差分配值,它的输入与灰度生成电路6相连,输出提供给误差分配寄存器堆控制电路5。
下面结合图3参照图6,说明现有技术中对误差行存储器2的读写操作过程。
首先,初始化误差行存储器和误差分配寄存器堆使其清零,然后从第1行第1列开始点开始依次处理每个像素点,由于已经对初始化误差行存储器和误差分配寄存器堆已经初始化为0,因此计算出第1行1列的点的最终灰度值即为读入的像素灰度值,其最终灰度值计算完之后就可以对其周围点的误差分配值进行计算了,而这时第2行第0列点P2,0的误差累积就已经完成了,应该将其写入到误差行存储器中,但该值没有意义(不在图像内的点),因此不保存;
可以理解,由于第0行(没有图像)对第1行的点均没有误差扩散,因此从误差行存储器中读出的第1行的所有点的误差累积值均为初始化了的值即为0,不再赘述;
当处理到第i行第j列像素点Pij时,第一个周期内,误差行存储器控制电路3读出(图5中为R)误差行存储器2中第i-1行对该点的误差累积值e1;在第二个周期内,误差分配寄存器堆控制电路5根据误差分配寄存器堆4中第i行j-1列点对该点的误差分配值e2计算(图5中为M)出Pij+e1+e2=Pij’,以及其对于周围点的误差分配值进行计算并寄存到寄存器堆中,这时,由于第Pi+1,j-1点已经可以计算出来,因此将Pij与Pi,j-1、Pi,j-2的分配值按照图4阴影部分进行相加得到Pi+1,j-1点的误差累积值;在第三个周期内,将其对第Pi+1,j-1点的误差累积值写入(图5中为W)到误差行存储器中。
不难看出,对于每一个像素操作时,存储器的读写访问是分开进行的。因此,当处理4个像素时,每4个操作周期能够完成2个像素点的处理,完成4个像素点总共需要8个周期,平均2个操作周期处理一个像素点。
以上详细地介绍了本发明所利用到的基本的误差扩散装置。
下面详细描述本发明利用双份缓冲存储器作为误差行存储器的图像网点生成装置及方法。
实施例一
参照图7,详细描述本发明第一个实施例,即利用Floyd-Steinberg算法的误差扩散装置。
如图所示,本发明的误差扩散装置1’包括误差行存储器2’,误差行存储器控制电路3’,误差分配寄存器堆4,误差分配寄存器堆控制电路5,灰度生成电路6,阈值比较电路7,误差生成电路8,共七部分。其中附图标记相同的部件与现有技术的装置完全相同,不再一一赘述。
如图8所示,与现有技术不同的是,本发明使用两个缓冲存储器A和B整体作为误差行存储器2’,误差行缓冲存储器A/B分别用于在当前行为奇数行/偶数行时存储产生的误差累积值,和用于在当前行为偶数行/奇数行时读取处理前一行时产生的误差累积值。
误差行存储器控制电路3’包括缓冲存储器A读写控制电路300,缓冲存储器B读写控制电路301和双份缓冲读写选择电路,如图8所示。
所述缓冲存储器A读写控制电路300连接至所述缓冲存储器A303,用于对缓冲存储器A303进行读写操作,所述缓冲存储器B读写控制电路301连接至所述缓冲存储器B304用于对缓冲存储器B304进行读写操作,所述双份缓冲读写选择电路302用于生成对双份缓冲存储器读写的选择信号,这样对缓冲存储器A和B进行读或写的选择。其中双份缓冲读写选择信号由双份缓冲误差行存储器控制电路内部根据行数生成。
其中,误差行存储器控制电路3’负责根据双份缓冲读写选择电路的控制完成误差行缓冲存储器A/B的读和写操作,其在当前行为奇数时从误差行缓冲存储器A中读出包含当前处理点的误差累积值提供给灰度生成电路6用于计算当前点的最终灰度值,以及同时利用误差分配寄存器堆控制电路5输出的误差分配值计算出误差累积值并写入误差行缓冲存储器B中,在当前行为偶数时,误差行缓冲存储器A、B的读写角色对换,即从缓冲存储器B中读出包含当前处理点的误差累积值提供给灰度生成电路6用于计算当前点的最终灰度值,以及同时利用误差分配寄存器堆控制电路5输出的误差分配值计算出误差累积值并写入缓冲存储器A中。本领域技术人员可以理解,对缓冲存储器A和B读写的先后顺序不是固定的,也可以先将缓冲存储器B用来读出数据,则缓冲存储器A用来写入数据,然后到下一行再利用缓冲存储器A进行读出数据,缓冲存储器B用于写入数据,依次交替使用。
双份缓冲读写选择电路302通过缓冲存储控制器A、B中的三态门及反相器等器件进行数据通路的选择,以选择对缓冲存储控制器A、B读或写,如图9所示。
通过这样的结构,实现了对误差行存储器的同时读写,加快了误差扩散的速度。
附图10直观地示出了本发明的误差扩散装置对存储器读写操作的示意图。由图中看出,在读第3个像素的误差累积值的同时可以向误差行中写入第1个像素对应的下一行的像素点的误差累积值,对存储器的读写在一个操作周期内就可以完成。整个处理过程如下:
首先,初始化误差行存储器的值为0;
步骤1,初始化寄存器堆的值为0;
读取当前处理行中第1个要处理点P1,1的灰度值,并从误差行存储器中读取属于该点的误差累积值(因为初始化存储器,因此读出的值为0);
步骤2,
利用上个步骤读入的点P1,1的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值(初始化的值为0)计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点P1,2的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤3,
根据寄存器堆中相应位置的误差分配值计算误差累积完成点P2,0的误差累积值并将其写入到误差行存储器的相应位置(该值没有意义,也可以不写入);
利用上个步骤读入的点P1,2的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点P1,3的灰度值,并从误差行存储器中读取属于该点的误差累积值;
这样,到步骤3时,读(R)、写(W)、计算(M)都是在一个周期内就可以完成。
这样,再依次处理下面的点,当读取Pi,j点的误差累积值时,同时计算Pi,j-1点的误差分配值,同时将已经计算完成的Pi+1,j-3点的误差累积值写入到存储器中的相应位置;
这样依次处理每个点,直到下一行点的误差累积值全部计算并写入到误差行存储器的相应位置,再将寄存器清零,处理下一行的各点,直到全部行处理完,结束。
可以看出,同样是对4个像素点进行处理,采用本发明所述的方法,只需要最多6个操作周期就可以完成图像处理。
由此推出,使用分开读写的存储器,处理N个像素需要2×N个周期,使用并行读写的存储器,处理N个像素只需N+2个周期,后者的网点产生速度有大幅度的提高。
实施例二
其次我们再阐述本发明基于Stucki算法的误差扩散装置。
由于Stucki算法在当前处理行时,会对下面的两行的12个点产生误差扩散,因此需要保存该行对下面两行的误差扩散,换个角度,对于任意一点来说,其会受到上面两行及当前行的12个点的影响,如图2B所示。可以理解,这些影响不能一次计算出来,而是随着每行数据的处理分批产生的,因此需要将各批产生的误差累积值保存起来用于生成最后的灰度值。
也就是说,对于任意点Pij来说,首先在处理第i-2行的点Pi-2,j+2时就产生了第i-2行在该点的一个误差累积值,我们将其称为中间误差累积值,我们需要在处理下一行(i-1)数据之前将其保存在误差行存储器中,然后在处理第i-1行的点Pi-1,j+2时就产生了第i-1行在该点的一个误差累积值,我们需要将以前已经保存在误差行存储器中的中间误差累积值读出并加上第i-1行在该点产生的误差累积值得到上两行的一个总的误差累积值,我们可以将其称为最终误差累积值。
如图2C所示,在处理完Pij点*时,第i-1行和第i行对第Pi+1,j-2点@最终误差累积值和Pi+2,j-2点@’的中间误差累积值就同时产生出来了。为了方便起见,我们可以将其作为一个数据包同时保存在误差行存储器中。这样在计算点Pi+1,j-2(图中为@)的最终误差累积值时,需要从存储器中读入最终误差累积值,同时Pi+2,j-2(图中为@’)的中间误差累积值也在同一个数据包中被从存储器中读出,但是,中间误差累积值只有在处理完Pi+2,j-2(图中为@’)的误差分配值后才能用于计算最终误差累积值,因此我们需要将其在寄存器中暂存起来。
为了暂存随着最终误差累积值同时被读入的中间误差累积值,用以参加生成新的最终误差累积值的计算,还需要设置新的寄存器堆以保存读入的中间误差累积值,我们这里称其为误差累积值寄存器堆。图11示出了利用Stucki算法的现有技术的误差扩散装置图,可以看出,其与利用Floyd-Steinberg算法的误差扩散装置的不同之处在于,误差行存储器12同时存储Pij点的最终误差累积值和Pi+1,j点的中间误差累积值数据包;增加了误差累积寄存器堆用于保存中间误差累积值,它和原来的误差分配寄存器堆一起构成了误差分配/累积寄存器堆14,以及误差分配/累积控制电路15用于控制误差分配/累积寄存器堆14。
处理任意Pij点的操作过程为,误差行控制器从误差行存储器中读出Pij点的最终误差累积值和Pi+1,j点的中间误差累积值数据包,将Pi+1,j点的中间误差累积值提取出来缓存到中间误差累积值寄存器中(等处理到Pi,j+2点时用于计算Pi+1,j点的最终误差累积值),并将Pij点的最终误差累积值提供给灰度生成电路,计算出Pij点的误差分配值,同时误差行控制器负责计算Pi+1,j-2点的最终误差累积值及Pi+2,j-2点的中间误差累积值并将它们作为一个数据包一次写入误差行存储器中。
误差分配/累积寄存器堆14的结构如图12所示。假设当前处理点为Pij,图中Pj代表第i行当前处理点的误差值,Pj-1至Pj-4点依次为其前面处理过的点,D1-D5代表误差分配系数,Lj至Lj-2代表从误差行存储器中读出的Pi+1,j至Pi+1,j-2点的误差累积值,误差分配/累积寄存器堆控制电路5根据需要将以上数据提供给误差行存储器控制电路13,误差行存储器控制电路13产生一个写入数据包,其包括最终误差累积值Pi,jL1和中间误差累积值Pi,jL2,其中Pi,jL1可表示为Pi,jL1=Pi,j-2L2+Pi,jD2+Pi,j-1D4+Pi,j-2D5+Pi,j-3D4+Pi,j-4D2,Pi,jL2可表示为Pi,jL2=Pi,jD1+Pi,j-1D2+Pi,j-2D3+Pi,j-3D2+Pi,j-4D1。阴影部分直观地表示出计算两部分值所用到的数据。
本发明同样在Stucki算法的现有技术的误差扩散装置基础上采用双份缓冲存储器整体作为误差行存储器,其原理和构成与本发明第一实施例的Floyd-Steinberg算法的误差扩散装置完全相同,如图13所示,缓冲误差行存储器A22和缓冲误差行存储器B24由误差行存储器控制电路23控制同时读和写操作,使得读写并行得到实现。采用双份缓冲存储器大大提高了误差扩散装置的处理速度。
本发明的第二实施例整个处理过程如下:
首先,初始化误差行存储器的值为0;
步骤1,初始化寄存器堆的值为0;
读取当前处理行中第1个要处理点P1,1的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点P2,1的中间误差累积值,并将中间误差累积值缓存到寄存器堆中;
步骤2,
利用上个步骤读入的点P1,1的灰度值和该点的最终误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点P1,2的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点P2,2的中间误差累积值,并将中间误差累积值缓存到寄存器堆中;
步骤3,
根据寄存器堆中相应位置的误差分配值(来自P1,1点)和中间误差累积值(初始化为0)计算最终误差累积完成点P2,-1的最终误差累积值和中间误差累积完成点P3,-1的中间误差累积值,并将其写入到误差行存储器的相应位置;
利用上个步骤读入的点P1,2的灰度值和该点的最终误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆;
同时,读取当前行中下一个要处理点P1,3的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点P2,3的中间误差累积值,并将中间误差累积值缓存到寄存器堆中。
步骤3中的读(R)、写(W)、计算(M)都是在一个周期内就可以完成。
这样,在一次处理下面的点,读取Pi,j点的最终误差累积值和Pi+1,j点的中间误差累积值时,计算Pi,j-1点的误差分配值,同时将Pi+1,j-4点的最终误差累积值和Pi+2,j-4点的中间误差累积值写入到误差行存储器中;
这样依次处理每个点,直到下一行点的误差累积值和中间误差累积值全部计算并写入到误差行存储器的相应位置,再将寄存器清零,处理下一行的各点,直到全部行处理完,结束。
通过如上所述的技术方案,可以理解采用双份缓冲存储器可以应用到于基于误差扩散原理的,将误差扩散到更多行的点的图像处理方法中。例如图14所示的误差扩散方法,一个点的误差扩散到它下面的n(n≥1)行,可以采用本发明的采用双份误差行存储器产生图像网点的装置,其中采用双份缓冲存储器作为误差行存储器,用于存储最终误差累积完成在某个点上的最终误差累积值以及下面的中间误差累积完成的共n-1个点的中间误差累积值所组成的数据包,图15示出了数据包的组成,数据包包括最终误差累积完成点的最终误差累积值、以及该点下面紧邻的中间误差累积完成的n-1个点的中间误差累积值,标记为中间误差累积值1至中间误差累积值n-1。误差累积/分配寄存器堆用于暂存从误差行存储器中读出的上述中间误差累积值,同理,寄存器的个数也应随算法作相应地调整。
通过对本发明的几个实施例的详细描述,本领域技术人员可以理解,本发明的技术方案除了运用在以上所举实施例的装置中,还能够用于其它任何需要对存储器进行同时读写操作的图像网点生成装置中。例如在任何现有的误差扩散装置中,只要是上一行的点对下面的行有误差扩散的图像处理方法,都需要使用存储器存储已处理完的点的信息以用于处理下一个点,所述的信息可以包括误差累积值、误差分配值或者已处理完点的最终灰度值、最终灰度值与阈值之间的差值等等,为了加快处理速度,可以使用双份缓冲存储器进行存储,其所包括的两个缓冲存储器通过与存储控制器相连接,存储控制器对其中的一个缓冲存储器进行读操作,对另一个缓冲存储器进行写操作就能够完成同时读写功能。
以上所述仅为本发明的其中几个实施例而已,并不用以限制本发明,因而凡在本发明的精神和原则之内,所作的任何修改,等同替换,改进等,均应包含在本发明的保护范围之内。
Claims (19)
1、一种采用双份误差行存储器产生图像网点的装置,包括缓冲存储器A、缓冲存储器B和存储控制器,其特征在于:
所述存储控制器包括缓冲存储器A读写控制电路、缓冲存储器B读写控制电路以及缓冲存储器选择电路;
所述缓冲存储器选择电路用于生成对缓冲存储器A和缓冲存储器B的读写选择信号,以选择对缓冲存储器A和缓冲存储器B的读或写操作;
所述缓冲存储器A读写控制电路连接至所述缓冲存储器A,用于根据所述读写选择信号对缓冲存储器A进行读和写操作,所述缓冲存储器B读写控制电路连接至所述缓冲存储器B用于根据所述读写选择信号对缓冲存储器B进行读和写操作。
2、根据权利要求1所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器A读写控制电路由三态门和反向器组成。
3、根据权利要求1所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器B读写控制电路由三态门和反向器组成。
4、根据权利要求1-3之一所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述图像处理装置对多行像素点构成的图像中各像素点依次执行对其周围的像素点误差扩散,且误差扩散到其下面1行。
5、根据权利要求1-3之一所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述图像由多行像素点构成,所述图像处理装置对各像素点依次执行对其周围的像素点误差扩散,且误差扩散到其下面多行。
6、根据权利要求4所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器A和缓冲存储器B组成为误差行存储器,用于存储前一行对当前处理行各点的误差累积值;
7、根据权利要求6所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器选择电路根据行数生成对缓冲存储器A和缓冲存储器B的读写选择信号。
8、根据权利要求5所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器A和缓冲存储器B组为误差行存储器,用于存储前一行对当前处理行最终误差累积完成点的最终误差累积值以及同时产生的当前处理行下1行、下2行...下n-1行中间误差累积完成点的n-1个中间误差累积值。
9、根据权利要求8所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
同时产生的最终误差累积值和n-1个中间误差累积值存储以数据包的形式存储。
10、根据权利要求8或9所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述缓冲存储器选择电路根据行数生成对缓冲存储器A和缓冲存储器B的读写选择信号。
11、根据权利要求7所述的采用双份误差行存储器产生图像网点的装置,其特征在于,还包括:
寄存器、寄存器控制电路、灰度生成电路和误差生成电路;
所述寄存器用于暂存当前处理像素点的误差扩散到周围点的误差分配值;
当当前行为奇数行时,所述存储控制器从缓冲存储器A中读出当前处理点的误差累积值,提供给灰度生成电路,同时存储控制器利用寄存器中的误差分配值计算出累积完成点的误差累积值并写入缓冲存储器B;当当前行为偶数行时,所述存储控制器从缓冲存储器B中读出当前处理点的误差累积值,提供给灰度生成电路,同时存储控制器利用寄存器中的误差分配值计算出累积完成点的误差累积值并写入缓冲存储器A;
寄存器控制电路用于将来自误差生成电路的误差分配值暂存到误差分配寄存器中,以及为误差行存储器控制电路和灰度生成电路提供计算所需要的误差分配值;
灰度生成电路用于产生各像素点的最终灰度值;
误差生成电路用于将由灰度生成电路所产生的最终灰度值通过计算而产生当前处理点的误差分配值,并提供给误差分配寄存器控制电路。
12、根据权利要求10所述的采用双份误差行存储器产生图像网点的装置,其特征在于,还包括:
寄存器、寄存器控制电路、灰度生成电路和误差生成电路;
所述寄存器用于暂存每个像素点的误差扩散到其周围点的误差分配值以及从误差行存储器中读出的用于计算最终误差累积值的中间误差累积值;
当当前行为奇数行时,所述存储控制器从缓冲存储器A中读出由最终误差累积值和中间误差累积值组成的数据包,并将最终误差累积值提供给灰度生成电路,将中间误差累积值缓存到寄存器中,同时所述存储控制器利用寄存器中的误差分配值和中间误差累积值计算出最终误差累积完成点的最终误差累积值和中间误差累积完成点的中间误差累积值并组成数据包写入缓冲存储器B中,
当当前行为偶数行时,所述存储控制器从缓冲存储器B中读出由最终误差累积值和中间误差累积值组成的数据包,并将最终误差累积值提供给灰度生成电路,将中间误差累积值缓存到寄存器中,同时所述存储控制器利用寄存器中的误差分配值和中间误差累积值计算出最终误差累积完成点的最终误差累积值和中间误差累积完成点的中间误差累积值并组成数据包写入缓冲存储器A中;
寄存器控制电路用于将来自误差生成电路的误差分配值暂存到误差分配寄存器中,将来自误差行存储器中的中间误差累积值暂存到误差累积寄存器中,以及为存储控制器和灰度生成电路提供计算所需要的误差分配值;
灰度生成电路用于产生各像素点的最终灰度值;
误差生成电路用于将由灰度生成电路所产生的灰度通过计算而产生当前像素的误差分配值,并提供给误差分配寄存器堆控制电路。
13、根据权利要求11或12所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
还包括阈值比较电路,用于将灰度生成电路所产生的最终灰度值与阈值进行比较产生网点。
14、根据权利要求11或12所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述寄存器控制电路为多路选择器。
15、根据权利要求11或12所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述灰度生成电路由加法器组成。
16、根据权利要求6或8所述的采用双份误差行存储器产生图像网点的装置,其特征在于:
所述误差行存储器为静态随机存取存储器。
17、一种利用误差扩散装置执行误差扩散的图像处理方法,该图像由多行像素点构成,该装置包括误差行存储器,用于存储当前处理行每个位置点的误差累积值;寄存器堆,用于寄存当前处理行各点对其周围点的误差分配值;该方法包括,以行为单位依次处理各个点,处理过程为:
首先,初始化误差行存储器的值为0;
步骤1,初始化寄存器堆的值为0;
读取当前处理行中第1个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤2,
利用上个步骤读入的点的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤3,
根据寄存器堆中相应位置的误差分配值计算误差累积完成点的误差累积值并将其写入到误差行存储器的相应位置;
利用上个步骤读入的点的灰度值和该点的误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值;
步骤4,重复步骤3,直到下一行点的误差累积值全部计算并写入到误差行存储器的相应位置;
步骤5,重复步骤1-4,依次处理下一行,直到全部行处理完,结束。
18、一种利用误差扩散装置执行误差扩散的图像处理方法,该图像由多行像素点构成,该装置包括误差行存储器,用于存储当前要处理行每个位置点的误差累积值以及下一行中与其同列各点的中间误差累积值;寄存器堆,用于寄存当前处理行各点对其周围点的误差分配值和从误差行存储器中读出的中间误差累积值;该方法包括,以行为单位依次处理各个点,处理的过程为:
首先,初始化误差行存储器的值为0;
步骤1,初始化寄存器堆的值为0;
读取当前处理行中第1个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点的中间误差累积值,并将中间误差累积值缓存到寄存器堆中;
步骤2,
利用上个步骤读入的点的灰度值和该点的最终误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点的中间误差累积值,并将中间误差累积值缓存到寄存器堆中;
步骤3,
根据寄存器堆中相应位置的误差分配值和中间误差累积值计算最终误差累积完成点的误差累积值和中间误差累积完成点的中间误差累积值,并将其写入到误差行存储器的相应位置;
利用上个步骤读入的点的灰度值和该点的最终误差累积值以及寄存器堆中相应位置的误差分配值计算该点的最终灰度值以及该点对周围点的误差分配值并更新寄存器堆,
同时,读取当前行中下一个要处理点的灰度值,并从误差行存储器中读取属于该点的误差累积值和中间误差累积完成点的中间误差累积值,并将中间误差累积值缓存到寄存器堆中;
步骤4,
重复步骤3,直到下面行所有点的最终误差累积值和中间误差累积值全部计算并写入到误差行存储器的相应位置;
步骤5,
重复步骤1-4,依次处理下一行,直到全部行处理完,结束。
19、根据权利要求18所述的方法,其特征在于:
所述中间误差累积值的个数为误差向下扩散的行数-1。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101143313A CN1964423A (zh) | 2006-11-07 | 2006-11-07 | 采用双份误差行存储器产生图像网点的方法和装置 |
PCT/CN2007/003125 WO2008055411A1 (fr) | 2006-11-07 | 2007-11-05 | Appareil et procédé utilisant une mémoire à double ligne d'erreurs pour générer des points d'image en demi-tons |
US12/513,975 US8245091B2 (en) | 2006-11-07 | 2007-11-05 | Methods and devices for generating dots of an image by using two error row memories |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101143313A CN1964423A (zh) | 2006-11-07 | 2006-11-07 | 采用双份误差行存储器产生图像网点的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1964423A true CN1964423A (zh) | 2007-05-16 |
Family
ID=38083283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101143313A Pending CN1964423A (zh) | 2006-11-07 | 2006-11-07 | 采用双份误差行存储器产生图像网点的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8245091B2 (zh) |
CN (1) | CN1964423A (zh) |
WO (1) | WO2008055411A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008055411A1 (fr) * | 2006-11-07 | 2008-05-15 | Peking University Founder Group Co., Ltd. | Appareil et procédé utilisant une mémoire à double ligne d'erreurs pour générer des points d'image en demi-tons |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11315315B2 (en) * | 2019-08-23 | 2022-04-26 | Adobe Inc. | Modifying three-dimensional representations using digital brush tools |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0983790A (ja) * | 1995-09-07 | 1997-03-28 | Canon Inc | 二値化処理装置 |
JP3661624B2 (ja) * | 2000-10-06 | 2005-06-15 | セイコーエプソン株式会社 | 画像処理装置 |
CN1326384C (zh) * | 2005-04-07 | 2007-07-11 | 北京北大方正电子有限公司 | 一种产生调频网点的方法和装置 |
CN1964423A (zh) * | 2006-11-07 | 2007-05-16 | 北京大学 | 采用双份误差行存储器产生图像网点的方法和装置 |
-
2006
- 2006-11-07 CN CNA2006101143313A patent/CN1964423A/zh active Pending
-
2007
- 2007-11-05 US US12/513,975 patent/US8245091B2/en not_active Expired - Fee Related
- 2007-11-05 WO PCT/CN2007/003125 patent/WO2008055411A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008055411A1 (fr) * | 2006-11-07 | 2008-05-15 | Peking University Founder Group Co., Ltd. | Appareil et procédé utilisant une mémoire à double ligne d'erreurs pour générer des points d'image en demi-tons |
US8245091B2 (en) | 2006-11-07 | 2012-08-14 | Peking University Founder Group Co., Ltd. | Methods and devices for generating dots of an image by using two error row memories |
Also Published As
Publication number | Publication date |
---|---|
US20100115356A1 (en) | 2010-05-06 |
WO2008055411A1 (fr) | 2008-05-15 |
US8245091B2 (en) | 2012-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5517666A (en) | Program controlled processor wherein vector distributor and vector coupler operate independently of sequencer | |
JP2817060B2 (ja) | 画像表示装置およびその方法 | |
JPS5932037A (ja) | ハ−フト−ン閾値生成装置及び方法 | |
CN101894362B (zh) | 一种图像放大装置及方法 | |
JPS6163893A (ja) | デイスプレイ装置における擬似中間調画像の表示方法 | |
JP2973784B2 (ja) | 多値画像90度回転方法及び装置 | |
CN106910168B (zh) | 并行图像色彩增强方法 | |
JPH07287552A (ja) | 液晶パネルの駆動装置 | |
JPH03187676A (ja) | ハーフトーン画像を作り出す方法 | |
CN1326384C (zh) | 一种产生调频网点的方法和装置 | |
US20050001844A1 (en) | Method of maintaining continuity of sample jitter pattern across clustered graphics accelerators | |
US5852446A (en) | Rendering apparatus and rendering method, and mapping apparatus and mapping method | |
CN100485719C (zh) | 图像处理设备和图像处理方法 | |
CN1964423A (zh) | 采用双份误差行存储器产生图像网点的方法和装置 | |
US5714975A (en) | Apparatus and method for generating halftoning or dither values | |
CN101867681A (zh) | 一种数字图像处理方法及*** | |
CN100435548C (zh) | 一种能够同时产生多位调频网点的方法及装置 | |
US7627188B2 (en) | Error diffusion method and hardware architecture | |
CN1937701A (zh) | 图像处理装置及其处理方法 | |
CN106709889A (zh) | 并行视频图像对比度增强方法和装置 | |
US20040240755A1 (en) | Method and apparatus data re-arrangement | |
JP5708653B2 (ja) | 画像データ形成方法、画像データの書込方法、及び、画像データ処理回路 | |
CN100380920C (zh) | 一种用于图像显示的抖动算法 | |
JPH09326920A (ja) | サブピクセル単位でのデジタル画像処理方法 | |
JP2007323260A (ja) | 画像メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |