三次卷积MATLAB实现

tianranyouxin 2010-12-11 11:19:07
%%%%%三次卷积方法实现图像缩放%%%%%
I=imread('trees.tif'); %读入图像
[nrows,nclos]=size(I); %图像矩阵
ratio=2; %缩放比例
imshow(I); %显示原图像
width=ratio*nrows;
height=ratio*nclos;
J=uint8(zeros(width,height)); %缩放后图像矩阵大小
widthScale=1/ratio;
heightScale=1/ratio;
for x=5:width-5
for y=5:height-5
xx=x*widthScale; %新图像对应原图像中像素
yy=y*heightScale;
if(xx/double(uint16(xx))==1.0)&&(yy/double(uint16(yy))==1.0)
J(x,y)=I(int16(xx),int16(yy));
else
i=double(uint16(xx));
j=double(uint16(yy));
u=double(xx-i);
v=double(yy-j);

x11=double(I(i-1,j-1));
x12=double(I(i-1,j));
x13=double(I(i-1,j+1));
x14=double(I(i-1,j+2));

x21=double(I(i,j-1));
x22=double(I(i,j));
x23=double(I(i,j+1));
x24=double(I(i,j+2));

x31=double(I(i+1,j-1));
x32=double(I(i+1,j));
x33=double(I(i+1,j+1));
x34=double(I(i+1,j+2));

x41=double(I(i+2,j-1));
x42=double(I(i+2,j));
x43=double(I(i+2,j+1));
x44=double(I(i+2,j+2));
B=[x11,x12,x13,x14;x21,x22,x23,x24;x31,x32,x33,x34;x41,x42,x43,x44];
for n=-2:1
if((abs(u+n)>=0)&&(abs(u+n)<1))
s(u+n)=1-2*abs(u+n)^2+abs(u+n)^3;
else if((abs(x)>=1)&&(abs(x)<2))
s(u+n)=4-8*Abs(u+n)+5*Abs(u+n)^2-Abs(u+n)^3;
else
s(u+n)=0;
end
end
A=[s(u+1),s(u+0),s(u-1),s(u-2)];
end

for m=-2:1
if((abs(v+m)>=0)&&(abs(v+m)<1))
s(v+m)=1-2*abs(v+m)^2+abs(v+m)^3;
else if((abs(v+m)>=1)&&(abs(v+m)<2))
s(v+m)=4-8*Abs(v+m)+5*Abs(v+m)^2-Abs(v+m)^3;
else
s(v+m)=0;
end
end
C=[s(v+1);s(v+0);s(v-1);s(v-2)];
end
J(x,y)=convn(convn(A,B),C);
end
end
end
imwrite(J,'trees5.tif','tif');
figure;
imshow(J);
这样写对吗? ratio=0.5还能出两个图,=2就出错了
...全文
222 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
無_1024 2010-12-11
  • 打赏
  • 举报
回复
很久没看matlab了 不太会了

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