|
你这个程序是不是把图片像素放大?我已成功调试.
程序中不知道你150,593,147,585等数字是从哪里来的.
我作了一些修改,请注意红色部分为修改部分.
另外想说一句,你这程序运行的也太慢了:@Q
clear
z=imread('hehe.jpg'); %/*读入图像数据*/
y=zeros(size(z));
simulation_start=clock;
for t=1:3; %/*行放大*/
for i=1:size(z,1)
for j=1:2:size(z,2)-2
f0=double(z(i,j,t)); %/*计算一阶,二阶差商*/
f3=double(z(i,j+1,t));
f6=double(z(i,j+2,t));
f36=(f3-f6)/-4;
f03=(f0-f3)/-4;
f036=(f03-f36)/-8;
x=0:8;
N=f0+f03.*x+f036.*x.*(x-4); %/*基函数*/
y(i,(j-1)*4+1,t)=N(1);
y(i,(j-1)*4+2,t)=N(2);
y(i,(j-1)*4+3,t)=N(3);
y(i,(j-1)*4+4,t)=N(4);
y(i,(j-1)*4+5,t)=N(5);
y(i,(j-1)*4+6,t)=N(6);
y(i,(j-1)*4+7,t)=N(7);
y(i,(j-1)*4+8,t)=N(8);
y(i,(j-1)*4+9,t)=N(9);
end
end
end
for t=1:3; %/*二次行放大*/
for i=1:size(z,1)
for j=5:4:size(z,2)-8
f0=y(i,j,t); %/*计算一阶,二阶差商*/
f3=y(i,j+4,t);
f6=y(i,j+8,t);
f36=(f3-f6)/-4;
f03=(f0-f3)/-4;
f036=(f03-f36)/-8;
N=f0+f03.*x+f036.*x.*(x-4); %/*基函数*/
y(i,j+1,t)=N(2);
y(i,j+2,t)=N(3);
y(i,j+3,t)=N(4);
y(i,j+4,t)=N(5);
y(i,j+5,t)=N(6);
y(i,j+6,t)=N(7);
y(i,j+7,t)=N(8);
end
end
end
for s=1:3; %/*列放大*/
for m=1:size(y,2)
for n=1:2:size(y,1)-2
f0=y(n,m,s); %/*计算一阶,二阶差商*/
f3=y(n+1,m,s);
f6=y(n+2,m,s);
f03=(f0-f3)/-4;
f36=(f3-f6)/-4;
f036=(f03-f36)/-8;
NN=f0+f03.*x+f036.*x.*(x-4); %/*基函数*/
h((n-1)*4+1,m,s)=NN(1);
h((n-1)*4+2,m,s)=NN(2);
h((n-1)*4+3,m,s)=NN(3);
h((n-1)*4+4,m,s)=NN(4);
h((n-1)*4+5,m,s)=NN(5);
h((n-1)*4+6,m,s)=NN(6);
h((n-1)*4+7,m,s)=NN(7);
h((n-1)*4+8,m,s)=NN(8);
h((n-1)*4+9,m,s)=NN(9);
end
end
end
for s=1:3; %/*二次列放大*/
for m=1:size(y,2)
for n=5:4:size(y,1)-8
f0=h(n,m,s); %/*计算一阶,二阶差商*/
f3=h(n+4,m,s);
f6=h(n+8,m,s);
f03=(f0-f3)/-4;
f36=(f3-f6)/-4;
f036=(f03-f36)/-8;
NN=f0+f03.*x+f036.*x.*(x-4); %/*基函数*/
h(n+1,m,s)=NN(2);
h(n+2,m,s)=NN(3);
h(n+3,m,s)=NN(4);
h(n+4,m,s)=NN(5);
h(n+5,m,s)=NN(6);
h(n+6,m,s)=NN(7);
h(n+7,m,s)=NN(8);
end
end
end
simulation_end=clock; %/*记录时间*/
time=fix(etime(simulation_end,simulation_start));
k=uint8(h);
imshow(k) %/*显示结果*/
图片显示效果如下:
[ 本帖最后由 laughzha 于 2008-5-5 09:11 编辑 ] |
-
原图
-
放大图
评分
-
1
查看全部评分
-
|