Подтвердить что ты не робот

Как распознать лицензию/номерной знак транспортного средства (ANPR) на изображении?

У меня есть веб-сайт, который позволяет пользователям загружать изображения автомобилей, и я хотел бы установить фильтр конфиденциальности, чтобы обнаружить регистрационные знаки на автомобиле и размыть их.

Размытие не является проблемой, но есть ли библиотека или компонент (предпочтительный вариант с открытым исходным кодом), который поможет найти лицензию на фотографии?

Предостережение;

  • Я знаю, что нет ничего совершенного, и распознавание изображений этого типа обеспечит ложные положительные и отрицательные стороны.
  • Я ценю, что мы могли бы попросить пользователя выбрать область для размытия, и мы тоже это сделаем, но вопрос заключается в том, чтобы найти эти данные программно; поэтому ответы, такие как "получить человека для проверки каждого изображения", не помогают.
  • Этот программный метод называется "Автоматическое распознавание номерных знаков" в Великобритании, но я не вижу никаких его реализаций в качестве библиотек.
  • Любой язык отличный, хотя .Net является предпочтительным.
4b9b3361

Ответ 1

Я закодировал версию С# на основе JAVA ANPR, но я изменил функции библиотеки awt с помощью OpenCV. Вы можете проверить его на http://anprmx.codeplex.com

Ответ 2

EDIT. Я написал Python script для этого.

Поскольку ваша цель - размытие (для защиты конфиденциальности), вам в первую очередь нужен высокий recall детектор. Вот как это сделать. Введенные подсказки кода используют OpenCV с Python.

  • Преобразовать в оттенки серого.
  • Применить гауссовское размытие.

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

Пусть входное изображение будет следующим.

введите описание изображения здесь

  1. Применить фильтр Sobel для определения вертикальных краев.
  2. Порог результирующего изображения с использованием строгого порога или бинаризации OTSU.

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. Применить операцию морфологического закрытия с использованием подходящего структурирующего элемента. (Я использовал 16x4 как структурирующий элемент)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

Результирующее изображение после шага 5.

введите описание изображения здесь

  1. Найдите внешние контуры этого изображения.

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. Для каждого контура найдите minAreaRect(), ограничивающий его.

  3. Выберите прямоугольники на основе соотношения сторон, минимальной и максимальной площади и угла с горизонтали. (Я использовал 2,2 <= Соотношение сторон <= 8, 500 <= Площадь <= 15000 и угол <= 45 градусов).

Все minAreaRect() показаны оранжевым цветом, а значение, которое соответствует нашим критериям, зеленое.

введите здесь описание изображения

  1. После этого шага могут быть ложные срабатывания, чтобы фильтровать его, использовать плотность края. Edge Density определяется как количество белых пикселей/общее количество пикселей в прямоугольнике. Установите порог плотности краев. (Я использовал 0.5)

введите описание изображения здесь

  1. Размытие обнаруженных областей.

введите описание изображения здесь

Вы можете применить другие фильтры, которые вы считаете подходящими для увеличения количества напоминаний и точности. Обнаружение также можно обучить с использованием HOG + SVM для повышения точности.

Ответ 3

В GitHub есть новая библиотека с открытым исходным кодом, которая делает ANPR для американских и европейских тарелок. Он выглядит довольно аккуратно, и он должен делать именно то, что вам нужно (узнайте области пластин). Вот проект GitHub: https://github.com/openalpr/openalpr

Ответ 4

Я столкнулся с этим, написанным в java javaANPR. Я также ищу библиотеку С#.

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

Ответ 5

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

Ответ 6

попробуйте эту систему автоматического распознавания номерных знаков

http://opos.codeplex.com/

Открытый исходный код и написанный с помощью С#

Ответ 7

Посмотрите Java ANPR. Бесплатное распознавание номерных знаков...

Ответ 8

Да Я использую gocr at http://jocr.sourceforge.net/ свое приложение командной строки, которое вы можете выполнить из своего приложения. Я использую его в нескольких моих приложениях.

Ответ 9

Высокопроизводительная библиотека ANPR - http://www.dtksoft.com/dtkanpr.php. Это коммерчески, но они предоставляют пробный ключ.

Ответ 11

Возможно, это работает, глядя на программное обеспечение Recoqnition для персонажа, поскольку там есть много библиотек, которые выполняют одно и то же. Я читаю изображение и сохраняю его. Офис Micrsoft может читать файлы tiff и возвращать буквенно-цифровые символы

Ответ 12

Размытие не является проблемой, но есть ли библиотека или компонент (предпочтительный вариант с открытым исходным кодом), который поможет найти лицензию на фотографии?

Ans: Механизм программного обеспечения CARMEN FreeFlow ANPR (Commerical)