[firebase-br] Problema com Imagens

Sandro Souza escovadordebits em gmail.com
Qui Dez 20 22:54:19 -03 2012


Bom dia/tarde/noite Henrique.

Nobre amigo, estou me aventurando na área de reconhecimento facial, em
Delphi 7 mesmo.

Ainda não terminei meu protótipo, mas devo terminar nessa semana ainda.

Resolvi não utilizar bibliotecas de terceiros e fazendo tudo "na mão" eu
mesmo, ou seja, nadando contra a maré, no estilo kamikaze.

Está sendo realmente prazeroso esse desafio, e posso já te adiantar algumas
dicas.

Não precisa redimensionar a imagem para 800 x 600. Eu mesmo já estou
obtendo bons resultados com as imagens geradas pela webcam do meu notebook,
com 640 x 480 e 24 bits de cores, ou seja, true color.

Realmente facilita muito converter as imagens em escala de cinza, pois se a
imagem for colorida, você terá que trabalhar com as 3 componentes das
cores, ou seja, o padrão RGB ([R]ed = vermelho, [G]reen = verde e [B]lue =
azul), enquanto que combinando essas 3 cores básicas, você terá um único
valor para cada pixel (ponto) da imagem, o que vai facilitar muito o resto
das operações.

Tendo a imagem já convertida em escala de cinza, irá para o segundo passo
que é melhorar a qualidade dessa imagem, que é feito através do cálculo de
histograma de cores, ou seja, percorrer todos os pontos da imagem, contando
quantas vezes aparecem pontos com valor/intensidade/brilho zero (preto
absoluto), quantas vezes aparecem pontos com valor 1, ..., até chegar ao
último nível de brilho (255 = branco absoluto).

Com base nesse histograma, você saberá qual é a primeira intensidade que
aparece e a última.

Se a primeira intensidade não for zero e/ou a última não for 255, significa
que a imagem não está utilizando TODA a escala de 256 tons de cinza, e
nesse caso, você deve otimizar essa imagem convertendo cada um dos valores,
utilizando uma regra de 3 simples, ou seja: Se o menor valor for 10 e o
maior valor for 20, então um valor 10 (menor) vai se tornar zero, um valor
20 (maior) vai se tornar 255, e um valor 5 vai se tornar 127, por exemplo.

No final desse passo, você vai ter uma imagem de melhor qualidade que te
permite ver detalhes que você não via na anterior.

Todas essas operações são chamadas de filtro, ou seja, cada filtro é apenas
uma rotina que transforma uma imagem em outra.

Um dos filtros que eu implementei e estou vendo que trará excelentes
resultados é o filtro chamado "emboss".

Essa rotina faz um cálculo envolvendo os 8 pontos vizinhos de cada ponto
para detectar mudanças bruscas de brilho, e o resultado final é uma imagem
que exibe apenas os contornos dos objetos e das áreas em alto ou baixo
relevo.

Isso aplicado em uma imagem de placa de carro mostra todo os contornos das
letras e números, o que é simplesmente fantástico para o reconhecimento dos
mesmos (OCR).

Nos meus testes, vejo que esse filtro também facilita, e muito, o
reconhecimento facial.

Faço tudo com o próprio componente TImage do Delphi. Se a imagem for um
bitmap de 24 bits de cores (truecolor), você conseguirá acessar diretamente
cada pixel da imagem diretamente, sem ter que usar a propriedade Pixels do
Canvas do bitmap. A diferença de velocidade é grande.

Se você quiser usar alguma biblioteca de terceiros, eu te indico a opencv
que tem de tudo, inclusive a parte de reconhecimento facial. Acredito que
ela também sirva para criar OCRs sem problema, e além disso é free. :)

Estou fazendo
No dia 20 de Dez de 2012 08:20, "Henrique Angerame | Riccol Informática" <
henrique em riccol.com.br> escreveu:

> Olá Pessoal tudo bem?
>
> Estou tentando montar um OCR para escanear placas de veículos.
>
> Achei um tutorial usando o OCR do Windows, o problema que não funciona
> muito
> bem.
>
> Muitas pessoas falaram que tem que transformar a imagem em 800 x 600 e em
> PB
> ou tons de cinza.
>
> Alguém ai sabe como posso manipular uma imagem no Delphi 7 ou cs2?
>
>
>
>
>
> Att.
>
>
>
> Henrique Angerame
>
> Programador - Delphi
>
>
>
> RICCOL Soluções em T.I. -  <http://www.riccol.com.br> www.riccol.com.br
>
> Sistemas de Gestão e Controle Empresarial - Assistência Técnica - Redes
>
> (Telefone: (19) 3308-8838
>
> *E-mail:  <mailto:mateus.ricci em riccol.com.br> henrique em riccol.com.br
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista