Sto cercando, per i miei scopi di apprendimento, di sviluppare un'implementazione di un algoritmo che elenchi i libri, con l'immagine di una libreria come la seguente:
Il primo passo è dividere l'immagine in singoli libri.
Il mio algoritmo, in Mathematica , è:
img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
- eseguire un rilevamento dei bordi di base e
rimuovere il testo e provare a mantenere le righe lunghe
edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
quindi rimuovere le linee orizzontali indesiderate
lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]] Show[img, Graphics[{Thick, Orange, Line /@ lines}]]
I risultati, tuttavia, sono meno che eccezionali:
Le mie domande sono:
- Come posso migliorare questo per ottenere risultati migliori?
- C'è un modo più intelligente per farlo?
- quanto ulteriormente dovrei elaborare le immagini per aumentare la precisione nella fase (successiva) dell'OCR?
- Come utilizzare le informazioni sul colore per migliorare la segmentazione?