¿Cómo reconocer la matrícula/matrícula del vehículo (ANPR) a partir de una imagen?[cerrado]

StackOverflow https://stackoverflow.com/questions/981378

Pregunta

Tengo un sitio web que permite a los usuarios cargar imágenes de automóviles y me gustaría implementar un filtro de privacidad para detectar placas de matrícula en el vehículo y difuminarlas.

El desenfoque no es un problema, pero ¿existe alguna biblioteca o componente (preferiblemente de código abierto) que ayude a encontrar una licencia dentro de una foto?

Advertencias;

  1. Sé que nada es perfecto y el reconocimiento de imágenes de este tipo proporcionará falsos positivos y negativos.
  2. Aprecio que podamos pedirle al usuario que seleccione el área a desenfocar y lo haremos también, pero la pregunta es específicamente sobre cómo encontrar esos datos mediante programación;por lo que respuestas como "hacer que una persona revise cada imagen" no son útiles.
  3. Este método de software se llama "Reconocimiento automático de matrículas" en el Reino Unido, pero no veo ninguna implementación del mismo como biblioteca.
  4. Cualquier idioma es excelente, aunque se prefiere .Net.
¿Fue útil?

Solución

codifiqué una versión C # basado en JAVA ANPR, pero he cambiado las funciones de la biblioteca AWT con OpenCV. Puede comprobarlo en http://anprmx.codeplex.com

Otros consejos

EDITAR:escribí un secuencia de comandos de Python para esto.

Como su objetivo es borroso (para la protección de la privacidad), básicamente necesita un alto recordar detector como primer paso.A continuación se explica cómo hacer esto.Las sugerencias de código incluidas utilizan OpenCV con Python.

  1. Convertir a escala de grises.
  2. Aplicar Desenfoque Gaussiano.

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

Sea la imagen de entrada la siguiente.

enter image description here

  1. Aplique el filtro Sobel para detectar bordes verticales.
  2. Umbral de la imagen resultante utilizando un umbral estricto o la binarización de OTSU.

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. Aplicar una operación de Cierre Morfológico utilizando un elemento estructurante adecuado.(Usé 16x4 como elemento estructurante)

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

Imagen resultante después del paso 5.

enter image description here

  1. Encuentra los contornos externos de esta imagen.

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. Para cada contorno, encuentre el minAreaRect() limitándolo.

  3. Seleccione rectángulos según la relación de aspecto, el área mínima y máxima y el ángulo con la horizontal.(Usé 2.2 <= Relación de aspecto <= 8, 500 <= Área <= 15000 y ángulo <= 45 grados)

Todo minAreaRect()s se muestran en naranja y el que satisface nuestros criterios está en verde.

enter image description here

  1. Es posible que haya falsos positivos después de este paso; para filtrarlo, utilice densidad de bordes.La densidad de borde se define como la número de píxeles blancos/número total de píxeles en un rectángulo.Establezca un umbral para la densidad de los bordes.(Yo usé 0,5)

enter image description here

  1. Desenfoca las regiones detectadas.

enter image description here

Puede aplicar otros filtros que considere adecuados para aumentar la recuperación y la precisión.La detección también se puede entrenar utilizando HOG+SVM para aumentar la precisión.

Hay una nueva, biblioteca de código abierto en GitHub que hace ANPR para los EEUU y placas europea. Se ve bastante precisa y se debe hacer exactamente lo que necesita (reconocer las regiones de la placa). Aquí está el proyecto GitHub: https://github.com/openalpr/openalpr

Me encontré con este que está escrito en Java JavaANPR , Busco # biblioteca de CA también.

Me gustaría tener un sistema en el que se pueden señalar una cámara de vídeo en algunos barcos de vela, todos los cuales tienen números grandes, identificables en ellos, y tienen que identificar los barcos y enviar un tweet cuando navegan más allá de una cámara de vídeo.

He hecho algunas google sobre esto hace un par de meses. Hay un buen número de documentos sobre este tema, pero nunca observe una aplicación de código abierto de hormigón. Hay muchas implementaciones comerciales sin embargo, pero ninguno de ellos con una cotización de precio, por lo que probablemente son bastante caros.

probar este simple lectura de matrículas Sistema de reconocimiento

http://opos.codeplex.com/

El código abierto y escrito con C #

Tener un vistazo a de Java ANPR . libre reconocimiento de matrículas ...

Sí, uso gocr en http://jocr.sourceforge.net/ Es una aplicación de línea de comandos que puedes ejecutar desde tu aplicación.Lo uso en un par de mis aplicaciones.

alto rendimiento ANPR Biblioteca - http://www.dtksoft.com/dtkanpr.php. Esta es comercial, pero proporcionan clave de prueba.

Es tal vez funciona mirar el software recoqnition carácter, ya que hay muchas bibliotecas por ahí que realizan la misma cosa. Me lectura de una imagen y almacenarla. oficina Micrsoft es capaz de leer archivos TIFF y volver alfanuméricos

La confusión no es un problema, pero no es una biblioteca o componente (código abierto preferido) que le ayudará a encontrar una licencia dentro de una foto?

Respuesta: El motor de software FreeFlow CARMEN ANPR (Commerical)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top