Upload
vanphuc
View
215
Download
0
Embed Size (px)
Citation preview
Curso de Engenharia de Computação
SOFTWARE DE DETECÇÃO DE CORES
Jonatas Cezaretto
Campinas – São Paulo – Brasil
Dezembro de 2008
Curso de Engenharia de Computação
SOFTWARE DE DETECÇÃO DE CORES
Jonatas Cezaretto
Monografia apresentada à disciplina de Trabalho de Conclusão do Curso de Engenharia de Computação da Universidade São Francisco, sob a orientação do Prof. Dr. Carlos Eduardo Câmara, como exigência parcial para conclusão do curso de graduação. Orientador: Prof. Dr. Carlos Eduardo Câmara
Campinas – São Paulo – Brasil
Dezembro de 2008
DETECÇÃO E ANÁLISE DE CORES
Jonatas Cezaretto
Monografia defendida e aprovada em 12 de Dezembro de 2008 pela Banca
Examinadora assim constituída:
Prof. Dr. Carlos Eduardo Câmara (Orientador)
USF – Universidade São Francisco – Campinas – SP.
Prof. M.Sc. Carlos Eduardo Pagani (Membro Interno)
USF – Universidade São Francisco – Campinas – SP.
Prof. M.Sc. Rodrigo Chavez Monteiro do Prado (Membro Interno)
USF – Universidade São Francisco – Campinas – SP.
Quando você quer alguma coisa, todo o universo
conspira para que você realize o seu desejo.
Paulo Coelho
v
.Agradecimentos
Agradeço primeiramente a Deus que me guiou até onde estou hoje, meu orientador
Prof. Dr. Carlos Eduardo Câmara pela dedicatória e tempo dispostos para me ajudar durante o
desenvolvimento desse projeto.
Agradeço aos Professores André Leon S. Gradvohl, Rodrigo Chavez Monteiro do
Prado, Carlos Eduardo Pagani, Silvia Elisabeth Sauaia Lopes, Cláudio Maximiliano Zaina
(Max), Raimundo Cláudio da Silva Vasconcelos e Sidney Pio de Campos, companheiros de
percurso e de discussões dentro e fora do contexto deste trabalho.
Dedico esse trabalho aos meus pais, irmãos, namorada, amigos e a todos que me
incentivaram em todos os momentos.
vi
Sumário
Lista de Siglas .........................................................................................................................vii
Lista de Figuras .....................................................................................................................viii
Resumo .....................................................................................................................................xi
Abstract ....................................................................................................................................xi
1 Introdução .......................................................................................................................... 1
2 Conceitos básicos e teóricos .............................................................................................. 2 2.1 Modelo de Imagem........................................................................................................ 2 2.2 Amostragem e Quantificação........................................................................................ 2 2.3 Imagem Digital.............................................................................................................. 3 2.4 Cores.............................................................................................................................. 4 2.5 Imagens Coloridas......................................................................................................... 5 2.6 Modelos de cores........................................................................................................... 5 2.7 Padrão RGB de cores. ................................................................................................... 6 2.8 Teoria Tricomática ........................................................................................................ 7 2.9 Operações em Imagens.................................................................................................. 7 2.10 Processamento de Imagens Coloridas........................................................................... 7
3 Conceitos e desenvolvimento............................................................................................. 8 3.1 Conceitos de Desenvolvimento..................................................................................... 8 3.2 Desenvolvimento do Algoritmo e Justificativas ........................................................... 9
3.2.1 Desenvolvimento do Projeto: .................................................................................9 3.2.2 Seleção da cor Padrão:..........................................................................................10 3.2.3 Captura da Imagem pela Webcam:.......................................................................10 3.2.4 Comparação dos Pixels: .......................................................................................12
4 Testes e avaliação dos testes............................................................................................ 14 4.1 Testes........................................................................................................................... 16
4.1.1 Teste da cor branca utilizando a Webcam A: .......................................................16 4.1.2 Teste da cor Preta utilizando a Webcam A: .........................................................19 4.1.3 Teste da cor Branca utilizando a Webcam B:.......................................................21 4.1.4 Teste da cor Preta utilizando a Webcam B:..........................................................22 4.1.5 Teste de imagens coloridas:..................................................................................23
5 Conclusão e Trabalhos Futuros...................................................................................... 28 5.1 Conclusão.................................................................................................................... 28 5.2 Trabalho Futuros ......................................................................................................... 28
Referências Bibliográficas ..................................................................................................... 30
vii
Lista de Siglas
API Application Programming Interface: Interface de Programação de
Aplicativos
AVI Audio Video Interleave
CIE Comissão Internacional sobre Iluminação
CMY Cian, Magenta, Yellow.
GDI Graphics Device Interface (Dispositivo de interface gráfica)
GUI Graphics User Interface (Interface gráfica de usuário)
HSI Matiz, saturação, Intensidade.
YIQ Luminância, em-fase, quadratura.
RGB Red, Green, Blue (vermelho, verde, azul).
VB6 Visual Basic 6.
viii
Lista de Figuras
FIGURA 1: REPRESENTAÇÃO MATRICIAL DA IMAGEM. .................................................................3
FIGURA 2: ESPECTRO DE CORES. ..................................................................................................4
FIGURA 3: CUBO DE CORES RGB. ................................................................................................6
FIGURA 4: SELEÇÃO DA COR PADRÃO. ......................................................................................10
FIGURA 5: CÓDIGO DE INCIALIZAÇÃO DA CÂMERA ...................................................................11
FIGURA 6: MENSAGEM SENDMESSAGE.....................................................................................11
FIGURA 7: CÓDIGO DO BOTÃO PARAR. ....................................................................................11
FIGURA 8: CAIXA DE IMAGENS E BOTÕES INICIAR CÂMERA E PARAR. .......................................12
FIGURA 9: CÓDIGO DE COMPARAÇÃO DE PIXELS........................................................................13
FIGURA 10: CÓDIGO DE CAPTURA DAS COMPONENTES R G B....................................................14
FIGURA 11: BENCHMARK DESEMPENHO DO PROCESSADOR FORNECIDO PELO SOFTWARE
FRESHDIAGNOSE VERSÃO 7.94 ..........................................................................................15
FIGURA 12: WEBCAM A ............................................................................................................16
FIGURA 13: WEBCAM B.............................................................................................................16
FIGURA 14: SISTEMA CAPTURANDO IMAGENS PELA WEBCAM A. ..............................................17
FIGURA 15: TESTE UTILIZANDO A WEBCAM A E ILUMINAÇÃO FORÇADA...................................18
FIGURA 16: TESTE UTILIZANDO O RECURSO DE SELEÇÃO DE COR PELO USUÁRIO.......................19
FIGURA 17: TESTE DA COR PRETA UTILIZANDO A WEBCAM A. ..................................................20
FIGURA 18: WEBCAM A TESTE DE PRETO UTILIZANDO FUNDO DE ESCALA 30............................21
FIGURA 19: SISTEMA CAPTURANDO IMAGENS PELA WEBCAM B................................................22
FIGURA20: TESTE DE DETECÇÃO DA COR PRETA NA WEBCAM B. ..............................................23
FIGURA 21: IMAGEM DE OBJETO “A ZUL” CAPTURADA PELA WEBCAM A ..................................24
FIGURA 22: IMAGEM DE OBJETO “A ZUL” CAPTURADA PELA WEBCAM B...................................25
FIGURA 23: IMAGEM DE OBJETO “V ERMELHO” CAPTURADA PELA WEBCAM A ........................25
FIGURA 24: IMAGEM DE OBJETO “V ERMELHO” CAPTURADA PELA WEBCAM B.........................26
FIGURA 25: IMAGEM DE OBJETO “V ERDE” CAPTURADA PELA WEBCAM A................................27
FIGURA 26: IMAGEM DE OBJETO “V ERDE” CAPTURADA PELA WEBCAM B................................27
ix
Lista de Tabelas
TABELA 1: Cores Criadas com R,G,B.........................................................................7
x
Lista de Equações
Equação 1: Arranjo da matriz N x M.............................................................................4
xi
Resumo
Esse projeto apresenta um sistema de reconhecimento de cores em imagens, utilizando
um padrão de cores pré-determinado pelo usuário, o software busca de uma fonte receptora
(webcam) de imagens em tempo real, e através de comparações o software é capaz de
identificar se a imagem recebida do dispositivo contém a cor pré-determinada. A linguagem
de programação utilizada para o desenvolvimento foi Visual Basic.
PALAVRAS-CHAVE: Reconhecimento de cores, processamento de imagens digitais,
computação gráfica.
Abstract
This project presents a system of recognition of colors in images, using a standard
color pre-determined by the user, the software search for a source receiving (webcam) of
images in real time, and through comparisons of the software is able to identify whether the
picture from this device contains a color pre-determined. The programming language used for
the development was Visual Basic.
KEY WORDS: Recognition of color, image processing, computer graphics.
1
1 INTRODUÇÃO
Sistemas desenvolvidos para a computação gráfica veem sendo amplamente utilizados
nos últimos anos devido a melhorias dos softwares de desenvolvimento e principalmente pela
diminuição do custo de hardware, mas isso só é possível devido ao fato de que a percepção de
mundo do ser humano ocorre principalmente pelas imagens que o circundam, ou seja, o ser
humano importa-se com o que vê.
Sistemas baseados em reconhecimento de cores são utilizados principalmente em
ambientes industriais com o objetivo de controle de qualidade de diversos produtos visuais ou
seleção de alimentos. Esses sistemas baseiam-se em um determinado hardware específico o
qual captura imagens através de câmeras de alta definição e processam as informações em
sistemas de hardware-software dedicados.
As soluções atuais apesar de eficientes, são compostas de hardware extremamente
custoso e softwares igualmente caros e de manipulação complexa.
Neste trabalho, foi desenvolvido um software em Visual Basic versão 6. A
programação em visual basic torna o desenvolvimento mais fácil e rápido, gerando menor
custo de desenvolvimento em comparação à linguagens mais complexas como o C/C++. O
software desenvolvido irá obter através de imagens de uma webcam comparações de cores
previamente selecionadas pelo usuário, no padrão RGB de cores, o software deverá ser capaz
de ser executado em um computador de mesa ou portátil com configurações de hardware
básicas (processador de núcleo único, mínimo de 1Gb de memória RAM e Webcam colorida),
ou seja, o custo de hardware abaixo de U$300.
Uma das grandes dificuldades para o desenvolvimento desse projeto foi causada pela
diferença de luminosidade que se tem na captura das imagens, a luminosidade do ambiente
influi no desempenho do sistema e também a qualidade da webcam deve ser levada em
consideração, quanto melhor a qualidade da imagem capturada melhor será o desempenho do
software.
Outro grande problema foi à dificuldade de separação de cores similares, cores muito
próximas no espectro RGB podem ser confundidas por eventuais ruídos na imagem ou pela
luminosidade do ambiente.
No desenvolver do trabalho é proposto um algoritmo para diminuir essa dificuldade
de separação de cores, o qual será detalhado no capitulo IV.
2
2 CONCEITOS BÁSICOS E TEÓRICOS
2.1 Modelo de Imagem
Segundo [GONZALES&WOODS] o termo imagem refere-se a uma função de
intensidade luminosa bidimensional, definida por f(x,y) em que o valor da amplitude de f nas
coordenadas espaciais (x,y) dá a intensidade de brilho da imagem naquele determinado ponto.
A percepção de cor em um objeto é conseqüência da parcela de luz refletida. Ao se
incidir luz sobre um objeto, os pigmentos de sua superfície absorvem algumas freqüências da
luz incidente e refletem outras. A representação da quantidade de iluminação i(x,y) e
refletância r(x,y) de cores resulta em f(x,y).
f(x,y)= i(x,y) r(x,y)
Onde a iluminação deve ser maior que zero (0) é determinada pela fonte de luz, já a
refletância é limitada a zero (0) (absorção total) e um (1) (refletância total).
2.2. Amostragem e Quantificação
Segundo Conci A. & Azevedo E. & Leta R. F., “a representação adequada de uma
imagem é uma matriz cujas linhas e colunas identificam um ponto na imagem”. Esses pontos
chamados de Pixel (abreviação de “picture element” ou elemento de figura) são representados
pelos elementos da matriz, que carregam informações como posição, cor e outras informações
deste pixel. O pixel é a menor unidade individual da imagem.
Cada Pixel é representado no computador como um número inteiro que corresponde à
intensidade de luz no ponto. A cor de um pixel é representada como um inteiro de oito (8) bits
variando entre zero (0) e 255, sendo o valor 0 correspondente à cor preta e 255 à cor branca.
Porém, existem outras escalas que são representadas por mais bits. A escala de oito bits
geralmente representa, nos dias de hoje, níveis de cinza. As cores são representadas por pelo
menos oito bits de níveis de R, G e B.
“A taxa de amostragem determina quantos pixels terá a imagem digital (resolução da
imagem) e a quantificação determina quantos níveis entre a intensidade máxima e a mínima
3
serão usados para representar o valor da intensidade em cada ponto de amostra”. [Conci A.
& Azevedo E. & Leta R. F]
A representação de uma imagem como uma matriz de pixels bidimensional, os índices
da matriz são valores, geralmente, inteiros que especificam a linha e a coluna na matriz. As
posições dos pontos no plano da imagem têm coordenadas x e y, sendo y correspondente a
direção vertical positivo para baixo e x correspondente a direção horizontal positivo para a
direita. A figura 1 mostra as direções e posição do pixel.
Figura 1: Representação matricial da imagem.
2.3. Imagem Digital
Uma imagem digital é descrita por uma matriz N x M de valores de pixel p(x,y)
inteiros e positivos, indicando a intensidade de cor na determinada posição (x,y) da imagem.
A equação 1 mostra como é feito o arranjo na matriz N x M
4
Equação 1: Arranjo da matriz N x M.
Considerando imagens coloridas, deve-se ter pelo menos três planos que
registrem a quantidade de vermelho (R), verde (G), e azul (B), que combinadas, geram uma
cor.
2.4. Cores
Em 1666, Sir Isaac Newton descobriu que a luz consiste de um conjunto de cores
variando do violeta ao vermelho. A figura 2 ilustra o espectro de cores que pode ser divido em
seis amplas regiões: violeta, azul, verde, amarelo, laranja e vermelho.
Figura 2: Espectro de cores.
“As cores perceptíveis aos seres humanos são determinadas pela natureza da luz
refletida do objeto.”[Gonzalez & Woods]
Se a luz observada for acromática (sem cores), seu único atributo será a intensidade ou
a quantidade.
Para a luz cromática são usados três valores básicos para descrever a qualidade da
fonte de luz: radiância, luminância e brilho. Sendo que a radiância é a quantidade em watts
5
(W) de energia que flui da fonte de luz a luminância medida em lúmem (lm) mede a
quantidade de energia que o observador percebe da fonte de luz, já o brilho é praticamente
impossível de ser medido, é um fator importante na descrição da sensação de cores.
Para o propósito de padronização em 1931 a Comissão Internacional sobre Iluminação
(CIE) designou valores específicos de comprimento de onda para as três cores primárias: Azul
= 435,8nm, Verde = 546,1nm e Vermelho = 700nm. As cores primárias podem ser
adicionadas para produzir as cores secundárias da luz, magenta (vermelho e azul) ciano (verde
e azul) e amarelo (vermelho e verde). A mistura das três cores primárias produz a cor branca.
Para se distinguir uma cor da outra normalmente são utilizadas o brilho, matiz e
saturação.
O brilho incorpora a noção cromática da intensidade, a matiz é associada ao
comprimento de onda dominante em uma mistura de ondas de luz e a saturação refere-se à
pureza ou a quantidade de luz branca misturada com um matiz.
2.5. Imagens Coloridas
Imagens coloridas são imagens nas quais os pixels possuem três canais, R, G e B.
Cada um assumindo um faixa de valores de acordo com o número de bits usados que quando
combinados produzem o conjunto de cores da imagem.
Uma imagem no padrão RGB possui 24 bits de cores separados em 3 canais de 8 bits
cada totalizando aproximadamente 16 milhões de combinações de cores.
Uma imagem colorida tem, portanto três matrizes de valores de pixels que registram a
quantidade de vermelho (R), verde (G) e Azul (B), que quando combinados geram uma cor.
2.6. Modelos de cores
Os modelos de cores foram criados para facilitar a especificação das cores, um modelo
de cor é uma especificação de um sistema de coordenadas tridimensionais onde cada cor é
representada por um único ponto.
6
Os modelos de cores atualmente utilizados são orientados por hardware, e os
padrões mais comuns são o RGB (red, green, blue), CMY (Cian, Magenta, Yelow), HSI
(matiz, saturação, intensidade) e YIQ (Luminância, em-fase, quadratura). Para esse projeto
será utilizado o padrão RGB, que será exemplificado abaixo.
2.7. Padrão RGB de cores.
O padrão RGB (vermelho, verde e azul) baseia-se num sistema de coordenadas
cartesianas. Representado pela figura 3 o cubo de cores RGB o qual as cores primárias R
(vermelho) G (verde) e B (azul) estão nos três cantos indicados pelas coordenadas, nos outros
3 cantos estão as cores secundárias ciano, magenta e amarelo o preto está na origem e o
branco no canto mais distante da origem.
Figura 3 cubo de cores RGB.
As imagens no modelo de cores RGB consistem em três planos de imagem
independentes uma para cada cor primária, combinadas as cores produzem imagens
compostas.
O cubo de cores RGB possui pontos ao longo da diagonal principal e tem
valores de cinza desde o preto na origem até o branco na extremidade.
7
2.8. Teoria Tricomática
Todas as cores perceptíveis ao olho humano, são combinações de R, G e B em
proporções quantificadas em um intervalo de 0 a 100%, de acordo com a intensidade de cada
uma delas. Sendo R a proporção de Vermelho, G a proporção de Verde e B a proporção de
Azul. A tabela 1 exemplifica alguns modelos de cores escritas nessa forma.
COR R (%) G(%) B(%)
Vermelho Puro 100 0 0
Azul Puro 0 0 100
Verde Puro 0 100 0
Amarelo 100 100 0
Tabela 1: Cores criadas com R,G,B.
Utilizando-se das três cores primarias é possível produzir qualquer cor.
2.9. Operações em Imagens
Existem três grandes classes distintas de operações em imagens que são;
• Realizadas pontualmente nos pixels;
• Realizadas em partes da imagem;
• Realizadas em toda a imagem.
Para o desenvolvimento do trabalho apenas foram consideradas apenas as operações
realizadas pontualmente nos pixels, essas são operações que dependem apenas do pixel (x,y)
na imagem. Para esse caso as únicas informações que se têm é a cor do pixel e a sua posição.
Essa operação pode ser visualizada como um mapeamento de pixels da imagem.
2.10. Processamento de Imagens Coloridas
O processamento de imagens coloridas é motivado por dois fatores principais:
inicialmente, em análise de imagens automatizada, pois a cor simplifica a identificação do
8
objeto e a extração de uma cena, e em segundo lugar, em análise de imagens desempenhada
por seres humanos, sendo possível discernir milhares de tons e intensidades de cores.
O processamento de imagens coloridas é separado em duas áreas principais:
processamento de cores reais que são aquelas adquiridas com um sensor de cores reais como
uma câmera, scanner. A outra categoria é a de pseudo-cores que é a atribuição de cores para
uma imagem monocromática.
Com o progresso no desempenho dos hardwares e sensores para processamento de
imagens coloridas e diminuição de preços, o processamento de imagens de cores reais tem se
tornado significativamente amplo.
3 CONCEITOS E DESENVOLVIMENTO
3.1 Conceitos de Desenvolvimento
Para o desenvolvimento do projeto, foi utilizada a linguagem de programação Visual
Basic 6 da Microsoft, esta foi escolhida pela facilidade de implementação do software, pela
grande quantidade de documentação disponível para aplicações utilizando imagens, já que ela
é uma linguagem totalmente visual dirigida por eventos.
Por ser uma linguagem visual, o Visual Basic facilita a implementação de interfaces
utilizando GUI (Graphics User Interface).
O GUI permite uma maior interação com dispositivos digitais como teclado e mouse,
através de elementos gráficos como ícones ou indicadores visuais, o usuário é capaz de
manipular melhor o software, obtendo um resultado prático.
Para o desenvolvimento do software foi necessário o uso de recursos de API do
Windows.
API Application Programming Interface (ou Interface de Programação de Aplicativos)
é uma interface de programação que permite explorar o potencial de desenvolvimento de
aplicativos, usando uma API.
A API é composta de funções acessíveis por programação, e permite que o
programador utilize características do software menos evidentes, isso permite que o
programador use funções de acordo com suas necessidades.
9
No desenvolvimento desse projeto foram utilizadas API gráficas GDI ou dispositivo
de interface gráfica (Ghaphics Device Interface) o GDI é responsável pela visualização
gráfica dos aplicativos.
Para o desenvolvimento do projeto, foi necessária a utilização de três bibliotecas do
Windows, são elas gdi32.dll, avicap32.dll e user32.dll.
A biblioteca GDI32.DLL contém funções para o Windows GDI, é um requisito para o
funcionamento do Windows, auxiliando a criação de janelas, e outros objetos, e é responsável
pela comunicação entre placa de vídeo e as imagens que aparecem na tela.
Outra biblioteca requerida para o desenvolvimento do projeto é a AVICAP32.DLL,
que contem funções para a API do Windows responsável pela captura de imagens/vídeos de
câmeras ou outros hardwares, armazenando o resultado em um arquivo de vídeo no formato
AVI.
E por final a biblioteca USER32.DLL contém componentes para várias GUI e funções
de usuários.
A biblioteca USER32.DLL é necessária para o correto funcionamento do sistema
operacional Windows.
3.2 Desenvolvimento do Algoritmo e Justificativas
3.2.1 Desenvolvimento do Projeto
Os algoritmos foram implementados com base de testes, assim o software pode ser
ajustado para uma utilização otimizada.
A técnica utilizada para reconhecer cores em imagens é baseada no padrão de
comparação de imagens baseado pontualmente nos pixels da imagem capturada. Desta forma
não é necessária a utilização de um banco de dados para armazenar as imagens capturadas, já
que todas as comparações são feitas em tempo real, dispensando a necessidade de um
equipamento robusto para o armazenamento de dados.
Assim o projeto é baseado em três partes fundamentais:
• Seleção da cor padrão
• Captura da imagem pela webcam
• Comparação dos pixels
10
3.2.2 Seleção da cor Padrão:
Nesta etapa é necessário fornecer ao sistema o padrão de cores a ser comparado.
Figura 4: 1 Seleção da Cor Padrão.
A Figura 4 mostra o seletor de cor padrão, a partir desse dispositivo, o usuário é capaz
de selecionar uma cor padrão, ajustando as três barras de rolagem que correspondem às três
cores do padrão RGB. Quando uma cor é definida, o seu correspondente numérico é mostrado
na frente da barra de rolagem, desta forma o usuário é capaz de selecionar de forma mais
eficaz a cor desejada.
3.2.3 Captura da Imagem pela Webcam:
A captura de imagem é um processo simplificado, pois o acesso da câmera pelo Visual
Basic é efetuado pelas bibliotecas AVICAP32.DLL e USER32.DLL.
No sistema quando o usuário clica no botão INICIAR CÂMERA, não somente o
procedimento de captura de quadros se inicia, mas também o sistema de comparação de pixels
que será exemplificado no próximo tópico.
Uma vez iniciado o processo de captura, o software estará ativado, porém não é
necessário que se interrompa o processo caso haja a necessidade de se alterar a cor padrão,
essa pode ser alterada a qualquer momento mesmo que o sistema esteja em funcionamento.
A Figura 5 mostra o código de Incialização da câmera, quando o usuário clica no
botão de iníciar, o processo de captura de vídeo começa pela função
capCreateCaptureWindowA, essa função cria um identificador, usado para referenciar a
janela, é possível customizar a janela mudando os parâmetros de estilo. Porém no
desenvolvimento do trabalho somente foi definido o padrão de tamanho da janela, fixado em
11
640 por 480 pixels, essa resolução foi escolhida para se ter resultados parametrizados, já que a
webcam de menor qualidade utiliza esse padrão de resolução.
Figura 5:2 Código de Incialização da Câmera
Uma vez que a janela foi criada, é necessário se conectar a janela ao driver de vídeo,
essa conexão é feita com a mensagem ConnectCam ilustrado na figura 6.
Figura 6:3 Mensagem SendMessage
A API SendMessage é chamada passando 4 atributos:
• Um identificador da janela. (mCapHwnd)
• Uma mensagem para enviar à janela. (ConnectCam)
• Um parâmetro curto – 16 bits (não utilizado)
• Um parâmetro longo – 32 bits bits (não utilizado)
A função SendMessage está contida na biblioteca USER32.DLL e a função
capCreateCaptureWindowA está contida na biblioteca AVICAP32.DLL.
Quando o botão PARAR é acionado todo o procedimento de captura e comparação é
interrompido.
A figura 7 mostra o comando de Parar a captura, novamente a API SendMessage é
utilizada, porém agora enviando uma mensagem de parada para a câmera DisconnectCam.
Figura 7:4 Código do botão PARAR.
A figura 8 corresponde à caixa de imagens, e botões Iniciar Câmera e Parar.
12
Figura 8:5 Caixa de imagens e botões Iniciar Câmera e Parar.
3.2.4 Comparação dos Pixels:
O processo de comparação de pixels é feito a partir de uma comparação simples entre
os dados fornecidos pelo usuário no procedimento de seleção de cor e os dados capturados
pela webcam.
Contudo, a escolha de uma webcam para fazer o trabalho de detecção de cores em um
nível satisfatório pode ser prejudicada pela baixa qualidade das imagens capturadas,
ocasionada por vários fatores, sendo os principais deles a baixa quantidade de luminosidade
do ambiente e a baixa qualidade da webcam. Quanto maior a qualidade da imagem recebida,
maior a precisão na comparação de cores.
Esses problemas podem ser minimizados utilizando uma margem de erro para cada
pixel analisado, ou seja, fixamos uma escala de fundo, garantindo assim uma margem de erro
aceitável para cada padrão de cores. Essa técnica será provada na exemplificação dos testes
efetuados.
O código utilizado para a comparação dos pixels está exemplificado na figura 9.
13
Figura 9:6 Código de comparação de pixels.
A comparação é feita individualmente para cada padrão de cor RGB, como ilustrado
na Figura 9 ou seja, as linhas de 1 a 7 contém o código para a comparação da cor Vermelha,
enquanto as linhas 10 a 16 contém o código para a comparação da cor Verde e entre as linhas
18 a 24 é feita a comparação da cor Azul. Para as três cores o procedimento de comparação é
o mesmo, o código é exemplificado tomando como exemplo a comparação da cor vermelha.
Para iniciar a explicação é necessário conhecer as variáveis envolvidas no sistema.
As variáveis r, g, b contém o valor recebido pela captura da webcam ilustrado pela
figura 10, e as variáveis r1, g1, b1 e r2, g2, b2 possuem os valores recebidos pela seleção de
cor do usuário já incluído o valor de fundo de escala para mais no caso das variáveis
terminadas com 1 e para menos nas variáveis terminadas com 2.
As variáveis verm, verd, azul são utilizadas para a comparação se as cores foram
encontradas ou não.
14
Figura 10 Código de captura das componentes R G B.
A primeira linha de comando (linha 1) possui uma condicional If, que testa a variável
vermelha, se r for menor ou igual que r1 e maior ou igual que r2 ou seja, o valor contido em r
deve estar entre r1 e r2.
Caso a condicional da linha 1 seja verdadeira, é escrito na caixa de texto que
“Vermelho Encontrado” (linha 2 ) e a variável verm recebe 1 (linha 3)
Caso a condicional da linha 1 não seja verdadeira é escrito na caixa de texto que
“Vermelho não Encontrado” (linha 5 ) e a variável verm recebe 0 (linha 6)
Na linha 26 outra condicional testa as variáveis verm, verd e azul caso todas as
variáveis possuam conteúdo igual a 1, corresponde que a cor em questão foi encontrada,
portanto a caixa de texto indicará ao usuário que “Cor Encontrada” (linha 27), incrementará o
contador de pixels detectados (linha 28) e mostrará em uma caixa de texto o número de pixels
já detectados (linha 29). Caso alguma das três variáveis possuam conteúdo igual a 0, a caixa
de texto mostrará ao usuário “Cor não Encontrada” linha 31.
Ao final do teste é possível saber quantos pixels compatíveis foram encontrados.
4 TESTES E AVALIAÇÃO DOS TESTES
Para os testes efetuados no sistema foi utilizado um computador com processador Intel
Celeron M 1.5GHz com memória SDRAM de 1Gb. A intenção é demonstrar que em um
computador de baixo desempenho é possível obter bons resultados em comparações de cores.
A figura 10 mostra um Benchmark gerado pelo software FreshDiagnose versão 7.94
de distribuição gratuita, do computador utilizado para fazer as análises. Softwares de
15
benchmark tem por objetivo testar o hardware / software de um determinado computador
realizando uma análise completa e comparam com resultados obtidos de outros sistemas já
analisados. Obtendo-se assim uma medida de desempenho para o computador.
Figura 11: Benchmark desempenho do Processador fornecido pelo Software Freshdiagnose versão 7.94
No benchmark realizado pelo software Fresdiagnose foi feito um teste de desempenho
do processador do computador utilizado nos testes do software e comparado com resultados já
fornecidos pelo próprio software FreshDiagnose. Como mostrado na Figura 11, o teste foi
realizado indica que o computador utilizado nos testes deste trabalho está bem abaixo dos
padrões dos computadores pessoais atuais, já que o desempenho do computador utilizado
(destacado pela cor azul) é inferior à um Intel Pentium 4.
Nos testes foram utilizadas dois modelos de WebCam. A Webcam A é da marca Dr-
Hank modelo VC-M035, possui sensor de cor CMOS e foco manual, resolução máxima de
640x480 pixels com conexão USB, ilustrada na Figura 12. A Webcam B é da marca Neox
modelo NXW022 possuindo sensor de cor CMOS foco manual, resolução máxima de
2560x1920 pixels ajuste de cor automático, e 4 leds (não utilizados para o projeto) ilustrada
na figura 13
16
Figura 212: Webcam A
Figura 313: Webcam B
Os testes realizados foram efetuados de forma padronizada, ou seja, para testar um
padrão de cor, foi determinada uma margem de erro para a escala de fundo e as câmeras
foram iniciadas filmando um objeto de cor única, os testes foram realizados no mesmo
ambiente para ambas as câmeras e em intervalos de tempo curtos. A calibragem de cores foi
feita de forma automática, pois cada câmera possui em seu driver de controle um algoritmo
próprio de calibragem.
4.1 Testes
4.1.1 Teste da cor branca utilizando a Webcam A:
Inicialmente, foi realizado um teste para a detecção da cor branca, ou seja, a presença
completa de cor: Vermelho na posição 255, Verde na posição 255 e Azul na posição 255.
Utilizando a webcam A à luz ambiente e uma margem de erro de 10 para mais ou para
menos foram obtidos os seguintes resultados conforme figura 14
17
Figura 414: Sistema capturando imagens pela Webcam A.
Nesse caso nenhuma cor for encontrada, devido à baixa luminosidade do ambiente, o
fundo que na verdade era branco, tem em suas componentes RGB os respectivos valores 88,
76, 64, valores esses tomados no momento que o software foi interrompido, o software nesse
caso somente reconheceria cores na faixa de 245 a 255.
O segundo teste efetuado ilustrado na figura 15 foi adicionado iluminação externa,
nota-se que em parte da figura a cor branca é predominante, e o software detectou a cor
branca, comprovado pelo contador que agora marca 440 pixels detectados com a cor branca,
porém no momento da captura da imagem a cor branca já não era mais presente os valores de
RGB eram 238, 255, 237.
18
Figura 515: Teste utilizando a Webcam A e iluminação forçada.
No terceiro teste, a cor padrão foi ajustada para um valor próximo aos valores obtidos
pela Webcam A, sem a utilização de iluminação auxiliar.
A figura 16 mostra os resultados obtidos quando a cor padrão é ajustada para encontrar
a cor, nesse caso podemos ver que o software detectou a cor selecionada.
Como mostram as caixa de texto todas as cores, foram encontradas (Vermelho, Verde
e Azul). Portanto o software apresenta para o usuário que a cor foi encontrada e incrementa o
contador cada vez que um pixel com a cor padrão é detectado.
19
Figura 616: Teste utilizando o recurso de seleção de cor pelo usuário.
4.1.2 Teste da cor Preta utilizando a Webcam A:
A cor preta, ou seja, a ausência completa de cor: vermelho na posição 0, verde na
posição 0 e azul na posição 0.
Para efetuar esse teste a webcam A foi colocada em um ambiente com ausência de
luminosidade. A Figura 16 ilustra o teste realizado.
20
Figura 717: Teste da cor preta utilizando a Webcam A.
Visualizando a figura 17 nota-se que apesar da cor ser capturada ser muito próximo do
preto, as componentes RGB possuem valores ainda fora do padrão de reconhecimento, R=32,
G=28, B=31.
Aumentando o valor de fundo de escala para a comparação, a cor preta deve ser
encontrada, para isso deve ser aumentado o valor de fundo de escala para 30, antes 10
utilizados. O teste é ilustrado na figura 18.
21
Figura 818: Webcam A teste de preto utilizando fundo de escala 30.
Desta forma ilustrada na figura 18, é possível verificar que o padrão de fundo de
escala com valor fixo em 30, consegue eliminar o problema de detecção da cor preta, já que
no ambiente filmado pela webcam não possui nenhuma iluminação. Desta forma conclui-se
que para detectar a cor preta com a webcam A é necessária uma escala de fundo com valor
mínimo de 30.
4.1.3 Teste da cor Branca utilizando a Webcam B:
Para a Webcam B, foram mantidos os mesmos padrões de testes realizados com a
Webcam A.
A detecção da cor branca, ou seja, a presença completa de cor: Vermelho na posição
255, Verde na posição 255 e Azul na posição 255.
Utilizando a webcam B sob luz ambiente e uma margem de erro de 10 para mais ou
menos. Foram obtidos os seguintes resultados conforme figura 19
22
Figura 919: Sistema capturando imagens pela Webcam B.
Devida à baixa iluminação, o padrão branco não foi encontrado, porém nota-se uma
melhoria no desempenho da captura em relação à Webcam A.
Sendo assim, o próximo teste será da cor preta.
4.1.4 Teste da cor Preta utilizando a Webcam B:
Seguindo o mesmo padrão de testes utilizados com a Webcam A, o teste de detecção
de uma imagem de cor preta, ou seja, vermelho na posição 0, verde na posição 0 e azul na
posição 0.
Para efetuar esse teste a webcam B foi colocada em um ambiente com ausência de
luminosidade, o padrão de erro de fundo de escala para esse teste é de mais ou menos 10. A
Figura 20 ilustra o teste realizado.
23
Figura1020: Teste de detecção da cor preta na Webcam B.
As imagens obtidas na Webcam B possuem uma melhor qualidade comparadas as
imagens obtidas da Webcam A. Na Figura 20 é possível observar que apesar das constantes
RGB não estarem na posição 0, elas estão fixas com valor 10, ou seja há uma melhor
precisão, desta forma o padrão de fundo de escala com valor fixado em 10 é suficiente para
detectar o padrão de cor preto.
4.1.5 Teste de imagens coloridas:
Para os testes com imagens em cores, foram comparados os resultados obtidos com a
Webcam A com aqueles obtidos com a Webcam B. Os objetos em questão não possuíam
valores de RGB conhecidos, portanto os testes foram realizados somente comparando o
desempenho de detecção do software ajustando as componentes de seleção de cor RGB para
analisar o resultado em comparação com a cor visual do objeto.
No primeiro teste realizado, um objeto azul foi colocado em frente às webcams,
utilizando somente a luminosidade do ambiente. Observando as figuras 21 e 22 é possível
notar uma grande diferença entre a qualidade da imagem capturada e a imagem visual do
objeto.
24
A figura 20 representa a imagem capturada pela webcam A, os valores de RGB são
muito próximos R=101, G=102, B=118, porém a constante Azul possui um valor destacado,
que pode ser comprovado na barra de rolagem da cor azul da Figura 21, os valores
apresentados acima foram obtidos no momento em que a Webcam foi interrompida.
A imagem capturada pela Webcam A não corresponde com uma proximidade
satisfatória à cor visual do objeto capturado, porém com os devidos ajustes no padrão de cor,
é possível detectar a cor correspondente.
Figura 21:11 Imagem de objeto “Azul” capturada pela Webcam A
A figura 22 corresponde a imagem capturada pela Webcam B, esta possui uma
proximidade maior com a cor visual do objeto, as constantes RGB capturadas são mais
condizentes com uma imagem azul, R=39, G=94 e B=173, isso é bem visível na barra de
seleção de cores, é possível ver que a barra do azul está bem distante das demais cores.
A cor capturada pela Webcam B é bem mais próxima da cor do objeto, portanto os
padrões de cor capturados pela Webcam B são melhores que a Webcam A.
25
Figura 2212 Imagem de objeto “Azul” capturada pela Webcam B
O Segundo teste efetuado foi utilizado um objeto de cor visual Vermelho, as figuras
23 e 24 ilustram os resultados obtidos.
A imagem capturada pela Webcam A é representada pela figura 23, nota-se que a
detecção do vermelho foi simples, pois o vermelho se destaca das outras cores.
Figura 23:13 Imagem de objeto “Vermelho” capturada pela Webcam A
26
O mesmo é notado pela figura 24 capturada pela Webcam B, porém é possível
perceber que a qualidade da imagem obtida pela Webcam B é superior, ou seja os valores
obtidos são mais próximos a cor vermelha.
Figura 24:14 Imagem de objeto “Vermelho” capturada pela Webcam B
O terceiro teste efetuado foi para testar uma imagem de cor visual Verde, as Figuras
25 e 26 ilustram os resultados obtidos.
Para ambas as câmeras os resultados obtidos foram inferiores ao esperado, com pouco
destaque para a cor verde, praticamente todos os valores das constantes RGB estão
praticamente iguais. A cor capturada foi muito diferente da cor visual do objeto, o objeto
utilizado tinha cor verde-limão.
A figura 25 representa a imagem capturada pela Webcam A enquanto a figura 26
representa a imagem capturada pela Webcam B, ambas bem diferentes da cor visual do
objeto.
27
Figura 25:15 Imagem de objeto “Verde” capturada pela Webcam A
Figura 26:16 Imagem de objeto “Verde” capturada pela Webcam B
28
5 CONCLUSÃO E TRABALHOS FUTUROS
5.1 Conclusão
Conclui-se que o desenvolvimento de um software de detecção de cores utilizando-se de
um computador comum e uma câmera Webcam de baixo custo é funcional, porém algumas
restrições devem ser levadas em consideração:
• Qualidade da imagem capturada.
• Luminosidade do ambiente.
• Configuração do software pelo usuário.
A qualidade da imagem está diretamente relacionada com a qualidade do dispositivo
de captura, nesse caso a Webcam. Nos testes realizados fica evidente a diferença de qualidade
da imagem obtida através de testes realizados apenas com estas duas webcams. Para uma
aplicação em nível real se faz de total importância a aquisição de uma webcam que obtenha a
melhor qualidade de imagem possível. Essa diferença de qualidade entre as câmeras podem
ser notadas tanto pela qualidade do equipamento (hardware) quanto pelo driver de instalação
da câmera (software), as webcams que possuem driver com um sistema de calibragem mais
eficiente obtém resultados melhores. Quanto mais baixa a qualidade da câmera maior o fator
de correção de erro (fundo de escala), podendo implicar na detecção de cores incorretas, ou na
imprecisão de detecção de cores.
A luminosidade do ambiente é outro fator importante para a comparação dos pixels,
pois uma simples alteração na luminosidade influenciará na imagem capturada. Portanto, para
uma situação de uso real, a luminosidade do ambiente deverá ser controlada.
Os problemas de luminosidade podem ser minimizados com a utilização da câmera
dentro de um ambiente controlado, o ideal seria manter a câmera dentro de um ambiente que
possua iluminação controlada.
Finalizando, a configuração da cor padrão, definida pelo usuário deverá ser ajustada de
forma correta, uma má configuração implicará no não reconhecimento das cores desejadas.
5.2 Trabalho Futuros
Para trabalhos futuros do sistema é proposto:
29
• Melhorar a eficiência do algoritmo, desenvolvendo sistemas baseados em
conhecimento para diminuição de erros na detecção das imagens.
• Outras técnicas para o reconhecimento dos padrões de cores.
• Melhorias na interface do sistema.
• Algoritmos para reconhecimento de bordas, tornando o software capaz de
reconhecer formas.
• Desenvolvimento de algoritmos para calibração automática do dispositivo de
captura de imagens.
30
Referências Bibliográficas
GONZALEZ, R. C., WOODS, R. E., EDDINS, S. L., Digital Image Processing –
Prentice Hall – Pearson – 2002.
CONCI, A. AZEVEDO, E., LETA, F. R., Computação Gráfica – teoria e prática – vol
2. Ed. Campus – 2008.
GOMES J, VELHO L, Computação Gráfica – Imagem – Segunda Edição. Ed IMPA
2002.
TORI, ROMERO, Fundamentos de computação gráfica : compugrafia - Rio de
Janeiro : Livros Técnicos e Científicos, 1987
HOLZNET S, Visual Basic 6 Black Book, Ed Coriolis, 1998
Programando vídeo para Windows disponível em: http://www.macoratti.net/webcam.html
- Acesso em Outubro de 2008.
FreshDiagnose 7.94 Disponível em: http://www.freshdevices.com/ - Acesso em
Novembro de 2008.
Reconhecimento de Objetos em Tempo Real para Futebol de Robôs disponível em:
http://www2.eletronica.org/artigos/robotica/reconhecimento-de-objetos-em-tempo-real-para-
futebol-de-robos - Acesso em outubro de 2008