Конференция "Прочее" » Сегментация изображения (сортировка линий)
 
  • GanibalLector © (09.10.17 16:15) [0]
    Дано: черно-белое изображение, на котором присутствуют вертикальные линии. Несколько тысяч линий. Некоторые линии плотно прилегают друг к другу. Большая часть плотно прилегающих линий имеют по оси 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]
  • GanibalLector © (12.10.17 17:27) [17]
    Смешно.

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

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

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

    Просьба к админам удалить ветку. Цирк!
  • Styx © (12.10.17 22:13) [18]
    Для меня конкретно - ничего не изменится. В тупик с десятилетним опытом работы с ИИ и библиотекой OpenCV зашёл не я. Я предлагаю тебе самому пошире посмотреть на решаемую задачу - и, возможно, окажется, что решение лежит на поверхности, но совсем не в том месте, где ты его ищешь. И я вовсе не надеюсь, что я тебе смогу помочь его найти. Но попытаться отвлечь тебя от поиска алгоритма сортировки линий - я попытался. А уж отвлекаться или нет - твоё дело.

    :)
  • stas © (13.10.17 13:15) [19]
    По ходу чувак просто похвастаться решил )
 
Конференция "Прочее" » Сегментация изображения (сортировка линий)
Есть новые Нет новых   [118667   +41][b:0][p:0.001]