回 帖 发 新 帖 刷新版面

主题:图像放大?

x=imread('Sunset.jpg');
    [m,n,tt]=size(x);
    z=[];
for t=1:tt
    
    for i=1:m-1
      
      for j=1:n-1
        z(2*i-1,2*j-1,t)=x(i,j,t);
        z(2*i-1,j*2,t)=x(i,j,t)/2+x(i,j+1,t)/2;
      end
       z(2*i-1,2*n-1,t)=x(i,n,t);
    
      for j=1:n-1
       z(i*2,2*j-1,t)=x(i,j,t)/2+x(i+1,j,t)/2;
       z(i*2,j*2,t)=x(i,j,t)/4+x(i+1,j,t)/4+x(i,j+1,t)/4+x(i+1,j+1,t)/4; 
      end

     z(i*2,n*2-1,t)=x(i,n,t)/2+x(i+1,n,t)/2;
   end 
    for k=1:n
      z(2*m-1,k,t)=x(m,k,t);
    end
end
imshow(x);
figure(2);
imshow(z/256);
%程序中没有注释,不太好看,见谅!
通过以上代码想让图像放大到原来的两倍(近似),可是为什么输出的两个图像大小相同呢?
大体的算法是:在任意相邻的两个像素点之间再插入一个像素点,其值为与之相邻的若干个像素RGB值的算术平均数。

a11     a12     a13    .....  a1n 
 
a21     a22     a23    .....   a2n
...
变换到
b11 b12 b13 b14 b15    ......  b1 2n-1
b21 b22 b23 b24 b25    ......  b2 2n-1
b31 b32 b33 b34 b35    ......  b3 2n-1
.....
其中:
b11=a11,b12=a11/2+a12/2,b13=a12;
b21=a11/2+a21/2,b22=a11/4+a12/4+a21/4+a22/4,b23=a12/2+a22/2;
...

但是为什么显示出来的图像大小没有变呢?而z的大小也确实是两倍啊!

回复列表 (共2个回复)

沙发

自己下教程看吧![em1]

www.klxx123.cn [快乐学习网]

板凳


我用这个程序做了    可以放大图像啊   正好是两倍

我来回复

您尚未登录,请登录后再回复。点此登录或注册