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:
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:
Mis preguntas son:
- ¿Cómo puedo mejorar esto para obtener mejores resultados?
- ¿Hay alguna forma más inteligente de hacer esto?
- ¿Qué tan lejos debo procesar las imágenes para aumentar la precisión en la fase (posterior) de OCR?
- ¿Cómo usar la información de color para mejorar la segmentación?