MATLAB Answers

Problem in converting to uint8()

3 views (last 30 days)
Jash Shah
Jash Shah on 11 May 2020
Commented: Jash Shah on 16 May 2020
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.

  0 Comments

Sign in to comment.

Accepted Answer

Navya Seelam
Navya Seelam on 14 May 2020
Edited: Navya Seelam on 14 May 2020
uint8 can represent integers from 0 to 255. Make sure that elements are less than or equal to 255 to get the expected results.

  1 Comment

Jash Shah
Jash Shah on 16 May 2020
Oh! Okay got my fault. Thanks

Sign in to comment.

More Answers (0)

Categories

Tags

Products


Release

R2020a

Translated by