Pregunta

Tengo 55 000 archivos de imagen (en formato JPG y TIFF), que son imágenes de un libro.

La estructura de cada página es la siguiente:

  

texto

     

--- (línea horizontal) ---

     

un número

     

texto

     

--- (línea horizontal) ---

     

otro número

     

texto

No puede haber de cero a 4 líneas horizontales en una determinada página.

Tengo que encontrar cuál es el número, justo por debajo de la línea horizontal.

Pero, los números siguen estrictamente entre sí, a partir de un solo en la primera página, por lo que con el fin de encontrar el número, no necesito leerlo: tan sólo pudiera detectar la presencia de líneas horizontales, que debe ser a la vez más fácil y seguro que tratar de OCR la página para detectar los números.

El algoritmo sería, básicamente:

for each image
  count horizontal lines
  print image name, number of horizontal lines
  next image

La pregunta es: ¿cuál sería la mejor biblioteca de imágenes / idioma para hacer la parte de "contar con líneas horizontales"

?
¿Fue útil?

Solución

Probablemente la forma más fácil de detectar sus líneas está utilizando el transformada de Hough en OpenCV (que tiene contenedores para muchos idiomas) .

El TRANFORM OpenCV Hough detectará todas las líneas en la imagen y regresar a sus ángulos y coordenadas de inicio / parada. Sólo se debe mantener a aquellos cuyos ángulos están cerca de la horizontal y de longitud adecuada.

Aprendizaje de O'Reilly OpenCV explica en detalle la entrada y salida de la función (p.156).

Otros consejos

Si usted tiene un buen contraste, intente ejecutar los componentes conectados y analizar el resultado. Puede ser una alternativa a la búsqueda de líneas a través de Hough y cubrir el caso cuando los elementos estructurados son un poco curvado o un algoritmo de línea recoge las líneas que no desea que se recoja.

Los componentes conectados es un algoritmo muy rápido dos de exploración de trama y le dará una máscara con todo lo que los elementos conectados en ella marcados con diferentes etiquetas y representaron. Puedes descartar cualquier cosa brevemente (en términos de relación de aspecto). En general, esto puede ser más general, más rápido, pero probablemente un poco más complicado que ejecuta la transformada de Hough. La transformada de Hough, por otro lado será más tolerable para los artefactos de contraste e incluso lagunas accidentales en las líneas. OpenCV tiene las findContours función () que se encuentran componentes para usted.

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