一种数字图像缩放方法

文档序号:6340470阅读:186来源:国知局
专利名称:一种数字图像缩放方法
技术领域
本发明涉及一种数字图像缩放方法。
背景技术
近年来,随着数字多媒体电子技术的飞速发展,数字图像的精度越来越高,尺寸也越来越大。现有的电子显示装置的分辨率通常都低于高精度数字图像的分辨率,只有对图片进行缩放才能在显示设备上显示出完整的图像信息。另一方面,在许多应用场合下,如数码相机照片浏览,液晶电视相片浏览,手机图片浏览,电子设备通常需要显示多幅图像预览图,此时也必须对图片进行缩放调整。目前图像缩放主要有两次线性、三次立方、频域DCT低通滤波等方法。这些算法虽然在缩放效果上优于最邻近插值,但在ASIC设计中,这些算法通常需要较大的硬件开销和更复杂的电路结构,另外任意比例缩放算法通常要比整数倍缩放算法更为复杂,这无疑增加了芯片研发的成本。实际应用中,由于预览图的尺寸通常比较小,预览解码时的图像质量并不需要非常精细,这时就可以采用较简单的缩放方法以降低硬件成本。因此,在ASIC设计中需要根据实际应用场合来选择合适的缩放方法,以更低的成本实现图像的缩放功能。

发明内容
由于现有技术存在的上述问题,本发明提出一种数字图像缩放方法,其可有效解决现有技术存在的问题。为了实现上述目的,本发明提供一种数字图像缩放方法包括如下步骤步骤1、记录源图像的宽度值和高度值以及目标图像的宽度值和高度值;步骤2、根据源图像的宽度值以及目标图像的宽度值,以像素点为单位进行复制或者抽取操作,对源图像进行水平缩放;步骤3、根据源图像的高度值以及目标图像的高度值,以像素行为单位进行复制或者抽取操作,对源图像进行垂直缩放;步骤4、重复步骤2和步骤3,直到整幅图像缩放完成;进一步地,还包含步骤5 当图像缩放完成后,清除所有寄存器值,并退出缩放模式。同时,步骤1中还包含以下操作使用源图像指针变量指向源图像第一行的第一个像素点的存储位置;使用目标图像指针变量指向目标图像第一行的第一个像素点的存储位置;对水平缩放控制计数器值以及垂直缩放控制计数器值进行清零操作。其中,源图像指针变量指向顺序为从左到右,目标图像指针变量指向顺序为从左到右。步骤2进一步包括以下步骤
步骤2. 1从源图像指针变量指向的原始图像存储区域中复制一个像素点到目标图像指针变量指向的目标图像存储区域,同时将水平缩放控制计数器值加上源图像宽度值,并执行步骤2. 2;步骤2. 2如果水平缩放控制计数器值加上源图像宽度值的数值小于目标图像宽度值,则将目标图像指针变量加1并转向执行步骤2. 3 ;否则将水平缩放控制计数器值减去目标图像宽度值,同时将源图像指针变量加1,并重复执行步骤2. 2 ;步骤2. 3如果目标图像指针变量已经达到目标图像行的最后一个像素点,即当前行已经缩放完成,则将源图像指针变量指向源图像当前行的第一个像素点,将目标图像指针变量指向目标图像当前行的第一个像素点,将水平缩放控制计数器值清零并转向执行步骤3,否则返回执行步骤2. 1。步骤3进一步中包含以下步骤步骤3. 1待步骤2中缩放后的一行源图像被复制到目标图像的存储区域中后,将垂直缩放控制计数器值加上源图像高度值,并执行步骤3. 2 ;步骤3. 2如果垂直缩放控制计数器值加上源图像高度值的数值小于目标图像高度值,则将目标图像指针变量重新指向目标图像的下一行起始位置并转向执行步骤3. 3,否则将垂直缩放控制计数器值减去目标图像高度值,同时将源图像指针变量重新指向源图像的下一行起始位置并重复执行步骤3. 2 ;步骤3. 3如果整幅图像都已经缩放完成,则将所有指针变量和计数器值清零并结束缩放操作,否则转向执行步骤2。与现有技术相比,本发明所使用的缩放方法只需给出源图像和目标图像的分辨率即可实现图像的缩放功能,该方法实现简单,不涉及复杂的缩放算法,同时还不需要增加图像缓存资源,占用资源少,易于在芯片设计中实现,特别适用于图像质量要求不是很高的预览解码场合。


