function convo(i, m) image = imread(i); masko = imread(m); [imager, imagec] = size(image) [maskr, maskc] = size(masko) result = zeros(imager, imagec); % flipping the mask mask = zeros(maskr, maskc); for i1 = 1:maskr for j1 = 1:maskc mask(i1, j1) = masko((maskr-i1+1), (maskc - j1+1)); end end % convolution for i = 1:(imager - maskr + 1) for j = 1:(imagec - maskc + 1) A = image(i:(i+maskr-1), j:(j+maskc-1)); s = sum(dot(A,mask)); result(i,j) = s; end end %result %CONTRAST [rows, cols] = size(result); large = max(max(result)) small = min(min(result)) rangeOriginal = large - small; for i = 1:(imager - maskr + 1) for j = 1:(imagec - maskc + 1) result(i,j) = result(i,j) / rangeOriginal * 255; end end %result imwrite(result, 'convoOut.pgm', 'pgm'); end