The function here takes image matrix and creates a 2w+1 X 2w+1 matrix to convolute over it and average the pixel value and hence create a blur image using averaging method.
% Function to blur any image by average method.
function output = blur(img,w) [row,cols] = size(img); total = 0; freq = (2*w + 1)*(2*w + 1); temp_i = 1; temp_j = 1; output = []; for i = 1:1:row for j =1:1:cols total = 0; for temp_i = i-w:1:i+w for temp_j = j-w:1:j+w if(temp_i >=1 & temp_i<=row & temp_j>=1 & temp_j<= cols) total = total + img(temp_i,temp_j); freq = freq+1; end end end output(i,j) = total/freq; end end % output = uint8(output);
end
The output works fine if for the current code, but if I un-comment the line to get uint8 output image, I get incorrect result. To be precise, I get a uniform matrix having same value as all its elements.
Best Answer