具体实施方式
下面将参照附图详细说明本发明的优选实施例,在下面的说明中,为了简明说明本发明,省略了对于公知的功能和配置的说明。
本发明提供了一种图像按比例缩放的方法,用于放大或缩小图像,如图2所示,其中源图像和目标图像根据缩放比例在横向和纵向上被划分为用于每一边的相同数量的单元,并且在划分的单元上一个一个地连续地进行缩放处理。在本发明中划分的单元被称为“最小处理单元”,并且用每个边为源图像的一个最小处理单元的长度的正方形定义的块称为“最小处理块”。最小处理单元的尺寸是通过在每个横向和纵向中的源图像和目标图像的最大公约数确定的。
图2示出了向下按比例缩放的例子,即,将如图2(a)所示的尺寸为242×198的图像缩小到如图2(b)所示的尺寸为176×144的图像。因为242和176的最大公约数是22,所以图2(a)的源图像和图2(b)目标图像的横向边被划分为22个最小处理单元。因为198和144的最大公约数是18,所以图2(a)的源图像和图2(b)目标图像的纵向边被划分为18个最小处理单元。源图像的最小处理单元包括11个像素,并且目标图像的最小处理单元包括8个像素。源图像的最小处理块的尺寸为11×11,并且目标图像的最小处理块的尺寸为8×8。因此,源图像和目标图像被划分成为相同数量的最小处理块,即22×18,尽管两个图像的每个最小处理块的尺寸彼此不相同。较小的最小处理块的尺寸比较好,并且尺寸可以根据缩放比例而不同。最好的情况是,2×2,并且最糟糕的情况是有着与目标图像一样的尺寸。在最好的情况下,缩放比例是2或0.5倍,而最坏的情况意味着不能找到源图像和目标图像的最大公约数。
在本发明中,加权值是由对应于在两个相邻的源图像的像素之间的被均匀划分的点的整数定义的,并且是在0-2n范围中的值,并且两个像素的加权值的和是2n。这里,n是自然数,并且在下面的说明中也是同样的。加权值是源图像值乘以的值,对应于在源图像像素和目标像素之间的距离,反映在从源图像生成的目标图像的像素值中。如果将两个相邻的像素之间的间隔分为最多的点,则加权值可以被再分成最大的值,根据图像按比例缩放的处理过程可以更加精确地执行,并且目标图像的图像质量可以提高,但是处理过程的计算量会增加。此外,n值越高,加权值能够被再分成越大的值,根据图像按比例缩放的处理过程可以更加精确地执行,并且目标图像的图像质量可以提高,但是处理过程的计算量会增加。因此,n值可以根据采用本发明的图像按比例缩放技术的嵌入式***所要求的图像的精确度,即目标图像要求的图像质量来确定。在本发明的发明人的实验结果中,10是适合IMT-2000终端、PDA和类似装置中的n值,并且8是适合PC(个人计算机)中的n值。
图3示出了一个示例,其中两个像素Pa和Pb之间的间隔被8除,10被选定为n值,并且加权值对应于到作为两个像素Pa和Pb的标准像素的Pa的距离。这里,因为210=1024,所以像素Pa的1/8点的加权值是128(=1024×1/8),2/8点的加权值是256(=1024x×2/8),等等,并且8/8点的加权值是1024(=1024x×8/8)。即使像素Pa的1/8点的加权值是128,7/8的加权值是896。在两个像素Pa和Pb之间的其他点可以通过上述的同样的方法获得,并且在两个像素Pa和Pb之间的加权值的和是1024。
加权值可以通过下面的等式获得,并且本发明说明了图3a中示出的将两个相邻的像素之间的间隔划分成为8个的情况的示例。
[等式1]
Vw[i]=(integer cast)({Rs×i-(integer cast)(Rs×i)})<<n
在等式1中,i是加权值参数,并且i在上述的情况中是1-8,其中两个相邻的像素之间的间隔被分成8份。Vw[i]是加权值的存储顺序(storage alignment)。Rs是源图像尺寸/目标图像尺寸的比例值。<<n指出了向着最高位的n位移位,并且n-位移位是通过用Rs×i-(integercast)(Rs×i)乘以2n获得的。
例如,当选n为10的时候,在两个相邻的像素之间的加权值的和是210=1024。加权值被选成为在0到1024之间的整数,以便目标图像像素对应于作为生成目标图像像素的处理标准的源图像像素的距离。
图3b示出了当源图像的最小处理单元的尺寸是11,并且目标图像的最小处理单元的尺寸是8的时候,因此,从源图像的11个源图像像素P1-P11生成了目标图像的8个目标像素P1′-P8′。此时,目标像素P1′-P7′是通过根据对应的目的像素的距离反映两个源像素的像素值来生成的,这两个源像素的像素值被反映到对应的目标像素的相邻的像素的像素值上,并且P8′是通过直接移动源像素P11生成的。与上面的情况不同,目标像素P1′-P8′还可以以这样的方式生成,即P1′是通过直接移动源像素P1生成,并且目标像素P2′-P8′是通过根据对应的目的像素的距离反映两个源像素的像素值来生成,这两个源像素的像素值被反映到对应的目标像素的相邻的像素的像素值上。目标像素的像素值,图3b中的P1′-P7′可以通过将相邻的两个源像素的每个像素值乘以加权值,其中加权值代表对应于每个源像素和对应的目标像素之间的距离的值、将两个上述的结果值求和、并向着最低位移位n-位来生成。
如果数字图像中的一个像素值包括8-位数据,则像素值是0-255范围中的一个值,并且目标图像的最小处理单元的尺寸是8,根据等式1的加权值示于表2中,它与图3a和3b一样。但是,Vw[8]是在像素Pb为标准的情况,并且在这种情况下,加权值是0,而不是1024。
[表2]
Vw[1] |
Vw[2] |
Vw[3] |
Vw[4] |
Vw[5] |
Vw[6] |
Vw[7] |
Vw[8] |
384 |
768 |
128 |
512 |
896 |
256 |
640 |
0 |
下面将说明图3b中的示例。目标像素值,P1′从两个源像素P1和P2生成,并且目标像素P1′=(P1×640)+P2×384>>10。这里,>>10指10位向着最低位移位,它试图将(P1×640)+(P2×384)的结果返回到像素具有的值,通过将(P1×640)+(P2×384)的结果除以1024,因为来自等式1的加权值是个向着最高位的10位移位的值,它是乘以1024的结果。生成目标像素P1′可以通过乘以整数加权值、求和、以及移动来实现,并且其他的目标像素P2′-P7′可以以相同的方式获得。目标像素P8′是通过直接移动源像素P11获得的。
因此,根据本发明,目标像素值可以通过使用整数加权值来生成,其中加权值对应于在目标像素值上反映的源像素的距离,并且两个像素之间的加权值的和是2n,以便在嵌入式***中要求的图像的质量被显著提高。此外,与传统的情况不同,本发明的处理过程只包括乘以整数而没有除,并且乘以n或除以n的处理过程可以只通过位移位来进行,能够显著地减少处理过程的数量。
图4示出了本发明的实施例的图像按比例缩放的装置的块图,并且图像按比例缩放装置包括:处理器100,用于处理图像缩放,以及,第一和第二帧存储器102和104,用于存储图像数据,即像素数据。处理器100可以使用采用本发明的嵌入式***的主处理器或可以包括单独的处理器。第一帧存储器102用于存储第一帧的源图像数据和从源图像数据生成的目标图像数据,并且第二帧存储器104用于存储在按比例缩放处理过程中需要的图像数据。
参照图5,它示出了根据本发明的第一实施例的处理器100的图像按比例缩放的流程图,其中第一帧的源图像数据存储在第一帧存储器102中,在步骤200,处理器100根据源图像尺寸与目标图像尺寸的缩放比例确定最小处理单元的尺寸。如上所述,源图像和目标图像的最小处理单元的数量被确定为在源图像和目标图像的横向和纵向上是相同的。
参照图6可以更详细地说明处理器100确定最小单元的处理过程。图6示出了在步骤300-306将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176×144的图像。首先,在步骤300,处理器100将源图像的尺寸Src初始化为242、目标图像尺寸Des为176、Src/Des的比例Rs、以及计数值Count为0。然后,在步骤302-304,技术值Count以1增加,直到Rs乘以Count(Rs×Count)是整数。从而,获得了比例Rs的整数倍,并且获得了整数Rs×Count的最小值。如果比例Rs是242/176=1.375,则整数Rs×Count的最小值是11,并且计数值Count是8。如果获得的整数Rs×Count的最小值是11,则11被确定为源图像的最小处理单元的尺寸,并且在步骤306,计数值Count为确定为目标图像的最小处理单元的尺寸。因此,源图像和目标图像的最小处理单元的尺寸被确定为如图2所示。
在处理器100在步骤200确定了源图像和目标图像的最小处理单元的尺寸后,在步骤202根据等式1获得加权值。现在,将参照图7更详细地说明处理器100获得加权值的处理过程,图7示出了步骤400-408将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176×144的目标图像。
在图7中,在步骤400,处理器100初始化参数i为1,并且以1递增知道参数i等于目标图像的最小处理单元的尺寸,在步骤402-408,以获得根据等式1的加权值并获得源像素参数,该源像素参数用于指定将作为处理过程标准的源像素,该处理过程标准用于如下所述根据index[i]=(integer case)(Rs×i)生成每个目标像素。这里index[i]是源像素参数的存储顺序。获得的加权值如表2所示,并且获得源像素加权值如表3所示。同时,步骤402中示出的等式省略了{Rs×i-(integer cast)(Rs×i)})<<n的结果的整数的选择,与基于{Rs×i-(integer cast)(Rs×i)})<<n的结果的等式1不同,在将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176×144的目标图像时,始终是整数。
[表3]
Index[1] |
index[2] |
Index[3] |
index[4] |
index[5] |
index[6] |
index[7] |
index[8] |
1 |
2 |
3 |
5 |
6 |
8 |
9 |
11 |
在处理器100在步骤202获得加权值并在步骤204根据下面的等式2获得对应于在源图像的像素行的横向上的源图像的最小处理单元的目标图像的每个最小处理单元的目标像素值之后,处理器100在横向上生成按比例缩放的图像。如果源图像如图9(a)所示,则源图像的每个像素行的最小处理单元在横行上被按比例缩放,如图9(b)所示,通过上述的步骤204,以生成目标图像的最小处理单元,并且生成横向按比例缩放的图像。该横向按比例缩放的图像被存储在第二帧存储器104中。
[等式2]
Des[i]={(2n-Vw[i])×Src[Index[i]]+Vw[i]×Src[Index[i+1]]}>>n
在等式2中,i、Vw[i]与等式1中相同,并且Index[i]是(integer cast)(Rs×i),作为源像素参数的存储顺序,Des[i]是目标图像的最小处理单元的存储顺序,并且Src[Index[i]是源图像的最小处理单元的存储顺序。>>n是向着最低位的n位移位,而且该n位移位提供与将{(2n-Vw[i])×Src[Index[i]]+Vw[i]×Src[Index[i+1]]除以2n相同的结果。
为了生成上述的横向按比例缩放的图像,处理器100生成对应于一个源图像的最小处理单元的一个目标图像的最小处理单元的处理过程将参照图8详细说明。
图8示出了在步骤500-506将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176×144的目标图像。首先,在处理器100初始化参数i为1,并且以1递增直到参数i等于目标图像的最小处理单元的尺寸,并且获得根据等式2的目标图像的最小处理单元的目标像素值。因此,在表4中,示出了8个目标图像的最小处理单元的目标像素值。
[表4]
Des[1] |
(640×Src[1]+384×Src[2])>>10 |
Des[2] |
(256×Src[2]+768×Src[3])>>10 |
Des[3] |
(896×Src[4]+128×Src[5])>>10 |
Des[4] |
(512×Src[5]+512×Src[6])>>10 |
Des[5] |
(128×Src[6]+896×Src[7])>>10 |
Des[6] |
(768×Src[8]+256×Src[9])>>10 |
Des[7] |
(384×Src[9]+640×Src[10])>>10 |
Des[8] |
(1024×Src[11]+640×Src[12])>>10 |
这里,Src[1]-Src[11]指出了图3B中的源图像的一个最小处理单元的像素P1-P11中的每一个的像素值。例如,在参照图3b说明前述的示例时,如果说明参照表3从两个源像素P1,P2生成目标像素P1′的情况时,目标像素P1′的像素值,Des[1]=(640×Src[1]+384×Src[2])>>10,这里>>10表示向着最高位的10位移位,它试图将(P1×640+P2×384)的结果返回到像素,通过将(P1×640+P2×384)的结果除以1024,,因为当在上述的步骤402从等式1获得加权值时,等式1算出的加权值是一个向着最高位移位了10位的值。目标像素P8′的像素值Des[8]是0,因为源图像的最小处理单元没有Src[12],并且因此,通过将源像素P11乘以1024并且向着最低为移动10位来获得Des[8],这与直接移动源像素P11的值获得的结果一样。
通过为源图像的每个像素行的横行上的所有的最小处理单元一个一个地连续地重复在步骤502-506进行的生成对应于源图像的一个最小处理单元的目标图像的一个最小处理单元的过程,从而从图9(a)的源图像生成了图9(b)所示的横行上按比例缩放的图像。
当在步骤204,在处理器100生成横行上的按比例缩放的图像后,处理器100通过从等式2为在横向上按比例缩放了的图像的每个像素行获得对应于在纵向上的源图像的最小处理单元的源图像的每个最小处理单元的目标像素值来生成目标图像。生成对应于源图像的最小处理单元的目标图像的一个最小处理单元的处理过程可以通过上述的步骤500-506来进行,与步骤204的方法相同。因此,在步骤206图9(b)中的横行上按比例缩放的图像如图9(c)所示在纵向上被按比例缩放,以便图9(c)所示的图像成为了在横向上和纵向上都被向下按比例缩小了的目标图像。如上所述生成的目标图像代替源图像数据被存储在了第一帧存储器102中。
因此,上述的说明是关于在步骤404生成源像素参数index[i]的,但是,它们还可以在步骤502中获得。但是,步骤502的生成增加了处理过程,因为处理过程需要在步骤502中每次都处理最小处理单元,以便获得源像素参数,并且因此,步骤404更加方便。即,在步骤404生成源像素参数index[i]只要求一个用于一个源图像的处理过程,而不许要很多的在每次处理最小处理单元时的重复的处理过程。
当如上所述按比例缩放图像的时候,第二帧存储器104存储如图6图9(b)所示的在横行上按比例缩放的图像的数据,这需要与上述相同的存储能力。通常,因为上述的嵌入式***缺少存储能力,优选地减少第二帧存储器104的存储容量。如果通过最小处理块的单元从源图像生成目标图像以替代通过首先在横向上按比例缩放所有源图像,然后在纵向上进行,则第二帧存储器104只需要具有目标图像的最小处理块的存储容量。即当缩小时,处理器100开始从源图像的起点以最小处理块为单元存储目标图像。在生成源图像的一个最小处理块的同时,在第二帧存储器104中存储像素的图像数据,并且如果完成了最小处理块的生成,则在第一帧存储器102中存储生成的目标图像的最小处理块的图像数据。对于存储在用于在第一帧存储器102中存储目标图像的最小处理块的图像数据的存储单元中的源图像,因为在完成目标图像的生成后就不需要了,所以目标图像的最小处理块的图像数据可以代替上述的源图像数据存储。但是,在用于放大源图像的向上按比例放大的情况下,不能使用上述的方法,因为目标图像的最小处理块的尺寸大于源图像的最小处理块的尺寸,因此,如果使用上述的方法,则在目标图像生成之前源图像的数据就消失了。考虑到这个问题,处理器100从存储在第一帧存储器102中的源图像的末端开始以最小处理块为单位生成目标图像。在生成目标图像的一个最小处理块的同时,在第二帧存储器104中存储像素的图像数据,并且如果一个对应于最小处理块的生成完成了,则生成的最小处理块从第一帧存储器102的存储单元的末端存储。
对于上述的处理过程,第一帧存储器需要具有至少与放大的目标图像的尺寸一样的存储容量。当源图像的一帧在放大之前存储时,第一帧存储器102在其末端具有与源图像尺寸和目标图像尺寸的差相同的存储能量。如上所述,目标图像是从源图像的末端以最小处理块为单位开始生成的,并且如果生成的最小处理块从第一帧存储器102的空闲的末端开始生成,则源图像数据就不会在目标图像数据生成之前消失了。
图10示出了根据本发明的第二实施例在最小处理块单元中生成目标图像的的图像按比例缩放的方法。处理器100在步骤600根据缩放比例源图像和目标图像的最小处理单元,并且在步骤602从等式1获得加权值。由于步骤600和602与图5中的步骤200和202相同,在此省略了说明。然后,处理器100在步骤604从等式2为源图像的最小处理块的每个像素行获得对应于源图像的最小处理单元的目标图像的每个最小处理单元的目标像素值以便生成在横向上按比例缩放的最小处理块。扫描的最小处理块从源图像的起点在横向上开始生成。当图12(a)示出了源图像时,在步骤604,如图12(b)所示,源图像的最小处理块在横向上被按比例缩放,并且生成了在横行上的按比例缩放的最小处理块。在横向上按比例缩放的最小处理块的数据被存储在第二帧存储器104中。
图11示出了处理器100的处理过程,用于从源图像的一个最小处理单元生成在横向上按比例缩放的一个最小处理块,通过将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176×144的目标图像这个例子来说明,以在上述的步骤604生成在横向上按比例缩放的最小处理块。步骤700-712是关于通过重复图8中的用于生成一个上述的图像数据的最小处理单元的步骤500-506,来生成在横向上按比例缩放的一个与源图像的一个最小处理块具有数量相同的最小处理单元的最小处理块。由于一个最小处理块的最小处理单元的数量是11,与像素行的数量相同,在图11的步骤700到712生成在横向上按比例缩放的一个最小处理块。
在图11中,处理器100在步骤700将计数值Count初始化为0,并且在步骤702选择‘目标图像的最小处理单元的尺寸×Count’作为参数i。然后在步骤704-708,处理器100以1递增参数i直到参数i等于目标图像的最小处理单元的尺寸,与图8的步骤502-506相同,以便根据等式2为目标图像的最小处理单元获得目标像素值。如果参数i与目标图像的最小处理单元的尺寸相同了,即,如果完成了一个最小处理单元的处理过程,则处理器100在步骤710将计数值Count增加1,并且随后在步骤712检测是否计数值Count等于了源图像的最小处理单元的尺寸。如果计数值Count不等于源图像的最小处理单元的尺寸,则处理过程进行步骤702以重复狭义个最小处理单元的处理。如果计数值Count等于了源图像的最小处理单元的尺寸,则完成了在横向上按比例缩放源图像的一个最小处理块的所有最小处理单元的处理过程。
如上所述,如果生成了在横向上按比例缩放的一个最小处理块,则处理器100从等式2在步骤700-712中为在步骤606被在横行上按比例缩放了的最小处理块的每个像素行获得对应于源图像的最小处理单元的目标图像的最小处理单元的目标像素值,与步骤604相同,以生成在横行上和纵向上按比例缩放的最小处理块。如果在横向上按比例缩放的最小处理块与图12(b)中的相同,则在横行上和纵向上按比例缩放的最小处理块,即,在步骤606如图12(c)所示生成一个目标图像的最小处理块。上述的在横向上按比例缩放的最小处理块的数据被存储在上述的第一帧存储器102中。然后,处理器100检测是否在步骤608生成了目标图像的所有的最小处理块,并且如果生成还没有完成,则进行步骤604,并生成下一个最小处理块。
因此,如果第二帧存储器104能够存储在从源图像的一个最小处理块,即,只在横向上按比例缩放了的一个最小处理块,生成目标图像的一个最小处理块的过程中需要的图像数据,则它需要具有至少等于在横向上按比例缩放的一个最小处理块的存储容量。因此,相对于本发明的第一实施例,减少了需要的存储器容量。
根据本发明的第一和第二实施例,嵌入式***需要的图像质量能够被满足并且它们的处理过程只包括乘以整数,与传统的情况不同,传统的情况包括除以的处理过程,并且乘以n或者除以n的处理过程被n位的移动所代替,以便显著地减少处理过程。但是,第一和第二实施例包括通过等式2为每次生成目标图像的目标像素而处理两次,即,一次是当在横向上按比例缩放的时候,并且然后,另一次是在纵向上按比例缩放的时候。从上述的本发明的第一和第二实施例的图中看出,根据如图3b所示的最小处理单元从源图像生成目标图像的处理过程在横向和纵向上重复。即,重复等式2的从11个源象P1-P11生成8个目标像素P1′-P8′,因为如上所述数字图像的像素值是0-255中的一个值,只有整合到处理过程中的值是不同的。通过上面的考虑,可以通过实现准备一个查询表而省略当生成每个目标像素值的时候将源像素乘以加权值的处理过程,查询表是通过将加权值乘以源像素可能具有的例如在0-255的范围的像素值形成的。
图13示出了根据本发明的另一个实施例的图像按比例缩放装置的块图,它是一种使用上述的查询表生成目标图像的装置,并且该图像按比例缩放装置是通过将查询表存储器106加到图4的图像按比例缩放装置来构造的,以在其中存储查询表。处理器100生成查询表,并且如下所述,在执行从源图像生成目标图像之前,存储在查询表存储器106中。
图14示出了根据本发明的第三实施例通过处理器100的图像按比例缩放处理过程的流程图,它采用查询表。首先,处理器100在步骤800根据缩放比例确定源图像和目标图像的最小处理单元。步骤800与上述的图5的步骤200相同,在此省略了其说明。处理器100在步骤802从等式1获得加权值,并且通过将每个加权值乘以每个像素值生成查询表,其中每个像素可以通过等式3获得。
[等式3]
Lookup_Table[i][Table_Index]=(Vw[i]×Table_Index)>>n
在等式3中,i是目标图像的最小处理单元的目标像素的参数,Vw[i]是目标图像的最小处理单元的目标像素的加权值的存储顺序,并且Lookup_Table[i][Table_Index]是包括参数i和每个像素都有的像素值的参数Table_Index的查询表存储顺序。
参照图15,它示出了根据上述的步骤802由处理器100处理查询表的详细的流程图,处理器100在步骤900将参数i初始化为1,并且在步骤902从等式1获得加权值。然后,在步骤906-901,当在步骤902将表参数Table_Index初始化为0之后,将表参数Table_Index以1递增,直至表参数Table_Index超过255,并且从等式3为对应于一个参数值i的一个加权值获得查询表。最后,如果为对应于一个参数值i的一个加权值获得了包括值1-255的查询表,则在与图7的步骤404相同的步骤912获得源图像参数。然后,在步骤914通过检测是否参数i等于目标图像的最小处理单元的尺寸,当参数i还不等于目标图像的最小处理单元的尺寸的时候,在步骤916将参数i增加1,并且上述的处理过程从步骤902开始重复。直到参数i等于目标图像的最小处理单元的尺寸,步骤902-906被重复以生成表5的查询表Lookup_Table[i][Table_Index],并且生成表3的参数顺序,并且它们被存储在查询表存储器106中。
[表5]
Lookup Table[1][1] |
Vw[1]×1>>10 |
Lookup Table[1][2] |
Vw[1]×2>>10 |
Lookup Table[1][3] |
Vw[1]×3>>10 |
... | |
Lookup Table[1][255] |
Vw[1]×255>>10 |
Lookup Table[2][1] |
Vw[2]×1>>10 |
Lookup Table[2][2] |
Vw[2]×2>>10 |
Lookup Table[2][3] |
Vw[2]×2>>10 |
... | |
Lookup Table[2][255] |
Vw[2]×255>>10 |
... | |
Lookup Table[8][255] |
Vw[8]×255>>10 |
这里,表5中的Vw[1]-Vw[8]与表3中的那些一样,Vw[1]×1>>10,Vw[1]×2>>10、Vw[1]×3>>10,……等是通过在查询表中生成进行了乘和移动的值而获得的,并且存储它们,但是在表中仅仅为了方便而表示为等式。
在生成了查询表并且在查询表存储器106中存储之后,处理器100从等式4通过参照表5的查询表为每个对应于在横向上的源图像的每个像素行的源图像的最小处理单元的目标图像的每个最小处理单元获得目标像素值,以便生成在横向上按比例缩放的图像。
[等式4]
Des[i]=Lookup_Table[i+Const][Src[Index[i]]]+Lookup_Table[i][Src[Index[i]+1]]
这里,在等式4中,i是目标图像的最小处理单元的目标像素的参数,Lookup_Table[i][Table_Index]是查询表存储顺序,包括参数的i顺序和一个像素具有的像素值的参数Table_Index;Des[i]是目标图像的最小处理单元的存储顺序;Index[i]是作为标准的用于生成目标像素的源像素参数的存储顺序,并且它等于(integer cast)(Rs×i);并且Const被初始化为1/2如下所述的目标图像的最小处理单元的尺寸,并且如果参数i大于1/2的目标图像的最小处理单元的尺寸,则改变标号。
为了如上所述通过使用上述的查询表生成横向按比例缩放的图像,处理器100的生成对应于源图像的最小处理单元的目标图像的最小处理单元的处理过程将参照图16来更加详细的说明,图16示出了在步骤1000~1010,将图2(a)的尺寸为242×198的源图像缩小为图2(b)的尺寸为176x×144的目标图像。
在图16中,在处理器100将参数i初始化为1,并且将Const值选定为目标图像的最小处理单元的尺寸的1/2,即4,它将参数i以1递增直到参数i等于目标图像的最小处理单元的尺寸,并且根据等式4获得目标图像的最小处理单元的目标像素值。如果参数i大于目标图像的最小处理单元的尺寸的1/2,则在步骤1010改变Const值的标号。因此,获得了如表4所示的目标图像的最小处理单元的8个目标像素值。但是,由于当生成如上所述的查询表的时候,已经进行了源像素值和加权值的乘法以及移位,只要通过将在表5中示出的Lookup_Table[i+Const][Src[Index[i]]的值和Lookup_Table[i][Src[Index[i]+1]]的值相加就可以获得每个目标像素值。
通过为源图像的每个像素行的横行上的所有的最小处理单元一个一个地连续地重复在步骤1000~1010进行的生成对应于源图像的一个最小处理单元的目标图像的一个最小处理单元的过程,从而从图9(a)的源图像生成了图9(b)所示的横行上按比例缩放的图像。
在处理器100从上述的步骤804生成横向按比例缩放的图像后,它在步骤806通过从等式4为横向按比例缩放的每个像素行获得对应于在纵向上的每个源图像的最小处理单元的目标像素值,并且通过参照表5的查询表进行的处理来生成目标图像。正象在步骤804中,对应于一个源图像的最小处理单元的一个目标图像的最小处理单元的生成是在步骤1000~1010中执行的。因此,在步骤806,如图9(b)所示的横向按比例缩放的的图像被在纵向上按比例缩放,如图9(c)所示。如上所述产生的目标图像的数据存储替代源图像的数据而存储在了第一帧存储器102中。
因此,处理器100可以减少处理过程的数量并且其按比例缩放的处理速度可以提高,因为,在生成每个目标像素时,使用了查询表,该查询表是事先通过将像素值乘以加权值生成的,以便可以从等式2省略相乘的处理过程。
源图像的尺寸和目标图像的尺寸通常在嵌入式***中确定,即使尺寸可以通过用户的选择来改变,它也不能每一帧地改变。一旦生成了查询表,只要嵌入式***的电源“打开”,或者源图像和目标图像的尺寸被改变,预先设置的查询表就能够使用。即使在最坏的情形下,它也可以至少用于一帧。如果采用本发明的嵌入式***是这样的,其中源图像和目标图像的尺寸是固定的,即它根据LCD的图像尺寸来显示从标准的视频信号CODEC输出的图像,也不必改变上述的查询表,以便如果制造商在非易失性的存储器中存储查询表,则可以省略上述的查询表的生成处理过程。
采用上述的查询表的用于按比例缩放图像的本发明可以与图10中的本发明的第二实施例结合起来执行,以生成以最小处理块为单位的目标图像。
图17示出了根据本发明的第四实施例用处理器100按比例缩放图像的流程图。在图17中,处理器100在步骤1100根据缩放比例确定源图像和目标图像的最小处理单元,并且当在步骤1102从等式1获得了加权值之后从等式3生成表5中的查询表。因为步骤1100和1101与步骤800和802相同,所以在此省略了其说明。然后,处理器100在步骤1104通过参照表5中的查询表进行处理,从等式4为源图像的最小处理块的每个像素行获得对应于源图像的最小处理单元的目标图像的每个最小处理单元的目标像素值,以便生成在横向上按比例缩放了的最小处理块。处理器100从源图像的起点开始生成在横向上按比例缩放的最小处理单元,如果源图像与图12(a)中的相同,则在步骤1104,源图像的最小处理单元在横向上被按比例缩放,如图12(b)所示,以便生成横向上按比例缩放的最小处理块。如上所述在横向上进行了按比例缩放的最小处理块存储在第二帧存储器104中。
图18示出了在步骤1200到1216,由处理器100进行的,用于从源图像的一个最小处理块生成一个相对应的在横向上按比例缩放了的最小处理块的处理过程,该过程是通过采用将图2(a)中的尺寸为242×198的图像缩小为图2(b)中的尺寸为176×144的图像来示例说明的,以在上述的步骤804生成在横向上按比例缩放的最小处理单元。
步骤1200~1216示出了通过重复参照查询表生成最小处理单元的图像数据的步骤1000~1010来生成在横向上被按比例缩放了的一个最小处理块的步骤,它与源图像的一个最小处理块的最小处理单元的数量相同。
由于一个最小处理块的最小处理单元的数量是11,与像素行的数量相同,所以在图18的步骤1200~1216生成在横向上按比例缩放的一个最小处理块,并且将Const值选定为目标图像的最小处理单元的尺寸的1/2,即4。
在图18中,处理器100在步骤1200将计数值Count初始化为0,并且在步骤1202将参数i的值选定为‘目标图像的最小处理单元的尺寸×Count’。然后,正如图16中的步骤1002~1010,在步骤1204~1212,处理器100以1递增参数i,直到参数i等于目标图像的最小处理单元的尺寸,以便根据等式4通过参照表5的查询表的处理过程获得目标图像的最小处理单元的目标像素值。如果参数i变为与目标图像的最小处理单元的尺寸相同,即,如果完成了一个最小处理单元的处理过程,则处理器100在步骤1214将计数值Count递增1,并且随后在步骤1216检测是否计数值Count等于源图像的最小处理单元的尺寸。如果计数值Count不等于源图像的最小处理单元的尺寸,则处理过程回到步骤1202以处理下一个最小处理单元。如果计数值Count等于源图像的最小处理单元的尺寸,则完成了对于源图像的一个最小处理块的所有最小处理单元在横向上的按比例缩放。
在处理器100生成了在横向上按比例缩放的图像之后,在步骤1106,它在与步骤1104相同的步骤1200~1216中,通过参照查询表的处理过程,从等式4为在横向上按比例缩放了的最小处理块的每个像素行获得对应于源图像的最小处理单元的目标图像的最小处理单元的目标像素值来生成在横向上和在纵向上按比例缩放了的最小处理块。如果横向按比例缩放的最小处理块与图12(b)中的相同,则在步骤1106生成图12(c)中的在横向上和纵向上被按比例缩放了的最小处理块,即目标图像的一个最小处理块。横向上按比例缩放了的一个最小处理块被存储在第一帧存储器104中。然后,在步骤1108,处理器100检测是否生成了所有目标图像的最小处理块,并且,如果生成还没有完成,则进行步骤1104,并生成下一个最小处理块。如果完成了目标图像的所有最小处理块,则流程图的处理过程结束。
因此,使用查询表可以减少处理器100的负担,并且按比例缩放的速度增加了。此外,第二帧存储器104的存储容量可以被减少到等于在横向上按比例缩放了的一个最小处理块的尺寸。
此外,将在下面采用将图2(a)中的尺寸为242×198的图像缩小为图2(b)中的尺寸为176×144的图像来示例说明采用查询表通过使用ANSI(美国国家标准化组织)-C语言来在横向上缩小图像的程序。与图3b不同,下面的程序是一个通过使用用于目标像素值P1′的源像素值P1,以及在其余的目标像素P2′~P8′的像素值上反映的两个相邻的源像素的像素值生成的示例
for(i=0;i<198;i++)for(j=0;j<22;j++){scr Index=i*242+j*11);des Index=i*176+j*8);des[des Index]=src[src Index];des[des Index+1]=tb375src[src Index+2]+tb625[src[src Index+1]];des[des Index+2]=tb750src[src Index+3]+tb250[src[src Index+2]];des[des Index+3]=tbl25src[src Index+5]+tb875[src[src Index+4]];des[des Index+4]=(src[src Index+5]+src[src Index+6])>>1;des[des Index+5]=tb125src[src Index+6]+tb875[src[src Index+7]];des[des Index+6]=tb750src[src Index+8]+tb250[src[src Index+9]];des[des Index+7]=tb375src[src Index+9]+tb625[src[src Index+10]];}
即,通过处理整个像素的像素行,生成了242个像素中的176个像素,并且通过重复地处理最小处理单元22次,完成处理过程。如果通过移位和OR将4个像素值存储为32位,则如上所述,当在横向上进行上述处理过程时,作为处理结果的像素值是横向相邻的像素的像素值,可以提高效率。
如上所述,下面将用ANSI-C语言说明使用查询表在纵向上缩小在横向上被按比例缩放了的图像的程序。for(i=0;i<18;i++)for(j=0;j<176;j++){scr Index=i*11*176+j;des Index=i*8*176+j;des[des Index]=src[src Index];des[desIndex+1*176]=tb375src[srcIndex+2*176]+tb625[src[src Index+1*176]];des[des Index+2*176]=tb750src[src Index+3*176]+tb250[src[src Index+2*176]];des[des Index+3*176]=tb125src[src Index+5*176]+tb875[src[src Index+4*176]];des[des Index+4*176]=(src[src Index+5*176]+src[src Index+6*176])>>1;des[des Index+5*176]=tb125src[src Index+6*176]+tb875[src[src Index+7*176]];des[des Index+6*176]=tb750src[src Index+8*176]+tb250[src[src Index+9*176]];des[des Index+7*176]=tb375src[src Index+9*176]+tb625[src[src Index+10*176]];}
即,通过处理整个像素的像素列,生成了198个像素中的144个像素,并且通过重复地处理最小处理单元18次,完成处理过程。
如上所述,在用于在横向上缩小源图像的程序和在纵向上缩小源图像的程序中,tb125[]~tb[]是在下面的表6中示出的查询表。
[表6]
tb125[i]=(unsigned char)(i×128>>10);//1/8tb250[i]=(unsigned char)(i×256>>10);//2/8tb375[i]=(unsigned char)(i×384>>10);//3/8tb625[i]=(unsigned char)(i×640>>10);//5/8tb750[i]=(unsigned char)(i×768>>10);//6/8tb875[i]=(unsigned char)(i×896>>10);//7/8 |
在表6中,tb125[i]、tb250[i]、tb375[i]、tb625[i]、tb750[i]、tb875[i]表示对于提供的未标记的(unsigned)像素值0~255像素在上述图3a中的到像素Pa的1/8、2/8、3/8、5/8、7/8点的加权值的查询表。例如,在表2中,当加权值是Vw[1]=384,则Lookup_Table[1][1]、Lookup_Table[1][2],……Lookup_Table[1][255]对应于tb375[i]。因此表6的查询表实质上与表5的查询表一样。但是,在表6中,与表5不同,没有对应于512加权值的查询表,即,tb500[i],因为des[desIndex+4]是通过将两个源像素值相加、src[srcIndex+5]和src[srcIndex+6]、以及向着最低位移动一位生成的,并且des[desIndex+4*176]是通过将两个源像素值相加、src[srcIndex+5*176]和src[srcIndex+6*176]、以及向着最低位移动一位生成的,如上面的程序所示,以便不需要另外的查询表。
通过本发明的发明者的实验结果,本发明提供了在最小处理块的尺寸为8×8的情况下,通过CIF标准将图像按比例缩放50~200%的比例而图像质量不下降的可能。此外,在通过将两个相邻的像素分成8个点来处理加权值并且采用表5和6中示出的查询表的情况下可以通过8个步骤来缩小,通过4个步骤来放大。此外,当通过将相邻的两个像素分成16个点来处理加权值时,可以通过采用表7和表6中示出的查询表来通过16个步骤来缩小,通过8个步骤来放大。
[表7]
tb0625[i]=(unsigned char)(i×64>>10);//1/16tb1875[i]=(unsigned char)(i×192>>10);//3/16tb3125[i]=(unsigned char)(i×320>>10);//5/16tb4375[i]=(unsigned char)(i×448>>10);//7/16tb5625[i]=(unsigned char)(i×576>>10);//9/16tb6875[i]=(unsigned char)(i×704>>10);//11/16tb8125[i]=(unsigned char)(i×832>>10);//13/16tb9375[i]=(unsigned char)(i×960>>10);//15/16 |
如果将两个相邻的像素的间隔均匀地分成更多的点,因为加权值可以再分成更多的值,并且处理过程可以更精确地执行,所以目标图像的质量可以提高,但是处理过程也增加了数量。因此,优选地生成用于具有预定的步骤的放大或缩小的查询表,和包括当对应的比例与上面的放大或缩小不适合时的与近似值有关的处理的另外的查询表。
如上所述,当实现数字图像的按比例缩放后,本发明提供了最小化图像质量的下降的效果,并且减少了处理过程的数量,因为目标像素是通过包括整数的乘法和加法以及移位,通过整数加权值的处理过程获得的,其中两个像素之间的加权值的和为2n,并且因此,图像的按比例缩放可以容易地以各种方法在嵌入式***中实现。
尽管参照本发明的某些优选实施例示出并说明了本发明,本领域中的普通技术人员可以理解在不脱离本发明的精神和范围内的各种改变和修改。特别是,在本发明的特定实施例中,提出了一个将242×198大小的图像缩小为176×144大小的图像,但是本发明可以相同的方式用于源图像和目标图像的尺寸发生了改变的情况。此外,本发明可以用于对于图像按比例缩放的要求与嵌入式***相同的其他的***中。因此,本发明的精神和范围不是由上述的实施例来限定的,而是由所附的权利要求及其等同物来限定的。