Fatiar e reconhecer o título e o autor do livro a partir da imagem da estante

12

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:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

Minhas perguntas são:

  1. Como posso melhorar isso para obter melhores resultados?
  2. Existe uma maneira mais inteligente de fazer isso?
  3. quanto mais devo processar as imagens para aumentar a precisão na fase (mais tarde) do OCR?
  4. Como usar as informações de cores para melhorar a segmentação?
Oren Pinsky
fonte
1
@OrenPinsky Não vejo o problema da segmentação: o número de "áreas de livros falsos" não é alto (posso ver apenas uma na amostra que você forneceu) e se você planeja fazer algum tipo de reconhecimento de texto como o próximo passo, que deve ser suficiente para discriminar entre livros (área tem texto) e não-books (nenhum texto)
penelope
3
@OrenPinsky, eu diria que seus resultados são ótimos. :)
Dima

Respostas:

7

Aqui está o link para um trabalho de pesquisa que tenta fazer o mesmo que você queria. Isso pode ajudá-lo. usando recursos de imagem Também um vídeo legal no youtube

isrish
fonte
Infelizmente, o primeiro link está quebrado.
Youngjae
4

Qual método você está usando para detectar as linhas? Você já experimentou o LSD ?

Aqui estão os resultados de um teste rápido que fiz usando LSD:

0,1heEughtpic1

A segunda imagem são os resultados com a mesma restrição de ângulo, mas desconsiderando os comprimentos dos segmentos: pic2

Você pode tentar brincar um pouco com isso, descobrir como escolher os melhores segmentos de linha, estendê-los para linhas e talvez obter resultados um pouco melhores do que os que você postou.

ppalasek
fonte
6
"Você já tentou experimentar o LSD?" Boa tentativa, FBI;)
Lorem Ipsum
O ImageLine do Mathematica é baseado na transformação Hough, e agora estou convencido (pelo feedback aqui, principalmente) de que funciona muito bem. Incomoda-me, no entanto, estar perdendo dados relevantes quando me transformar em escala de cinza, e que, neste aplicativo, os dados de cores possam (intuitivamente) ajudar um detector de borda robusto. Experimente o LSD e veja como ele funciona! (funcionou surpreendentemente bem para Steve Jobs ;-)!
Oren Pinsky
Eu vi um amigo usar LSD para detecção de porta, acho que ele ficou satisfeito com os resultados no final. Eu diria que vale a pena tentar: D
penelope
1

Você pode tentar fazer a detecção de bordas em domínios de cores individuais e depois mesclá-los, usando seu método de escolha para a detecção de bordas.

Comparado à detecção de bordas diretamente na imagem colorida, ela pode produzir melhores resultados.

Naresh
fonte
0

O artigo do link quebrado fornecido por isrish pode ser encontrado Combinando recursos de imagem e texto: uma abordagem híbrida para o reconhecimento da coluna móvel de livros , Proc. 19ª conferência internacional da ACM sobre Multimídia, 2011. Também é possível conferir outros trabalhos de David Chen et al. , por exemplo, Rastreamento de ativos de baixo custo usando telefones com câmera com reconhecimento de local , Proc. SPIE 2010.

Dimitri Podborski
fonte