Estou tentando, para meus próprios objetivos de aprendizado, desenvolver uma implementação de um algoritmo que listaria livros, dada a imagem de uma estante de livros como a seguinte:
O primeiro passo é dividir a imagem em livros individuais.
Meu algoritmo, no Mathematica , é:
img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
- faça uma detecção básica de borda e
remova o texto e tente manter as linhas longas
edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
remova linhas horizontais indesejadas
lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]] Show[img, Graphics[{Thick, Orange, Line /@ lines}]]
Os resultados, porém, são menos que ótimos:
Minhas perguntas são:
- Como posso melhorar isso para obter melhores resultados?
- Existe uma maneira mais inteligente de fazer isso?
- quanto mais devo processar as imagens para aumentar a precisão na fase (mais tarde) do OCR?
- Como usar as informações de cores para melhorar a segmentação?