Corte y reconocimiento del título del libro y autor de la imagen de la estantería


13

Estoy intentando, para mis propios fines de aprendizaje, desarrollar una implementación de un algoritmo que enumere los libros, dada la imagen de una estantería como la siguiente:

ingrese la descripción de la imagen aquí

El primer paso es cortar la imagen en libros individuales.

Mi algoritmo, en Mathematica , es:

    img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
  • hacer una detección básica de bordes y
  • elimine el texto e intente mantener las líneas largas

    edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
    
  • luego elimine las líneas horizontales no deseadas

    lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]]
    Show[img, Graphics[{Thick, Orange, Line /@ lines}]]
    

Los resultados, sin embargo, son menos que excelentes:

ingrese la descripción de la imagen aquí

Mis preguntas son:

  1. ¿Cómo puedo mejorar esto para obtener mejores resultados?
  2. ¿Hay alguna forma más inteligente de hacer esto?
  3. ¿Qué tan lejos debo procesar las imágenes para aumentar la precisión en la fase (posterior) de OCR?
  4. ¿Cómo usar la información de color para mejorar la segmentación?

1
@OrenPinsky No veo el problema con la segmentación: el número de "áreas de libros falsos" no es alto (solo puedo ver uno en la muestra que proporcionó), y si planea hacer algún tipo de reconocimiento de texto como siguiente paso, eso debería ser suficiente para discriminar entre libros (el área tiene texto) y no libros (sin texto)
penelope

3
@OrenPinsky, diría que sus resultados son bastante buenos. :)
Dima

Respuestas:



4

¿Qué método estás usando para detectar las líneas? ¿Has intentado experimentar con LSD ?

Aquí están los resultados de una prueba rápida que hice con LSD:

0.1heightpic1

La segunda imagen son los resultados con la misma restricción de ángulo pero sin tener en cuenta las longitudes de los segmentos: pic2

Puedes intentar jugar un poco con esto, descubrir cómo elegir los mejores segmentos de línea, extenderlos a líneas y tal vez obtener resultados ligeramente mejores que los que publicaste.


66
"¿Has intentado experimentar con LSD?" Buen intento, FBI;)
Lorem Ipsum

ImageLine de Mathematica se basa en la transformación Hough, y ahora estoy convencido (principalmente de los comentarios aquí) de que funciona bastante bien. Sin embargo, me molesta que esté perdiendo datos relevantes cuando me transformo en escala de grises, y que en esta aplicación los datos de color podrían ayudar (intuitivamente) a un detector de bordes robusto. ¡Intente LSD y vea cómo funciona! (¡Funcionó increíblemente bien para Steve Jobs! ;-)
Oren Pinsky el

He visto a un amigo usar LSD para la detección de puertas, creo que al final quedó satisfecho con los resultados. Yo diría que vale la pena intentarlo: D
penelope

1

Puede intentar realizar la detección de bordes en dominios de color individuales y luego fusionarlos, utilizando su método de elección para la detección de bordes.

En comparación con la detección de bordes directamente en la imagen en color, podría producir mejores resultados.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.