I have to write a function that blurs an image file.
The idea is to take an input 'img', then using the value of each individual pixel, take the mean of a submatrix with that pixel as the centre of 2*w+1 sub matrix and use that value to replace the pixels in the same position in a generated new 'blurred' image. I hope that makes sense.
This is what I've written so far which appears to work but is apparently outputting a 1×9 vector with the wrong result and I can't figure out why or how to fix it. Any help appreciated.
function output = blur(img,w)[row, col] = size(img);img = double(img);temp_img = zeros(row,col, 'uint8');for i = 1:row for j = 1:col r1 = max(1,i-w); r2 = min(row,i+w); c1 = max(1,j-w); c2 = min(col,j+w); temp_matrix = img(r1:r2,c1:c2); val_2 = mean(temp_matrix(:)); temp_img(r1:r2,c1:c2) = val_2; endendoutput = uint8(temp_img);end
Best Answer