% smooth an image % define mask (odd by odd centered mask) mask = [1,2,1;2,3,2;1,2,1]; mask = mask/sum(abs(mask(:))); cmask = fliplr(flipud(mask)); [m,n] = size(mask); pausetime = .01 % load image fragement r0 = 50; dr = 64; s0 = 50; ds = 64; load clown Y = X(r0:(r0+dr-1),r0:(s0+ds-1)); W = Y; Z = Y; mn = min(Y(:)); mx = max(Y(:)); %initial plot figure(1) subplot(1,2,1) imshow(Y,[mn,mx]); title('original picture') subplot(1,2,2) imshow(Z,[mn,mx]); title('smoothed picture') pause disp('Press a key to start'); brinds = mod((1:m)-(m+1)/2,dr)+1; bsinds = mod((1:n)-(n+1)/2,ds)+1; orinds = bsinds; osinds = bsinds; rinds = brinds; for r = 1:dr sinds = bsinds; for s = 1:ds W(orinds,osinds)=Y(orinds,osinds); sinds = mod(sinds,ds)+1; orinds = rinds; osinds = sinds; U = Y(rinds,sinds); W(rinds,sinds) = mn; Z(r,s)= sum(U(:).*cmask(:)); subplot(1,2,1) imshow(W,[mn,mx]); title('original picture and current pixels') subplot(1,2,2) imshow(Z,[mn,mx]); title('smoothed picture') pause(pausetime) end rinds = mod(rinds,dr)+1; end