Steve的图像处理与MATLAB

图像处理的概念,算法,MATLAB

重新标记一个标签矩阵

这是我听到的三个最常见的问题bwlabel,用于标记二值图像中连接的分量

  • 搜索顺序
  • 重新标记(重新编号标签矩阵)
  • 两个不同图像中标签之间的对应关系

今天我将处理重新贴标签的问题。

在我关于搜索顺序的前一篇文章,我展示了如何对标记的对象进行后处理,以根据各种标准修改它们的顺序。现在我将更进一步,使用regionprops中的排序输出对标签矩阵中的标签重新编号。

博客阅读器Trung想知道我们是否可以通过重心按字典顺序排序,所以我就在这里做。

url =“https://blogs.mathworks.com/images/steve/186/scanned_page.png”;bw = imread (url);Bw = ~ Bw (1107:1194, 17:135);imshow (bw,“InitialMagnification”“健康”

这是一个标签矩阵的伪彩色视图label2rgb

L = bwlabel (bw);rgb = label2rgb (L,“喷气机”,(。95 .95 .95),“洗牌”);imshow (rgb,“InitialMagnification”“健康”

现在,让我们使用regionprops获取每个物体的质心。为了方便重新贴标签,我将得到“PixelIdxList”为每个对象。

s = regionprops(L, {“重心”“PixelIdxList”});

接下来,根据质心按字典顺序排序,首先根据垂直坐标排序。

centroids = cat(1, s. centroids);[sorted_centroids, sort_order] = sortrows(fliplr(centroids));s2 = s (sort_order);

为了可视化已排序的对象的顺序,我们可以在对象的顶部显示对象编号,如下所示:

首先,用浅灰色的背景来代替%的黑色背景,使数字可见在它上面。I = im2uint8 (bw);我(~ bw) = 200;我(bw) = 240;imshow(我“InitialMagnification”“健康”%现在绘制每个排序对象在对应位置的数量%重心:持有k = 1:numel(s2)质心= s2(k).质心;文本(质心(1),重心(2),sprintf (' % d '、k));结束持有

我们对的输出排序regionprops,但我们还没有触及标签矩阵本身。我们可以根据排序顺序使用线性索引和PixelIdxList每个对象。一个对象的PixelIdxList是属于该对象的像素的线性索引向量。以下是重标记循环:

k = 1:numel(s2) kth_object_idx_list = s2(k).PixelIdxList;L (kth_object_idx_list) = k;结束

在MATLAB 7.6 (R2008a)中发布特性允许您从一个循环中捕获多个图形。我将使用这个新功能来显示最初几个重新标记的对象的位置l

k = 1:5
imshow (L = = k)
结束

很快我将写另一篇文章,展示如何在两个图像重叠的对象中匹配标签。




与MATLAB®7.6发布

|
  • 打印
  • 发送电子邮件

评论

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