Prezados,
Tenho feito um projeto com o arduino UNO onde ele pega uma imagem gerada com uma camera CMOS (estou usando um shield para isso) e salva no formato jpg ou png.
Preciso agora pegar essa imagem salva no cartão SD e transformar numa matriz de 0 e 1. (0 para qualquer cor e 1 para preto). Esse projeto e para imagens quase pontuais, ou seja de tamanho 20x10 ou 20x32...
Alguem tem alguma ideia de como faz essa matriz? pois irei fazer um OCR com essa matriz.
Em resumo e so para reconhecer tres números pequenos em uma imagem, tambem pequena e retornar numa string. por exemplo:
esse e um exemplo real, para nos e quase imperceptível, mas para o processamento e bem tranquilo... so preciso transformar numa matriz de 0 e 1... alguem tem ideia?
qualquer ideia, codigo, exemplo, projeto será muito bem vindo...
att,
Tags: Imagem, Imagens, Matriz, OCR, PID, Processamento, Reconhecimento, Urgente, de, discretização
Permalink Responder até Eduardo H. Marcondes em 31 outubro 2012 at 15:52
Acho que sua dificuldade é decodificar o JPG. Isso é complicado. Se não tiver uma biblioteca pronta criar pode ser um problema..
Mas vc não teria acesso direto a imagem em memoria ? Ou em um LCD ?
Se ela estiver em memoria ou LCD pode ser que esteja descompactada, aih fica mais facil.
Qual shield vc esta usando ?
Permalink Responder até Gustavo Costa Pessoa em 31 outubro 2012 at 16:08
Tenho ela num LCD do shield.
No caso: imagem é bitmap e o shield é o ArduCam. Mas nao vi nada lá sobre imagem descompactada...
Permalink Responder até Eduardo H. Marcondes em 31 outubro 2012 at 17:59
Não salva em BMP ???
Os formatos JPG e PNG são compactados... Já BMP não (ou é num formato mais simples de descompactar). Qualquer um que fique imenso não é compactado.
Aih dá pra vc ir buscar os bytes dentro do arquivo. Estão na sequencia: Cabeçalho, dados da primeiro pixel, do segundo pixel, etc. No cabeçalho fala quantas linhas, colunas, bits por pixel, bits por cor, etc.
Vide: http://pt.wikipedia.org/wiki/Raster
Já se vc tem um LCD que possa mostrar a imagem quem sabe vc tem aih uma função do tipo GetPixel que fala a cor de um pixel... Ficaria bem mais simples.
Permalink Responder até Gustavo Costa Pessoa em 1 novembro 2012 at 12:07
Ela Salva sim em BMP...
Entendo o que você está dizendo, mas não achei nenhuma função parecida com GetPixel.
Será que não existe nenhuma biblioteca para o arduino uno que possa pegar os pixels de um BMP?
Ou talvez nao tenha entendido o que você quer explicar rsrs, mas teria jeito de eu navegar pela imagem sem essa funçaõ GetPixel? (momento noob ao extremo :$ )
Confesso to meio perdido aqui e o fato de ser um pouco urgente ta me deixando menos atento que o normal. O que será que estou deixando passar? =[
Permalink Responder até Eduardo H. Marcondes em 1 novembro 2012 at 13:35
Acho que vc entendeu sim... Imaginei que podia ter uma função semelhante ao GetPixel.
No caso a que seta um pixel no GLCD. é SetDot() então seria GetDot() mas procurei por aqui e nada...
Não consigo te dar nenhuma sugestão simples e polida, quem sabe alguem conheça melhor, mas teoricamente obter um determinado ponto da imagem ficaria algo como:
Ponto = ImagemBMP[Cabecalho+X+Y*largura]
onde X e Y são as coordenadas;
Cabecalho é a quantidade de bytes a pular no inicio do arquivo (128 normalmente).
Se for 1 byte/pixel use unsigned char para ponto e imagem.
Se for 2 bytes/pixel use unsigned int.
Ainda existe uma chance de não dar certo, se o BMP for compactado. Aih vc tem que descompactar primeiro... Mas vamos torcer para não ser... Mas a compactação do BMP é simples, possivel de fazer (diferente do mpeg (usado no jpg)).
Permalink Responder até Gustavo Costa Pessoa em 1 novembro 2012 at 14:59
entendi... vou testar aki... vlw cara... volto com a resposta daki a pouco
Permalink Responder até Gustavo Costa Pessoa em 5 novembro 2012 at 14:13
Consegui fazer a transformação que precisava, vlw Eduardo, sua dica foi bem valiosa.
Agora agarrei no Algoritmo de OCR para reconhecer os números, bem isso vou olhar em outro tópico.
Mais uma vez agradeço Eduardo, vlw =]
Permalink Responder até Eduardo H. Marcondes em 5 novembro 2012 at 19:40
Legal.
Se der faça um filminho no youtube do resultado e posta aqui pra posteridade...
Permalink Responder até Gustavo Costa Pessoa em 5 novembro 2012 at 22:03
Assim que conseguir o OCR posto sim... to com problemas com ele agora =[
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
Por: R$ 29,00
Ou em até 6x de
R$ 5,18
Por: R$ 54,00
Ou em até 12x de
R$ 5,10
Por: R$ 195,00
Ou em até 18x de
R$ 13,00
Válvula Solenóide de 12V - 3/4"
Por: R$ 36,00
Ou em até 7x de
R$ 5,56
© 2013 Criado por Marcelo Rodrigues.