Продолжение - Обнаружение номерного знака транспортного средства - PullRequest
9 голосов
/ 18 января 2011

Продолжая эту тему:

Каковы хорошие алгоритмы обнаружения номерного знака транспортного средства?

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

alt text

alt text

Теперь самое сложное, на самом делеобнаружение номерного знака.Я знаю, что есть несколько методов обнаружения ребер, но моя математика довольно плохая, поэтому я не могу перевести некоторые сложные формулы в код.

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

Буду признателен за некоторые данные, так как это может бытьошибочная идея, слишком медленная или интенсивная.

Спасибо

Ответы [ 3 ]

5 голосов
/ 19 января 2011

Ваш метод «увидеть, различают ли цвета белый цвет номерного знака и черный цвет текста», заключается в основном в поиске областей, в которых интенсивность пикселей меняется с черного на белый и наоборот много раз. Обнаружение края может выполнить по существу то же самое. Тем не менее, реализация собственных методов все еще хорошая идея, потому что вы многому научитесь в процессе. Черт возьми, почему бы не сделать и то и другое и сравнить результаты вашего метода с результатами какого-нибудь готового алгоритма обнаружения краев?

В какой-то момент вы захотите получить двоичное изображение, скажем, с черными пикселями, соответствующими метке «не символ», и белыми пикселями, соответствующими метке «символ». Возможно, самый простой способ сделать это - использовать функцию порогового значения. Но это будет хорошо работать только в том случае, если персонажи уже каким-то образом подчеркнуты.

Как кто-то упоминал в вашей другой ветке, вы можете сделать это с помощью оператора черной шляпы, что приводит к чему-то вроде этого:

image after black hat operation

Если вы пороговое изображение выше с, скажем, методом Оцу (который автоматически определяет глобальный пороговый уровень), вы получите это:

alt text

Есть несколько способов очистить это изображение. Например, вы можете найти подключенные компоненты и выбросить те, которые слишком маленькие, слишком большие, слишком широкие или слишком высокие, чтобы быть персонажем:

alt text

Поскольку символы на вашем изображении относительно большие и полностью связаны между собой, этот метод хорошо работает.

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

Все вышеперечисленные шаги, конечно, всего лишь один из способов сделать это.

Кстати, я сгенерировал изображения выше, используя OpenCV + Python, который является отличной комбинацией для компьютерного зрения.

3 голосов
/ 18 января 2011

Цвет, несмотря на то, что он выглядит хорошо, создаст немало проблем с затенением и освещением. Действительно зависит от того, насколько вы хотите сделать его надежным, но в реальных случаях приходится иметь дело с такими проблемами.

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

Большинство алгоритмов используют обнаружение линий и пытаются найти прямоугольник с соотношением сторон в допустимом диапазоне.

Я предлагаю вам сделать обзор литературы по этому вопросу, но это было сделано еще в 1993 году (если я правильно помню), поэтому будет тысячи статей.

Это довольно научная область, поэтому только алгоритм не решит ее, и вам потребуется множество шагов до / после обработки.

Вкратце, я предлагаю использовать преобразование Хафа для поиска линий, а затем попытаться найти прямоугольники, которые могли бы создать приемлемое соотношение сторон.

Обнаружение функции Харриса может обеспечить важные края, но если автомобиль светлый, это не сработает.

1 голос
/ 19 января 2011

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

...