Découpage et reconnaissance du titre du livre et de l'auteur à partir de l'image de l'étagère


13

J'essaie, pour mes propres besoins d'apprentissage, de développer une implémentation d'un algorithme qui répertorierait les livres, étant donné une image d'une étagère comme celle-ci:

entrez la description de l'image ici

La première étape consiste à découper l'image en livres individuels.

Mon algorithme, dans Mathematica , est:

    img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
  • faire une détection de bord de base et
  • supprimez le texte et essayez de garder les longues lignes

    edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
    
  • puis supprimez les lignes horizontales indésirables

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

Cependant, les résultats sont loin d’être excellents:

entrez la description de l'image ici

Mes questions sont:

  1. Comment puis-je améliorer cela pour obtenir de meilleurs résultats?
  2. Existe-t-il un moyen plus intelligent de le faire?
  3. dans quelle mesure dois-je traiter les images pour augmenter la précision lors de la phase OCR (ultérieure)?
  4. Comment utiliser les informations de couleur pour améliorer la segmentation?

1
@OrenPinsky Je ne vois pas le problème de la segmentation: le nombre de "zones de faux livres" n'est pas élevé (je ne peux en voir qu'une dans l'échantillon que vous avez fourni), et si vous prévoyez de faire une sorte de reconnaissance de texte comme prochaine étape, cela devrait être suffisant pour faire la distinction entre les livres (la zone a du texte) et les non-livres (pas de texte)
penelope

3
@OrenPinsky, je dirais que vos résultats sont plutôt bons. :)
Dima

Réponses:



4

Quelle méthode utilisez-vous pour détecter les lignes? Avez-vous essayé d'expérimenter le LSD ?

Voici les résultats d'un test rapide que j'ai fait avec du LSD:

0.1heightpic1

La deuxième image est le résultat avec la même contrainte d'angle mais sans tenir compte des longueurs des segments: pic2

Vous pouvez essayer de jouer un peu avec cela, comprendre comment choisir les meilleurs segments de ligne, les étendre aux lignes et peut-être obtenir des résultats légèrement meilleurs que ceux que vous avez publiés.


6
"Avez-vous essayé d'expérimenter avec le LSD?" Bien essayé, FBI;)
Lorem Ipsum

ImageLine de Mathematica est basée sur la transformation de Hough, et je suis maintenant convaincu (d'après les commentaires ici, principalement) que cela fonctionne plutôt bien. Cela me dérange cependant que je perds des données pertinentes lorsque je me transforme en niveaux de gris et que dans cette application, les données de couleur pourraient (intuitivement) aider un détecteur de bord robuste. (cela a incroyablement bien fonctionné pour Steve Jobs! ;-)
Oren Pinsky

J'ai vu un ami utiliser le LSD pour détecter les portes, je pense qu'il était finalement satisfait des résultats. Je dirais que ça vaut le coup: D
penelope

1

Vous pouvez essayer de faire la détection des contours sur des domaines de couleurs individuels, puis les fusionner, en utilisant la méthode de votre choix pour la détection des contours.

Par rapport à la détection des contours directement sur l'image couleur, elle pourrait produire de meilleurs résultats.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.