使用matlab在regionprops中使用.PixelValues查找图像的平均值

时间:2018-02-13 05:10:46

标签: matlab image-processing

我试图找出不同连接区域的均值,kurtosisskew等。我可以使用以下代码使用.PixelValue命令找到它吗?还是要使用.PixelValue命令?请帮助我。这是我的第一份工作。请更正我的代码以找到意思。 %Out是我感兴趣的输出图像区域。

[val num]=bwlabel(Out);    
STATS=regionprops(val,'All');    
for i=1:num
   kk=STATS(i);    
   kk1=kk.PixelList;
   % To find mean
   [r c]=size(kk1);    
   ax(i)=r*c;   
   pp(i)=sum(sum(kk1));    
   bx(i)=pp(i)/su;
   mean=bx(i);
end

1 个答案:

答案 0 :(得分:0)

如果要计算a的连接组件中Out的像素值的平均值,则需要执行以下操作(假设a是灰度值图像):

lab = bwlabel(Out);
stats = regionprops(lab,a,'PixelValues');

然后,对于每个stats.PixelValues,计算均值:

m = zeros(size(stats))
for ii = 1:numel(stats);    
     m(ii) = mean(stats(ii).PixelValues);
end

或更简单:

m = cellfun(@mean,{stats.PixelValues})

请注意,regionprops可以使用第二个输入图像调用,该图像包含灰色值。 'PixelValues'属性是一个列表,其中包含每个连接组件的像素值。

为了进一步简化代码,您可以跳过调用bwlabel,并直接将二进制图像传递给regionprops

stats = regionprops(Out,a,'PixelValues');