用MATLAB进行图像处理

图像处理概念,算法和MATLAB

连接部件标识。第7部分

我在我的以前连接的组件标签张贴所使用的算法bwlabeln.这次我要讲的是bwlabel.这个变体使用行程长度编码作为第一步。

下面是我所说的运行长度编码。考虑这个小的二值图像矩阵:

这样的二值图像可以表示为的集合运行,或1的序列。按列工作,该图像包含9次运行:

每一次运行都可以用它的起始像素和运行中的像素数表示,这称为运行长度.因此才有了这个术语行程长度编码

对于包含较大对象的较大二值图像,运行的数量可以比前景像素的数量小得多。但是连通性分析完全可以通过运行来确定。在我们的小例子中:

  • 运行#3连接到运行#1
  • 运行#4连接到运行#2
  • 运行#6连接到运行#4
  • 运行#7连接到运行#5
  • 运行#8连接到运行#6
  • 运行9连接到运行7
  • 运行9连接到运行8

属性将此连接对集解析为等价类的技术dmperm.在本例中,只有两个等价类,对应于两个连接的组件。

这个函数bwlabel调用首先计算一个运行长度编码。当它找到每次运行时,它还确定前一列上的哪些运行是连接的(如果有的话)。然后构造稀疏邻接矩阵并调用dmperm计算等价类。然后它根据它所属的等价类标记输出标签矩阵中的每个运行。

这是一种非常有效的方法,因为它只扫描输入图像中的每个像素一次,也因为邻接矩阵通常相对较小。它是R乘R,其中R是运行的次数。

你可以在Haralick和Shapiro中找到这种方法,计算机和机器人视觉卷1, Addison-Wesley, 1992, pp. 40-48。(注意,等价类解析方法使用bwlabel和书中描述的不一样。)




使用MATLAB®7.4发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。