史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

Almost-connected-component标签

在一个最近的帖子我演示了使用bwdist(二进制图像欧氏距离变换)执行各向同性扩张。这是受的东西布雷特问我。

昨晚布雷特发布评论解释一下他在做什么。我将硬币术语布雷特所说的:almost-connected-component标签

我将用一个简单的合成图像说明包含一个圆形斑点的数量。

url =“https://blogs.mathworks.com/images/steve/2010/blobs_in_clumps.png”;bw = imread (url);imshow (bw)

现在让我们标签中的连接组件bw

cc = bwconncomp (bw)
cc =连接:8图象尺寸:313年[337]NumObjects: 23 PixelIdxList: {1} x23细胞

你可以看到,有23个不同的检测对象。这个函数label2rgb用于可视化组件连接。你使用转换的输出bwconncomp使用一个标签矩阵labelmatrix然后将结果传递给label2rgb

L = labelmatrix (cc);rgb = label2rgb (L,“喷气机”,(。7。7。7],“洗牌”);imshow (rgb)

布雷特的问题是:我们如何标签和测量三个团,而不是小的圈子?(团细胞集群在布雷特的问题。)答案是把一个各向同性扩张的步骤与连接组件标签。

假设两个圆是“几乎连接”,如果他们在25像素单位彼此距离。所以从一个各向同性扩张的步骤开始:

bw2 = bwdist (bw) < = 12.5;imshow (bw2)

现在我们可以执行连接组件标签bw2:

L2 = labelmatrix (bwconncomp (bw2));rgb2 = label2rgb (L2,“喷气机”,(。7。7。7],“洗牌”);imshow (rgb2)

现在我们有三个团,但他们太“脂肪”。That is, they have too many pixels in them because of the isotropic dilation step. So if, for example, we measure the area of each clump usingregionprops:

s = regionprops (L2,“区域”);(s.Area)
ans = 14418 11023 6341

我们得到一个扭曲的面积测量。如果我们想执行测量只在原来的块的像素?

一个很好的应用逻辑索引将修改L2摆脱了像素。以下行设置为0的所有元素L2对应背景像素bw

L2 (~ bw) = 0;imshow (label2rgb (L2,“喷气机”,(。7。7。7],“洗牌”))
s = regionprops (L2,“区域”);(s.Area)
ans = 4827 3510 2208

你有申请“almost-connected-component标签”?发表你的评论。

PS。嘿,如果你没有注意到,R2010b释放出去了。我很快就会发布一些关于它。




使用MATLAB®7.10发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。