Сортировка подключенных компонентов по порядку

#sorting #image-processing #bounding-box

#сортировка #обработка изображений #ограничивающий прямоугольник

Вопрос:

У меня есть вопрос по типу подключенного компонента. У меня есть двоичное изображение (только 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 num]=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
  

Но вы можете видеть в этом отчете, что порядок матрицы следует за столбцом. Теперь я хочу изменить это на другие строки, что означает, что число 4 равно 2, число 5 равно 3… и так далее.
Выбор влево-> вправо и сверху -> вниз. Как я могу это сделать (способ чтения)??

Большое вам спасибо

Комментарии:

1. Простым решением было бы поперечное изображение перед bwlabel и поперечное его снова после этого. см. Ответ

2. Вы пытаетесь прочитать текст, как в примерах изображений, которые вы опубликовали? Если да, пожалуйста, также разместите эти изображения в вопросе.

Ответ №1:

 f=f';
[L num]=bwlabel(f);
L=L';
  

решает ли это вашу проблему?

Комментарии:

1. Мне жаль, что это не решает мою проблему, потому что, если я использую этот способ с изображением: ! [исходное изображение] [1] Первый — второй — третий подключенный компонент: F -S -l, как на этом рисунке : ! [изображение 1] [2] Это неправильно, потому что я хочу, чтобы порядок 1-2-3-… был H — a — w-a — (точка I) — (точка I) — тире-и -и -с… Спасибо за вашу помощь, но это неправильно, у вас есть другой способ? [1]: i.stack.imgur.com/nlZo7.jpg [2]: i.stack.imgur.com/i1Rky.jpg

2. @user3607620 Ответ правильный на заданный вами вопрос. Причина, по которой F он помечен как первый компонент, заключается в том, что F это первый компонент, найденный в первой строке изображения. Устранение этой проблемы (создание H первого компонента, найденного в первой строке) значительно отличается от заданного вами.

3. @user3607620 как указано до того, как ответ будет правильным для представленного вопроса. то, что вы показали в этом комментарии, не совпадает с вопросом и не решается таким же образом. если это были изображения, которые вы хотели пометить, вы должны были представить их раньше. Если вы внимательно посмотрите, вы увидите, что F идентифицируется первым, потому что первая ненулевая строка принадлежит F, как объяснил beaker . Я мог бы дать вам идею для ее решения, хотя, если она намного сложнее и полностью отличается от вашей проблемы, ее не следует размещать здесь (примечание: проблема будет заключаться в точках I и dash)