2013-07-19 57 views
0

假设我有一个二进制图像BW并且我使用bwlabel来查找连接区域1.我想查找该结果的最大组(不是0)以及该组在图片中的位置。这个怎么做?通过使用bwlabel计算最大的连接对象/组件

+0

你有什么尝试? – CTZStef

+0

起初我没有尝试任何东西,因为我在matlab中很新,不知道如何去做。然后我尝试了下面的答案,并知道这对我来说很有用。 –

+0

好,那么你需要编辑你的问题:) – CTZStef

回答

1

有几种方法来完成,例如直方图中的非零元素的含量:

L=bwlabel(I); 
[a val]=hist(L(:),1:max(L(:))) 
val(a==max(a)) 

将产生最发生的历史

另一种方式是使用平板状的值:

a=tabulate(L(:)) 
a(a(:,2)==max(a(2:end,2)),1) 

tabulate在向量L(:)中创建数据的频率表。的信息被安排如下:

第一柱 - L的

的唯一值

第二列 - 每个值的百分比

等 - 每个值的

第三柱实例数...

+0

谢谢你natan,我认为制表将相当工作,但在此命令“a(1,max(a(:,2))))”我得到一个错误“尝试访问a(1,1.60738e + 06);索引超出范围,因为大小(a)= [7711,3]“。这是什么意思?并与表格,它仍然计数零(0)... –

+0

我已纠正该行,所以它会给非重复的最重要的值...但为什么不使用'hist'? – bla

+0

非常感谢你,我没有使用hist,因为我认为我比你的代码中的hist更好地列出了表格^^! –