-
Дано: черно-белое изображение, на котором присутствуют вертикальные линии. Несколько тысяч линий. Некоторые линии плотно прилегают друг к другу. Большая часть плотно прилегающих линий имеют по оси Y небольшие различия (+-5) сверху или снизу. Именно их мне и нужно извлечь/сегментировать. Как подступить к задаче? Отсортировал Rect’ы линий по X. Взял у первого вершину и окончание (сохраняю в массив). Беру следующий Rect, сравниваю вершину и окончание с массивом. Если не подходит, то опять в массив. Получается медленно. Каждую последующую линию нужно сравнивать с больших количеством ранее проверенных линий, сидящих в массиве. Если отсортировать по Y, то тоже неудобно. Вершина линий разная (+-5). Начинают приходить линии одинаковые по Y, но очень разные по X. Отбросить их нельзя. Опять хранить и сравнивать. https://cdn1.savepice.ru/uploads/2017/10/9/761593579e7320d756074d246d7fab94-full.pnghttps://cdn1.savepice.ru/uploads/2017/10/9/ac346dd27fce5e3efc3c6d8eb21e3d43-full.pngКакие еще существуют варианты?
-
-
Кластеризовать?
-
> Отсортировал Rect’ы линий по X.
проходи по отсортированному массиву1. берется элемент a=N если следующий равен a, ничего делается, проверяется следующий если не равен, элемент N в массив2, a=M
в один проход массив2 - все непарные
-
непонятно, что требуется получить на выходе алгоритма
-
> Sha © (10.10.17 22:44) [4] > непонятно, что требуется получить на выходе алгоритма
видимо список координат таких красных прямоугольников, судя по второй картинке это наверное и есть "сегментирование"
-
тут подойдет метод наименьших квадратов. наверное. уже подзабыл математику.
-
> непонятно, что требуется получить на выходе алгоритма
Зоны плотно прилегающих линий друг к другу.
Попробую описать подробнее, если кому интересно. На сканированном документе рукописный текст "наезжает" на печатный. Мне необходимо разделить их друг от друга. В печатном найти ключевое слово. На основании этого ключевого слова найти зону с рукописным и распознать.
Понятно, что использую OpenCV. Кластеризация не подходит, т.к. цвет рукописного и печатного практически идентичны. Ни в RGB, ни в HSV их разложить не получается. Можно разложить при помощи SVM. Но для этого нужны признаки для обучения. В качестве признаков можно взять зоны печатного и рукописного. Тогда шансов на успех будет больше. Эти зоны можно получить контурами (есть такая штука в OpenCV), но по причине того, что рукописный наезжает на печатный контуры определяются не идеально. Вот, рассматриваю другие варианты поиска зон...
-
Ээээ... А где на приведённых картинках хоть какой-то текст?
-
> [8] Styx © (11.10.17 18:09)
А я сразу увидел рукописный, только почему он такой нечёткий.
-
> А я сразу увидел рукописный, только почему он такой нечёткий.
Если бы он был четким, вы нашли вариант решения моей задачи? Нет.
-
С текстом работать гораздо сложнее. Специально обернул в несколько фильтров, чтобы работать с линиями.
Повторюсь, контурами не удается взять печатные буквы. Результат на уровне 60%. Бывают ложные контуры. Т.е. по размеру это печатная буква, а реально рукописная.
-
Вообще, конечно, лучше рассказать задачу с самого начала. А то это история про XYZ получается опять.
-
Так все и так уже описано в [7]. Еще раз?
-
Нет. Откуда взялись сканированные документы, что на них за тексты, и что предполагается делать с результатами распознавания.
-
> Откуда взялись сканированные документы, что на них за тексты, > и что предполагается делать с результатами распознавания. >
Вам скучно? Какое отношение эти вопросы имеют к теме вопроса?
-
-
Смешно.
Styx, скажи мне, какая разница откуда я их взял? С полки, со стула или мне их передала крупная государственная организация. Вот для тебя конкретно, что изменится от ответа на этот вопрос?
Контекст документа содержит персональные данные. Не могу я их публиковать, в силу разных обстоятельств. Даже если бы и мог, что изменилось? У тебя за плечами десятилетний опыт работы с ИИ и библиотекой OpenCV? Ты знаком с оператором Собеля/Лапласа/Кэнни и прекрасно разбираешься в скрытой марковской модели? Не понимаю, для чего тебе контекст моего документа? Возьми любой документ и прямо на печатном тексте пиши ручкой черного цвета (цифры, буквы, слова). Этого достаточно, чтобы воспроизвести мою задачу.
Третий вопрос меня и вовсе поверг в шок. Почему не спрашиваешь, каким движком я собираюсь это делать, сколько он стоит и где я взял деньги? Ну, ппц... В БД собираюсь хранить или может в текстовом файле. Еще не решил.
Просьба к админам удалить ветку. Цирк!
-
Для меня конкретно - ничего не изменится. В тупик с десятилетним опытом работы с ИИ и библиотекой OpenCV зашёл не я. Я предлагаю тебе самому пошире посмотреть на решаемую задачу - и, возможно, окажется, что решение лежит на поверхности, но совсем не в том месте, где ты его ищешь. И я вовсе не надеюсь, что я тебе смогу помочь его найти. Но попытаться отвлечь тебя от поиска алгоритма сортировки линий - я попытался. А уж отвлекаться или нет - твоё дело.
:)
-
По ходу чувак просто похвастаться решил )
|