发明内容
本发明所要解决的技术问题在于提供一种数字图像插值处理方法,以提高插值处理速度的同时,将插值参数压缩储存,极大地降低插值参数所需的储存空间。
为了实现上述目的,本发明提供了一种数字图像插值处理方法,其特点在于,包括如下步骤:将像素间的空白区域平均划分为多个方格;根据当前该方格所在位置,确定各方格相对于其采样点的插值参数;将所有方格相对于其采样点的插值参数压缩储存;缩放图像,确定插值点落入的目标方格;根据该目标方格的位置解压缩插值参数,从而计算该方格对应的插值参数;及根据该插值参数以及该采样点的亮度值,计算该插值点的亮度值。
上述数字图像插值处理方法,其特点在于,该将空白区域划分为多个方格的步骤,为等份划分4*4=16个方格。
上述数字图像插值处理方法,其特点在于,该将空白区域划分为多个方格的步骤,为等份划分3*3=9个方格。
上述数字图像插值处理方法,其特点在于,该将空白区域划分为多个方格的步骤,为等份划分2*2=4个方格。
上述数字图像插值处理方法,其特点在于,各方格的插值参数为各方格中心点的插值参数。
上述数字图像插值处理方法,其特点在于,该采样点的个数为4个。
上述数字图像插值处理方法,其特点在于,该采样点的个数为16个。
上述数字图像插值处理方法,其特点在于,将所有方格相对于其采样点的插值参数压缩储存的步骤,还包括如下步骤:确定各方格相对于相邻四个采样点的插值参数;及根据该插值参数的坐标,将该插值参数压缩储存。
上述数字图像插值处理方法,其特点在于,其中计算插值点的亮度值为采用双三次算法计算的。
上述数字图像插值处理方法,其特点在于,该计算插值点的亮度值为采用双线性算法计算的。
本发明的功效,在于提高插值处理速度的同时,将插值参数压缩储存,极大地降低插值参数所需的储存空间。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
具体实施方式
首先请参见图1,为本发明数字图像插值处理方法的总体流程图。如图所示,本发明采用高速的插值算法,步骤110,首先将原始像素的空白区域等分为多个方格,步骤120,根据方格所在的位置,预先计算该方格中心点所对应的插值参数,将该插值参数作为该方格内所有点的插值参数,步骤130,然后将这些插值参数压缩储存,步骤140,在插值时,只需要判断插值点所落入的方格,步骤150,将该方格的插值参数解压缩后,步骤160,根据该插值参数以及该采样点的亮度值进行插值计算,从而在提高插值速度的同时,降低的插值参数的储存空间。
双线性插值处理方法的推导过程请参见图2,双线性插值利用点(x,y)的四个相邻像素点h1、h2、h3以及h4,假设相邻像素的亮度值函数是线性的。例如,设定hi的值为x,y,空白区域的垂直边界在y方向上可以在h1与h3之间线性的插入ha,可以在h2与h4之间线性的插入hb。,在x方向上可以在ha与hb之间线性的插值。
Bilinear函数类似在该空白方形区域10的四个顶点做一条双曲抛物线,通常写作:hi=a00+a10x+a01y+a11xy
因此可得出:
a00=h1
a10=h2-h1
a01=h3-h1
a11=h1-h2-h3+h4
因而hi=h1*c1+h2*c2+h3*c3+h4*c4
所以插值参数:
c1=1-x-y+xy
c2=x-xy
c3=y-xy
c4=xy
可看出hi的值由其相邻像素h1、h2、h3、h4和对应每个像素的插值参数确定,插值参数c1、c2、c3、c4的值由(x,y)的位置确定。如图3所示,Pt为像素之间的空白区域10划分的多个方格,该方格的插值参数为Pr。为了便于计算,将该空白区域10分为4*4个方格Pt,该4*4个方格Pt的放大图如图4所示。该空白区域10还可以划分为2*2或3*3个方格,每个方格Pt具有相同的插值参数(c1,c2,c3,c4)值。
设定方格中点,即点(1/8,1/8)的插值参数c1、c2、c3、c4为整个该方格的插值参数,分别为C1=49/64、c2=7/64、c3=6/64、c4=1/64。
采用双三次插值时,请参见图,定义(x,y)为从原始图像点到目标图像的映像点,即插值点。并且0≤x<1,0≤y<1,其相邻16个像素点为:
(i-1,j-1),(i,j-1),(i+1,j-1),(i+2,j-1),
(i-1,j),(i,j),(i+1,j),(i+2,j),
(i-1,j+1),(i,j+1),(i+1,j+1),(i+2,j+1),
(i-1,j+2),(i,j+2),(i+1,j+2),(i+2,j+2),
假定h(x,y)是像素(x,y)点的RGB值,则可得出:
h(x,y)=h(i-1,j-1)*c00+h(i,j-1)*c01+h(i+1,j-1)c02+h(i+2,j-1)*c03
+h(i-1,j)*c10+h(i,j)*c11+h(i+1,j)c12+h(i+2,j-1)*c13
+h(i-1,j+1)*c20+h(i,j+1)*c21+h(i+1,j+1)c22+h(i+2,j+1)*c23
+h(i-1,j+2)*c30+h(i,j+2)*c31+h(i+1,j+2)c32+h(i+2,j+2)*c33
其中cij(0≤i≤3,0≤j≤3)为插值参数。
与双线性插值算法相同,如图所示,将每个空白区域分成4*4个方格,或3*3,或2*2个方格,每个方格具有相同的插值参数。
例如方格Pt中所有点的插值参数cij(0≤i≤3,0≤j≤3)与该方格Pt的中间点(1/8,1/8)的插值参数相同。任意点的亮度值是通过使用这个点的所有16个插值参数对周围16个实际采样点亮度值加权求和进行插值。
如果未经过压缩,则需要储存较多的参数。如图6所示,该图为采用双三次插值算法并选择划分为4*4个方格的示意图。插值参数为相邻16个点的权值(如图中间的空白区域)。这里将空白区域10划分为16个方格Pt,那么每个方格对应于16个相邻像素点(即采样点)具有16个插值参数。那么16个方格就有16*16=256个插值参数需要储存。
如图7所示,该图采用双三次算法并选择划分为3*3个方格的示意图。插值参数是周围16个像素点的权值(图中中间的空白区域所示)。这里将空白区域10划分为3*3个方格Pt。那么每个方格具有16个参数对应16个参样点,那么9个方格具有9*16=144个参数需要储存。
如图8所示,该图采用双三次算法并选择划分为2*2个方格的示意图。插值参数是周围16个像素点的权值(图中中间的空白区域所示)。这里将空白区域10划分为2*2个方格Pt。那么每个方格具有16个参数对应16个参样点,那么4个方格具有4*16=64个参数需要储存。
请参阅图9,当采用双线性插值算法时,将空白区域10划分为4*4个方格,插值参数为相邻4个采样点的权值。每个方格具有相对于4个采样点的4个插值参数。那么16个方格就有4*16=64个参数需要储存。
请参阅图10,当采用双线性插值算法时,将空白区域10划分为3*3个方格,插值参数为相邻4个采样点的权值。每个方格具有相对于4个采样点的4个插值参数。那么9个方格就有4*9=36个参数需要储存。
请参阅图11,当采用双线性插值算法时,将空白区域10划分为2*2个方格,插值参数为相邻4个采样点的权值。每个方格具有相对于4个采样点的4个插值参数。那么4个方格就有4*4=16个参数需要储存。
本发明是将这些需要储存的插值参数压缩,对于图6所示的划分为16个方格的双三次插值算法:
假设C11为点(1,1)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C11(i,j)(0<=i<=3,0<=j<=3)为点(1,1)对应的第(i,j)个方格的插值参数;
假设C21为点(2,1)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C21(i,j)(0<=i<=3,0<=j<=3)为点(2,1)对应的第(i,j)个方格的插值参数;
假设C31为点(3,1)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C31(i,j)(0<=i<=3,0<=j<=3)为点(3,1)对应的第(i,j)个方格的插值参数;
假设C41为点(4,1)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C41(i,j)(0<=i<=3,0<=j<=3)为点(4,1)对应的第(i,j)个方格的插值参数;
假设C12为点(1,2)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C12(i,j)(0<=i<=3,0<=j<=3)为点(1,2)对应的第(i,j)个方格的插值参数;
假设C22为点(2,2)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C22(i,j)(0<=i<=3,0<=j<=3)为点(2,2)对应的第(i,j)个方格的插值参数;
假设C32为点(3,2)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C32(i,j)(0<=i<=3,0<=j<=3)为点(3,2)对应的第(i,j)个方格的插值参数;
假设C42为点(4,2)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C42(i,j)(0<=i<=3,0<=j<=3)为点(4,2)对应的第(i,j)个方格的插值参数;
假设C13为点(1,3)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C13(i,j)(0<=i<=3,0<=j<=3)为点(1,3)对应的第(i,j)个方格的插值参数;
假设C23为点(2,3)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C23(i,j)(0<=i<=3,0<=j<=3)为点(2,3)对应的第(i,j)个方格的插值参数;
假设C33为点(3,3)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C33(i,j)(0<=i<=3,0<=j<=3)为点(3,3)对应的第(i,j)个方格的插值参数;
假设C43为点(4,3)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C43(i,j)(0<=i<=3,0<=j<=3)为点(4,3)对应的第(i,j)个方格的插值参数;
假设C14为点(1,4)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C14(i,j)(0<=i<=3,0<=j<=3)为点(1,4)对应的第(i,j)个方格的插值参数;
假设C24为点(2,4)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C24(i,j)(0<=i<=3,0<=j<=3)为点(2,4)对应的第(i,j)个方格的插值参数;
假设C34为点(3,4)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C34(i,j)(0<=i<=3,0<=j<=3)为点(3,4)对应的第(i,j)个方格的插值参数;
假设C44为点(4,4)对应的4*4插值参数矩阵,该矩阵为包含有16个插值参数,C44(i,j)(0<=i<=3,0<=j<=3)为点(4,4)对应的第(i,j)个方格的插值参数。
对于划分为4*4个方格的双三次插值算法,需要储存上述16个矩阵参数,该16个矩阵参数有如下规则:
C31(i,j)=C21(i,3-j);
C41(i,j)=C11(i,3-j);
C32(i,j)=C22(i,3-j);
C42(i,j)=C12(i,3-j);
C13(i,j)=C12(3-i,j);
C23(i,j)=C22(3-i,j);
C33(i,j)=C22(3-i,3-j);
C43(i,j)=C12(3-i,3-j);
C14(i,j)=C11(3-i,j);
C24(i,j)=C21(3-i,j);
C34(i,j)=C21(3-i,3-j);
C44(i,j)=C11(3-i,3-j)。
因此C31(i,j),C41(i,j),C32(i,j),C42(i,j),C13(i,j),C23(i,j),C33(i,j),C43(i,j),C14(i,j),C24(i,j),C34(i,j),C44(i,j)都可以由C11(i,j),C21(i,j),C12(i,j),C22(i,j)经过计算得出。
对于C11(I,j),C11(i,j)=C11(j,i)(0<=i<=3,0<=j<=3),因此只需要储存C11部分的一半,另一半可以由储存的部分经过计算得出。
C22(i,j)=C22(j,i)(0<=i<=3,0<=j<=3),因此只需要储存C22部分的一半,另一半可以由储存的部分经过计算得出。
C12(i,j)=C21(j,i)(0<=i<=3,0<=j<=3),因此只需要储存C12,C21可以通过C12得出。
因此可以得出只需要储存C11、C12、C21、C22中元素的一半,即可推出全部的插值参数C11、C21、C31、C41、C12、C22、C32、C42、C13、C23、C33、C43、C14、C24、C34、C44。因此最大的压缩率为8∶1,同样,对于双三次算法,方格的3×3与2×2的划分具有相同的压缩比率。
假定C11是点(1,1)的4*4参数矩阵,其包括有16个参数,C11(i,j)(0<=i<=3,0<=j<=3)为(i,j)方格,点(1,1)的插值参数;
假定C21是点(2,1)的4*4参数矩阵,其包括有16个参数,C21(i,j)(0<=i<=3,0<=j<=3)为(i,j)方格,点(2,1)的插值参数;
假定C12是点(1,2)的4*4参数矩阵,其包括有16个参数,C12(i,j)(0<=i<=3,0<=j<=3)为(i,j)方格,点(1,2)的插值参数;
假定C22是点(2,2)的4*4参数矩阵,其包括有16个参数,C22(i,j)(0<=i<=3,0<=j<=3)为(i,j)方格,点(2,2)的插值参数。
对于双线性插值具有44个方格,因此需要上述参数的4个矩阵。
对于4个矩阵参数,有下列规则:
C21(i,j)=C11(3-i,j);
C12(i,j)=C11(i,3-j);
C22(i,j)=C11(3-i,3-j);
因此C21(i,j)、C12(i,j)、C22(i,j)都可以由C11(i,j)得出。
对于C11(I,j),C11(i,j)=C11(j,i)(0<=i<=3,0<=j<=3),因此只需储存C11参数一半,另一半可以通过计算得出。
因此可以得出对于整个插值参数C11、C21、C12、C22,只需要储存C11元素的一半,最大压缩率为8∶1。同理划分为3*3个方格以及2*2个方格具有相同的压缩比率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。