具体实施方式
图1为本发明的系统方区块图,用来将外部所输入的多级影像10(multi-level image)转换为两级影像70(bi-level image),其主要的功能方区块包括:
影像分割单元20,用以对外部所输入的多级影像进行分割处理,可将多级影像分割为多个大小相同的区块(block)且每个区块中均包含有许多的像素。
分割后的每个区块将被各自赋予一个固定的位置条件(i,j)。举例来说,若影像分割单元20将多级影像分割为m*n个区块,则依照x轴向由左至右,y轴向由上至下的处理顺序,各个区块的对应位置条件分别为(1,1)至(m,n),参考图3。
运算区块处理单元30,负责依照处理顺序(即x轴向由左至右,y轴向由上至下的顺序)自影像分割单元20中读取区块进行处理。
在运算区块处理单元30中包含有决定运算区块范围以及计算区块对应的总误差值(BEsum)的逻辑规则。其主要根据所读取进来的区块的位置条件(i,j),来决定所需用来运算总误差值的运算区块范围有哪些?进而计算出目前区块所对应的总误差值(BEsum)。
总像素处理单元40,包含决定总像素范围的逻辑规则,主要负责将先前运算区块处理单元30所运算得到的总误差值(BEsum)加入到区块中的对应总像素范围中。其决定总像素范围的方式,主要也是根据区块的位置条件(i,j)来决定,决定之后便负责将区块所对应的总误差值加入到总像素范围中。
误差扩散处理单元50,则是负责用来执行区块中各像素的误差扩散运算,以决定各个像素所应该具有的两级输出结果并加以储存,此部分属于现有技术的部分,故在此不多作叙述。
除了对区块中各个像素进行误差扩散处理之外,为了能够继续进行后续对其它区块所需的总误差值的计算,在此误差扩散处理单元50还同时必须计算目前区块的平均误差值(BE)并加以储存。
平均误差值(BE)的计算方式如下:
区块中所有像素在误差扩散运算后所累积的扩散误差值的总和/区块中所有像素数目总和。
而其中有关扩散误差值的计算规则如下:
当处理中的像素的像素值大于128时,扩散误差值为像素值-255;而当处理中的像素的像素值小于128时,则此时直接以像素的像素值作为扩散误差值。
储存单元60,用来储存前面所提到由误差扩散处理单元50所产生的两级输出结果及平均误差值(BE)。
事实上,储存单元60也可以用来暂存由影像分割单元20所分割出来的区块。若采取此法,则运算区块处理单元30便必须从储存单元60中来读取所需的区块数据。
当所有区块均完成处理之后,便可自储存单元60中输出转换后的两级影像。
图2为本发明方法的流程图。实际的操作步骤包括:
首先分割多级影像为多个大小相同的区块,同时赋予每个区块一个固定的位置条件(i,j),并且在每个区块中均包含有多个像素(步骤100)。
依照设定的处理顺序读取区块开始进行处理。此时先根据区块的位置条件(i,j)来决定其所需的运算区块范围,然后以决定的运算区块范围来计算目前区块所对应的总误差值(BEsum)(步骤200)。
接着,同样根据区块的位置条件(i,j)来决定目前区块所应该要调整的总像素范围,然后再将区块所对应的总误差值加入到总像素范围之中(步骤300)。
最后,执行目前区块中各像素的误差扩散运算来决定各像素的两级输出结果并加以储存(此部分属于现有技术内容),并计算目前区块所具有的平均误差值(BE)并加以储存,以便后续进行其它区块处理时可用来计算总误差值(步骤400)。
每个区块将进行上述步骤200至步骤400的流程才算完成,每完成一个区块的处理之后,便进一步判断是否仍有未处理的区块?(步骤500),如果有,则重新回到步骤200处继续读取下一个区块进行处理,否则表示已经完成将多级影像转换为两级影像的过程,此时便可以将完整的两级影像输出,结束整个流程步骤。
有关本发明操作上的各种逻辑规则,参考图4的部分,此为较佳实施例其中之一的状况,主要说明不同区块位置条件(i,j),所决定的运算区块范围和总像素范围的可能变化情形,以及说明其总误差值的计算原则,进一步说明如下:
其中,位置条件与运算区块范围的操作逻辑规则关系如下:
当i=1,j=1时,运算区块范围为区块位置(1,1),如图5a所示。
当i=1,j=2时,运算区块范围为区块位置(1,1)及(1,2),如图5b所示。
当i=1,j=3时,运算区块范围为区块位置(1,1)、(1,2)及(1,3),如图5c所示。
当i=1,j≠1,2,3时,运算区块范围为区块位置(1,1)、(1,2)及(1,3),如图5d所示。
当i≠1,j=1时,运算区块范围为区块位置(i-1,j)、(i-1,j+1)及(i-1,j+2),如图5e所示。
而总误差值(BEsum)的计算规则如下:
当i=1,j=1时,总误差值(BEsum)为BE(1,1)*3,如图5a所示。
当i=1,j=2时,总误差值(BEsum)为BE(1,1)+BE(1,2)*2,如图5b所示。
当i=1,j=3时,总误差值(BEsum)为BE(1,1)+BE(1,2)+BE(1,3),如图5c所示。
当i=1,j≠1,2,3时,总误差值(BEsum)为A*BE(1,1)+B*BE(1,2)+C*BE(1,3),如图5d所示。
当i≠1,j=1时,总误差值(BEsum)为A*BE(i-1,j)+B*BE(i-1,j+1)+C*BE(i-1,j+2),如图5e所示。
其中,BE为所谓的平均误差值。
而位置条件与总像素范围的操作逻辑规则的关系如下:
当i=1,j=1时,总像素范围为最后四位,如图5a所示。
当i=1,j=2时,总像素范围为最前四位及最后四位,如图5b所示。
当i=1,j=3时,总像素范围为最前四位及最后四位,如图5c所示。
当i=1,j≠1,2,3时,总像素范围为最前四位及最后四位,如图5d所示。
当i≠1,j=1时,总像素范围为最后四位,如图5e所示。
在上述的操作逻辑规则中,我们是针对区块位置条件是属于第一行、第一列以及第一列前三个区块等特殊区块的部分提出了对应的处理原则。
而对于其它非特殊位置条件的区块(当i≠1,j≠1,2,3时),我们则提出下列对应的处理原则,进一步说明如下:
此时,此类位置条件的区块的运算区块范围有两个部分,如图5f所示,分别为:
(a1)区块位置(i-1,j-1)、(i-1,j)及(i-1,j+1);及
(b1)区块位置(i-1,j)、(i-1,j+1)及(i-1,j+2)。
因此,其总误差值(BEsum)也依照不同的运算区块范围而计算方式如下:
(a2)A*BE(i-1,j-1)+B*BE(i-1,j)+C*BE(i-1,j+1);及
(b2)A*BE(i-1,j)+B*BE(i-1,j+1)+C*BE(i-1,j+2)。
其中A、B及C同样为权重值(在本发明较佳实施例中,A为1/55、B为1/85及C为1/95,只此部分可以依照实际操作需求作适当的调整改变,并不以此为限)。
至于此区块对应的总像素范围,则同样也包含两个部分,分别为:(a3)最前四位;及
(b3)最后四位。
由此可知,对于一般位置条件的区块而言,其具有两个不同的运算区块范围,所以将会产生两种不同的总误差值,并且总像素范围也不同。(也即a1的运算区块范围用来计算出a2的总误差值并加入到a3的总像素范围中;b1的运算区块范围用来计算出b2的总误差值并加入到b3的总像素范围中)
前述所提到的“最前四位”指的是在区块中每一列最前面四个像素;而“最后四位”所指的则是在区块中每一列最后面四个像素。
经过本发明系统与方法的操作,确实能够以区块(block)读取方式来取代传统误差扩散影像处理(error-diffusion)的整列式(row)读取方式,达到节省内存空间以及提升运算效率,并且有效的解决以区块处理方式进行误差扩散影像处理时所造成的间断处(gap)问题。
参考图6a及图7a的部分,在图式中可以发现若单纯仅以区块处理方式而未针对各个区块进行改良的运算处理时,将会在输出的两级影像中出现诸多的间断处600(gap),影响到数字影像输出的质量,反之参考图6b及图7b的部分,则是通过本发明进一步所提出的技术方案改良后的误差扩散影像处理结果,经过操作之后可明显发现原本存在的间断处600均已经消失不见,达到完整将多级影像转换为两级影像的目的功效。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。