📄 bilinear.m
字号:
clear,clc,close all
I=imread('D:\desktop\second term\image processing\Folder1\Lena\Lena_gray_256.tif');
s2=[512,512]; %target size
Inew=zeros(s2(1),s2(2)); %image after zooming
m=1;n=1;
A=[m n m*n 1;m n+1 m*(n+1) 1;m+1 n (m+1)*n 1; m+1 n+1 (m+1)*(n+1) 1]; %neighbor for findig coefficient a,b,c,d
r=size(Inew,1)/size(I,1);
rr=size(Inew,2)/size(I,2);
c=0;d=0;co=5;
for i=1:size(I,1)
for j=1:size(I,2)
m=i;n=j;
A=[m n m*n 1;m n+1 m*(n+1) 1;m+1 n (m+1)*n 1; m+1 n+1 (m+1)*(n+1) 1];
l=1:rr;
k=1:r;
if m+1<=size(I,1) & n+1<=size(I,2)
z=inv(A)*double([I(m,n);I(m,n+1);I(m+1,n);I(m+1,n+1)]);
Inew(l+d,k+c)=floor(z'*[(m+co);(n+co);(m+co)*(n+co);1]);
end
if m+1>size(I,1) & n+1>size(I,2)
Inew(l+d,k+c)=I(i,j);
end
if m+1>size(I,1) & n+1<=size(I,2)
z=inv(A)*double([I(m,n);I(m,n+1);0;0]);
Inew(l+d,k+c)=floor(z'*[m;n;m*n;1]);
end
if n+1>size(I,2) & m+1<=size(I,1)
z=inv(A)*double([I(m,n);0;I(m+1,n);0]);
Inew(l+d,k+c)=floor(z'*[m;n;m*n;1]);
end
c=c+r;
end
d=d+rr;
c=0;
end
imshow(Inew,[])
figure,imshow(I)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -