Schneiden und Erkennen des Buchtitels und des Autors vom Bücherregalbild


12

Ich versuche, für meine eigenen Lernzwecke eine Implementierung eines Algorithmus zu entwickeln, der Bücher auflistet, wenn man ein Bild eines Bücherregals wie das folgende annimmt:

Bildbeschreibung hier eingeben

Der erste Schritt besteht darin, das Bild in einzelne Bücher aufzuteilen.

Mein Algorithmus in Mathematica lautet:

    img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
  • eine grundlegende Kantenerkennung durchführen und
  • Entfernen Sie den Text und versuchen Sie, die langen Zeilen beizubehalten

    edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
    
  • Entfernen Sie dann unerwünschte horizontale Linien

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

Die Ergebnisse sind jedoch alles andere als gut:

Bildbeschreibung hier eingeben

Meine Fragen sind:

  1. Wie kann ich dies verbessern, um bessere Ergebnisse zu erzielen?
  2. Gibt es eine intelligentere Möglichkeit, dies zu tun?
  3. Wie weit muss ich die Bilder verarbeiten, um die Genauigkeit in der (späteren) OCR-Phase zu erhöhen?
  4. Wie kann man die Farbinformationen verwenden, um die Segmentierung zu verbessern?

1
@OrenPinsky Ich sehe das Problem mit der Segmentierung nicht: Die Anzahl der "Falschbuchbereiche" ist nicht hoch (ich kann nur einen in dem von Ihnen bereitgestellten Beispiel sehen), und wenn Sie vorhaben, eine Art Texterkennung als das auszuführen Im nächsten Schritt sollte dies ausreichen, um zwischen Büchern (Bereich hat Text) und Nicht-Büchern (kein Text) zu unterscheiden
penelope

3
@OrenPinsky, ich würde sagen, Ihre Ergebnisse sind ziemlich gut. :)
Dima

Antworten:



4

Mit welcher Methode erkennen Sie die Linien? Haben Sie versucht, mit LSD zu experimentieren ?

Hier sind die Ergebnisse eines Schnelltests, den ich mit LSD durchgeführt habe:

0,1heichGhtpic1

Das zweite Bild zeigt die Ergebnisse mit derselben Winkelbeschränkung, jedoch ohne Berücksichtigung der Segmentlängen: pic2

Sie können versuchen, ein wenig damit zu spielen, herauszufinden, wie Sie die besten Liniensegmente auswählen, sie auf Linien erweitern und möglicherweise etwas bessere Ergebnisse erzielen als die von Ihnen geposteten.


6
"Haben Sie versucht, mit LSD zu experimentieren?" Netter Versuch, FBI;)
Lorem Ipsum 18.11.12

Mathematics ImageLine basiert auf der Hough-Transformation, und ich bin jetzt (hauptsächlich aufgrund des Feedbacks hier) davon überzeugt, dass es ziemlich gut funktioniert. Es stört mich jedoch, dass ich relevante Daten verliere, wenn ich sie in Graustufen umwandle, und dass in dieser Anwendung Farbdaten (intuitiv) einem robusten Kantendetektor helfen können. Probieren Sie LSD aus und sehen Sie, wie es funktioniert! (Für Steve Jobs hat es erstaunlich gut funktioniert! ;-)
Oren Pinsky

Ich habe gesehen, wie ein Freund LSD für die Türerkennung verwendet hat. Ich glaube, er war mit den Ergebnissen am Ende zufrieden. Ich würde sagen, es ist einen
Versuch

1

Sie können versuchen, die Kantenerkennung für einzelne Farbdomänen durchzuführen und diese dann mit der Methode Ihrer Wahl zur Kantenerkennung zusammenzuführen.

Im Vergleich zur Kantenerkennung direkt auf dem Farbbild werden möglicherweise bessere Ergebnisse erzielt.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.