CN103500434B - 图像放大方法及装置 - Google Patents
图像放大方法及装置 Download PDFInfo
- Publication number
- CN103500434B CN103500434B CN201310326931.6A CN201310326931A CN103500434B CN 103500434 B CN103500434 B CN 103500434B CN 201310326931 A CN201310326931 A CN 201310326931A CN 103500434 B CN103500434 B CN 103500434B
- Authority
- CN
- China
- Prior art keywords
- interpolation
- interpolation point
- pixel
- point
- original image
- 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.)
- Active
Links
Landscapes
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
本申请公开了一种图像放大方法及装置。所述方法包括:根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置;根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,第二缩放比为2;根据第二插值点邻域的n×n个原始像素点计算出第二插值点的像素值;根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出待插值像素点的像素值,第三缩放比等于第一缩放比除以第二缩放比。
Description
技术领域
本申请涉及图像处理领域,特别是图像放大方法及装置。
背景技术
如今,越来越多的电子设备支持高分辨率的显示,为了使得较小的原始图像能够适应电子设备的高分辨率的显示,就必须对图像进行放大。
现有技术提供了一种图像放大方法,首先获得需要对原始图像进行放大的倍数从而获得缩放比,再根据缩放比计算出新图像中待插值像素点在原始图像中对应的插值点,最后根据插值点邻域的像素点的像素值并通过插值法计算出插值点所对应的待插值像素点的像素值。
参阅图1,以使用Lanczos函数进行插值为例,插值点m距离最邻近的左上角的像素点p6的水平距离为a,垂直距离为b。则插值点m的像素值可以这样计算。
Value1=p1*LUT(1+b)+p5*LUT(b)+p9*LUT(1-b)+p13*LUT(2-b)
Value2=p2*LUT(1+b)+p6*LUT(b)+p10*LUT(1-b)+p14*LUT(2-b)
Value3=p3*LUT(1+b)+p7*LUT(b)+p11*LUT(1-b)+p15*LUT(2-b)
Value4=p4*LUT(1+b)+p8*LUT(b)+p12*LUT(1-b)+p16*LUT(2-b)
m=Value1*LUT(1+a)+Value2*LUT(a)+Value3*LUT(1-a)+Value4*LUT(2-a)
其中,p1~p16是插值点m邻近的4×4个像素点,为了方便起见,公式中的p1~p16也表示为该像素点的像素值,LUT()为Lanczos函数,p1至插值点m的垂直距离为1+b,所以,p1*LUT(1+b)中的Lanczos函数的参数为1+b,同样地,p2~p16的像素点也可以根据像素点到插值点m的垂直距离而确定Lanczos函数的参数。Value1是根据第一列像素点计算出来的中间变量,同样地,Value2~Value4是根据相应的列所计算出来的中间变量。Value1所对应的列距离插值点m的水平距离为1+a,所以,Value1*LUT(1+a)中的Lanczos函数的参数为1+a,同理也可以确定Value2~Value4所对应的Lanczos函数的参数。所以,只需知道插值点距离最邻近的左上角的像素点的水平距离和垂直距离以及插值点邻近的像素点的像素值即可求出插值点的像素值。
但是在这种方法下,本质是通过低通滤波器对图像进行过滤,低通滤波器的作用是让低频信息通过而截止高频信息,所以,如果图像放大的倍数比较大时(一般来说超过3倍时),会因为低通滤波器的作用而导致丢失太多的高频信息,从而导致图像显得模糊。
发明内容
本申请主要解决的技术问题是提供图像放大方法及装置,能够保留更多的高频信息。
为解决上述技术问题,本申请第一方面提供一种图像放大方法,用于将原始图像缩放得到目标尺寸的图像,包括如下步骤:根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,所述第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2;根据所述第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得所述第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,所述第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,所述第二缩放比的大小为2;根据所述第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值,其中,n为大于1的自然数,所述原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同;根据第三缩放比计算出所述第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据所述偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,所述第三缩放比等于所述第一缩放比除以所述第二缩放比。
结合第一方面,本申请第一方面的第一种可能的实施方式中,所述根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置的步骤之后,所述根据第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置的步骤之前包括:利用b×b的平滑模板对所述原始像素点进行平滑,其中,b为大于1的自然数。
结合第一方面,本申请第一方面的第二种可能的实施方式中,所述根据第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值的步骤之后,所述根据偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值的步骤之前包括:利用b×b的平滑模板对所述第二插值点进行平滑,其中,b为大于1的自然数。
结合第一方面,本申请第一方面的第三种可能的实施方式中,所述根据第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值的步骤之后包括:对所述第二插值点的像素值进行超调。
结合第一方面,本申请第一方面的第四种可能的实施方式中,所述根据偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值的步骤之后包括:对所述待插值像素点的像素值进行超调。
为解决上述技术问题,本申请第二方面提供一种图像放大装置,用于将原始图像缩放得到目标尺寸的图像,包括:第一插值点位置确定模块、第二插值点位置确定模块、第二插值点像素值确定模块以及待插值像素点像素值确定模块;所述第一插值点位置确定模块用于根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,所述第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2,所述第一插值点位置确定模块将所述第一插值点的位置向所述第二插值点位置确定模块发送;所述第二插值点位置确定模块用于接收所述第一插值点的位置,根据所述第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得所述第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,所述第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,所述第二缩放比的大小为2,所述第二插值点位置确定模块将偏移后的第二插值点的位置向所述第二插值点像素值确定模块发送;所述第二插值点像素值确定模块用于接收偏移后的第二插值点的位置,根据所述第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值,其中,n为大于1的自然数,所述原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同,所述第二插值点像素值确定模块将所述第二插值点的像素值向所述待插值像素点像素值确定模块发送;所述待插值像素点像素值确定模块用于接收所述第二插值点的像素值,根据第三缩放比计算出所述第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据所述偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,所述第三缩放比等于所述第一缩放比除以所述第二缩放比。
结合第二方面,本申请第二方面的第一种可能的实施方式中,所述装置还包括平滑模块,所述平滑模块用于利用b×b的平滑模板对所述原始像素点进行平滑,其中,b为大于1的自然数。
结合第二方面以及第二方面的第一种可能的实施方式,本申请第二方面的第二种可能的实施方式中,所述平滑模块还用于利用b×b的平滑模板对所述第二插值点进行平滑,其中,b为大于1的自然数。
结合第二方面,本申请第二方面的第三种可能的实施方式中,所述装置还包括超调模块,所述超调模块用于对所述第二插值点的像素值进行超调。
结合第二方面以及第二方面的第三种可能的实施方式,本申请第二方面的第四种可能的实施方式中,所述超调模块还用于对所述待插值像素点的像素值进行超调。
上述方案通过采用两级图像放大,先将原始图像先进行一次2倍的放大,然后再根据需要对放大了2倍的图像再次进行放大,由于第一次进行图像放大采用的是2倍图像放大,图像保留的高频信息会比较多,图像会比较清晰,再经过第二次图像放大的放大倍数比根据需要直接进行放大的放大倍数要小,所以,保留的高频信息会比直接采用需要的倍数进行放大的方法所保留的高频信息多,图像也较为清晰。而且,在第一级的2倍放大中增加了偏移处理,相对传统的放大技术可以提高图像的清晰度。
另外,引入平滑模板,在保持图像清晰度的同时可以呈现相对较好的平滑性。
附图说明
图1是现有技术图像插值方法一实施方式的示意图;
图2是本申请图像放大方法一实施方式的流程图;
图3是本申请图像放大方法计算插值点的示意图;
图4是本申请图像放大方法第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置的示意图;
图5是本申请图像放大方法第一插值点相对于最邻近的左上角的第二插值点偏移的示意图;
图6是本申请图像放大方法另一实施方式的流程图;
图7是本申请图像放大装置一实施方式的结构示意图;
图8是本申请图像放大装置另一实施方式的结构示意图;
图9是本申请图像放大装置又一实施方式的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施方式中也可以实现本申请。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
参阅图2,图2是本申请图像放大方法一实施方式的流程图。本实施方式的图像放大方法,用于将原始图像缩放得到目标尺寸的图像,包括如下步骤:
S201:根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,缩放比为新图像除以原始图像所得到的倍数,第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2。
下面整个实施例以第一缩放比为3进行描述,此时,原始图像经过3倍放大后得到新图像。
请一并参阅图3,原始图像310包括多个原始像素点313,每个原始像素点313都具有一个像素值,多个原始像素点313组合在一起,而且原始像素点313具有不同的像素值使得原始图像310能够呈现出画面。新图像320是原始图像310经过放大后所得到的图像。新图像320同样包括多个像素点,而且新图像320中一部份的像素点的像素值是直接使用原始图像310中对应的原始像素点313的像素值而得到的,而另一部分的图像是根据原始图像310的多个原始像素点313的像素值并经插值算法插值而得到的。这些需要经过插值运算得到像素值的像素点则称为待插值像素点323。在一些情况下,新图像320中的所有的像素点的像素值都是经过插值而得到的,这时,新图像320的所有像素点都是待插值像素点323。
为了保证原始图像310和新图像320的相似性,可根据缩放比计算出新图像320中待插值像素点所对应的原始图像310中的插值点的位置。通常将新图像320中待插值像素点的位置除以缩放比即可得到原始图像310中的插值点的位置。例如,如果缩放比为3,则新图像320中待插值像素点的位置为(4,11)时,将待插值像素点的位置除以3,则原始图像310的插值点的位置为所以,根据第一缩放比可以计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。
S202:根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移。其中,m为大于1的自然数,第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,第二缩放比的大小为2。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。
参阅图4,在计算出第一插值点A的位置后,对原始图像410进行一次2倍的放大。无论最终新图像需要放大多少倍,第一次图像放大的倍数都固定为2。所以,第二缩放比总是固定为2。根据第二缩放比为2,可以得知放大两倍时的插值点(即第二插值点)的位置。
假设第一插值点A的位置位于原始像素点15’,16’,21’,22’所围成的区域之间。则可以选取第一插值点310邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’。根据第二缩放比为2,可求出第一插值点邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’所围成的区域中的所有第二插值点1~36的位置。并使得所有的第二插值点1~36的位置在原来计算得到的位置上向水平和垂直方向都产生0.1个原始像素的偏移。
S203:根据第二插值点邻域的n×n个原始像素点以插值法计算出第二插值点的像素值,其中,n为大于1的自然数,原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。
继续参阅图4,要使用Lanczos函数插值法计算第二插值点的像素值需知道插值点距离最邻近的左上角的原始像素点的水平距离和垂直距离以及第二插值点邻近的原始像素点的像素值。所以选取第二插值点邻域的4×4个原始像素点以插值法计算出第二插值点的像素值。对于第二插值点26,选取原始像素点1’,2’,3’,4’,7’,8’,9’,10’,13’,14’,15’,16’,19’,20’,21’,22’,而第二插值点27,32,1所选择的原始像素点与第二插值点26所选择的原始像素点完全相同。但第二插值点26,27,32,1与最邻近的左上角的像素点的距离各不相同,所以,原始图像的相邻四个像素8’,9’,14’,15’所围成的区域内的4个第二插值点26,27,32,1的像素值按插值法进行计算时,使用到的插值系数各不相同。对于原始图像的相邻四个像素点9’,10’,15’,16’所围成的区域中,第二插值点28,29,2,3所选择的邻域的4×4个原始像素点都是原始像素点2’,3’,4’,5’,8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’。第二插值点28距离原始像素点9’的距离与第二插值点26距离原始像素点8’的距离相等,第二插值点28使用到的插值系数与第二插值点26使用到的插值系数相同;第二插值点29距离原始像素点9’的距离与第二插值点27距离原始像素点8’的距离相等,第二插值点29使用到的插值系数与第二插值点27使用到的插值系数相同;第二插值点2距离原始像素点9’的距离与第二插值点32距离原始像素点8’的距离相等,第二插值点2使用到的插值系数与第二插值点32使用到的插值系数相同;第二插值点3距离原始像素点9’的距离与第二插值点1距离原始像素点8’的距离相等,第二插值点3使用到的插值系数与第二插值点1使用到的插值系数相同。所以,第二插值点28,29,2,3的像素值按插值法进行计算时,使用到的插值系数各不相同。对于其它原始图像的相邻四个像素所围成的区域亦是如是,此处不一一赘述。
S204:根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,第三缩放比等于第一缩放比除以第二缩放比。这里,偏移量包括水平距离和垂直距离。在本实施方式中,可以利用4×4个第二插值点进行计算。这里也可以用3×3个第二插值点或者5×5个第二插值点等等,此处不作具体限定。
参阅图5,经过步骤S203后,原始图像310的相应区域已经进行了一次两倍放大,故只需再按照第三缩放比进行一次放大,即可将原始图像310放大到所需要的倍数。
同样地,要使用Lanczos函数插值法计算第一插值点所对应的新图像中待插值像素点的的像素值需知道插值点距离最邻近的左上角的第二插值点的水平距离和垂直距离以及第一插值点邻近的第二插值点的像素值。
假设第一插值点位于原始像素点15’,16’,21’,22’所围成的区域之间。由于在步骤S201中已经计算得到第一插值点在原始图像310中的位置,所以,可以计算得到第一插值点距离最邻近的左上角的原始像素点15’的水平距离X和垂直距离Y。
进一步地,如果第一插值点位于区域①,则第一插值点距离最邻近的左上角的第二插值点1的偏移量水平距离和垂直距离分别为0.4+X和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点1的水平距离和垂直距离分别为2×(0.4+X)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点26,27,28,29,32,1,2,3,33,6,7,8,34,11,12,13,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域②,则第一插值点距离最邻近的左上角的第二插值点2的偏移量水平距离和垂直距离分别为X-0.1和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点2的水平距离和垂直距离分别为2×(X-0.1)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点27,28,29,30,1,2,3,4,6,7,8,9,11,12,13,14,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域③,则第一插值点距离最邻近的左上角的第二插值点3的偏移量水平距离和垂直距离分别为X-0.6和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点3的水平距离和垂直距离分别为2×(X-0.6)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点28,29,30,31,2,3,4,5,7,8,9,10,12,13,14,15,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域④,则第一插值点距离最邻近的左上角的第二插值点6的偏移量水平距离和垂直距离分别为0.4+X和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点6的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点32,1,2,3,33,6,7,8,34,11,12,13,35,16,17,18,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑤,则第一插值点距离最邻近的左上角的第二插值点7的偏移量水平距离和垂直距离分别为X-0.1和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点7的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑥,则第一插值点距离最邻近的左上角的第二插值点8的偏移量水平距离和垂直距离分别为X-0.6和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点8的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑦,则第一插值点距离最邻近的左上角的第二插值点11的偏移量水平距离和垂直距离分别为0.4+X和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点11的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点33,6,7,8,34,11,12,13,35,16,17,18,36,21,22,23,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑧,则第一插值点距离最邻近的左上角的第二插值点12的偏移量水平距离和垂直距离分别为X-0.1和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点12的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑨,则第一插值点距离最邻近的左上角的第二插值点13的偏移量水平距离和垂直距离分别为X-0.6和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点13的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
在完成对新图像中的一个待插值像素点的插值后,继续扫描新图像以完成下一个待插值像素点的插值,依次类推,直到所有的新图像的待插值像素点都插值完毕。
在对原始图像进行放大时,由于原始图像和新图像的矩阵一般比较大,为了避免多次对原始图像和新图像进行扫描,每扫描一个像素点即完成上面所有的步骤,而并非每执行一次步骤需要完成对图像的一次扫描。例如,以步骤S201为例,应该理解为当扫描到新图像的某个待插值像素点时,计算这个待插值像素点所对应的第一插值点的位置,然后,执行下一个步骤S202。而非对整个新图像进行扫描,将新图像内所有的待插值像素点所对应的第一插值点的位置都计算完毕后,再执行下一个步骤S202。
上述以Lanczos函数作为插值函数进行描述,但是,在实际使用过程中,也可以使用其它的插值函数,此处不作具体限定。
参阅图6,图6是本申请图像放大方法另一实施方式的流程图。本实施方式的图像放大方法,用于将原始图像缩放得到目标尺寸的图像,包括如下步骤:
S601:利用b×b的平滑模板对原始像素点进行平滑,其中,b为大于1的自然数。
由于需要对原始图像进行大倍数的图像放大,所以放大后的新图像会呈现颗粒感,而且,新图像的边缘容易呈锯齿状。所以,在进行放大前,需要先进行平滑。在本实施方式中,可以利用3×3的平滑模板对原始像素点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。
S602:根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。其中,第一缩放比为目标尺寸的图像与原始图像之间的缩放比,第一缩放比大于2。
下面整个实施例以第一缩放比为3进行描述,此时,原始图像经过3倍放大后得到新图像。
请一并参阅图3,图3是本申请图像放大方法一实施方式的计算插值点的示意图。原始图像310包括多个原始像素点313,每个原始像素点313都具有一个像素值,多个原始像素点313组合在一起,而且原始像素点313具有不同的像素值使得原始图像310能够呈现出画面。新图像320是原始图像310经过放大后所得到的图像。新图像320同样包括多个像素点,而且新图像320中一部份的像素点的像素值是直接使用原始图像310中对应的原始像素点313的像素值而得到的,而另一部分的图像是根据原始图像310的多个原始像素点313的像素值并经插值算法插值而得到的。这些需要经过插值运算得到像素值的像素点则称为待插值像素点323。在一些情况下,新图像320中的所有的像素点的像素值都是经过插值而得到的,这时,新图像320的所有像素点都是待插值像素点323。
为了保证原始图像310和新图像320的相似性,可根据缩放比计算出新图像320中待插值像素点所对应的原始图像310中的插值点的位置。通常将新图像320中待插值像素点的位置除以缩放比即可得到原始图像310中的插值点的位置。例如,如果缩放比为3,则新图像320中待插值像素点的位置为(4,11)时,将待插值像素点的位置除以3,则原始图像310的插值点的位置为所以,根据第一缩放比可以计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。
S603:根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移。其中,m为大于1的自然数,第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,第二缩放比的大小为2。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。
参阅图4,在计算出第一插值点A的位置后,对原始图像410进行一次2倍的放大。无论最终新图像需要放大多少倍,第一次图像放大的倍数都固定为2。所以,第二缩放比总是固定为2。根据第二缩放比为2,可以得知放大两倍时的插值点(即第二插值点)的位置。
假设第一插值点A的位置位于原始像素点15’,16’,21’,22’所围成的区域之间。则可以选取第一插值点310邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’。根据第二缩放比为2,可求出第一插值点邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’所围成的区域中的所有第二插值点1~36的位置。并使得所有的第二插值点1~36的位置在原来计算得到的位置上向水平和垂直方向都产生0.1个原始像素的偏移。
S604:根据第二插值点邻域的n×n个原始像素点以插值法计算出第二插值点的像素值。其中,n为大于1的自然数,原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。
继续参阅图4,要使用Lanczos函数插值法计算第二插值点的像素值需知道插值点距离最邻近的左上角的原始像素点的水平距离和垂直距离以及第二插值点邻近的原始像素点的像素值。所以选取第二插值点邻域的4×4个原始像素点以插值法计算出第二插值点的像素值。对于第二插值点26,选取原始像素点1’,2’,3’,4’,7’,8’,9’,10’,13’,14’,15’,16’,19’,20’,21’,22’,而第二插值点27,32,1所选择的原始像素点与第二插值点26所选择的原始像素点完全相同。但第二插值点26,27,32,1与最邻近的左上角的像素点的距离各不相同,所以,原始图像的相邻四个像素8’,9’,14’,15’所围成的区域内的4个第二插值点26,27,32,1的像素值按插值法进行计算时,使用到的插值系数各不相同。对于原始图像的相邻四个像素点9’,10’,15’,16’所围成的区域中,第二插值点28,29,2,3所选择的邻域的4×4个原始像素点都是原始像素点2’,3’,4’,5’,8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’。第二插值点28距离原始像素点9’的距离与第二插值点26距离原始像素点8’的距离相等,第二插值点28使用到的插值系数与第二插值点26使用到的插值系数相同;第二插值点29距离原始像素点9’的距离与第二插值点27距离原始像素点8’的距离相等,第二插值点29使用到的插值系数与第二插值点27使用到的插值系数相同;第二插值点2距离原始像素点9’的距离与第二插值点32距离原始像素点8’的距离相等,第二插值点2使用到的插值系数与第二插值点32使用到的插值系数相同;第二插值点3距离原始像素点9’的距离与第二插值点1距离原始像素点8’的距离相等,第二插值点3使用到的插值系数与第二插值点1使用到的插值系数相同。所以,第二插值点28,29,2,3的像素值按插值法进行计算时,使用到的插值系数各不相同。对于其它原始图像的相邻四个像素所围成的区域亦是如是,此处不一一赘述。
S605:对第二插值点的像素值进行超调。
在放大2倍的图像的边缘部分,人眼对边缘的主观感受各不相同,一般来说,亮边缘通常会造成人眼不适,因此超调提供了一种用户可调节的方式,用来抑制或增强亮边缘或暗边缘的强度。所以,需要对第二插值点的像素值进行超调。例如,如果某个第二插值点的像素值比其四邻域的第二插值点的像素值都小,则需要对这个第二插值点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个第二插值点的像素值比其四邻域的第二插值点的像素值都大,则需要对这个第二插值点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。
S606:利用b×b的平滑模板对第二插值点进行平滑,其中,b为大于1的自然数。
在超调完毕后,利用3×3的平滑模板对第二插值点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。
S607:根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大。其中,a为大于1的自然数,第三缩放比等于所述第一缩放比除以所述第二缩放比。这里,偏移量包括水平距离和垂直距离。在本实施方式中,可以利用4×4个第二插值点进行计算。这里也可以用3×3个第二插值点或者5×5个第二插值点等等,此处不作具体限定。
参阅图5,经过步骤S203后,原始图像310的相应区域已经进行了一次两倍放大,故只需再按照第三缩放比进行一次放大,即可将原始图像310放大到所需要的倍数。
同样地,要使用Lanczos函数插值法计算第一插值点所对应的新图像中待插值像素点的的像素值需知道插值点距离最邻近的左上角的第二插值点的水平距离和垂直距离以及第一插值点邻近的第二插值点的像素值。
假设第一插值点位于原始像素点15’,16’,21’,22’所围成的区域之间。由于在步骤S201中已经计算得到第一插值点在原始图像310中的位置,所以,可以计算得到第一插值点距离最邻近的左上角的原始像素点15’的水平距离X和垂直距离Y。
进一步地,如果第一插值点位于区域①,则第一插值点距离最邻近的左上角的第二插值点1的偏移量水平距离和垂直距离分别为0.4+X和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点1的水平距离和垂直距离分别为2×(0.4+X)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点26,27,28,29,32,1,2,3,33,6,7,8,34,11,12,13,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域②,则第一插值点距离最邻近的左上角的第二插值点2的偏移量水平距离和垂直距离分别为X-0.1和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点2的水平距离和垂直距离分别为2×(X-0.1)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点27,28,29,30,1,2,3,4,6,7,8,9,11,12,13,14,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域③,则第一插值点距离最邻近的左上角的第二插值点3的偏移量水平距离和垂直距离分别为X-0.6和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点3的水平距离和垂直距离分别为2×(X-0.6)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点28,29,30,31,2,3,4,5,7,8,9,10,12,13,14,15,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域④,则第一插值点距离最邻近的左上角的第二插值点6的偏移量水平距离和垂直距离分别为0.4+X和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点6的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点32,1,2,3,33,6,7,8,34,11,12,13,35,16,17,18,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑤,则第一插值点距离最邻近的左上角的第二插值点7的偏移量水平距离和垂直距离分别为X-0.1和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点7的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑥,则第一插值点距离最邻近的左上角的第二插值点8的偏移量水平距离和垂直距离分别为X-0.6和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点8的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑦,则第一插值点距离最邻近的左上角的第二插值点11的偏移量水平距离和垂直距离分别为0.4+X和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点11的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点33,6,7,8,34,11,12,13,35,16,17,18,36,21,22,23,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑧,则第一插值点距离最邻近的左上角的第二插值点12的偏移量水平距离和垂直距离分别为X-0.1和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点12的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑨,则第一插值点距离最邻近的左上角的第二插值点13的偏移量水平距离和垂直距离分别为X-0.6和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点13的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
S608:对待插值像素点的像素值进行超调。
如果某个待插值像素点的像素值比其四邻域的像素点的像素值都小,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个待插值像素点的像素值比其四邻域的像素点的像素值都大,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。
在完成对新图像中的一个待插值像素点的插值后,继续扫描新图像以完成下一个待插值像素点的插值,依次类推,直到所有的新图像的待插值像素点都插值完毕。
在对原始图像进行放大时,由于原始图像和新图像的矩阵一般比较大,为了避免多次对原始图像和新图像进行扫描,每扫描一个像素点即完成上面所有的步骤,而并非每执行一次步骤需要完成对图像的一次扫描。例如,以步骤S602为例,应该理解为当扫描到新图像的某个待插值像素点时,计算这个待插值像素点所对应的第一插值点的位置,然后,执行下一个步骤S603。而非对整个新图像进行扫描,将新图像内所有的待插值像素点所对应的第一插值点的位置都计算完毕后,再执行下一个步骤S603。
上述以Lanczos函数作为插值函数进行描述,但是,在实际使用过程中,也可以使用其它的插值函数,此处不作具体限定。
参阅图7,图7是本申请图像放大装置一实施方式的结构示意图。本实施方式的图像放大装置,用于将原始图像缩放得到目标尺寸的图像,包括:第一插值点位置确定模块710、第二插值点位置确定模块720、第二插值点像素值确定模块730以及待插值像素点像素值确定模块740。
第一插值点位置确定模块710用于根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2。
比如,请一并参阅图3,原始图像310包括多个原始像素点313,每个原始像素点313都具有一个像素值,多个原始像素点313组合在一起,而且原始像素点313具有不同的像素值使得原始图像310能够呈现出画面。新图像320是原始图像310经过放大后所得到的图像。新图像320同样包括多个像素点,而且新图像320中一部份的像素点的像素值是直接使用原始图像310中对应的原始像素点313的像素值而得到的,而另一部分的图像是根据原始图像310的多个原始像素点313的像素值并经插值算法插值而得到的。这些需要经过插值运算得到像素值的像素点则称为待插值像素点323。在一些情况下,新图像320中的所有的像素点的像素值都是经过插值而得到的,这时,新图像320的所有像素点都是待插值像素点323。
为了保证原始图像310和新图像320的相似性,可根据缩放比计算出新图像320中待插值像素点所对应的原始图像310中的插值点的位置。通常将新图像320中待插值像素点的位置除以缩放比即可得到原始图像310中的插值点的位置。例如,如果缩放比为3,则新图像320中待插值像素点的位置为(4,11)时,将待插值像素点的位置除以3,则原始图像310的插值点的位置为所以,第一插值点位置确定模块710根据第一缩放比可以计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。第一插值点位置确定模块710将第一插值点的位置向第二插值点位置确定模块720发送。
第二插值点位置确定模块720用于接收第一插值点的位置,根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,所述第二缩放比的大小为2。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。
比如,参阅图4,在计算出第一插值点A的位置后,对原始图像410进行一次2倍的放大。无论最终新图像需要放大多少倍,第一次图像放大的倍数都固定为2。所以,第二缩放比总是固定为2。根据第二缩放比为2,可以得知放大两倍时的插值点(即第二插值点)的位置。假设第一插值点A的位置位于原始像素点15’,16’,21’,22’所围成的区域之间。则可以选取第一插值点310邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’。根据第二缩放比为2,可求出第一插值点邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’所围成的区域中的所有第二插值点1~36的位置。并使得所有的第二插值点1~36的位置在原来计算得到的位置上向水平和垂直方向都产生0.1个原始像素的偏移。第二插值点位置确定模块720将偏移后的第二插值点的位置向第二插值点像素值确定模块730发送。
第二插值点像素值确定模块730用于接收偏移后的第二插值点的位置,根据第二插值点邻域的n×n个原始像素点以插值法计算出第二插值点的像素值,其中,n为大于1的自然数,原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同。在本实施方式中,可以利用4×4个原始像素点进行计算。这里也可以用3×3个原始像素点或者5×5个原始像素点等等,此处不作具体限定。第二插值点像素值确定模块730将第二插值点的像素值向待插值像素点像素值确定模块740发送。
待插值像素点像素值确定模块740用于接收第二插值点的像素值,根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,第三缩放比等于第一缩放比除以第二缩放比。在本实施方式中,可以利用4×4个第二插值点进行计算。这里也可以用3×3个第二插值点或者5×5个第二插值点等等,此处不作具体限定。
比如,参阅图5,要使用Lanczos函数插值法计算第一插值点所对应的新图像中待插值像素点的的像素值需知道插值点距离最邻近的左上角的第二插值点的水平距离和垂直距离以及第一插值点邻近的第二插值点的像素值。
假设第一插值点位于原始像素点15’,16’,21’,22’所围成的区域之间。已经计算得到第一插值点在原始图像310中的位置,所以,可以计算得到第一插值点距离最邻近的左上角的原始像素点15’的水平距离X和垂直距离Y。
进一步地,如果第一插值点位于区域①,则第一插值点距离最邻近的左上角的第二插值点1的偏移量水平距离和垂直距离分别为0.4+X和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点1的水平距离和垂直距离分别为2×(0.4+X)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点26,27,28,29,32,1,2,3,33,6,7,8,34,11,12,13,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域②,则第一插值点距离最邻近的左上角的第二插值点2的偏移量水平距离和垂直距离分别为X-0.1和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点2的水平距离和垂直距离分别为2×(X-0.1)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点27,28,29,30,1,2,3,4,6,7,8,9,11,12,13,14,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域③,则第一插值点距离最邻近的左上角的第二插值点3的偏移量水平距离和垂直距离分别为X-0.6和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点3的水平距离和垂直距离分别为2×(X-0.6)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点28,29,30,31,2,3,4,5,7,8,9,10,12,13,14,15,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域④,则第一插值点距离最邻近的左上角的第二插值点6的偏移量水平距离和垂直距离分别为0.4+X和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点6的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点32,1,2,3,33,6,7,8,34,11,12,13,35,16,17,18,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑤,则第一插值点距离最邻近的左上角的第二插值点7的偏移量水平距离和垂直距离分别为X-0.1和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点7的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑥,则第一插值点距离最邻近的左上角的第二插值点8的偏移量水平距离和垂直距离分别为X-0.6和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点8的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑦,则第一插值点距离最邻近的左上角的第二插值点11的偏移量水平距离和垂直距离分别为0.4+X和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点11的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点33,6,7,8,34,11,12,13,35,16,17,18,36,21,22,23,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑧,则第一插值点距离最邻近的左上角的第二插值点12的偏移量水平距离和垂直距离分别为X-0.1和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点12的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑨,则第一插值点距离最邻近的左上角的第二插值点13的偏移量水平距离和垂直距离分别为X-0.6和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点13的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
上述以Lanczos函数作为插值函数进行描述,但是,在实际使用过程中,也可以使用其它的插值函数,此处不作具体限定。
参阅图8,图8是本申请图像放大装置另一实施方式的结构示意图。本实施方式的图像放大装置,用于将原始图像缩放得到目标尺寸的图像,包括:平滑模块810、第一插值点位置确定模块820、第二插值点位置确定模块830、第二插值点像素值确定模块840、超调模块850以及待插值像素点像素值确定模块860。
平滑模块810用于利用b×b的平滑模板对原始像素点进行平滑,其中,b为大于1的自然数。
比如,由于需要对原始图像进行大倍数的图像放大,所以放大后的新图像会呈现颗粒感,而且,新图像的边缘容易呈锯齿状。所以,在进行放大前,需要先进行平滑。在本实施方式中,可以利用3×3的平滑模板对原始像素点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。平滑模块810将平滑后的原始像素点的像素值发送给第二插值点像素值确定模块840。
第一插值点位置确定模块820用于根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,第一缩放比为目标尺寸的图像与原始图像之间的缩放比,第一缩放比大于2。
比如,请一并参阅图3,原始图像310包括多个原始像素点313,每个原始像素点313都具有一个像素值,多个原始像素点313组合在一起,而且原始像素点313具有不同的像素值使得原始图像310能够呈现出画面。新图像320是原始图像310经过放大后所得到的图像。新图像320同样包括多个像素点,而且新图像320中一部份的像素点的像素值是直接使用原始图像310中对应的原始像素点313的像素值而得到的,而另一部分的图像是根据原始图像310的多个原始像素点313的像素值并经插值算法插值而得到的。这些需要经过插值运算得到像素值的像素点则称为待插值像素点323。在一些情况下,新图像320中的所有的像素点的像素值都是经过插值而得到的,这时,新图像320的所有像素点都是待插值像素点323。
为了保证原始图像310和新图像320的相似性,可根据缩放比计算出新图像320中待插值像素点所对应的原始图像310中的插值点的位置。通常将新图像320中待插值像素点的位置除以缩放比即可得到原始图像310中的插值点的位置。例如,如果缩放比为3,则新图像320中待插值像素点的位置为(4,11)时,将待插值像素点的位置除以3,则原始图像310的插值点的位置为所以,根据第一缩放比可以计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。第一插值点位置确定模块820将第一插值点的位置向第二插值点位置确定模块830发送。
第二插值点位置确定模块830用于接收第一插值点的位置,根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,第二缩放比为中间的缩放比,大小为2。
比如,参阅图4,在计算出第一插值点A的位置后,对原始图像410进行一次2倍的放大。无论最终新图像需要放大多少倍,第一次图像放大的倍数都固定为2。所以,第二缩放比总是固定为2。根据第二缩放比为2,可以得知放大两倍时的插值点(即第二插值点)的位置。
假设第一插值点A的位置位于原始像素点15’,16’,21’,22’所围成的区域之间。则可以选取第一插值点310邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’。根据第二缩放比为2,可求出第一插值点邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’所围成的区域中的所有第二插值点1~36的位置。并使得所有的第二插值点1~36的位置在原来计算得到的位置上向水平和垂直方向都产生0.1个原始像素的偏移。第二插值点位置确定模块830将偏移后的第二插值点的位置向第二插值点像素值确定模块840发送。
第二插值点像素值确定模块840用于接收偏移后的第二插值点的位置,根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移。其中,m为大于1的自然数,第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,第二缩放比的大小为2。
比如,继续参阅图4,要使用Lanczos函数插值法计算第二插值点的像素值需知道插值点距离最邻近的左上角的原始像素点的水平距离和垂直距离以及第二插值点邻近的原始像素点的像素值。所以选取第二插值点邻域的4×4个原始像素点以插值法计算出第二插值点的像素值。对于第二插值点26,选取原始像素点1’,2’,3’,4’,7’,8’,9’,10’,13’,14’,15’,16’,19’,20’,21’,22’,而第二插值点27,32,1所选择的原始像素点与第二插值点26所选择的原始像素点完全相同。但第二插值点26,27,32,1与最邻近的左上角的像素点的距离各不相同,所以,原始图像的相邻四个像素8’,9’,14’,15’所围成的区域内的4个第二插值点26,27,32,1的像素值按插值法进行计算时,使用到的插值系数各不相同。对于原始图像的相邻四个像素点9’,10’,15’,16’所围成的区域中,第二插值点28,29,2,3所选择的邻域的4×4个原始像素点都是原始像素点2’,3’,4’,5’,8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’。第二插值点28距离原始像素点9’的距离与第二插值点26距离原始像素点8’的距离相等,第二插值点28使用到的插值系数与第二插值点26使用到的插值系数相同;第二插值点29距离原始像素点9’的距离与第二插值点27距离原始像素点8’的距离相等,第二插值点29使用到的插值系数与第二插值点27使用到的插值系数相同;第二插值点2距离原始像素点9’的距离与第二插值点32距离原始像素点8’的距离相等,第二插值点2使用到的插值系数与第二插值点32使用到的插值系数相同;第二插值点3距离原始像素点9’的距离与第二插值点1距离原始像素点8’的距离相等,第二插值点3使用到的插值系数与第二插值点1使用到的插值系数相同。所以,第二插值点28,29,2,3的像素值按插值法进行计算时,使用到的插值系数各不相同。对于其它原始图像的相邻四个像素所围成的区域亦是如是,此处不一一赘述。第二插值点像素值确定模块840将第二插值点的像素值发送给超调模块850。
超调模块850接收第二插值点的像素值,对第二插值点的像素值进行超调。
比如,在放大2倍的图像的边缘部分,例如物体与背景所形成的边缘部分,为了取得更好的视觉效果,希望边缘部分的像素值是单调变化的,但实际上经过插值后,边缘部分的像素值很可能是震荡变化的。所以,需要对第二插值点的像素值进行超调。例如,如果某个待插值像素点的像素值比其四邻域的像素点的像素值都小,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个待插值像素点的像素值比其四邻域的像素点的像素值都大,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。超调模块850将超调后的第二插值点的像素值发送给平滑模块810。
平滑模块810还用于接收超调后的第二插值点的像素值,利用b×b的平滑模板对第二插值点进行平滑,其中,b为大于1的自然数。
比如,在超调完毕后,利用3×3的平滑模板对第二插值点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。平滑模块810将平滑后的第二插值点的像素值发送给待插值像素点像素值确定模块860。
待插值像素点像素值确定模块860接收平滑后的第二插值点的像素值,根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大。其中,a为大于1的自然数,第三缩放比等于第一缩放比除以所述第二缩放比。这里,偏移量包括水平距离和垂直距离。
参阅图5,原始图像310的相应区域已经进行了一次两倍放大,故只需再按照第三缩放比进行一次放大,即可将原始图像310放大到所需要的倍数。
同样地,要使用Lanczos函数插值法计算第一插值点所对应的新图像中待插值像素点的的像素值需知道插值点距离最邻近的左上角的第二插值点的水平距离和垂直距离以及第一插值点邻近的第二插值点的像素值。
假设第一插值点位于原始像素点15’,16’,21’,22’所围成的区域之间。由于已经计算得到第一插值点在原始图像310中的位置,所以,可以计算得到第一插值点距离最邻近的左上角的原始像素点15’的水平距离X和垂直距离Y。
进一步地,如果第一插值点位于区域①,则第一插值点距离最邻近的左上角的第二插值点1的偏移量水平距离和垂直距离分别为0.4+X和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点1的水平距离和垂直距离分别为2×(0.4+X)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点26,27,28,29,32,1,2,3,33,6,7,8,34,11,12,13,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域②,则第一插值点距离最邻近的左上角的第二插值点2的偏移量水平距离和垂直距离分别为X-0.1和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点2的水平距离和垂直距离分别为2×(X-0.1)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点27,28,29,30,1,2,3,4,6,7,8,9,11,12,13,14,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域③,则第一插值点距离最邻近的左上角的第二插值点3的偏移量水平距离和垂直距离分别为X-0.6和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点3的水平距离和垂直距离分别为2×(X-0.6)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点28,29,30,31,2,3,4,5,7,8,9,10,12,13,14,15,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域④,则第一插值点距离最邻近的左上角的第二插值点6的偏移量水平距离和垂直距离分别为0.4+X和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点6的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点32,1,2,3,33,6,7,8,34,11,12,13,35,16,17,18,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑤,则第一插值点距离最邻近的左上角的第二插值点7的偏移量水平距离和垂直距离分别为X-0.1和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点7的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑥,则第一插值点距离最邻近的左上角的第二插值点8的偏移量水平距离和垂直距离分别为X-0.6和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点8的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑦,则第一插值点距离最邻近的左上角的第二插值点11的偏移量水平距离和垂直距离分别为0.4+X和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点11的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点33,6,7,8,34,11,12,13,35,16,17,18,36,21,22,23,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑧,则第一插值点距离最邻近的左上角的第二插值点12的偏移量水平距离和垂直距离分别为X-0.1和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点12的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑨,则第一插值点距离最邻近的左上角的第二插值点13的偏移量水平距离和垂直距离分别为X-0.6和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点13的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。待插值像素点像素值确定模块860将新图像中待插值像素点的像素值发送给超调模块850。
超调模块850用于接收新图像中待插值像素点的像素值,对待插值像素点的像素值进行超调。
比如,如果某个待插值像素点的像素值比其四邻域的像素点的像素值都小,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个待插值像素点的像素值比其四邻域的像素点的像素值都大,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。
参阅图9,图9是本申请图像放大装置又一实施方式的结构示意图。本实施方式的图像放大装置,用于将原始图像缩放得到目标尺寸的图像,包括:输入设备910、处理器920以及显示器930、随机存取存储器940、只读存储器950以及总线960。其中,处理器920通过总线960分别耦接输入设备910、显示器930、随机存取存储器940以及只读存储器950。其中,当需要运行图像放大装置时,通过固化在只读存储器950中的基本输入输出系统引导系统进行启动,引导图像放大装置进入正常运行状态。在图像放大装置进入正常运行状态后,在随机存取存储器940中运行应用程序和操作系统,使得:
输入设备910用于输入原始图像;
处理器920用于利用b×b的平滑模板对原始像素点进行平滑,其中,b为大于1的自然数,根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。其中,第一缩放比为目标尺寸的图像与原始图像之间的缩放比,第一缩放比大于2,根据第二缩放比计算出第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移。其中,m为大于1的自然数,第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,第二缩放比的大小为2,对第二插值点的像素值进行超调,根据第二插值点邻域的n×n个原始像素点以插值法计算出第二插值点的像素值。其中,n为大于1的自然数,原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同,利用b×b的平滑模板对第二插值点进行平滑,其中,b为大于1的自然数,根据第三缩放比计算出第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据偏移量以及第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大。其中,a为大于1的自然数,第三缩放比等于所述第一缩放比除以所述第二缩放比,对待插值像素点的像素值进行超调。
比如,由于需要对原始图像进行大倍数的图像放大,所以放大后的新图像会呈现颗粒感,而且,新图像的边缘容易呈锯齿状。所以,在进行放大前,需要先进行平滑。在本实施方式中,可以利用3×3的平滑模板对原始像素点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。
下面整个实施例以第一缩放比为3进行描述,此时,原始图像经过3倍放大后得到新图像。
请一并参阅图3,图3是本申请图像放大方法一实施方式的计算插值点的示意图。原始图像310包括多个原始像素点313,每个原始像素点313都具有一个像素值,多个原始像素点313组合在一起,而且原始像素点313具有不同的像素值使得原始图像310能够呈现出画面。新图像320是原始图像310经过放大后所得到的图像。新图像320同样包括多个像素点,而且新图像320中一部份的像素点的像素值是直接使用原始图像310中对应的原始像素点313的像素值而得到的,而另一部分的图像是根据原始图像310的多个原始像素点313的像素值并经插值算法插值而得到的。这些需要经过插值运算得到像素值的像素点则称为待插值像素点323。在一些情况下,新图像320中的所有的像素点的像素值都是经过插值而得到的,这时,新图像320的所有像素点都是待插值像素点323。
为了保证原始图像310和新图像320的相似性,可根据缩放比计算出新图像320中待插值像素点所对应的原始图像310中的插值点的位置。通常将新图像320中待插值像素点的位置除以缩放比即可得到原始图像310中的插值点的位置。例如,如果缩放比为3,则新图像320中待插值像素点的位置为(4,11)时,将待插值像素点的位置除以3,则原始图像310的插值点的位置为所以,根据第一缩放比可以计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置。
参阅图4,在计算出第一插值点A的位置后,对原始图像410进行一次2倍的放大。无论最终新图像需要放大多少倍,第一次图像放大的倍数都固定为2。所以,第二缩放比总是固定为2。根据第二缩放比为2,可以得知放大两倍时的插值点(即第二插值点)的位置。
假设第一插值点A的位置位于原始像素点15’,16’,21’,22’所围成的区域之间。则可以选取第一插值点310邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’。根据第二缩放比为2,可求出第一插值点邻域的4×4个原始像素点8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’,26’,27’,28’,29’所围成的区域中的所有第二插值点1~36的位置。并使得所有的第二插值点1~36的位置在原来计算得到的位置上向水平和垂直方向都产生0.1个原始像素的偏移。
继续参阅图4,要使用Lanczos函数插值法计算第二插值点的像素值需知道插值点距离最邻近的左上角的原始像素点的水平距离和垂直距离以及第二插值点邻近的原始像素点的像素值。所以选取第二插值点邻域的4×4个原始像素点以插值法计算出第二插值点的像素值。对于第二插值点26,选取原始像素点1’,2’,3’,4’,7’,8’,9’,10’,13’,14’,15’,16’,19’,20’,21’,22’,而第二插值点27,32,1所选择的原始像素点与第二插值点26所选择的原始像素点完全相同。但第二插值点26,27,32,1与最邻近的左上角的像素点的距离各不相同,所以,原始图像的相邻四个像素8’,9’,14’,15’所围成的区域内的4个第二插值点26,27,32,1的像素值按插值法进行计算时,使用到的插值系数各不相同。对于原始图像的相邻四个像素点9’,10’,15’,16’所围成的区域中,第二插值点28,29,2,3所选择的邻域的4×4个原始像素点都是原始像素点2’,3’,4’,5’,8’,9’,10’,11’,14’,15’,16’,17’,20’,21’,22’,23’。第二插值点28距离原始像素点9’的距离与第二插值点26距离原始像素点8’的距离相等,第二插值点28使用到的插值系数与第二插值点26使用到的插值系数相同;第二插值点29距离原始像素点9’的距离与第二插值点27距离原始像素点8’的距离相等,第二插值点29使用到的插值系数与第二插值点27使用到的插值系数相同;第二插值点2距离原始像素点9’的距离与第二插值点32距离原始像素点8’的距离相等,第二插值点2使用到的插值系数与第二插值点32使用到的插值系数相同;第二插值点3距离原始像素点9’的距离与第二插值点1距离原始像素点8’的距离相等,第二插值点3使用到的插值系数与第二插值点1使用到的插值系数相同。所以,第二插值点28,29,2,3的像素值按插值法进行计算时,使用到的插值系数各不相同。对于其它原始图像的相邻四个像素所围成的区域亦是如是,此处不一一赘述。
在放大2倍的图像的边缘部分,例如物体与背景所形成的边缘部分,为了取得更好的视觉效果,希望边缘部分的像素值是单调变化的,但实际上经过插值后,边缘部分的像素值很可能是震荡变化的。所以,需要对第二插值点的像素值进行超调。例如,如果某个待插值像素点的像素值比其四邻域的像素点的像素值都小,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个待插值像素点的像素值比其四邻域的像素点的像素值都大,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。
在超调完毕后,利用3×3的平滑模板对第二插值点进行平滑。这里也可以用4×4的平滑模板或更大的平滑模板,此处不作具体限定。
参阅图5,经过步骤S203后,原始图像310的相应区域已经进行了一次两倍放大,故只需再按照第三缩放比进行一次放大,即可将原始图像310放大到所需要的倍数。
同样地,要使用Lanczos函数插值法计算第一插值点所对应的新图像中待插值像素点的的像素值需知道插值点距离最邻近的左上角的第二插值点的水平距离和垂直距离以及第一插值点邻近的第二插值点的像素值。这里,偏移量包括水平距离和垂直距离。
假设第一插值点位于原始像素点15’,16’,21’,22’所围成的区域之间。由于在步骤S201中已经计算得到第一插值点在原始图像310中的位置,所以,可以计算得到第一插值点距离最邻近的左上角的原始像素点15’的水平距离X和垂直距离Y。
进一步地,如果第一插值点位于区域①,则第一插值点距离最邻近的左上角的第二插值点1的偏移量水平距离和垂直距离分别为0.4+X和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点1的水平距离和垂直距离分别为2×(0.4+X)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点26,27,28,29,32,1,2,3,33,6,7,8,34,11,12,13,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域②,则第一插值点距离最邻近的左上角的第二插值点2的偏移量水平距离和垂直距离分别为X-0.1和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点2的水平距离和垂直距离分别为2×(X-0.1)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点27,28,29,30,1,2,3,4,6,7,8,9,11,12,13,14,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域③,则第一插值点距离最邻近的左上角的第二插值点3的偏移量水平距离和垂直距离分别为X-0.6和0.4+Y,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点3的水平距离和垂直距离分别为2×(X-0.6)和2×(0.4+Y)。选取第一插值点4×4邻域的第二插值点28,29,30,31,2,3,4,5,7,8,9,10,12,13,14,15,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域④,则第一插值点距离最邻近的左上角的第二插值点6的偏移量水平距离和垂直距离分别为0.4+X和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点6的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点32,1,2,3,33,6,7,8,34,11,12,13,35,16,17,18,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑤,则第一插值点距离最邻近的左上角的第二插值点7的偏移量水平距离和垂直距离分别为X-0.1和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点7的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑥,则第一插值点距离最邻近的左上角的第二插值点8的偏移量水平距离和垂直距离分别为X-0.6和Y-0.1,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点8的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.1)。选取第一插值点4×4邻域的第二插值点2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑦,则第一插值点距离最邻近的左上角的第二插值点11的偏移量水平距离和垂直距离分别为0.4+X和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点11的水平距离和垂直距离分别为2×(0.4+X)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点33,6,7,8,34,11,12,13,35,16,17,18,36,21,22,23,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑧,则第一插值点距离最邻近的左上角的第二插值点12的偏移量水平距离和垂直距离分别为X-0.1和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点12的水平距离和垂直距离分别为2×(X-0.1)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果第一插值点位于区域⑨,则第一插值点距离最邻近的左上角的第二插值点13的偏移量水平距离和垂直距离分别为X-0.6和Y-0.6,而两个相邻第二插值点之间的距离只有两个相邻原始像素点之间距离的0.5倍,使用插值法时必须进行归一化,所以,归一化后,第一插值点距离最邻近的左上角的第二插值点13的水平距离和垂直距离分别为2×(X-0.6)和2×(Y-0.6)。选取第一插值点4×4邻域的第二插值点7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,并利用这些第二插值点的像素值进行插值运算,得到新图像中待插值像素点的像素值。
如果某个待插值像素点的像素值比其四邻域的像素点的像素值都小,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最小值,用最小值与该第二插值点的像素值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,将最终的超调值加到该第二插值点计算得到的像素值上得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。如果某个待插值像素点的像素值比其四邻域的像素点的像素值都大,则需要对这个待插值像素点的像素值进行超调,计算得到第二插值点最邻近的上下左右四个原始像素点的像素值的最大值,用该第二插值点的像素值与最大值的差值作为最大超调值,用超调系数与最大超调值的积作为最终的超调值,用第二插值点的像素值减去最终的超调值得到超调后的第二插值点的像素值,其中,超调系数是大于0而小于1的一个小数。
显示器930用于显示放大后的新图像。
上述方案通过采用两级图像放大,先将原始图像先进行一次2倍的放大,然后再根据需要对放大了2倍的图像再次进行放大,由于第一次进行图像放大采用的是2倍图像放大,图像保留的高频信息会比较多,图像会比较清晰,再经过第二次图像放大的放大倍数比根据需要直接进行放大的放大倍数要小,所以,保留的高频信息会比直接采用需要的倍数进行放大的方法所保留的高频信息多,图像也较为清晰。而且,在第一级的2倍放大中增加了偏移处理,相对传统的放大技术可以提高图像的清晰度。
另外,引入平滑模板,在保持图像清晰度的同时可以呈现相对较好的平滑性。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种图像放大方法,用于将原始图像缩放得到目标尺寸的图像,其特征在于,包括如下步骤:
根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,所述第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2;
根据第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得所述第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,所述第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,所述第二缩放比的大小为2;
根据所述第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值,其中,n为大于1的自然数,所述原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同;
根据第三缩放比计算出所述第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据所述偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,所述第三缩放比等于所述第一缩放比除以所述第二缩放比。
2.根据权利要求1所述的方法,其特征在于,所述根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置的步骤之后,所述根据第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置的步骤之前包括:
利用b×b的平滑模板对所述原始像素点进行平滑,其中,b为大于1的自然数。
3.根据权利要求1所述的方法,其特征在于,所述根据第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值的步骤之后,所述根据偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值的步骤之前包括:
利用b×b的平滑模板对所述第二插值点进行平滑,其中,b为大于1的自然数。
4.根据权利要求1所述的方法,其特征在于,所述根据第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值的步骤之后包括:
对所述第二插值点的像素值进行超调。
5.根据权利要求1所述的方法,其特征在于,所述根据偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值的步骤之后包括:
对所述待插值像素点的像素值进行超调。
6.一种图像放大装置,其特征在于,用于将原始图像缩放得到目标尺寸的图像,包括:第一插值点位置确定模块、第二插值点位置确定模块、第二插值点像素值确定模块以及待插值像素点像素值确定模块;
所述第一插值点位置确定模块用于根据第一缩放比计算出新图像中待插值像素点在原始图像中对应的第一插值点的位置,其中,所述第一缩放比为目标尺寸的图像与原始图像之间的缩放比,所述第一缩放比大于2,所述第一插值点位置确定模块将所述第一插值点的位置向所述第二插值点位置确定模块发送;
所述第二插值点位置确定模块用于接收所述第一插值点的位置,根据第二缩放比计算出所述第一插值点邻域的m×m个原始像素点所围成的区域中的所有第二插值点的位置,并使得所述第二插值点的位置相对于最邻近的左上角的原始像素在水平或垂直方向中至少一个方向产生小于1像素的偏移,其中,m为大于1的自然数,所述第二缩放比得到的图像的尺寸,处于原始图像的尺寸和目标尺寸之间,所述第二缩放比的大小为2,所述第二插值点位置确定模块将偏移后的第二插值点的位置向所述第二插值点像素值确定模块发送;
所述第二插值点像素值确定模块用于接收偏移后的第二插值点的位置,根据所述第二插值点邻域的n×n个原始像素点以插值法计算出所述第二插值点的像素值,其中,n为大于1的自然数,所述原始图像的相邻四个像素所围成的区域内的4个第二插值点的像素值按插值法进行计算时,使用到的插值系数各不相同,所述第二插值点像素值确定模块将所述第二插值点的像素值向所述待插值像素点像素值确定模块发送;
所述待插值像素点像素值确定模块用于接收所述第二插值点的像素值,根据第三缩放比计算出所述第一插值点相对于最邻近的左上角的第二插值点的偏移量,并根据所述偏移量以及所述第一插值点邻域的a×a个第二插值点的像素值计算出新图像中待插值像素点的像素值,以实现对图像进行放大,其中,a为大于1的自然数,所述第三缩放比等于所述第一缩放比除以所述第二缩放比。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括平滑模块,所述平滑模块用于利用b×b的平滑模板对所述原始像素点进行平滑,其中,b为大于1的自然数。
8.根据权利要求7所述的装置,其特征在于,所述平滑模块还用于利用b×b的平滑模板对所述第二插值点进行平滑,其中,b为大于1的自然数。
9.根据权利要求6所述的装置,所述装置还包括超调模块,所述超调模块用于对所述第二插值点的像素值进行超调。
10.根据权利要求9所述的装置,其特征在于,所述超调模块还用于对所述待插值像素点的像素值进行超调。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310326931.6A CN103500434B (zh) | 2013-07-30 | 2013-07-30 | 图像放大方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310326931.6A CN103500434B (zh) | 2013-07-30 | 2013-07-30 | 图像放大方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103500434A CN103500434A (zh) | 2014-01-08 |
CN103500434B true CN103500434B (zh) | 2016-09-28 |
Family
ID=49865637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310326931.6A Active CN103500434B (zh) | 2013-07-30 | 2013-07-30 | 图像放大方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103500434B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105160634B (zh) * | 2015-06-30 | 2018-09-21 | 上海交通大学 | 像素图像放大方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110431A (zh) * | 2009-12-23 | 2011-06-29 | 富士通微电子(上海)有限公司 | 数字图像的缩放方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006238188A (ja) * | 2005-02-25 | 2006-09-07 | Matsushita Electric Ind Co Ltd | 補間フィルタおよび映像信号処理装置 |
-
2013
- 2013-07-30 CN CN201310326931.6A patent/CN103500434B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110431A (zh) * | 2009-12-23 | 2011-06-29 | 富士通微电子(上海)有限公司 | 数字图像的缩放方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于双三次插值算法的图像缩放引擎的设计;张阿珍;《微电子学与计算机》;20071231;第24卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103500434A (zh) | 2014-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103745439B (zh) | 图像放大方法以及装置 | |
US10643339B2 (en) | Motion based adaptive rendering | |
JP6147275B2 (ja) | 立体画像処理装置、立体画像処理方法、及びプログラム | |
US8576220B2 (en) | Image processing method and associated apparatus for rendering three-dimensional effect using two-dimensional image | |
US10614551B2 (en) | Image interpolation methods and related image interpolation devices thereof | |
CN102682446B (zh) | 使用自适应联合双边滤波器生成稠密深度图的设备和方法 | |
CN100366050C (zh) | 一种图像缩放方法及图像缩放器系统 | |
US7324706B2 (en) | System and method for representing a general two dimensional spatial transformation | |
US8335394B2 (en) | Image processing method for boundary resolution enhancement | |
US20180324465A1 (en) | Edge-aware spatio-temporal filtering and optical flow estimation in real time | |
CN108154474A (zh) | 一种超分辨率图像重构方法、装置、介质及设备 | |
CN103985085A (zh) | 图像超分辨率放大的方法和装置 | |
Liu et al. | $ L_ {0} $-regularized image downscaling | |
CN102243756A (zh) | 图像处理设备、图像处理方法和图像处理程序 | |
CN102682426A (zh) | 图像处理设备、图像处理方法及程序 | |
CN104737199A (zh) | 图像处理装置 | |
US10475229B2 (en) | Information processing apparatus and information processing method | |
KR100860968B1 (ko) | 해상도 향상 장치 및 방법 | |
Kellnhofer et al. | 3DTV at home: eulerian-lagrangian stereo-to-multiview conversion | |
US8948502B2 (en) | Image processing method, and image processor | |
CN101939763B (zh) | 生成多尺度对比度增强的图像的方法 | |
CN103500434B (zh) | 图像放大方法及装置 | |
Qi et al. | Shift-map based stereo image retargeting with disparity adjustment | |
JP2019042408A (ja) | 放射線画像処理装置、プログラム及び放射線画像処理方法 | |
JPWO2007063586A1 (ja) | 3次元グラフィック装置、3次元グラフィック方法、3次元グラフィックプログラム、および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |