Imagefun.m
上传用户:yhjklp
上传日期:2022-07-23
资源大小:1k
文件大小:1k
源码类别:

图形图象

开发平台:

Matlab

  1. function I2=Imagefun(file,r1,r2)
  2. %图像尺度改变,r1为图片宽度变化倍数,r2为长度变化
  3.     if ischar(file)
  4.         I=imread(file) ;
  5.     else
  6.         I=file;
  7.     end
  8.     I=im2double(I);
  9.     [M1,N1,V]=size(I);
  10.     M2=floor(r1*M1);
  11.     N2=floor(r2*N1);
  12.     I2=zeros(M2,N2,V);
  13.     if V==1
  14.         I2=fun(I,I2,r1,r2);
  15.     else
  16.         for i=1:V
  17.             I2(:,:,i)=fun(I(:,:,i),I2(:,:,i),r1,r2);
  18.         end
  19.     end
  20.     imshow(I2);
  21. end
  22.     
  23. function I2=fun(I1,I2,r1,r2)
  24.     [M2,N2]=size(I2);
  25.     for i=1:M2
  26.         for j=1:N2
  27.             x=i/r1;
  28.             y=j/r2;
  29.             x0=floor(x);
  30.             y0=floor(y);
  31.             if x0==0
  32.                 x0=1;
  33.                 x=1;
  34.             else
  35.             x1=x0+1;
  36.             end
  37.             if y0==0
  38.                 y0=1;
  39.                 y=1;
  40.             else
  41.             y1=y0+1;
  42.             end
  43.             if x0~=x
  44.                 if y0~=y
  45.                     I2(i,j)=I1(x0,y0)*(x1-x)*(y1-y)+I1(x1,y0)*(x-x0)*(y1-y)+I1(x0,y1)*(x1-x)*(y-y0)+I1(x1,y1)*(x-x0)*(y-y0);
  46.                 else
  47.                     I2(i,j)=I1(x0,y)*(x1-x)+I1(x1,y)*(x-x0);
  48.                 end
  49.             else
  50.                 if y0~=y
  51.                     I2(i,j)=I1(x,y0)*(y1-y)+I1(x,y1)*(y-y0);
  52.                 else
  53.                     I2(i,j)=I1(x0,y0);
  54.                 end
  55.             end
  56.         end
  57.     end
  58. end