图1是本发明提供的缩放方法流程图;图2是本发明提供的水平缩放流程图;图3是本发明提供的垂直缩放流程图;图4是第一实施例中源图像和目标图像存储示意图,左边为源图像,右边为目标图像;图5是第一实施例中任一图像行水平缩放示意图,上面为源图像行,下面为目标图像行;图6是第一实施例中图像垂直缩放示意图,左边为源图像,右边为目标图像;图7是第二实施例中源图像和目标图像存储示意图,左边为源图像,右边为目标图像;图8是第二实施例中任一图像行水平缩放示意图,上面为源图像行,下面为目标图像行;图9是第二实施例中图像垂直缩放示意图,左边为源图像,右边为目标图像。
具体实施例方式为了使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图1 附图9和具体实施方式
对本发明作进一步的详细说明。图1是本发明提供的缩放方法流程图。该数字图像缩放方法包括如下步骤步骤1、进行初始化操作,包括记录源图像的宽度值SRC_X和高度值SRC_Y以及目标图像的宽度值DEST_X和高度值DEST_Y ;使用源图像指针变量SRC_PTR指向源图像第一行的第一个像素点的存储位置;使用目标图像指针变量DEST_PTR指向目标图像第一行的第一个像素点的存储位置;对水平缩放控制计数器值CNT_H以及垂直缩放控制计数器值 CNT_V进行清零操作。步骤2、根据源图像的宽度值以及目标图像的宽度值,以像素点为单位进行复制或者抽取操作,对源图像进行水平缩放;步骤3、根据源图像的高度值以及目标图像的高度值,以像素行为单位进行复制或者抽取操作,对源图像进行垂直缩放;步骤4、重复步骤2和步骤3,直到整幅图像缩放完成。其中,源图像指针变量和目标图像指针变量指向顺序都为从左到右。图2是本发明提供的水平缩放流程图。水平缩放流程包括以下步骤步骤2. 1从源图像指针变量SRC_PTR指向的原始图像存储区域中复制一个像素点到目标图像指针变量DEST_PTR指向的目标图像存储区域,同时将水平缩放控制计数器值 CNT_H加上源图像宽度值SRC_X,并执行步骤2. 2 ;步骤2. 2如果水平缩放控制计数器值CNT_H加上源图像宽度值SRC_X的数值小于目标图像宽度值DEST_X,则将目标图像指针变量DEST_PTR加1并转向执行步骤2. 3 ;否则将水平缩放控制计数器值CNT_II减去目标图像宽度值DEST_X,同时将源图像指针变量 SRC_PTR加1,并重复执行步骤2. 2 ;步骤2. 3如果目标图像指针变量DEST_PTR已经达到目标图像行的最后一个像素点,即当前行已经缩放完成,则将源图像指针变量SRC_PTR指向源图像当前行的第一个像素点,将目标图像指针变量DEST_PTR指向目标图像当前行的第一个像素点,将水平缩放控制计数器值CNT_H清零并转向执行步骤3,否则返回执行步骤2. 1。图3是本发明提供的垂直缩放流程图,垂直缩放流程包括以下步骤先对初始化垂直缩放控制计数器值CNT_V,使CNT_V = 0 ;步骤3. 1待步骤2中缩放后的一行源图像被复制到目标图像的存储区域中后,将垂直缩放控制计数器值CNT_V加上源图像高度值SRC_Y,并执行步骤3. 2 ;步骤3. 2如果垂直缩放控制计数器值CNT_V加上源图像高度值SRC_Y的数值小于目标图像高度值DEST_Y,则将目标图像指针变量DEST_PTR重新指向目标图像的下一行起始位置并转向执行步骤3. 3,否则将垂直缩放控制计数器值CNT_V减去目标图像高度值 DEST_Y,同时将源图像指针变量SRC_PTR重新指向源图像的下一行起始位置并重复执行步骤 3. 2 ;步骤3. 3如果整幅图像都已经缩放完成,则将所有指针变量和计数器值清零并结束缩放操作,否则转向执行步骤2。当图像缩放完成后,清除所有寄存器值,并退出缩放模式。
本发明通过在水平和垂直方向上以等间距或接近等间距的方式复制或抽取像素点(垂直方向上为像素行)来实现图像水平方向和垂直方向上的放大与缩小。下面结合附图详细说明本发明的第一个具体实施例,该具体实施例将介绍图像缩小时的操作步骤。参照图4 图6,假设源图像尺寸为8X7,其中每个像素点用SRC(i,j) 来表示,其中i = 0,1,2, . . .,6,7,且j = 0,1,2, . . .,6。目标图像尺寸为5X3,其中每个像素点用DEST (m,η)来表示,其中m = 0,1,2,3,4,且η = 0,1,2.本发明提供的适用于数字图像预览解码的缩放方法包括以下步骤步骤1.缩放前先记录源图像宽度值SRC_X⑶和高度值SRC_Y(7)以及目标图像的宽度值DEST_X(5)和高度值DEST_Y(3),使用源图像指针变量SRC_PTR指向源图像第一行的第一个(从左到右)像素点的存储位置,使用目标图像指针变量DEST_PTR指向目标图像第一行的第一个(从左到右)像素点的存储位置,对水平缩放控制计数器值CNT_H以及垂直缩放控制计数器值CNT_V进行清零操作,即CNT_H = 0, CNT_V = 0 ;步骤2.根据源图像和目标图像的宽度对原始图像进行水平缩放,具体包括步骤2. 1从SRC_PTR指向的原始图像存储区域中复制一个像素点到DEST_PTR指向的目标图像存储区域,同时将水平缩放控制计数器值CNT_H加上SRC_X并执行步骤2. 2 ;步骤2. 2如果累加后的CNT_H小于DEST_X,则将DEST_PTR指针加1并转向执行步骤2. 3 ;否则将水平缩放控制计数器值CNT_H减去DEST_X,同时将SRC_PTR指针加1并重复执行步骤2. 2 ;步骤2. 3如果当前行已经缩放完成,即DEST_PTR指针已经达到目标图像行的最后一个像素点,则将SRC_PTR指针指向源图像当前行的第一个像素点、将DEST_PTR指针指向目标图像当前行的第一个像素点,将水平缩放控制计数器值CNT_H清零并转向执行步骤3, 否则转向执行步骤2. 1 ;步骤3.根据源图像和目标图像的高度对原始图像进行垂直缩放,垂直缩放原理与水平缩放相同,水平方向的缩放是以像素点为单位进行复制或者抽取操作,垂直方向的缩放是以像素行为单位进行复制和抽取操作,具体包括步骤3. 1在步骤2中缩放后的一行源图像已经被复制到目标图像的存储区域中, 此时将垂直缩放控制计数器值CNT_V加上SRC_Y并执行步骤3. 2 ;步骤3. 2如果(CNT_V+SRC_Y)小于DEST_Y,则将DEST_PTR指针重新指向目标图像的下一行起始位置并转向执行步骤3. 3 ;否则将垂直缩放控制计数器值CNT_V减去DEST_Y, 同时将SRC_PTR指针重新指向源图像的下一行起始位置并重复执行步骤3. 2 ;步骤3. 3如果整幅图像都已经缩放完成,则将所有指针变量和计数器值清零并结束缩放操作,否则转向执行步骤2。上述实施例中步骤2将在水平方向下对图像进行缩小操作,步骤3将在垂直方向下对图像进行缩小操作,水平方向缩小操作通过抽取像素点来实现,垂直方向缩小操作通过抽取像素行来实现。水平缩小时,源图像一行像素中的5个点将被抽取到目标图像存储区中,下面以第一行为例详细说明整个抽取过程(1)复制第一个像素点SRC(OjO)到目标图像区域DEST (0,0),CNT_H = 0+8 = 8;(2)由于 CNT_H (8) > DEST_X (5),CNT_H = 8-5 = 3,SRC_PTR 加 1,即指向 SRC (0,CN 102568443 A说明书5/6 页
1),重复执行步骤2. 2;(3)由于 CNT_H (3) < DEST_X (5),DEST_PTR 加 1,即指向 DEST (0,1),执行步骤 2. 3 ;(4)由于当前行缩小操作没有完成,即DEST_PTR未指向DEST (0,4),执行步骤2. 1上述过程循环操作直到源图像第一行缩小操作全部完成后,源图像中的SRC(0, 0),SRC(0,1),SRC (0,3),SRC (0,4),SRC (0,6),将被抽取到目标图像存储区域中,即 DEST (0, 0) = SRC (0,0), DEST (0,1) = SRC (0,1),DEST (0,2) = SRC (0,3),DEST (0,3) = SRC (0,4), DEST (0,4) = SRC(0,6)。垂直缩小时的操作和水平缩小时的操作类似,只是把像素点抽取操作改为像素行抽取操作,源图像缩小操作全部完成后,源图像中经过水平缩小后的第O行,第2行,第4行像素点将会被抽取到目标图像的第0行,第1行,第2行。下面结合附图详细说明本发明的第二个具体实施例,该具体实施例将介绍图像放大时的操作步骤。参照图7 图9,假设源图像尺寸为3X2,其中每个像素点用SRC(i,j) 来表示,其中i = 0,1,2,且」=0,1。目标图像尺寸为7X5,其中每个像素点用DEST(m,n) 来表示,其中m = 0,1,2,...,5,6,且η = 0,1,2,3,4。本发明提供的适用于数字图像预览解码的缩放方法包括以下步骤步骤1.缩放前先记录源图像宽度SRC_X(3)和高度SRC_YQ)以及目标图像的宽度DEST_X(7)和高度DEST_Y(5),使用源图像指针变量SRC_PTR指向源图像第一行的第一个 (从左到右)像素点的存储位置,使用目标图像指针变量DEST_PTR指向目标图像第一行的第一个(从左到右)像素点的存储位置,对水平缩放控制计数器值CNT_H以及垂直缩放控制计数器值CNT_V进行清零操作,即CNT_H = 0,CNT_V = 0 ;步骤2.根据源图像和目标图像的宽度对原始图像进行水平缩放,具体包括步骤2. 1从SRC_PTR指向的原始图像存储区域中复制一个像素点到DEST_PTR指向的目标图像存储区域,同时将水平缩放控制计数器值CNT_H加上SRC_X并执行步骤2. 2 ;步骤2. 2如果累加后的CNT_H小于DEST_X,则将DEST_PTR指针加1并转向执行步骤2. 3 ;否则将水平缩放控制计数器值CNT_H减去DEST_X,同时将SRC_PTR指针加1并重复执行步骤2. 2 ;步骤2. 3如果当前行已经缩放完成,即DEST_PTR指针已经达到目标图像行的最后一个像素点,则将SRC_PTR指针指向源图像当前行的第一个像素点、将DEST_PTR指针指向目标图像当前行的第一个像素点,将水平缩放控制计数器值CNT_H清零并转向执行步骤3, 否则转向执行步骤2.1;步骤3.根据源图像和目标图像的高度对原始图像进行垂直缩放,垂直缩放原理与水平缩放相同,水平方向的缩放是以像素点为单位进行复制或者抽取操作,垂直方向的缩放是以像素行为单位进行复制和抽取操作,具体包括步骤3. 1在步骤2中缩放后的一行源图像已经被复制到目标图像的存储区域中, 此时将垂直缩放控制计数器值CNT_V加上SRC_Y并执行步骤3. 2 ;步骤3. 2如果(CNT_V+SRC_Y)小于DEST_Y,则将DEST_PTR指针重新指向目标图像的下一行起始位置并转向执行步骤3. 3 ;否则将垂直缩放控制计数器值CNT_V减去DEST_Y, 同时将SRC_PTR指针重新指向源图像的下一行起始位置并重复执行步骤3. 2 ;
步骤3. 3如果整幅图像都已经缩放完成,则将所有指针和计数器值清零并结束缩放操作,否则转向执行步骤2;上述实施例中步骤2将在水平方向下对图像进行放大操作,步骤3将在垂直方向下对图像进行放大操作,水平方向放大操作通过像素点复制来实现,垂直方向缩小操作通过像素行复制来实现。水平放大操作时,源图像一行像素中的3个像素点连同以最邻近点复制的方法得到的2个像素点被复制到目标图像存储区中,下面以第一行为例详细说明整个复制过程(1)复制第一个像素点SRC(OjO)到目标图像区域DEST (0,0),CNT_H = 0+3 = 3;(2)由于 CNT_H (3) < DEST_X (7),DEST_PTR 加 1,即指向 DEST (0,1),执行步骤 2. 3 ;(3)由于当前行放大操作没有完成,即DEST_PTR未指向DEST (0,6),执行步骤2. 1(4)复制第一个像素点SRC(OjO)到目标图像区域DEST (0,1),CNT_H = 3+3 = 6;(5)由于 CNT_H(6) < DEST_X (7),DEST_PTR 加 1,即指向 DEST (0,2),执行步骤 2. 3 ;(5)由于当前行放大操作没有完成,即DEST_PTR未指向DEST (0,6),执行步骤2. 1(6)复制第一个像素点SRC(OjO)到目标图像区域DEST (0,2),CNT_H = 6+3 = 9;(7)由于 CNT_H (9) > DEST_X (7),CNT_H = 9-7 = 2,SRC_PTR 加 1,即指向 SRC (0, 1),重复执行步骤2. 2;上述过程循环操作直到源图像第一行放大全部完成后,源图像中的SRC(0,0), SRC(0,1),SRC(0,2)连同以最邻近点复制的方法得到的2个像素点被复制到目标图像存储区域中,即 DEST(0,0) = SRC(0,0), DEST(0,1) = SRC(0,0), DEST(0,2) = SRC(0,0), DEST(0,3) = SRC(0,1),DEST(0,4) = SRC(0,1), DEST(0,5) = SRC(0,2), DEST(0,6)= SRC(0,2)。垂直放大时的操作和水平放大时的操作类似,只是把像素点复制操作改为像素行复制操作。源图像放大全部完成后,水平放大后源图像中的第0行将会被复制到目标图像的第O行,第1行和第2行中,水平放大后源图像中的第1行将会被复制到目标图像的第3 行和第4行中。虽然上述优选的实施例详尽地说明了本发明的方法,但是需要说明的是,本发明不限于上文优选的实施例。本领域的技术人员应当意识到在不脱离本发明技术方案所给出的技术特征和范围的情况下,对技术特征所作的增加、以本领域一些同样内容的替换,均应属本发明的保护范围。
8
权利要求
1.一种数字图像缩放方法,其特征在于,包括如下步骤步骤1、记录源图像的宽度值和高度值以及目标图像的宽度值和高度值; 步骤2、根据源图像的宽度值以及目标图像的宽度值,以像素点为单位进行复制或者抽取操作,对源图像进行水平缩放;步骤3、根据源图像的高度值以及目标图像的高度值,以像素行为单位进行复制或者抽取操作,对源图像进行垂直缩放;步骤4、重复步骤2和步骤3,直到整幅图像缩放完成。
2.根据权利要求1所述的数字图像缩放方法,其特征在于,步骤1中还包含以下操作 使用源图像指针变量指向源图像第一行的第一个像素点的存储位置;使用目标图像指针变量指向目标图像第一行的第一个像素点的存储位置; 对水平缩放控制计数器值以及垂直缩放控制计数器值进行清零操作。
3.根据权利要求1所述的数字图像缩放方法,其特征在于,步骤2进一步包括以下步骤步骤2. 1从源图像指针变量指向的原始图像存储区域中复制一个像素点到目标图像指针变量指向的目标图像存储区域,同时将水平缩放控制计数器值加上源图像宽度值,并执行步骤2. 2 ;步骤2. 2如果水平缩放控制计数器值加上源图像宽度值的数值小于目标图像宽度值, 则将目标图像指针变量加1并转向执行步骤2. 3 ;否则将水平缩放控制计数器值减去目标图像宽度值,同时将源图像指针变量加1,并重复执行步骤2.2 ;步骤2. 3如果目标图像指针变量已经达到目标图像行的最后一个像素点,即当前行已经缩放完成,则将源图像指针变量指向源图像当前行的第一个像素点,将目标图像指针变量指向目标图像当前行的第一个像素点,将水平缩放控制计数器值清零并转向执行步骤3, 否则返回执行步骤2.1。
4.根据权利要求1所述的数字图像缩放方法,其特征在于,步骤3进一步中包含以下步骤步骤3. 1待步骤2中缩放后的一行源图像被复制到目标图像的存储区域中后,将垂直缩放控制计数器值加上源图像高度值,并执行步骤3. 2 ;步骤3. 2如果垂直缩放控制计数器值加上源图像高度值的数值小于目标图像高度值, 则将目标图像指针变量重新指向目标图像的下一行起始位置并转向执行步骤3. 3,否则将垂直缩放控制计数器值减去目标图像高度值,同时将源图像指针变量重新指向源图像的下一行起始位置并重复执行步骤3. 2 ;步骤3. 3如果整幅图像都已经缩放完成,则将所有指针变量和计数器值清零并结束缩放操作,否则转向执行步骤2。
5.根据权利要求2所述的数字图像缩放方法,其特征在于,源图像指针变量指向顺序为从左到右。
6.根据权利要求2所述的数字图像缩放方法,其特征在于,目标图像指针变量指向顺序为从左到右。
7.根据权利要求1所述的数字图像缩放方法,其特征在于,还包含步骤5图像缩放完成后,清除所有寄存器值,并退出缩放模式。
全文摘要
本发明公开一种数字图像缩放方法,包括如下步骤步骤1、记录源图像的宽度值和高度值以及目标图像的宽度值和高度值;步骤2、根据源图像的宽度值以及目标图像的宽度值,以像素点为单位进行复制或者抽取操作,对源图像进行水平缩放;步骤3、根据源图像的高度值以及目标图像的高度值,以像素行为单位进行复制或者抽取操作,对源图像进行垂直缩放;步骤4、重复步骤2和步骤3,直到整幅图像缩放完成。
文档编号G06T3/40GK102568443SQ20101061306
公开日2012年7月11日 申请日期2010年12月29日 优先权日2010年12月29日
发明者汤岐 申请人:无锡华润矽科微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1