在matlab中找到连接的组件

时间:2014-03-23 04:09:17

标签: matlab

给定包含一些连接组件的BW图像。 然后,给出图像中的单个像素P.如何找到包含像素P的组件?保证像素P始终位于连接组件之一中的白色区域上。

目前,我使用CC = bwconncomp(BW)而不是使用'for'循环迭代每个组件。在每个组件中,我迭代索引像素。对于每个像素,我检查该值是否等于像素P的(索引)。如果我找到它,我会记录连接组件的数量。

然而,对于这个简单的任务来说似乎效率不高。有任何改进建议吗?非常感谢你提前。

1 个答案:

答案 0 :(得分:1)

MATLAB提供了多种以不同方式实现连通组件的功能。

在您的示例中,我建议bwlabel

http://www.mathworks.com/help/images/ref/bwlabel.html

[L, num] = bwlabel(imgBW)这将在黑白图像上执行全图像连通分量标记。

调用此函数后,可以从结果矩阵L中读取像素P所属的标签值,如label_to_find = L(row, col)索引中所示。就这么简单。

要提取该标签的蒙版图像,请使用logical(L == label_to_find)

如果您使用不同的软件包(如OpenCV),您将能够获得更好的性能(在减少不必要或冗余计算方面的效率),但在MATLAB中,重点是方便性和原型设计速度。