最近邻点与双线性插值法

k=input('请输入倍率:\n');
I=imread('eight.tif');
imshow(I);title('原图像')
[m n]=size(I);
m1=k*m;
n1=k*n;
%最近邻点法
J=zeros(m1,n1);
for i=1:m1
for j=1:n1
x=round(i*1/k);
y=round(j*1/k);
J(i,j)=I(x,y);
end
end
J=uint8(J);
%figure;subplot(121);imshow(J);title('最近邻点法变换后的图像')
figure;imshow(J);title('最近邻点法变换后的图像')
%双线性插值法
J1=zeros(m1,n1);
for i =1:m1
x1=abs(i/k-floor(i/k));
x2=floor(i/k);
if x2>=m
x2=m-1;
end
if x2<1
x2=1;
end
for j =1:n1
y1=abs(j/k-floor(j/k));
y2=floor(j/k);
if y2>=n
y2=n-1;
end
if y2<1
y2=1;
end
J1(i,j)=(1-x1)*(1-y1)*I(x2,y2)+x1*(1-y1)*I(x2+1,y2)+(1-x1)*y1*I(x2,y2+1)+x1*y1*I(x2+1,y2+1);
end
end
J1=uint8(J1);
%subplot(122);imshow(J1);title('双线性插值法变换后的图像')
figure;imshow(J1);title('双线性插值法变换后的图像')

相关主题
相关文档
最新文档