Imagefun.m
上传用户:yhjklp
上传日期:2022-07-23
资源大小:1k
文件大小:1k
- function I2=Imagefun(file,r1,r2)
- %图像尺度改变,r1为图片宽度变化倍数,r2为长度变化
- if ischar(file)
- I=imread(file) ;
- else
- I=file;
- end
- I=im2double(I);
- [M1,N1,V]=size(I);
- M2=floor(r1*M1);
- N2=floor(r2*N1);
- I2=zeros(M2,N2,V);
- if V==1
- I2=fun(I,I2,r1,r2);
- else
- for i=1:V
- I2(:,:,i)=fun(I(:,:,i),I2(:,:,i),r1,r2);
- end
- end
- imshow(I2);
- end
-
- function I2=fun(I1,I2,r1,r2)
- [M2,N2]=size(I2);
- for i=1:M2
- for j=1:N2
- x=i/r1;
- y=j/r2;
- x0=floor(x);
- y0=floor(y);
- if x0==0
- x0=1;
- x=1;
- else
- x1=x0+1;
- end
- if y0==0
- y0=1;
- y=1;
- else
- y1=y0+1;
- end
- if x0~=x
- if y0~=y
- 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);
- else
- I2(i,j)=I1(x0,y)*(x1-x)+I1(x1,y)*(x-x0);
- end
- else
- if y0~=y
- I2(i,j)=I1(x,y0)*(y1-y)+I1(x,y1)*(y-y0);
- else
- I2(i,j)=I1(x0,y0);
- end
- end
- end
- end
- end