Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Сегментация изображения (сортировка линий)


GanibalLector ©   (09.10.17 16:15

Дано: черно-белое изображение, на котором присутствуют вертикальные линии. Несколько тысяч линий. Некоторые линии плотно прилегают друг к другу. Большая часть плотно прилегающих линий имеют по оси Y небольшие различия (+-5) сверху или снизу.   Именно их мне и нужно извлечь/сегментировать.  
Как подступить к задаче?
Отсортировал Rect’ы линий по X.  Взял у первого вершину и окончание (сохраняю в массив). Беру следующий Rect, сравниваю вершину и окончание с массивом. Если не подходит, то  опять в массив. Получается медленно. Каждую  последующую линию нужно сравнивать с больших количеством ранее проверенных линий, сидящих в массиве.
Если отсортировать по Y, то тоже неудобно. Вершина линий разная (+-5). Начинают приходить линии одинаковые по Y, но очень разные по X. Отбросить их нельзя. Опять хранить и сравнивать.

https://cdn1.savepice.ru/uploads/2017/10/9/761593579e7320d756074d246d7fab94-full.png

https://cdn1.savepice.ru/uploads/2017/10/9/ac346dd27fce5e3efc3c6d8eb21e3d43-full.png

Какие еще существуют варианты?


GanibalLector ©   (09.10.17 16:36[1]

Сохранил в файлы координаты точек.
Вдруг кто решиться попробовать ;)

https://drive.google.com/open?id=0BwQSxzHbQCs4N2Z1UTlkR1kwSzA


картман ©   (10.10.17 02:13[2]

Кластеризовать?


manaka ©   (10.10.17 10:27[3]


> Отсортировал Rect’ы линий по X.


проходи по отсортированному массиву1.
берется элемент a=N
если следующий равен a, ничего делается, проверяется следующий
если не равен, элемент N в массив2, a=M

в один проход массив2 - все непарные


Sha ©   (10.10.17 22:44[4]

непонятно, что требуется получить на выходе алгоритма


xayam ©   (10.10.17 23:02[5]


> Sha ©   (10.10.17 22:44) [4]
> непонятно, что требуется получить на выходе алгоритма

видимо список координат таких красных прямоугольников, судя по второй картинке
это наверное и есть "сегментирование"


KilkennyCat ©   (11.10.17 00:05[6]

тут подойдет метод наименьших квадратов. наверное. уже подзабыл математику.


GanibalLector ©   (11.10.17 11:27[7]


> непонятно, что требуется получить на выходе алгоритма


Зоны плотно прилегающих линий друг к другу.

Попробую описать подробнее, если кому интересно. На сканированном документе рукописный текст "наезжает" на печатный. Мне необходимо разделить их друг от друга. В печатном найти ключевое слово. На основании этого ключевого слова найти зону с рукописным и распознать.

Понятно, что использую OpenCV. Кластеризация не подходит, т.к. цвет рукописного и печатного практически идентичны. Ни в RGB, ни в HSV их разложить не получается. Можно разложить при помощи SVM. Но для этого нужны признаки для обучения. В качестве признаков можно взять зоны печатного и рукописного. Тогда шансов на успех будет больше. Эти зоны можно получить контурами (есть такая  штука в OpenCV), но по причине того, что рукописный наезжает на печатный контуры определяются не идеально. Вот, рассматриваю другие варианты поиска зон...


Styx ©   (11.10.17 18:09[8]

Ээээ... А где на приведённых картинках хоть какой-то текст?


Inovet ©   (11.10.17 20:16[9]

> [8] Styx ©   (11.10.17 18:09)

А я сразу увидел рукописный, только почему он такой нечёткий.


GanibalLector ©   (11.10.17 23:13[10]


> А я сразу увидел рукописный, только почему он такой нечёткий.


Если бы он был четким, вы нашли вариант решения моей задачи? Нет.


GanibalLector ©   (11.10.17 23:25[11]

С текстом работать гораздо сложнее. Специально обернул в несколько фильтров, чтобы работать с линиями.

Повторюсь, контурами не удается взять печатные буквы. Результат на уровне 60%. Бывают ложные контуры. Т.е. по размеру это печатная буква, а реально рукописная.


Styx ©   (11.10.17 23:32[12]

Вообще, конечно, лучше рассказать задачу с самого начала. А то это история про XYZ получается опять.


GanibalLector ©   (12.10.17 00:25[13]

Так все и так уже описано в [7]. Еще раз?


Styx ©   (12.10.17 10:12[14]

Нет. Откуда взялись сканированные документы, что на них за тексты, и что предполагается делать с результатами распознавания.


GanibalLector ©   (12.10.17 11:09[15]


>  Откуда взялись сканированные документы, что на них за тексты,
>  и что предполагается делать с результатами распознавания.
>


Вам скучно? Какое отношение эти вопросы имеют к теме вопроса?


Styx ©   (12.10.17 15:31[16]

http://www.gunsmoker.ru/2008/10/x-y-z.html


GanibalLector ©   (12.10.17 17:27[17]

Смешно.

Styx, скажи мне, какая разница откуда я их взял? С полки, со стула или мне их передала крупная государственная организация. Вот для тебя конкретно, что изменится от ответа на этот вопрос?

Контекст документа содержит персональные данные. Не могу я их публиковать, в силу разных обстоятельств. Даже если бы и мог, что изменилось? У тебя за плечами десятилетний опыт работы с ИИ и библиотекой OpenCV?  Ты знаком с оператором Собеля/Лапласа/Кэнни и прекрасно разбираешься в скрытой марковской модели? Не понимаю, для чего тебе контекст моего документа? Возьми любой документ и прямо на печатном тексте пиши ручкой черного цвета (цифры, буквы, слова). Этого достаточно, чтобы воспроизвести мою задачу.

Третий вопрос меня и вовсе поверг в шок. Почему не спрашиваешь, каким движком я собираюсь это делать, сколько он стоит и где я взял деньги? Ну, ппц... В БД собираюсь хранить или может в текстовом файле. Еще не решил.

Просьба к админам удалить ветку. Цирк!


Styx ©   (12.10.17 22:13[18]

Для меня конкретно - ничего не изменится. В тупик с десятилетним опытом работы с ИИ и библиотекой OpenCV зашёл не я. Я предлагаю тебе самому пошире посмотреть на решаемую задачу - и, возможно, окажется, что решение лежит на поверхности, но совсем не в том месте, где ты его ищешь. И я вовсе не надеюсь, что я тебе смогу помочь его найти. Но попытаться отвлечь тебя от поиска алгоритма сортировки линий - я попытался. А уж отвлекаться или нет - твоё дело.

:)


stas ©   (13.10.17 13:15[19]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо