На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Распознать линию на фоне
    Здравствуйте! Надо распознать линию на фоне не совсем определенной формы. Как это сделать? С чего начать? Как отделить от фона - определить, что тут фон, а тут нет? Прикреплённый файлПрикреплённый файл__________.png (1,7 Кбайт, скачиваний: 922)
      Во-первых, фон у тебя очень даже регулярный.
      Во-вторых, что более важно, цвет линии не похож на ни на один их цветов фона. Линия чёрная, а в фоне у тебя белый и серый цвета.
      В-третьих, линия много толще линий сетки фона, которые вдобавок рисуются точками. Даже если бы линии фона рисовались чёрным цветом, их можно было бы удалить, просто выбелив пиксели, имеющие более двух белых соседей

      Этот вопрос лучше подошёл бы к "алгоритмам" или "графике". Никаких новых идей в нём нет.
        Ясно. У меня еще вот этот случай есть: когда толщина линии совпадает с толщиной сетки фона
        И третий случай - толщина сетки фона даже больше, чем толщина линии..

        А с точки зрения машинного зрения как происходит распознавание? Какие функции использовать? Какие шаги?
        Как компьютер научить отличать, что тут фон, а тут кривая?
          Про машинное зрение ничего не знаю, я такие задачи привык решать самостоятельно. Смотрю, как я сам отличил бы график от линий сетки. Так и программирую.

          Других случаев я не видел, а в приведённом рисунок явно сгенерирован программно. А значит линии сетки будут обязательно или вертикальны или горизонтальны.
            Цитата amk @
            Про машинное зрение ничего не знаю, я такие задачи привык решать самостоятельно. Смотрю, как я сам отличил бы график от линий сетки. Так и программирую.

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

            и какая будет последовательность шагов?
            если они перпендикулярны друг другу (линии фона), значит, надо искать угол между ними? И тогда говорить, что это линии фона?
              Я думаю, у тебя задача не "распознать линию графика на неизвестно откуда взявшемся рисунке", а "распознать эту линию на графике вполне определённого происхождения". Возможно это одна программа генерирует эти графики, возможно есть две-три таких программы. Но скорее всего разновидностей таких графиков не много. По крайней мере, в другом твоём посте ты привёл график с точно такой же сеткой, как и здесь. И нарисованный точно такой же линией.
              Подозреваю, что график мог быть получен захватом изображения с экрана.
              Цитата Powder @
              если они перпендикулярны друг другу (линии фона), значит, надо искать угол между ними? И тогда говорить, что это линии фона?

              Всё немного проще. На твоих рисунках линии фона строго горизонтальны или строго вертикальны.
              Для начала я бы реализовал простейший вариант отделения графика от фона: всё, что чёрное - линия графика, всё остальное - фон. Потом бы думал над более продвинутыми алгоритмами
              Как выглядит такой более продвинутый алгоритм?
              Первым делом определяешь цвет фона, как правило это цвет, который имеет максимальное количество пикселей. Чаще всего это белый или светлосерый
              Далее ищешь то, что выглядит как линия сетки. Это как правило тонкая сплошная линия, или набор точек, расположенных вдоль прямой линии. Направление линии или строго горизонтальное или строго вертикальное, или, на графиках полученных сканированием или фотографированием, близкое к ним.
              Всё что осталось - нужная тебе линия графика
              Часто линия графика имеет ещё и цвет, отличающийся от линий сетки.
                Powder
                Как распознать линию?
                http://robocraft.ru/blog/computervision/640.html
                Как на избавиться от фона?
                http://recog.ru/blog/opencv/33.html
                С чего начать?
                Начать с со сбора информации. Короче в гугл.
                Цитата
                А с точки зрения машинного зрения как происходит распознавание? Какие функции использовать? Какие шаги?

                Преобразование из данных неизвестного происхождения в классы или структуру с известными свойствами.
                Программист думает думает. Пробует разные варианты находит лучшие функции.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0340 ]   [ 18 queries used ]   [ Generated: 28.03.24, 14:02 GMT ]