一种基于相关性检测的非线性图像放大两倍方法
技术领域
本发明涉及计算机图像处理及图像缩放领域,特别是涉及一种基于相关性检测的非线性图像放大两倍方法。
背景技术
图像缩放就是改变图像的分辨率,包括从低分辨率到高分辨率的图像放大以及从高分辨率到低分辨率的图像缩小,其核心问题是如何根据源图像的像素颜色分布以及图像的各种特征,重构出新分辨率下目标图像的像素颜色值。因此,图像缩放也可以理解为图像重建中的重采样。
图像缩小对应于图像的降采样,目前该问题已有较好的实现方法;图像放大对应于图像的超采样,也称为图像插值或超分辨率技术,则是图像缩放的研究重点,这也是本发明的主要研究对象。图像放大中,按其原始图像为单幅图像或多幅图像又可分为单帧图像插值和多帧图像插值。
单帧图像插值是指将单幅源图像作为输入,利用某种插值方法获得一幅期望的新分辨率下的目标图像。而多帧图像插值的输入为多幅略有不同的图像序列,然后根据该图像序列的特征和图像信息得到一幅新分辨率下的目标图像。本发明主要研究的是基于单帧的图像放大。
从数值分析的角度来看,图像缩放过程都可以理解为:根据图像像素的离散颜色信息重建一个连续函数f,然后根据所需的新分辨率对f进行重采样来得到缩放图像。所以如何选择连续函数f是图像缩放的关键。
一般来说,对连续函数f有以下几个要求:
(1)函数f插值源图像,即将函数f在原始分辨率上进行采样,可以完全恢复源图像的特征;
(2)函数f在新分辨率上重采样后,要尽可能地保持图像像素之间颜色的连续性以及图像边缘特征,即缩放后图像不会出现锯齿和边缘特征模糊的现象;
(3)函数f在新分辨率上重采样后,要尽可能地保持图像的细节纹理信息。这也是现阶段图像缩放技术上的难点之一。
所以理论上,图像缩放可以看作一个二元函数重构与重采样的问题。若图像上像素(i,j)处的颜色值为fij,图像大小为M×N,现要将图像缩放至P×Q,则图像缩放可以描述如下:假设f(x,y)是定义在二维区域上的一个函数,首先根据像素点处的离散颜色值{fij}(i=1,2,...,M;j=1,2,...N)重构函数f(x,y),使得f(i,j)=fij,其中(x,y)∈[1,M]×[1,N]。如果源图像为灰度图,那么f(x,y)为标量函数;如果源图像为彩色图像,那么f(x,y)为矢量函数;然后在[1,P]×[1,Q]上按照适当的规则对f(x,y)进行重采样,结果即为缩放后的目标图像。当P<M且Q<N时,为图像缩小;当P>M且Q>N时为图像放大;当P=2M且Q=2N时,对应于函数f(x,y)的超采样,则是图像缩放的研究重点。
图像缩放算法众多,其中最常见的是基于核函数的插值算法,它们的共同特点是采用一个连续函数来描述离散图像。目标图像中的像素T(x,y)可通过如下公式求得:
其中Sij为源图像S的采样点,f(x-i,y-j)为插值核函数。为了减少运算量,往往选择线性的核函数,即满足f(x,y)=f(x)f(y)。这类算法的本质是对原始图像的离散像素值插值,重建得到一个连续模型。由于该类方法在图像放大时会导致边缘模糊、高频信息丢失等问题,促使人们从本质上对该类算法进行思考和分析。在意识到人眼对图像边缘特征等高频信息的特殊敏感性之后,人们提出了一类基于图像边缘特征检测的非线性图像放大算法,也叫做基于边缘检测的自适应插值算法。
这类算法在进行像素插值之前,首先进行局部的图像边缘特征检测,然后按照检测所得边缘方向对图像进行插值,以保持图像边缘的清晰和尖锐性,从而保证缩放图像的视觉效果。这类算法的出发点是:沿着图像边缘方向,图像的灰度值变化是平缓的;而穿过图像边缘方向,即从边缘的一侧到另一侧,图像的灰度值变化是剧烈的。所以这类算法的关键是如何准确地找到边缘方向,使得图像的插值沿着边缘方向进行。
这类算法的典型代表是LAZA算法,它将分辨率M×N图像放大至分辨率(2M-1)×(2N-1)图像。该算法的主要思想是从源图像中检测出边缘信息,然后调整相应的插值方式,使得插值能够沿着边缘方向进行。在进行边缘检测时,对2×2局部像素区域内的水平、竖直、正对角与反对角四个方向的常数相关性进行比较,在进行像素插值时,沿相关性最大的方向进行线性插值。
该算法是非线性的,具有较好的局部性,而且实现简单,因而可以取得较好的图像放大效果,实现效率较高。但是由于该算法中检测的边缘方向只有四个,难以全面描述图像的边缘特征。此外,图像像素之间的相关性仅考虑了常数相关性,导致算法易受图像噪音的影响,可能导致图像的边缘特征模糊。
发明内容
本发明提供了一种基于相关性检测的非线性图像放大两倍方法,可以更好地保持放大图像的边缘特征,具有更好的视觉效果。
一种基于相关性检测的非线性图像放大两倍方法,该方法包括以下步骤:
(1)将分辨率为M×N的源图像S由RGB颜色空间转换到YUV颜色空间;
(2)将转换到YUV颜色空间后的源图像S放大两倍,得到分辨率为2M×2N的目标图像T,在目标图像T中选取2×2的像素矩阵作为一个处理单元遍历此目标图像,对每个处理单元进行以下操作,以计算出处理单元内四个像素的Y分量亮度值:
a.将处理单元的四个像素分别标记为源像素T(2i-1,2j-1)、水平像素T(2i-1,2j)、竖直像素T(2i,2j-1)和对角像素T(2i,2j),其中1≤i≤M,1≤j≤N,将源图像S中像素S(i,j)的Y分量亮度值赋值给源像素T(2i-1,2j-1),作为此源像素的Y分量亮度值;
b.计算水平像素T(2i-1,2j)的初始Y分量亮度值Y1,计算过程如下:
选取水平方向上的四个源像素T(2i-1,2j-3)、T(2i-1,2j-1)、T(2i-1,2j+1)、T(2i-1,2j+3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个斜对角方向上的两个源像素T(2i-3,2j-1)、T(2i+1,2j+1),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素T(2i+1,2j-1)、T(2i-3,2j+1),对其Y分量亮度值计算常数相关性;
从这5个相关性数值中选出最小值,此最小值所在的方向即为相关性最高的方向,以此方向和相关性类型对水平像素T(2i-1,2j)进行插值,计算出水平像素T(2i-1,2j)的初始Y分量亮度值Y1;
c.计算竖直像素T(2i,2j-1)的初始Y分量亮度值Y2,计算过程如下:
选取竖直方向上的四个源像素T(2i-3,2j-1)、T(2i-1,2j-1)、T(2i+1,2j-1)、T(2i+3,2j-1),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的两个水平像素T(2i-1,2j-2)、T(2i+1,2j),对其初始Y分量亮度值Y1计算常数相关性;
选取另一个正对角方向上的两个水平像素T(2i+1,2j-2)、T(2i-1,2j),对其初始Y分量亮度值Y1计算常数相关性;
选取一个斜对角方向上的两个源像素T(2i-1,2j-3)、T(2i+1,2j+1),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素T(2i+1,2j-3)、T(2i-1,2j+1),对其Y分量亮度值计算常数相关性;
从这7个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对竖直像素T(2i,2j-1)进行插值,计算出竖直像素T(2i,2j-1)的初始Y分量亮度值Y2;
d.计算竖直像素T(2i,2j-1)的另一个初始Y分量亮度值Y3,计算过程如下:
选取竖直方向上的四个源像素T(2i-3,2j-1)、T(2i-1,2j-1)、T(2i+1,2j-1)、T(2i+3,2j-1),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个斜对角方向上的两个源像素T(2i-1,2j-3)、T(2i+1,2j+1),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素T(2i+1,2j-3)、T(2i-1,2j+1),对其Y分量亮度值计算常数相关性;
从这5个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对竖直像素T(2i-1,2j)进行插值,计算出竖直像素T(2i-1,2j)的另一个初始Y分量亮度值Y3;
e.计算水平像素T(2i-1,2j)的另一个初始Y分量亮度值Y4,计算过程如下:
选取水平方向上的四个源像素T(2i-3,2j-1)、T(2i-1,2j-1)、T(2i+1,2j-1)、T(2i+3,2j-1),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的两个竖直像素T(2i-2,2j-1)、T(2i,2j+1),对其另一个初始Y分量亮度值Y3计算常数相关性;
选取另一个正对角方向上的两个竖直像素T(2i,2j-1)、T(2i-2,2j+1),对其另一个初始Y分量亮度值Y3计算常数相关性;
选取一个斜对角方向上的两个源像素T(2i-3,2j-1)、T(2i+1,2j+1),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素T(2i+1,2j-1)、T(2i-3,2j+1),对其Y分量亮度值计算常数相关性;
从这7个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对水平像素T(2i-1,2j)进行插值,计算出水平像素T(2i-1,2j)的另一个Y分量亮度值Y4;
f.将Y1和Y4的平均值
作为水平像素T(2i-1,2j)的最终Y分量亮度值Y5,将Y2和Y3的平均值
作为竖直像素T(2i-1,2j)的最终Y分量亮度值Y6;
e.计算对角像素T(2i,2j)的Y分量亮度值Y7,计算过程如下:
选取水平方向上的四个竖直像素T(2i,2j-3)、T(2i,2j-1)、T(2i,2j+1)、T(2i,2j+3),对其最终Y分量亮度值Y6计算常数相关性、线性相关性和二次相关性;
选取竖直方向上的四个水平像素T(2i-3,2j)、T(2i-1,2j)、T(2i+1,2j)、T(2i+3,2j),对其最终Y分量亮度值Y5计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的四个源像素T(2i-3,2j-3)、T(2i-1,2j-1)、T(2i+1,2j+1)、T(2i+3,2j+3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取另一个正对角方向上的四个源像素T(2i+3,2j-3)、T(2i+1,2j-1)、T(2i-1,2j+1)、T(2i-3,2j+3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个斜对角方向上的两个水平像素T(2i-1,2j-2)、T(2i+1,2j+2),对其最终Y分量亮度值Y5计算常数相关性;
选取另一个斜对角方向上的两个水平像素T(2i+1,2j-2)、T(2i-1,2j+2),对其最终Y分量亮度值Y5计算常数相关性;
选取另一个斜对角方向上的两个竖直像素T(2i-2,2j-1)、T(2i+2,2j+1),对其最终Y分量亮度值Y6计算常数相关性;
选取另一个斜对角方向上的两个竖直像素T(2i+2,2j-1)、T(2i-2,2j+1),对其最终Y分量亮度值Y6计算常数相关性;
从这16个相关性数值中选出最小值,并以此最小值所在的方向和相关性类型对对角像素T(2i,2j)进行插值,计算出对角像素T(2i,2j)的Y分量亮度值Y7。
(3)对经过步骤(2)处理完成之后得到的目标图像的U、V分量进行双线性插值运算,得到新图像;
(4)将新的图像由YUV颜色空间转换到RGB颜色空间,即得到放大两倍的结果。
本发明一种基于相关性检测的非线性图像放大两倍方法针对LAZA图像处理算法中检验的相关方向少,只考虑像素的线性相关性,难以全面描述图像边缘特征,易受图像噪音的影响的缺陷,考虑了更多的潜在相关方向,并加入了针对图像边缘特征的线性与二次相关性检测,可以更好地保持放大图像的边缘特征,具有更好的视觉效果。由于该算法是一个局部性算法,像素处理过程具有很好的并行性,每一个步骤都可以在家用电脑的图形卡硬件中并行处理,可以利用GPU对该算法实现十倍以上的加速,为非专业人员提供了一种简便直观的实时的图像放大方法。
附图说明
图1为本发明方法的流程图;
图2为采用本发明的方法示意图;
图3为计算水平像素初始Y分量亮度值Y1的方法示意图;
图4为计算竖直像素初始Y分量亮度值Y2的方法示意图;
图5为计算水平像素另一个初始Y分量亮度值Y3的方法示意图;
图6为计算竖直像素另一个初始Y分量亮度值Y4的方法示意图;
图7为计算对角像素Y分量亮度值Y7的方法示意图。
具体实施方式
本发明一种基于相关性检测的非线性图像放大两倍方法,包括以下步骤:
(1)将分辨率为5×5的源图像5由RGB颜色空间转换到YUV颜色空间,转换方法为
式中R、G、B分别表示像素的红、绿、蓝颜色值,Y是像素的亮度通道值,U和V是像素的两个彩色通道值,表示色差。
(2)将转换到YUV颜色空间后的源图像5放大两倍,得到分辨率为10×10的目标图像6,以2×2的像素矩阵区域作为一个单元将目标图像6分为25个处理单元,将每个处理单元内的四个像素分别记为源像素1,水平像素2,竖直像素3,对角像素4,对每个处理单元进行相同的操作,计算出处理单元内四个像素的Y分量亮度值,以图2中右图所示选取的处理单元为例,此操作过程如下:
a.将当前处理单元内的源像素1,水平像素2,竖直像素3,对角像素4的位置坐标分别标记为T(3,3)、T(3,4)、T(4,3)、T(4,4),将源图像5中像素S(2,2)的Y分量亮度值赋值给当前处理单元内的源像素1,作为此源像素1的Y分量亮度值;
b.计算当前处理单元内水平像素2的初始Y分量值Y1,计算过程如下:
如图3所示,选取水平方向上的四个源像素1,它们的坐标分别为T(3,1)、T(3,3)、T(3,5)、T(3,7),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性。
分别用D
1、D
2、D
3、D
4表示这四个像素的Y分量亮度值,记其平均值
则其常数相关性为
用四个点x1=1,y1=D1;x2=2,y2=D2;x3=3,y3=D3;x4=4,y4=D4表示水平方向上的这四个源像素1,用一个线性函数y1(x)=a1x+b1对这四个点做最小二乘法拟合,可以算得
a1=(4U-PT)/(4Q-P2)
b1=(TQ-PU)/(4Q-P2)
用一个二次函数y2(x)=a2x2+b2x+c2对这四个点做最小二乘法拟合,可以算得
a2=(4QV+PWT+PQU-Q2T-P2V-4WU)/K
b2=(4SU+PQV+QWT-Q2U-PST-4WV)/K
c2=(QST+QWU+PWV-Q2V-PSU-W2T)/K
式中
K=4QS+2PQW-Q
3-SP
2-4W
2,则其二次相关性为
选取一个斜对角方向上的两个源像素1,它们的坐标分别为T(1,3)、T(5,5),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素1,它们的坐标分别为T(5,3)、T(1,5),对其Y分量亮度值计算常数相关性;
从这5个相关性数值中选出最小值,若水平方向上的常数相关性数值最小,则Y1取这个方向上四个源像素1的Y分量亮度值的平均值,即
若水平方向上的线性相关性数值最小,则用线性函数y
1(x)对水平像素T(3,4)进行插值,Y1取x=2.5时的函数值y
1(2.5);若水平方向上的二次相关性数值最小,则用二次函数y
2(x)对水平像素T(3,4)进行插值,Y1取x=2.5时的函数值y
2(2.5);若斜对角方向上的常数相关性数值最小,则Y1取这个方向上两个源像素1的Y分量亮度值的平均值。
以下步骤中常数相关性、线性相关性、二次相关性和像素Y分量亮度值的计算使用如上所述相同的方法。
c.计算当前处理单元内竖直像素3的初始Y分量值Y2,计算过程如下:
如图4所示,选取竖直方向上的四个源像素1,它们的坐标分别为T(1,3)、T(3,3)、T(5,3)、T(7,3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的两个水平像素2,它们的坐标分别为T(3,2)、T(5,4),对其初始Y分量亮度值Y1计算常数相关性;
选取另一个正对角方向上的两个水平像素2,它们的坐标分别为T(5,2)、T(3,4),对其初始Y分量亮度值Y1计算常数相关性;
选取一个斜对角方向上的两个源像素1,它们的坐标分别为T(3,1)、T(1,5),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素1,它们的坐标分别为T(5,1)、T(3,5),对其Y分量亮度值计算常数相关性;
从这7个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对当前处理单元内竖直像素3进行插值,计算出此竖直像素3的初始Y分量亮度值Y2。
d.计算当前处理单元内竖直像素3的另一个初始Y分量亮度值Y3,计算过程如下:
如图5所示,选取竖直方向上的四个源像素1,它们的坐标分别为T(1,3)、T(3,3)、T(5,3)、T(7,3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个斜对角方向上的两个源像素1,它们的坐标分别为T(3,1)、T(5,5),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素1,它们的坐标分别为T(5,1)、T(3,5),对其Y分量亮度值计算常数相关性;
从这5个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对当前处理单元内竖直像素3进行插值,计算出此竖直像素3的另一个初始Y分量亮度值Y3。
e.计算当前处理单元内水平像素2的另一个初始Y分量亮度值Y4,计算过程如下:
如图6所示,选取水平方向上的四个源像素1,它们的坐标分别为T(3,1)、T(3,3)、T(5,3)、T(7,3),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的两个竖直像素3,它们的坐标分别为T(2,3)、T(4,5),对其初始Y分量亮度值Y3计算常数相关性;
选取另一个正对角方向上的两个竖直像素3,它们的坐标分别为T(4,3)、T(2,5),对其初始Y分量亮度值Y3计算常数相关性;
选取一个斜对角方向上的两个源像素1,它们的坐标分别为T(1,3)、T(5,5),对其Y分量亮度值计算常数相关性;
选取另一个斜对角方向上的两个源像素1,它们的坐标分别为T(5,3)、T(1,5),对其Y分量亮度值计算常数相关性;
从这7个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对当前处理单元内水平像素2进行插值,计算出此水平像素2的另一个Y分量亮度值Y4。
f.取当前处理单元内水平像素2的两个初始Y分量亮度值的平均值
作为此水平像素2的最终Y分量亮度值Y5,取当前处理单元内竖直像素3的两个初始Y分量亮度值的平均值
作为此竖直像素3的最终Y分量亮度值Y6;
g.计算当前处理单元内对角像素4的Y分量亮度值,计算过程如下:
如图7所示,选取水平方向上的四个竖直像素3,它们的坐标分别为T(4,1)、T(4,3)、T(4,5)、T(4,7),对其最终Y分量亮度值Y6计算常数相关性、线性相关性和二次相关性;
选取竖直方向上的四个水平像素1,它们的坐标分别为T(1,4)、T(3,4)、T(5,4)、T(7,4),对其最终Y分量亮度值Y5计算常数相关性、线性相关性和二次相关性;
选取一个正对角方向上的四个源像素1,它们的坐标分别为T(1,1)、T(3,3)、T(5,5)、T(7,7),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取另一个正对角方向上的四个源像素1,它们的坐标分别为T(7,1)、T(5,3)、T(3,5)、T(1,7),对其Y分量亮度值计算常数相关性、线性相关性和二次相关性;
选取一个斜对角方向上的两个水平像素2,它们的坐标分别为T(3,2)、T(5,6),对其Y分量亮度值Y5计算常数相关性;
选取另一个斜对角方向上的两个水平像素2,它们的坐标分别为T(5,2)、T(3,6),对其最终Y分量亮度值Y5计算常数相关性;
选取另一个斜对角方向上的两个竖直像素3,它们的坐标分别为T(2,3)、T(6,5),对其最终Y分量亮度值Y6计算常数相关性;
选取另一个斜对角方向上的两个竖直像素3,它们的坐标分别为T(6,3)、T(2,5),对其最终Y分量亮度值Y6计算常数相关性;
从这16个相关性数值中选出最小值,以此最小值所在的方向和相关性类型对当前处理单元内对角像素4进行插值,计算出此对角像素4的Y分量亮度值Y7。
(3)对经过步骤(2)处理完成之后得到的目标图像6的U、V分量进行双线性插值运算,得到新图像;
(4)将新的图像由YUV颜色空间转换到RGB颜色空间,即得到放大两倍的结果。