MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Vennila on 6 Jan 2013

Hi,

I want to find mean value of a mammogram only by choosing the values greater than zero. I used for loops with condition but it gives 255 as answer constantly. I don't know what's the mistake i have done.

Code:

[x,y] = size(I);

s = 0;

for i = 1:x

for j = 1:y

if I(i,j) > 0

s = s + I(i,j);

end

end

end

disp('s = ');

disp(s);

Answer by Walter Roberson on 6 Jan 2013

Accepted answer

Change to

s = s + double(I(i,j));

Question: when you are calculating the mean, are you going to be dividing by the number of values in I, or by the number of non-negative values?

Also are you sure that I will be two-dimensional and not 3 dimensional?

Answer by Image Analyst on 6 Jan 2013

Why are you doing two loops, which will make it slow? Why not just do:

nonZeroPixels = yourImage > 0; meanValue = mean(yourImage(nonZeroPixels));

The way above is vectorized, faster, and very MATLABish.

Answer by Jan Simon on 6 Jan 2013

Alternative method without loops:

s = mean(double(I(I > 0)));

## 0 Comments