function interpolation(f,k1,k2) %f为原始图像,k1,k2依次为图像高度,宽度的放大缩小比例,大于1时为放大,小于1时为缩小
%f=imread('c:\lena.bmp');%f为原始图像
figure(1)
imshow(f)
title('原始图像')
f=double(f);
[m,n]=size(f);
for x=1:floor(m*k1)
for y=1:floor(n*k2)
Sx=x*1/k1;
Sy=y*1/k2;
i=floor(Sx);sx=i;
j=floor(Sy);sy=j;
if Sx==sx&Sy==sy
image(x,y)=f(Sx,Sy);
else
u=Sx-i;
v=Sy-j;
if i==0
i=1;
end
if j==0
j=1;
end
if i==m
i=m-1;
end
if j==n
j=n-1;
end
image(x,y)=(1-u)*(1-v)*f(i,j)+(1-u)*v*f(i,j+1)+u*(1-v)*f(i+1,j)+u*v*f(i+1,j+1);
end
end
end
image=uint8(image);
figure(2)
imshow(image)
title('双线性内插后的图像')
评论0