Verificação de objetos em uma determinada ROI com o uso de histograma e Netvision
Ederson Luiz Posselt (UNISC-PPGSPI) – [email protected] Eloy Maury Metz (UNISC-PPGSPI) – [email protected] Ismael Cristofer Baierle (UNISC-PPGSPI) – [email protected]
Verificação de objetos em uma determinada ROI com o uso de histograma e NeatVision 1. Introdução
O campo da computação gráfica tem sido pesquisado por grande número de especialistas, dadas as suas possibilidades reais de aplicação nas descobertas científicas. Envolve todo e qualquer tipo de tratamento de imagens, desde simples gráficos até imagens complexas de projetos arquitetônicos.
Filgueras (Filgueras et al, 1987) apresentam a definição de computação gráfica como um conjunto de métodos e técnicas para conversão de dados para dispositivos gráficos, através de computador, adotada pela International Standard Organization (ISO).
Imagens são sinais quantizados na forma discreta, sob forma de matriz bidimensional, constituída de três planos de cores sendo que as visíveis para o ser humano são obtidas através da combinação de três básicas, o vermelho (Red), o verde (Green) e o azul (Blue), formando assim o sistema RGB (Gonzáles e Woods, 2003).
O uso do processamento de imagens digitais (GONZALEZ & WOODS, 2000 e 2002) no computador é boa alternativa à identificação visual, auxiliando na identificação de imagens não claras e totalmente visíveis a olho nu, esse processamento pode ser feito com a ajuda das redes neurais artificiais que pode ser interpretada como um conjunto de unidades de processamento (neurônios artificiais) interconectadas entre si, formando vários subconjuntos estruturais de camadas (entrada, intermediárias e saída) e conexões entre as camadas.
A rede neural é capaz de armazenar o conhecimento baseado em aprendizagem (experiência) e disponibilizar esse conhecimento para uso (HAYKIN, 1999).
Um dos softwares utilizados que contem uma interface fácil é o NeatVision, que é um programa de análise de imagem que fornece acesso de alto nível e uma ampla variedade de algoritmos de processamento de imagem.
Os desenvolvedores podem, através dele, criar soluções de visão computacional usando uma biblioteca de pré-algoritmos de processamento de imagem.
Esses algoritmos, que são apresentadas na forma de componentes gráficos podem ser combinados em um espaço de trabalho visual e criar soluções de software de análise de imagens.
Para a análise da imagem, podemos utilizar o histograma, apresentado na figura 1. O histograma é um gráfico que mostra a relação entre os níveis de cinza (eixo x do gráfico) e a quantidade de pixels que contém esses níveis de cinza (eixo y do gráfico).
Ele nos dá uma idéia da luminosidade média (mais escura ou mais clara) e da homogeneidade da imagem.
Histogramas com médias baixas representam imagens mais escuras enquanto histogramas com médias altas representam imagens mais claras.
Já histogramas com desvio padrão baixos representam imagens homogêneas, com pouca variabilidade.
Desvio padrão alto representa imagem heterogênea, com grande variabilidade.
Figura 1- Histograma
O processamento de imagens está presente em nosso dia-a-dia, muitas vezes sem mesmo percebermos. Embutidos em pardais ou lombadas eletrônicas, o processamento de imagens é considerado uma maneira artificial de reconhecimento de objetos em imagens distorcidas e pouco claras as quais o olho humano não seria totalmente capaz de reconhecer.
Reconhecendo a sua importância para diversas áreas e tendo como ponto de apoio para essa tarefa a ferramenta NeatVison, esse trabalho se propõe, através de exemplos práticos, exibir os processos necessários para o reconhecimento de objetos em uma determinada imagem.
2. Reconhecimento de objetos com NeatVison
Reconhecer objetos em imagens não é uma atividade trivial, sendo necessário para essa tarefa o emprego de algoritmos adequados para cada processo. Existem vários fatores que influenciam em uma imagem, como a iluminação, o posicionamento do objeto, o ambiente onde ele se encontra, se há movimento ou não, entre outras.
Dificilmente consegue-se utilizar uma metodologia única para o reconhecimento de objetos em ambientes diversos. O processamento de imagens passa por algumas etapas, até se chegar a imagem que se quer, sendo elas o pré-processamento/filtragem, que envolve técnicas de reconstrução, restauração e realce de imagens; a extração de características/redução de dados, envolvendo operações de compressão de dados e extração de atributos de imagens; segmentação de imagens, envolvendo operações de partição da imagem original de acordo
com algum critério; detecção e reconhecimento de objetos, envolvendo a determinação de posição, orientação e escala de possíveis objetos em uma determinada cena, e sua classificação; análise de cena, na qual são obtidos conhecimentos de alto nível (semânticos) daquilo que a imagem mostra; otimização, na qual se utiliza a minimização de alguma função utilizada no processamento da imagem (Tronco, Júnior e Porto, 2003).
A Figura 2 exibe uma imagem com 8 objetos distintos entre si. Reconhecer a existência desses objetos para um humano é trivial, porém para o computador é uma tarefa que exige alto processamento.
Nos próximos parágrafos serão exibidos os processos necessários para a identificação dos objetos na imagem.
Figura 2- Imagem original
A Figura 3 exibe a programação efetuada no software NeatVison. As etapas necessárias para a identificação dos objetos estão descritos nos tópicos abaixo:
• IMAGE: Função utilizada para carregar a imagem utilizada no processo;
• ACC: Conversão da imagem colorida em tons de cinza. Para a análise da imagem são necessários apenas tons de cinza;
• ROI: Função utilizada para determinar a região da imagem que será analisada;
• X3: Função que recebe a imagem como entrada e replica essa imagem em 3 saídas;
• AVERAGE: Funcionalidade referente ao histograma. Essa função retorna um valor real referente a média da intensidade de cada pixel;
• Dtol: A funcionalidade de Threshold necessita de uma entrada inteira, para isso foi necessário o uso da funcão Dtol, responsável por converter valores reais em inteiros;
• SINGLE: Função de Threshold. Essa função recebe como entrada uma imagem e um valor inteiro. Como saída é obtida uma imagem binária. Os pixels acima do valor inteiro de entrada recebem o valor de 255 e os demais recebem zero;
• X2: Função responsável por transformar uma entrada em duas saídas;
• INV: Inversão da imagem, isso quer dizer, os pixels brancos irão receber a cor preta e os pixels pretos receberão a cor branca. Esse processo é necessário para criar uma imagem adequada para a próxima fase;
• WhiteBlobCount: Esse processo é responsável por encontrar blocos brancos em uma imagem e fazer a sua contagem destes blocos.
Um conceito importante em processamento de imagens é a Região de Interesse. Por Região de Interesse (ROI - "Region Of Interest" ou AOI - "Area Of Interest") entende-se como sendo a região definida pelo operador (ou automaticamente a partir de parâmetros obtidos na própria imagem) onde o processamento estará totalmente concentrado. Podemos, por exemplo, definir uma região de interesse onde sabemos por antecedência que a iluminação de fundo é constante ou foi corrigida. Em geral em processamento de imagens iremos sempre encontrar problemas nas bordas da imagem. A criação de regiões de interesse faz com que apareçam também problemas nas bordas das regiões de interesse. A solução deste problema é completamente dependente do problema ao qual o processamento de imagens está associado, ao que conhecemos e podemos levar em consideração anteriormente ao processamento. O programa exibido na imagem abaixo é composto por várias técnicas de processamento de imagem. Somente com a combinação correta dessas técnicas foi possível obter a identificação de objetos na tela e a sua contagem.
Figura 3 - Programa NeatVision para reconhecimento de objetos em uma imagem
A Figura 4 apresenta os resultados obtidos após a execução do programa apresentado anteriormente na Figura 3. Abaixo cada item presente na Figura 4 será explicado, observando-se as letras que marcam os itens da imagem.
• A: Imagem original a ser tratada;
• B: Imagem após a conversão para níveis de cinza;
• C: Demarcação da região de interesse com a rotina ROI do NeatVision;
• D: Imagem binarizada;
• E: Imagem Invertida a partir da imagem D;
• F: Reconhecimento dos objetos e a identificação do centro;
Figura 4- Resultados obtidos com a execução da programação realizada
Analisando o resultado da programação realizada na Figura 3, pode-se observar que a imagem utilizada favorece a identificação dos objetos uma vez que essa não possui sombra e as bordas são bem definidas.
Executando o mesmo programa para a Figura 5, observa-se que o resultado obtido foi semelhante ao resultado anterior. Isso se deve ao fato das imagens (Figura 2 e figura 5) utilizadas apresentarem padrões semelhantes.
Figura 5- Identificação de objetos na imagem
O algoritmo que apresentou bons resultados no processamento das Figuras 2 e 5, não teve o mesmo rendimento no processamento das da Figura 6 e 7. Observando a Figura 6, pode-se perceber que o nível de contraste na imagem é baixo e não existe uma borda bem definida.
Percebe-se que houve uma falha no reconhecimento na imagem no canto inferior direito onde os objetos se mesclaram com o fundo.
Figura 6- Aplicação do algoritmo 1
A Figura 7 é proveniente de um trabalho em execução do professor Dr. Rolf Fredi Molz com a turma da Engenharia da Computação na UNISC (Universidade de Santa Cruz do Sul) no ano de 2009.
Esse trabalho consiste basicamente no reconhecimento de objetos sobre uma plataforma na qual um braço mecânico controlado eletronicamente movimenta os objetos conforme ordenado.
Observando-se a imagem, é possível perceber que as bordas dos objetos não são bem definidas e isso faz com que o algoritmo reconheça mais objetos do que realmente existem. Esse fato pode ser percebido pelas sinalizações na imagem da direita na Figura 7.
Como já foram mencionadas anteriormente, aplicações que envolvem processamento de imagens são sensíveis a inúmeros fatores, por esse motivo, cada situação requer um processo de análise específico.
Para tornar viável o reconhecimento de objetos na imagem da Figura 7 foi necessário uma pequena adequação no programa realizado no NeatVision.
Na primeira versão do programa o valor do threshold era definido pela função de média do histograma, porém para a imagem da Figura 7 foi necessário um ajuste fino no valor do
threshold para 90. Este ajuste foi efetuado manualmente.
Figura 8 - Ajuste do programa para o reconhecimento de objetos
Observando a imagem da Figura 9, é possível verificar que o processamento realizado sobre a imagem permitiu o reconhecimento da existência de objetos as suas posições dentro da imagem e o ponto central de cada objeto.
Figura 9 - Reconhecimento com eficiência dos objetos na imagem
4. Considerações finais
Após a execução dos ensaios, observamos que é possível a identificação de objetos em uma imagem. A ferramenta NeatVision permite de forma ágil e fácil simular o processamento de imagens utilizando-se de vários algoritmos previamente implementados. Vimos também que para cada tipo de trabalho torna-se necessário a adequação do sistema em virtude das influências externas que variam o ambiente de forma que muitas vezes o resultado torna-se inviável ou não aproveitável.
Para a área acadêmica o NeatVision é uma ferramenta muito interessante, mas em aplicações profissionais é interessante a criação de algoritmos próprios com linguagens mais robustas e com foco centrado no problema.
Também como algumas técnicas de processamento de imagens exigem um alto custo de processamento computacional, torna-se interessante que estas sejam implementadas em hardware.
Portanto, concluindo que, em ambientes controlados e com sistemas de aquisição de excelente qualidade teremos enormes facilidades para os tratamentos das imagens, ao passo que, o trabalho poderá ser extremamente árduo quando a aquisição é feita em ambientes externos com variação de luminosidade, movimento, chuva, ruídos e todos os demais fatores que por ventura possam influenciar na qualidade da imagem.
Referências
Filgueiras LVL, Tori R, Massola Ama, Arakaki R. Fundamentos de computação gráfica. Rio de Janeiro, São Paulo, LTC — Livros Técnicos e Científicos Editora, 1987.
GONZALEZ, R.C.; WOODS, R.E. Processamento de imagens digitais. São Paulo: Edgard Blücher, 2000. 509 p.
GONZALEZ, R.C.; WOODS, R.E. Digital image processing. 2nded. New York: Prentice Hall, 2002. 793 p. HAYKIN, S. Neural networks: A comprehensive foundation. 2nded. Upper Saddle River: Prentice- Hall, 1999. 842 p.
R. C. Gonzalez, R. E. Woods, “Processamento de Imagens Digitais”, 1ª reimpressão, Editora Edgard Blücher Ltda, São Paulo (Brasil), 2003.
Tronco, Mário Luiz; Júnior, Aleardo Manacero; Porto, Arthur José Vieira. Sistema de Reconhecimento de Imagens para Robô de Montagem: Implementação e Estudo de Caso. VI Simpósio Brasileiro de Automação Inteligente. Bauru, setembro de 2003.
Albuquerque, Márcio P. Processamento de Imagens: métodos e análises, 2000. Disponível em http://www.cbpf.br/~mpa/curso2.htm#Conclusão, acessado em 23/11/2009.