标签:matlab 图片放大 双线性插值 最近邻插值 几何运算
A=imread('E:\matlab\work\tiger.jpg');%读取图像信息
imshow(A);%显示原图
title('原图');
Row=size(A,1);
Col=size(A,2);%图像行数和列数
nn=2;%放大倍数
m=round(nn*Row);%求出变换后的坐标的最大值
n=round(nn*Col);
B=zeros(m,n,3);%定义变换后的图像
for i=1:m
for j=1:n
x=round(i/nn);
y=round(j/nn);%最小临近法对图像进行插值
%处理边缘
if x==0 x=1;end
if y==0 y=1;end
if x>Row x=Row;end
if y>Col y=Col;end
B(i,j,:)=A(x,y,:);
end
end
B=uint8(B);%将矩阵转换成8位无符号整数
figure;
imshow(B);
title('最邻近插值法放大');
I=imread('E:\matlab\work\tiger.jpg');
figure,imshow(I);
title('origin image');
[rows cols tongdao]=size(I);
I=double(I);
k=2;
x_new=rows*k;
y_new=cols*k;%缩放至k倍
I_new=zeros(x_new,y_new,tongdao);
for rgb=1:tongdao
for i=1:x_new
for j=1:y_new
x=i/k;a=floor(x);
y=j/k;b=floor(y);%双线性插值算法
if a>0&&b>0&&a<rows&&b<cols
cxb=I(a+1,b,rgb)*(x-a)+I(a,b,rgb)*(1+a-x);
cxb1=I(a+1,b+1,rgb)*(x-a)+I(a,b+1,rgb)*(1+a-x);
I_new(i,j,rgb)=round(cxb1*(y-b)+cxb*(1+b-y));
end
end
end
end
figure,imshow(uint8(I_new));
title('result image');标签:matlab 图片放大 双线性插值 最近邻插值 几何运算
原文地址:http://blog.csdn.net/u012422829/article/details/45789861