Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Распознавание дорожных знаков


Автор: Geniy00 22.1.2008, 20:55
На картинке(сделанной через веб-камеру допустим) найти дорожный знак.
База дорожных знаков будет занесена в программу.

Допустим ставим веб-камеру в машину и работаем с ноутбуком.
Я так понимаю "Аффинное преобразование" нужно применить для масштабирования?

Может сначала сделать "Аффинное преобразование" со знаками которые в базе находятся а потом просто искать их все на изображении?


Посоветуйте пожалуйста с алгоритмами и литературой.

Автор: Sardar 22.1.2008, 21:52
Смотря при каких условиях. Если всё реально произвольное, т.е. гоняем на машине в любом месте в любое время суток то скорее всего только http://en.wikipedia.org/wiki/Neural_network и поможет. Сила её в том, что это мощный (и тормозной) механизм обобщения, выделяет закономерности (вещи не меняющиеся).

Если управляется человеком, т.е. можно снять качественный снимок почти в весь экран, то можно уже проще (median filter => edge detecting filter => ... => recognizing (опять же автоматом или NN)). Чую это твой случай, раз ты сразу к масштабированию пришёл, значит объект на растре уже выделил.

Извиняюсь без конкретики, т.к. область обширная, методов много, опиши что доступно, условия и главное пример снимков.

Автор: Geniy00 22.1.2008, 22:14
Собираюсь делать дипломную работу на эту тему.

Допустим только при хорошем осветлении будем, гонят на машине(например днем).
Ездим только по дорогам(Получается сами дорожные знаки будут не сильно искажены)
Веб-камера закрепляется в машине(мы не фокусируем ее на знаках, то есть снимаем все подряд и уже там ищем дорожный знак).



Цитата

median filter => edge detecting filter => ... => recognizing (опять же автоматом или NN)).

Что это означает?


Цитата

Извиняюсь без конкретики, т.к. область обширная, методов много, опиши что доступно, условия и главное пример снимков.

Если есть  идеи как можно упростить задание то советуй.

Цитата

Чую это твой случай,

Я еще только материал собираю

Автор: Sardar 23.1.2008, 00:16
Цитата(Geniy00 @  22.1.2008,  21:14 Найти цитируемый пост)
Что это означает?

Цепочка фильтров, что либо делающих с картинкой. 

Цитата(Geniy00 @  22.1.2008,  21:14 Найти цитируемый пост)
Если есть  идеи как можно упростить задание то советуй.

Похоже я пас smile

Делим проблему на несколько стадий:
  • найти объект на растре
  • найти его ориентацию, маштаб и т.п. если применимо/необходимо
  • распознать объект с некоторой точностью
Мой опыт упирается в NN и в распознавание  (блочного) штрих-кода. Для последнего естественно оптимизированное решение (в порядке цепочки):
  • 1) grayscale filter - для штрих кода не важен цвет, а расчёты очень упрощает
  • 2) median filter - сглаживание с сохранением краёв. тебе тоже понадобиться, удаляет шум, но оставляет чёткие границы
  • 3) adaptive thresholding - значения яркости переводит в 2-чёрное, 1-серое, 0-белое, выделяется штрихкод и удаляется фон
  • 4) bounding-box - на перекрестье наибольших масс на гистограммах вдоль X и Y находим "базу" кода, далее шагами в стороны по гистограмме ищем размеры нашего паттерна. Гистограмма - количество чёрных пикселей на строке (Y) или колонке (X).
  • 5) square filter - путём шаманства находим 4 угла паттерна, т.е. обычно паттерн в виде не сильно страшной трапеции снимается
  • 6) matrix-samper - делит площадь на ячейки, снимает уровни чёрного в каждой ячейке
  • 7) golay checker и decoder - проверка/восстановление ошибок и декодирование кода
Это моя лаба, что я прямо завтра буду сдавать smile  В твоём случае всё сложней, нужно:
  • вероятно нейронная сетка, что будет находить (но не распозновать) искомый объект на снимке - если фон особо не меняется (небо), то одной NN хватит, будет находить небо, значит всё что не небо - вероятно знак. Иначе придётся делать разные NN для сильно различающихся знаков. Нашли, окружили боксом, задача упростилась. Полезно на этом шаге использовать чёрно-белые снимки.
  • убираем шумы (median и т.п.), "квантизируем" в несколько простых цветов, появятся хорошие границы
  • NN сеткой распознаём знак. можно подавать растр, а можно определить края (edges) и подавать их на вход сетке (для рукописного текста обычно используется).
К сожалению опыта у меня пока в этом нет, будет со следующего блока smile

Автор: maxim1000 23.1.2008, 11:01
можно попробовать такое:
знаки стоят с какой-то стороны от дороги (сверху, слева, снизу)
предполагаем, что камера направлена вдоль дороги
кроме того, можно рассмотреть случай, когда дорога прямая (т.е. следующий поворот далеко)
тогда, если зафиксировать расстояние от линии движения машины до знака (например, если он висит на 3 метра выше дороги), то есть вполне однозначная зависимость удалённости изображения знака на фотографии и расстоянием до него вдоль дороги
т.е. при проверке, есть ли на данном участке изображения знак, мы уже знаем параметры аффинного преобразования
ну а если знак достаточно далеко, то можно упростить его до простого масштабирования (со смещением, конечно)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)