Problem in converting to uint8()

6 visualizzazioni (ultimi 30 giorni)
Jash Shah
Jash Shah il 11 Mag 2020
Commentato: Jash Shah il 16 Mag 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.

Risposta accettata

Navya Seelam
Navya Seelam il 14 Mag 2020
Modificato: Navya Seelam il 14 Mag 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.

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Tag

Prodotti


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by