■—I
(対
"y(严)
-71_马一器0学辛打血
(O…
2倍插值时低通滤波器的效果:
(a)输入x(n)的频谱;(b)插零值2倍升采样后的
v(n)的频谱;(c)理想低通滤波后的输出频谱
2.图像升采样目的
图像升采样,即放大图像的主要目的是在不改变观测系统的前提下,利用已经获得的低分辨率图像插值得到较高分辨率,从而可以显示在更高分辨率的显示设备上。
对图像的缩放操作并不能带来更多关于该图像的信息,因此图像的质量将不可避免地受到影响。
在图像中插值,是一种图像处理方法,它可以为数码图像增加或减少象素的数目。
某些数码运用图像插值的方法创造出象素比传感器实际能产生象素多的图像,或创造数码变焦产生的图像。
图像放大时,像素也相应地增加,增加的过程就是“插值”程序自动选择信息较好的像素作为增加的像素,而并非只使用临近
的像素,所以在放大图像时,图像看上去会比较平滑、干净。
不过需要说明的是插值并不能增加图像信息。
图像插值是图像处理的一项重要技术,增强视觉效果。
研究此算法,并将其改进将对图像插值算法的发展起到促进作用。
图像插值有着十分重要的应用,如在医学成像系统、航空航天等领域已得到广泛的应用。
因此,一个好的图像插值方法应该既能保证图像的清晰度,又能保持图像边缘的光滑性.
3.图像升采样的算法
(1)最邻近插值算法
最简单的插值算法是最邻近插值,也称为零阶插值。
它输出的像素灰度值就
等于距离它映射到的位置最近的输入像素的灰度值,最邻近插值算法简单,在许
多情况下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。
最邻近点插值[6]取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。
设插值点(i,j)至V周边4个邻点fk(i,j)(k=1,2,3,4)的距离为dk(k=1,2,3,4),贝U:
g(i,j)=fk(i,j),dl=min{d1,d2,d3,d4},l=1,2,3,4
(2)双线性插值算法
双线性插值[1,3]是利用了需要处理的原始图像像素点周围的四个像素点的相关陛,通过双线眭算法计算得出的。
对于一个目的坐标,通过向后映射法得到
其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为[0,I]区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v)=(1-u)x(1-v)xf(i,j)+(1-u)xVxf(i,j+1)+ux(1-v)xf(i+l,j)+uxvxf(i+l,j+1),其中f(i,j)表示源图像(i,
j)处的的像素值,以此类推,这就是双线性内插值法。
如下图所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。
在同一行内根据待插值像素点与其前后的原图像像素点的位置距离进行加权线性插值,即离原图像像素点越近的待插值像素点,原图像像素的加权系数就
越大;行间根据待插值行与其上下的原图像行间的距离进行加权线性插值,即离
原图像行越近的待插值行,原图像行的加权系数就越大[7]。
4.图像升采样仿真
以2为因子,使用邻近插值和双线性插值两种方法对原始图像进行升采样,可得采样前后的图像如下所示
.原始團像
邻近播值
双线性插值
由上图可看出,原始图像经过升采样后,图像变大,并产生明显失真,而双线性插值和邻近插值相比,图像更加清晰,边缘更加光滑,由此可得双线性插值法优于邻近插值法。
三•附录:
1.参考文献:
[1]《数字信号处理原理及其MATLABS现》从玉良王宏志编著
[2]《数字信号处理》SanjitK.Mitra著
[3]http:
//zh.wikipedia.Org/w/index.php?
title=Special%3A%E6%90%9C%E7%B4%A2&profile=default&search=%E9%99%8D%E9%87%87%E6%A0%B7&fulltext=Search维基百科
2.MATLAB代码
(1)图像降采样
%Function:
DownSamplingbyFactor2
%lnputyourimage.jpg
%Output:
TwoImages
%Figure1.Down:
withoutusingtheaveragingfilter
%Figure2.Down:
withusingtheaveragingfilter
clc;clearall;closeall;
%%%%%%%%%%%%%%%%
%%%Imread%%%
%%%%%%%%%%%%%%%%
I0=imread('yourimage.jpg');
I=rgb2gray(l0);
imshow(I,[]);title('原始图像');
I=double(I);
[heightwidth]=size(I);
hheight=height/2;hwidth=width/2;dl1=zeros(hheight,hwidth);dl2=zeros(hheight,hwidth);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%DownSamplebyaFactor2%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fork=1:
hheight
forkk=1:
hwidth
dI1(k,kk)=I(2*k-1,2*kk-1);%Down:
withoutusingtheaveragingfilterdI2(k,kk)=mean(mean(l(k*2-1:
k*2,kk*2-1:
kk*2)));%Down:
withusingthe
averagingfilter
end
end
figure;imshow(dl1,[]);title('不使用平滑滤波器的降采样');figure;imshow(dl2,[]);title('使用平滑滤波器的降采样');
(2)图像升采样
closeall;
clc;
clearall;
img二imread('yourimage.jpg');
initial_img=imread('yourimage.jpg');
[height,width,flag]=size(img);
img仁double(img);
figure;
imshow(uint8(initial」mg));
title('原始图像')
img2=imresize(img1,[height*2,width*2],'nearest');img3=imresize(img1,[height*2,width*2],'bilinear');[height,width,flag]=size(img2);
figure;
imshow(uint8(img2));
title('邻近插值');
figure;
imshow(uint8(img3));
title('双线性插值');
imwrite(img2,'yourimage.jpg');imwrite(img3,'yourimage.jpg');