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:
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:
Meine Fragen sind:
- Wie kann ich dies verbessern, um bessere Ergebnisse zu erzielen?
- Gibt es eine intelligentere Möglichkeit, dies zu tun?
- Wie weit muss ich die Bilder verarbeiten, um die Genauigkeit in der (späteren) OCR-Phase zu erhöhen?
- Wie kann man die Farbinformationen verwenden, um die Segmentierung zu verbessern?