基于误差扩散的图像处理的制作方法

文档序号:7552259阅读:231来源:国知局
专利名称:基于误差扩散的图像处理的制作方法
技术领域
本申请一般涉及数据处理,尤其涉及图像处理。背景误差扩散是一种用于在具有有限色彩(色调)范围的输出装置上近似数字图像(诸如连续色调数字图像)的显示的过程。误差扩散最常见地在打印机中用于用二元点值来模拟多种色度(color shade)。例如,仅能打印黑点的打印机可利用误差扩散来模拟多种灰度。附图简述通过参考以下描述以及说明这些实施例的附图可最佳地理解本发明的各实施例。用于包含在本文中附图的编号方案是附图中给定的参考标号的第一位号码与该附图的编号相关联。例如,像素102可以位于

图1A中。然而,对于在不同的附图中相同的元件的参考标号是相同的。附图中:图1A示出根据本发明的某些实施例从一像素到周围像素的误差分配。图1B示出根据本发明的某些实施例从周围像素到一像素的误差的分配。图2示出根据本发明的某些实施例用于误差分配的伪代码。图3示出根据本发明的某些实施例从周围像素到多个像素的分数误差值的数据流。图4示出根据本发明的某些实施例的图像信号处理器的更详细框图。图5示出根据本发明的某些实施例的用于误差扩散操作的图像信号处理器的更详细框图。图6示出根据本发明的某些实施例的基于误差扩散的图像处理的流程图。图7示出根据本发明的某些实施例的由图像信号处理器中的多个元件进行的基于误差扩散的图像处理的操作表。图8示出根据本发明的某些实施例的用于基于误差扩散的图像处理的系统的简化框图。详细描述某些实施例提供了误差扩散操作。误差扩散可包括三个操作。第一个操作包括量化当前像素值以生成输出值。具体地,调整原始像素值以包括从周围像素扩散的误差。在某些实施例中,基于调整值与阈值的比较,该经调整的当前像素值的输出值可以是O或I。误差扩散的第二个操作包括计算输出值和原始像素值之差(即,误差)。误差扩散的第三个操作包括将分数误差(fractional error)值分配到周围像素。尽管可使用多种误差扩散过滤器中的任一种来将误差扩散到周围像素,但在某些实施例中采用了 Floyd-Steinberg过滤器。可使用的其它过滤器包括Burkes过滤器、Stucki过滤器等。
图1A示出根据本发明的某些实施例从一像素到周围像素的误差分配。图1A示出包括像素102-118的图像的部分。像素102-118分别是像素P(1-1,j-l)、P(1-l,j)、P(1-l,j+l)、P(i,j_l)、P(i,j)、P(i,j+l)、P(i+l,j_l)、P(i+l,j)和 P(i+1,j+1)。如图所示,像素Iio将其误差值的7/16、3/16、5/16和1/16分别扩散到像素112、114、116和118。图1B示出根据本发明的某些实施例从周围像素到一像素的误差分配。具体地,图1B示出计算误差然后在误差扩散的阈值操作前将其分配到特定的像素。图1B示出包括像素 120-136 的图像的部分。像素 120-136 分别是像素 P (1-l,j-l)、P (1-l,j)、P (1-1,j+1)、P (i,j-1)、P (i,j)、P (i,j+1)、P (i+1,j_l)、P (i+1,j)和 P (i+lj+1)。如图所示,像素 128 从像素120接收1/16的分数误差值eA。像素128从像素122接收5/16的分数误差值eB。像素128从像素124接收3/16的分数误差值eC。像素128从像素126接收7/16的分数误差值eD。图2示出根据本发明的某些实施例的误差分配的伪代码。具体地,图2示出根据本发明的某些实施例可用于执行图1所示的误差分配的伪代码200。代码块202包括中间误差值(l/16*eA、5/16*eB、3/16*eC和7/16*eD)向累加器变量的赋值。代码语句204将图像中位置(i,j)处的像素值加到累加器变量。因此,累加器变量等于位置(i,j)处的像素值加上从周围像素接收的中间误差值。以下陈述周围像素的示例。如果累加器小于一阈值(例如,0.5),则代码块206将值O赋予到位置(i,j)处的像素,如果累加器不小于该阈值,则将值I赋予该像素。代码语句208基于实际值(存储在累加器中的值)和所赋的值(O或I)之差来更新误差缓冲器。图3示出根据本发明的某些实施例从周围像素到多个像素的中间误差值的数据流。图3示出包括像素302-324的图像的部分。像素302-324分别是像素P(i_l,j-1)、P(1-1,j)、P(1-l,j+1)、P(1-l,j+2)、P(i,j-1)、P(i,j)、P(i,j+1)、P(i,j+2)、P(i+l,j-1)、P(i+1,j)、P(i+lj+l)和P(i+1,j+2)。像素312和314被定义为关于计算的当前像素和下一像素。分数误差值eD(7/16)可从像素310扩散到当前像素312。分数误差值eD可从输入图像316生成并扩散到当前像素302。分数误差值eD (7/16)可从当前像素312扩散到下一像素314。因此,分数误差值eD可作为前一像素的误差计算的一部分来计算。另外,误差缓冲器存储可从前一行中的周围像素扩散到当前像素312和下一像素314的多个中间误差值。具体地,分数误差值可从像素302扩散到当前像素312(为eA-1/16)。分数误差值可从像素304扩散到当前像素312(为eB-5/16)和下一像素314(为eC-3/16)。分数误差值可从像素306扩散到当前像素312 (为eC3/16)和下一像素314 (为eB-5/16)。分数误差值可从像素308扩散到下一像素314 (为eC_3/16)。因此,如图所示,当前像素的eB是下一像素的eA。此外,当前像素的eC是下一像素的eB。此外,下一像素的eC从误差缓冲器中检索,而下一像素的eD来自对当前像素的误差计算。以下陈述该数据流的更详细描述。图4示出根据本发明的某些实施例的图像信号处理器的更详细框图。图像信号处理器400包括输入处理器兀件402、输出处理器兀件404、多个处理器兀件406A-410B、多个寄存器408、多个累加器单元410A-410B、存储器414和存储控制器416。输入处理器元件402、输出处理器元件404、处理器元件406A-406C、累加器单元510A-410B和存储器414 (通过存储控制器416)耦合到寄存器408。寄存器408允许处理器元件402、404和406、累加器单元410A-410B和存储器414交换数据,并可用作用于给定处理器元件402、404和406以及累加器单元410A-410B的通用寄存器。此外,处理器元件402、404和406以及累加器单兀410A-410B可包括多个局部寄存器(未不出)。在一个实施例中,输入处理器兀件402、输出处理器兀件404和处理器兀件406A-406B包括指令存储器和用于处理数据的算术逻辑单元(ALU)。输入处理器元件402和输出处理器元件404通过端口环耦合到图像信号处理器400的端口,分别用于接收输入到图像信号处理器400的数据和发送从图像信号处理器400输出的数据。以下更详细地描述根据某些实施例的具有这一配置的架构。除数据的输入和输出外,输入处理器元件402和/或输出处理器元件404可类似于由处理器兀件406A-406C提供的处理来处理数据。不同的处理器兀件406A-406C可以是通用处理器元件或专用处理器元件。例如,处理器元件406A-406C可以是包括用于通用处理的指令集以及用于乘法-累加(MAC)功能的指令集的MAC处理器元件。处理器元件406A-406C可以是通用处理器元件和专用处理器元件的组合。例如,处理器元件406A和406C可以是MAC处理器元件,而处理器元件406B可以是通用处理器元件。尽管图4示出图像信号处理器400中的五个处理器元件,但在其它实施例中更少或更多数量的这种处理器元件可结合在图像信号处理器400中。输入处理器元件402是具有作为输入端口的端口接口的通用处理器元件。在一个实施例中,输入处理器元件402中的指令将端口连同寄存器408和输入处理器元件402中的局部寄存器一起作为另外的输入操作数。输出处理器元件404是具有作为输出端口的端口接口的通用处理器元件。在一个实施例中,输出处理器元件402中的指令将端口连同寄存器408和输入处理器元件402中的局部寄存器一起作为另外的输入操作数。图5示出根据本发明的某些实施例用于误差扩散操作的图像信号处理器的更详细框图。具体地,图5示出根据本发明的某些实施例的图像信号处理器400的更详细框图。图5包括图4的一些元件,其中相同的元件分布在多个不同的块中以示出这些元件之中的数据流。因此,相同的参考元件涉及图5中不同的块。此外,这些块可包括这里执行的操作的类型的描述。输入处理元件402的解包(unpack)输入像素块被耦合以接收打包(pack)的输入像素504。输入处理器元件402的解包误差块被耦合以从误差缓冲器502接收中间误差误差值。来自输入处理器元件402的解包输入像素块的输出耦合到加速器单元410A的误差过滤器(偶数)块的输入以及加速器单元410B的误差过滤器(奇数)块的输入。来自输入处理器元件402的解包误差块的输出耦合到处理器元件406A的误差高速缓存的输入。处理器元件406A的误差高速缓存的输出耦合到加速器单元410A的误差过滤器(偶数)块的输入以及加速器单元410B的误差过滤器(奇数)块的输入。加速器单元410A的误差过滤器(偶数)块的输入耦合到加速器单元410B的比较块和减法器块的输入。加速器单元410B的误差过滤器(奇数)块的输出耦合到加速器单元410A的比较块和减法器块的输入。阈值输入507耦合到比较块的输入。阈值输入507对两个不同的比较块可以不同。加速器单元410B的比较块的输出耦合到加速器单元410B的减法器块的输入和输出处理器元件404的打包输出像素块的输入。加速器单元410A的比较块的输出耦合到加速器单元410A的减法器块的输入和输出处理器元件404的打包输出像素块的输入。来自打包输出像素块的输出是打包的输出像素506。加速器单元410B的减法器块的输出耦合到输出处理器元件404的打包新误差块的输入和误差过滤器(偶数)块的输入。加速器单元410A的加法器块的输出耦合到输出处理器元件404的打包新误差块的输入以及误差过滤器(奇数)块的输入。打包新误差块的输出耦合到误差缓冲器502的输入。以下陈述图5的框图的操作的更详细描述。图6示出根据本发明的某些实施例用于基于误差扩散的图像处理的流程图。具体地,图6包括示出根据本发明的某些实施例的图5所示的图像信号处理器400的操作。在框602中,接收图像的像素。参考图5的实施例,输入处理器元件402的解包输入像素块可接收图像的像素。在某些实施例中,可从不同的图像信号处理器400、存储器或输入/输出装置(诸如传感器)接收像素。例如,可从基于数据驱动的操作的这些组件中的一个接收像素(如上所述)。在某些实施例中,图像可以是连续色调的数字图像。控制在框604处继续。在框604中,在重叠的时间上,对一个以上像素执行误差扩散。换言之,对于一个像素的误差扩散的执行时间与对于一个或多个其它像素的误差扩散的执行时间重叠。参考图5的实施例,输入处理器兀件402、加速器单兀410A-410B、处理器兀件406A和输出处理器元件404的不同块可执行这些操作。以下结合图7的描述阐明这些操作的更详细描述。图7示出根据本发明的某些实施例的用于由图像信号处理器中的多个元件执行的基于误差扩散的图像处理的操作表。图7示出表700,它阐明了输入处理器单元402、加速器单元410A-410B、处理器元件406A和输出处理器元件404相对于彼此的操作。更具体地,表700示出对于一个以上像素的误差扩散的部分并行的执行。换言之,对于一个像素的误差扩散的执行与对于一个或多个其它像素的误差扩散的执行部分地并行。列可以表示这些操作的定时。因此,同一列中的操作至少部分地同时执行。在第一时间点(列702)处,输入处理器`元件402和加速器单元410A可执行操作。输入处理器元件402的解包误差可从误差缓冲器502的前一行读入两个中间误差值。具体地,解包误差块可从误差缓冲器502读入(偶数像素的eC)和(奇数像素的eC)。部分并行地,加速器410A的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eA。误差过滤器(偶数)块可对偶数像素计算(l*eA)并在该计算完成后通知处理器元件406A。在第二时间点处(列704),输入处理器元件402、加速器单元410A和处理器元件406A可执行操作。输入处理器元件402的解包误差块可解包偶数像素和奇数像素的误差值eC。部分并行地,加速器单元410A的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eB。误差过滤器(偶数)块可对偶数像素计算(5*eB)并在该计算完成后通知处理器元件406A。部分并行地,处理器元件406A可将eB的值加载到eA。另外,处理器元件406A可在该加载操作完成后通知加速器单元410B的误差过滤器(奇数)块。如上所述,当前像素的eB是下一像素的eA。因为加速器单元410A已完成对偶数像素的eA的使用,因此这一值可用奇数像素的eA(偶数像素的eB)来盖写。在第三时间点(列706)处,输入处理器元件402、加速器单元410A、处理器元件406A和加速器单元410B可执行操作。输入处理器元件402的打包输入像素块可读入两个输入像素⑦丨-和!^ )。部分并行地,加速器单元410A的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eC。误差过滤器(偶数)块可对偶数像素计算(5*eC)。部分并行地,处理元件406A可将eC的值加载到eB。另外,处理器元件406A可在该加载操作完成后通知加速器单元410B的误差过滤器(偶数)块。另外,部分并行地,加速器单元410B的误差过滤器块可从处理器元件406A的误差高速缓存接收eA。误差过滤器(偶数)块可对奇数像素计算(l*eC)并在该计算完成后通知处理器元件406A。在第四时间点(列708)处,输入处理器元件402、加速器单元410A、处理器元件406A和加速器单元410B可执行操作。输入处理器元件402的解包输入像素块可解包两个输入像素(P 和P奇数)。输入处理器元件402可将输入像素(Ρ_^Ρ )分别转发到加速器单元410Α的误差过滤器(偶数)块和加速器单元410Β的误差过滤器(奇数)块。部分并行地,加速器单元410Α的误差过滤器(偶数)块可从处理器元件406Α的误差高速缓存接收eD。误差过滤器(偶数)块可对偶数像素计算(7*eC)。部分并行地,处理器元件406A可将eB的值加载到eA。另外,部分并行地,加速器单元410B的误差过滤器(奇数)块可从处理器元件406A的误差高速缓存接收eB。误差过滤器(偶数)块可对奇数像素计算(5*eC)并在该计算完成后通知处理器元件406A。在第五时间点(列710)处,加速器单元410A、处理器元件406A和加速器单元410B可执行操作。加速器单元410A的误差过滤器(偶数)块可计算偶数像素的误差值。具体地,误差过滤器(偶数)块可将来自周围像素的所计算的分数误差值(l*eA、5*eB、3*eC和7*eD)加在一起并将结果除以16。部分并行地,处理器元件406A可将eC的值加载到eB。部分并行地,加速器单元410B的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eC。误差过滤器(奇数)块可对奇数像素计算(3*eC)。另外,在读入当前的两个输入像素后的某点处,输入处理器元件402的解包输入像素块可读入下两个输入像素。在第六时间点(列712)处,加速器单元410A和加速器单元410B可执行操作。加速器单元410A的误差过滤器(偶数)块可开始计算对下一未处理像素(下一偶数像素)的误差扩散。误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eA。误差过滤器(偶数)块可对偶数像素计算(l*eA)并在该计算完成后通知处理器元件406A。部分并行地,误差过滤器(奇数 )块可计算用于偶数像素的阈值。参考图5,误差过滤器(奇数)块可执行代码块1606中所示的阈值操作。参考图5,用于加速器单元410B的比较块可确定偶数像素的累加值是否大于来自阈值输出507的阈值。来自比较块的输出可以是二进制值(O或I),取决于偶数像素的累加值是否超过阈值(如图4的代码块406所示)。在第七时间点(列714)处,加速器单元410A、处理器元件406A、加速器单元410B和输出处理器元件404可执行操作。误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eB。误差过滤器(偶数)块可对下一偶数像素计算(5*eA)并在该计算完成后通知处理器元件406A。部分并行地,处理器元件406A可将eB的值加载到值eA。另外,处理器元件406A可在该加载操作完成后通知加速器单元410B的误差过滤器(奇数)块。部分并行地,加速器单元410B的误差过滤器(奇数)块可执行对于偶数像素的误差计算。参考图2,误差过滤器(奇数)块可执行代码语句208中所示的误差计算操作。加速器单元410B的减法器块可确定实际值(累加值)和输出值(O或I)之差。该误差值(偶数)508被输入到加速器单元410B的误差过滤器(奇数)块。在第八时间点(列716)处,加速器单元410A、处理器元件406A、加速器单元410B和输出处理器元件404可执行操作。加速器单元410A的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eC。误差过滤器(偶数)块可对下一偶数像素计算(3*eC)。部分并行地,处理器元件406A可将eC的值加载到eB。另外,处理器元件406A可在该加载操作完成后通知加速器单元410B的误差过滤器(奇数)块。部分并行地,加速器单元410B的误差过滤器(奇数)块可对奇数像素计算(7*eD)。部分并行地,输出处理器元件404的打包输出像素块可打包偶数像素的值(从加速器单元410B的比较块接收)。打包的输出像素块可输出该值作为打包的输出像素506。在第九时间点(列718)处,加速器单元410B和输出处理器元件404可执行操作。加速器单元410B的误差过滤器(奇数)块可计算奇数像素的误差值。具体地,误差过滤器(奇数)块可将来自周围像素的所计算的分数误差值(l*eA、5*eB、3*eC和7*eD)加在一起并将结果除以16。部分并行地,输出处理器元件404的打包新误差块可用偶数像素的该新误差值来更新误差缓冲器502。在第十时间点(列720)处,加速器单元410A和加速器单元410B可执行操作。加速器单元410A的误差过滤器(偶数)块可计算用于奇数像素的阈值。参考图5,误差过滤器(奇数)块可执行代码块1606所示的阈值操作。用于加速器单元410B的比较块可确定奇数像素的累加值是否大于来自阈值输入507的阈值。来自比较块输出可以是二进制值(O或I),取决于奇数像素的累加值是否超过阈值(如图2的代码块206所示)。另外,部分并行地,加速器单元410B的误差过滤器(奇数)块可从处理器元件406A的误差高速缓存接收eA。误差过滤器(偶数)块可对下一偶数像素计算(l*eA)并在该计算完成后通知处理器兀件406A。在第^^一时间点(列722)处,加速器单元410A、处理器元件406A、加速器单元410B和输出处理器元件404可执行操作。加速器单元410A的误差过滤器(偶数)块可执行对于偶数像素的误差计算。参考图2,误差过滤器(奇数)块可执行代码语句208所示的误差计算操作。加速器单元410B的减法器块可确定实际值(累加值)和输出值(O或I)之差。该误差值(奇数)510被输入到加速器单元410B的误差过滤器(偶数)块。部分并行地,处理器元件406A可将eB的值加载到eA并在该计算完成后通知处理器元件406A。部分并行地,加速器单元410B的误差过滤器(奇数)块可从处理器元件406A的误差高速缓存接收eB。误差过滤器(偶数)块可对下一奇数像素计算(5*eB)并在该计算完成后通知处理器元件406A。部分并行地,输出处理器元件404的打包输出像素块可打包奇数像素的值(从加速器单元410A的比较块接收)。打包输出像素块可输出该值作为打包的输出像素506。在第十二时间点(列724)处,加速器单元410A、处理器元件406A和输出处理器元件404可执行操作。加速器单元410A的误差过滤器(偶数)块可从处理器元件406A的误差高速缓存接收eD。误差过滤器(偶数)块可对下一偶数像素计算(7*eD)。处理器元件406A可将eC的值加载到eB并在该加载操作完成后通知加速器单元410B的误差过滤器(奇数)块。部分并行地,输出处理器元件404的打包新误差块可用奇数像素的新误差值来更新误差缓冲器502。 某些实施例可包含误差扩散操作以在具有有限色彩(色调)范围的输出装置(诸如打印机、屏幕等)上输出连续色调的数字图像。某些实施例可用于部分并行地对一个以上像素执行误差扩散。如所述,某些实施例允许处理器保持由至少部分非顺序或同时处理多个像素占用的多个执行引擎。此外,在多个像素的这种处理期间,某些实施例共享来自周围像素的中间误差值。因此,如所述,这种图像像素的并行处理可继续直到处理了图像中的所有像素。本文所述的误差扩散操作可在多个不同的环境中操作,现在描述根据某些实施例的用于执行这些操作的处理器架构。具体地,图8示出根据本发明的某些实施例用于执行误差扩散操作的处理器架构。图8示出根据本发明的某些实施例用于数据驱动的架构中的处理器-处理器通信的系统。图8示出包括被耦合以从传感器816接收输入数据流818的图像处理器802的系统800。尽管传感器816可以是不同的类型,但在一个实施例中,传感器816是电荷耦合器件(CCD)传感器。在一个实施例中,传感器816是互补金属氧化物半导体(CMOS)传感器。传感器816扫描并数字化图像,从而产生输入数据流818。例如,在一个实施例中,系统800被嵌入在扫描并处理图像(诸如文档、照片等)的扫描仪中。 在一个实施例中,图像处理器802具有数据驱动的架构,其中图像处理器802中的不同元件之间数据的发送和接收驱动其中的操作的执行。换言之,当必要的数据可用于执行时,图像处理器802的元件内的给定操作开始。图像处理器802耦合到存储器804A-804B。在一个实施例中,存储器804A-804B是不同类型的随机存取存储器(RAM)。例如,存储器804A-804B是双数据率(DDR)同步动态RAM(SDRAM)。如以下详细描述的,图像处理器802中的元件将关于图像处理的数据存储在存储器804A-804B中。为了说明起见,图像处理器802中的处理元件可将第一图像处理操作的结果存储在存储器804A-804B的一个中,该结果随后被图像处理器802中的不同处理器元件检索以执行第二图像处理操作。图像处理器802耦合到总线814,在一个实施例中,总线814可以是外围部件接口(PCI)总线。系统800还可包括存储器806、主机处理器808、多个输入输出(I/O)接口810以及网络接口 812。主机处理器808耦合到存储器806。存储器806可以是不同类型的RAM (例如,同步动态RAM(SDRAM)、DRAM、DDR-SDRAM等),尽管在一个实施例中,主机处理器808可以是不同类型的通用处理器。I/O接口 810提供到系统800的I/O设备或外围组件的接口。I/O接口 810可包括任何适当的接口控制器以提供到系统800的不同组件的任何适当的通信链路。用于一个实施例的I/O接口 810提供用于多种接口之一的适当的仲裁和缓冲。对于一个实施例,I/O接口 810提供到诸如硬盘驱动器(HDD)或光盘只读存储器(CD ROM)驱动器之类的一个或多个适当的集成驱动电子设备(IDE)驱动器的接口,以通过一个或多个USB端口、音频编码器/解码器(编解码器)以及调制解调器编解码器来将数据和/或指令存储在例如一个或多个适当的通用串行总线(USB)装置上。用于一个实施例的I/O接口 810还通过一个或多个端口提供到键盘、鼠标、诸如打印机之类的一个或多个适当装置的接口。网络接口 812提供通过多种通信网络(因特网、内联网、基于以太网的网络等)之一到一个或多个远程装置的接口。主机处理器808、I/O接口 810以及网络接口 812通过总线814与图像处理器802耦合在一起。如以下进一步描述的,主机处理器808中执行的指令将图像处理器802配置成用于不同类型的图像处理。例如,主机处理器808在图像处理器802中的不同处理器元件之中建立多个不同的逻辑连接。此外,主机处理器808可将微码下载到图像处理器并检查其中的不同组件的状态。为了说明起见,现在将描述图像处理器802的一个实施例的更详细描述。在本说明书中,陈述了众多具体细节。然而,应理解本发明的实施例可在没有这些具体细节的情况下实施。在其它实例中,没有详细示出公知的电路、结构和技术以免模糊对本说明书的理解。陈述了诸如逻辑实现、操作码、描述操作数的方式、资源划分/共享/复制实现、系统组件的类型和相互关系以及逻辑划分/集成选择等众多细节,以提供对发明主题的更彻底理解。然而,本领域的技术人员将意识到本发明的实施例可在没有这些具体细节的情况下实施。在其它实例中,没有详细示出控制结构、门电平电路和完全软件指令序列以免使本发明的实施例晦涩。本领域的普通技术人员利用所包括的描述能在没有不适当的实验的情况下实现适当的功能。说明书中对“一个实施例”、“一实施例”、“示例实施例”等的引用指示所描述的实施例可包括特定的特征、结构或特性,但每一个实施例可以不一定要包括该特定特征、结构或特性。此外,这些短语不一定都指同一实施例。此外,当结合一实施例描述特定特征、结构或特性时,认为不管是否明确描述,结合其它实施例实现这些特征、结构或特性在本领域技术人员的知识内。本发明的实施例包括可被包含在由机器可读介质提供的机器可执行指令内的特征、方法或过程。机器可读介质包括提供(即,存储和/或发送)可由机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一个或多个处理器的组的装置等)访问的形式的信息的任何机制。在一个示例性实施例中,机器可读介质包括易失性和/或非易失性介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存装置等)、以及电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)。这些指令用于使得用指令编程的通用或专用处理器执行本发明的实施例的方法和过程。或者,本发明的实施例的特征和操作由包含用于执行操作的硬连线逻辑的特定硬件组件,或由编程的数据处理组件和特定硬件组件的任何组合来执行。本发明的各实施例包括本文中进一步描述的软件、数据处理硬件、数据处理系统实现的方法以及各种处理操作。多个附图示出根据本发明的某些实施例的用于基于误差扩散的图像处理的系统和装置的框图。多个附图示出了说明根据本发明的某些实施例的基于误差扩散的图像处理的流程图。参考框图中所示的系统/装置描述了流程图的操作。然而,应理解,流程图的操作可由除参考框图讨论的以外的系统和装置的实施例来执行,并且参考系统/装置讨论的实施例可执行与参考流程图讨论的操作不同的操作。鉴于对本文所述的实施例的各种各样变换,该详细描述仅仅是说明性的,并且不应理解为限制发明主题的范围。因此,要求保护的是落入所附权利要求书及其等价技术方案的范围和精神内的所有这些修改。因此,说明书和附图被视为说明性而不是限制的意思。
权利要求
1.一种装置,包括: 图像信号处理器,所述图像信号处理器包括: 第一加速器单元,基于来自周围像素的分数误差值对图像的第一像素执行误差扩散操作的至少一部分;以及 第二加速器单元,基于来自周围像素的分数误差值,与所述第一加速器单元的所述误差扩散操作部分并行地,对所述图像的第二像素执行误差扩散操作的至少一部分,其中对第二像素的误差扩散操作包括计算从周围像素导出的误差扩散的误差值用于分配到第二像素。
2.如权利要求1所述的装置,其特征在于,所述图像是近似连续色调的数字图像。
3.如权利要求1所述的装置,其特征在于,作为对于所述第一像素的误差扩散操作的一部分,所述第一加速器单元基于来自所述周围像素的分数值更新所述第一像素的值。
4.如权利要求3所述的装置,其特征在于,作为对于所述第二像素的误差扩散操作的一部分,所述第二加速器单元基于来自所述周围像素的分数值更新所述第二像素的值。
5.如权利要求4所述的装置,其特征在于,作为对于所述第一像素的误差扩散操作的一部分,所述第二加速器单元基于所述第一像素的更新值和一阈值之间的比较来生成用于所述第一像素的输出值。
6.如权利要求5所述的装置,其特征在于,作为对于所述第一像素的误差扩散操作的一部分,所述第二加速器单元计算所述第一像素的输出值和原始值之差。
7.如权利 要求4所述的装置,其特征在于,作为对于所述第二像素的误差扩散操作的一部分,所述第一加速器单元基于所述第二像素的更新值和一阈值之间的比较来生成所述第二像素的输出值。
8.如权利要求7所述的装置,其特征在于,作为对于所述第二像素的误差扩散操作的一部分,所述第一加速器单元计算所述第二像素的输出值和原始值之差。
9.一种方法,包括: 使用图像信号处理器来执行: 在所述图像信号处理器的输入处理器元件处接收图像的多个像素,所述多个像素中的每一个像素都彼此相邻;以及 在重叠的时间上执行对所述多个像素的误差扩散,其中所述误差扩散包括: 在重叠的时间上计算从周围像素导出的两个或更多的误差值,用于分配到所述图像的多个像素;以及 共享相邻像素的中间误差值,用于在重叠的误差扩散操作中计算两个或更多的误差值时使用。
10.如权利要求9所述的方法,其特征在于,在重叠的时间上执行对所述多个像素的误差扩散包括:在重叠的时间上将分数误差值分配到所述多个像素。
11.如权利要求10所述的方法,其特征在于,所述分数误差值是基于Floyd-Steinberg误差过滤器来计算的。
12.如权利要求9所述的方法,其特征在于,还包括输出到具有小于所述图像的色彩范围的色彩范围的设备。
13.—种系统,包括:电荷耦合器件传感器,捕捉近似连续色调图像;以及 图像信号处理器,包括: 输入处理器元件,接收所述近似连续色调图像的第一像素和第二像素; 第一加速器单元,基于来自周围像素的分数误差值执行对于所述第一像素和所述第二像素的误差扩散的操作; 第二加速器单元,基于来自周围像素的分数误差值,在与所述第一加速器单元的操作重叠的时间上执行对于所述第一像素和所述第二像素的误差扩散的操作,其中对第一像素和第二像素的误差扩散操作包括:计算从周围像素导出的误差扩散的误差值用于分配到第一像素和第二像素;以及 输出处理器元件,在所述误差扩散后将所述第一像素和所述第二像素的输出值输出到输出装置,所述输出装置具有小于所述近似连续色调图像的色彩范围的色彩范围。
14.如权利要求13所述的系统,其特征在于,对于所述第一像素的误差扩散操作,所述第一加速器单元基于来自所述周围像素的分数误差值更新所述第一像素的值。
15.如权利要求14所述的系统,其特征在于,作为对于所述第二像素的误差扩散操作的一部分,所述第二加速 器单元基于来自所述周围像素的分数误差值更新所述第二像素的值。
全文摘要
一个实施例包括一种方法,该方法包括接收图像的一个以上像素。该方法还包括在重叠的时间上执行对于该一个以上像素的误差扩散。
文档编号H04N1/405GK103179321SQ20131005201
公开日2013年6月26日 申请日期2005年12月13日 优先权日2004年12月14日
发明者E·罗伯茨 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1