function rasterme(rastersize,xclip,yclip) % % RASTERME(xclip,yclip,rastersize) imports my portrait, % clips it to a central (xclip x yclip) region ... % converts it to a grey-scale image. % very simple, inefficient implementation. use for % discussion of linear map, matrix representation % % transformed images are shown side-by-side... % % Author: Matthias Kawski, July 2001 % http://math.la.asu.edu/~kawski % if nargin < 1 rastersize=2; end % % Import an image -- the standard format is .tif % The following is a photoshop conversion of me.jpg % portrait=imread('me.tif'); [M,N,R]=size(portrait) % default: work w/ whole picture if nargin < 3 m = M; n = N; end if nargin > 2 m = xclip; n = yclip; end ; portrait=double(portrait)+1; % convert from uint8 to integer image(portrait/256) % image wants rgb values in [0,1] % disp('Hit any key to continue') pause % % To get a grey image take average of RGB channels % The following code is awkward -- due to my lack % of experience three dimensional m x n x r arrays % pp=(portrait(:,:,1)+portrait(:,:,2)+portrait(:,:,3))/3/256; ppp(:,:,1)=pp; ppp(:,:,2)=pp; ppp(:,:,3)=pp; % image(ppp) % % clipping the image % if m > M m = M; end if n > N n = N; end m=rastersize*floor(m/rastersize); n=rastersize*floor(n/rastersize); r=rastersize; m0=floor((M-m)/2)+1; n0=floor((N-n)/2)+1; pp=pp(m0:m0+m-1,n0:n0+n-1,:); ppp=zeros(m,n,3); ppp(:,:,1)=pp; ppp(:,:,2)=pp; ppp(:,:,3)=pp; image(ppp) % disp('Hit any key to continue') pause % qq=zeros(size(pp)); for i=[0:m/r-1] for j=[0:n/r-1] for k=[1:r] for l=[1:r] qq(r*i+k,r*j+l)=sum(sum(pp(r*i+1:r*i+r,r*j+1:r*j+r))); end end end end qq = qq/r/r; % ppp(:,:,1)=pp; ppp(:,:,2)=pp; ppp(:,:,3)=pp; qqq(:,:,1)=qq; qqq(:,:,2)=qq; qqq(:,:,3)=qq; vstrip=zeros(m,1,3); hstrip=zeros(1,2*n+3,3); image([hstrip;vstrip,ppp,vstrip,qqq,vstrip;hstrip]) %