【问题标题】:Sorting the connected component in order按顺序对连接的组件进行排序
【发布时间】:2014-06-16 18:26:46
【问题描述】:

我有一个关于连接组件的问题。我有一个二进制图像(只有 0 和 1)我从 matlab 运行函数: f=

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

[L 数量]=bwlabel(f);

假设他们给了我矩阵:

1   0   0   4   0   0   0   5   0   0
1   1   0   4   4   4   0   0   5   0
0   0   0   0   0   0   0   5   5   5
2   0   0   0   6   0   5   0   5   5
2   2   0   0   0   0   0   5   5   5
0   0   0   5   0   0   5   0   0   0
0   0   0   5   0   5   5   0   7   7
3   3   0   0   5   0   0   0   7   0
3   3   0   5   5   5   0   7   0   0
3   3   0   0   5   0   0   0   7   0

但是你可以在这个结果中看到,矩阵的顺序是跟随列的。现在我想将其更改为 oder 行,这意味着数字 4 是 2 ,数字 5 是 3 ......等等。 顺序是左-> 右和上-> 下。我该怎么做(阅读的顺序)??

非常感谢

【问题讨论】:

  • 一个简单的解决方案是在 bwlabel 之前横切您的图像,然后再横切它。看答案
  • 您是否正在尝试阅读文本,就像您发布的示例图像中一样?如果是这样,也请在问题中发布这些图片。

标签: sorting image-processing bounding-box


【解决方案1】:
f=f';
[L num]=bwlabel(f);
L=L';

这能解决您的问题吗?

【讨论】:

  • 对不起它并没有解决我的问题,因为如果我用这种方式处理图像:![原始图像][1]第一 - 第二 - 第三个连接组件是:F - S -l 喜欢这个图: ![image 1][2] 错了,因为我想要 1-2-3-... 的顺序是 H - a - w-a -(point of I) - (point of I ) - dash-i -i -s...感谢您的帮助,但它不正确,您还有其他方法吗? [1]:i.stack.imgur.com/nlZo7.jpg [2]:i.stack.imgur.com/i1Rky.jpg
  • @user3607620 对于您提出的问题,答案是正确的。之所以将F 标记为第一个组件,是因为F 是在图像第一行中找到的第一个组件。解决这个问题(使 H 成为第一行中的第一个组件)与您提出的问题有很大不同。
  • @user3607620 在所提出问题的答案正确之前作为裁判。您在此评论中显示的内容与问题中的内容不同,并且没有以相同的方式解决。如果那是您想要标记的图像,您应该在之前展示过它们。如果你仔细看,你会发现 F 首先被识别出来,因为第一个非零行属于 F,正如烧杯所解释的那样。我可以给你一个解决它的想法,虽然如果更复杂并且与你的问题完全不同,不应该放在这里(注意:问题将是我和破折号的点)
猜你喜欢
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
相关资源
最近更新 更多