standard deviation of image
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a 3-dimensional image (image1) and a 2-dimensional image (image2) with values from 1 to 7 and want to find the standard deviation for specific values. I'm using the following code to calculate the mean value but dont know how to calculate the standard deviation. Any suggestion please?
for i=1:3
x=image1(:,:,i)
for j=1:7
L = bwlabel(image2==j);
STATS = regionprops(L,x,'MeanIntensity','Area','PixelValues');
n_stats = size(STATS,1);
area_=zeros(n_stats,1);
mean_=zeros(n_stats,1);
[m1,n1] = find(cat(1,STATS.Area) >=5);
for ii=1:n_stats
mean_(ii)=STATS(ii,:).MeanIntensity;
end
mean1=mean_(m1);
mean2(j,i)=mean(mean1);
end
0 comentarios
Respuestas (2)
Sean de Wolski
el 9 de Dic. de 2011
You can use regionprops to calculate the various fields requested of each label in a label image, e.g.:
A = uint8(rand(10)*10); %random label image
STATS = regionprops(A,'area');
areas = [STATS(:).Area]
And I don't understand what you want the standard deviation of. If youu want it of all objects with the same value, won't it be zero? Clarify your goal, I guess. (and look at stdfilt)
4 comentarios
Image Analyst
el 9 de Dic. de 2011
I don't have MATLAB on this computer so I can't test but I believe it would be something like
pixelValues = [STATS(k).PixelValues];
sd = std(pixelValues(:)); % StDev of kth blob
or something like that.
3 comentarios
Image Analyst
el 10 de Dic. de 2011
That's the kth region. You'd have it in a loop over all k, all possible blob numbers, like
[labeledImage, numberOfBlobs] = bwlabel(binaryImage, grayImage, 'PixelValues');
sd = zeros(1, numberOfBlobs);
for k = 1 : numberOfBlobs
pixelValues = [STATS(k).PixelValues];
sd(k) = std(pixelValues(:)); % StDev of kth blob
end
Ver también
Categorías
Más información sobre Image Segmentation and Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!