Matlab矩阵裁剪簇

时间:2011-12-07 22:12:22

标签: matlab image-processing matrix

给出一个矩阵:

0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0
0 0 1 1 0 1 0 1
0 0 1 1 0 1 0 0
0 0 0 0 1 0 0 0

注意1的主要是聚类,除了第3行中的1,最后一列

我想要做的是摆脱多余的0并且仅保留1的簇。这就是我要对图像进行的操作,因此裁剪后的结果应为矩形:

0 1 1 1 
1 1 0 1
1 1 0 1
0 0 1 0

上面的作物是我可以做的最小的矩形作物,以覆盖最多的1个。

我现在遇到的问题是如何在matlab中做到这一点?我不能简单地删除所有0,我必须注意异常值1。解决这个问题的最有效方法是什么?

我只能想到逐行逐行手动查找群集。

1 个答案:

答案 0 :(得分:3)

您要做的就是在二进制图像中标记2D连接组件。如果您有权访问图像处理工具箱,则该功能为bwlabelhttp://www.mathworks.com/help/toolbox/images/ref/bwlabel.html

如果你没有接受bwlabel,那么有几种算法。我所知道的最快的是OpenCV使用的那个,它在图​​像中找到封闭的轮廓并基于

F。 Chang,C.-J。陈和C.-J. Lu,“线性时间成分标记 使用轮廓追踪技术的算法,“计算机视觉和图像 理解,卷。 93,不。 2,pp.206-220,2004