como desenvolver aplicações utilizando processamento de imagens

61
FACULDADE DO CENTRO LESTE RUBENS MATIM LOURENÇO REIS DOS SANTOS COMO DESENVOLVER APLICAÇÕES UTILIZANDO PROCESSAMENTO DE IMAGENS

Upload: rubens-martim-dos-santos

Post on 30-Nov-2015

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Como Desenvolver Aplicações Utilizando Processamento de Imagens

FACULDADE DO CENTRO LESTE

RUBENS MATIM LOURENÇO REIS DOS SANTOS

COMO DESENVOLVER APLICAÇÕES

UTILIZANDO PROCESSAMENTO DE IMAGENS

SERRA

2010

Page 2: Como Desenvolver Aplicações Utilizando Processamento de Imagens

RUBENS MARTIM LOUREÇO REIS DOS SANTOS

COMO DESENVOLVER APLICAÇÕES

UTILIZANDO PROCESSAMENTO DE IMAGENS

Monografia apresentada ao Curso de

Graduação em Sistemas de

Informação, da Faculdade do Centro

Leste, como requisito para obtenção

de título de Bacharel em Sistemas de

Informação.

Orientador:

Prof. MSc. Vanderson José Ildefonso

Silva

SERRA

2010

Page 3: Como Desenvolver Aplicações Utilizando Processamento de Imagens

Agradeço primeiramente a Deus, por ter

auxiliado nesta trajetória; um agradecimento

especial à minha esposa, familiares e amigos que,

de uma forma ou de outra, me ajudaram a realizar

esse projeto; aos meus colegas de classe, e

principalmente à professora e coordenadora do

curso de Sistemas de Informação Luciana Itida

Ferrari e meu orientador Vanderson José Ildefonso

Silva, pois com certeza sem o apoio e a

demonstração de confiança e capacidade que

depositaram em mim seria muito difícil o trabalho

de desenvolver o meu Projeto de Graduação.

Page 4: Como Desenvolver Aplicações Utilizando Processamento de Imagens

RESUMO

Reconhecimento de padrões é uma tarefa extremamente complexa sob o ponto de vista

computacional. A quantidade de informação contida em uma imagem é absurdamente grande

e estas informações, de acordo com a aplicação, não poderão ser desprezadas então qualquer

cálculo executado para a extração de informação destas imagens torna-se extremamente

massivo sob o aspecto computacional e de ocupação de memória. Este trabalho tem o objetivo

de apresentar a técnica IPCA - acrônimo de Incremental Principal Component Analysis -

Análise de Componentes Principais Incrementáveis como ferramenta para auxiliar os

profissionais de informática no desenvolvimento de softwares que necessitem por requisito

utilizarem processamento de imagens e/ou reconhecimento de padrões. Esta técnica será

abordada com a utilização do software Matlab® e será discutido como desenvolver aplicações

utilizando processamento de imagens com uma simulação de desenvolvimento de um

protótipo para reconhecimento de faces. A relevância deste trabalho se deve ao fato de que

qualquer profissional que o utilizar reduzirá grande esforço em pesquisa e em entendimento

desta técnica.

Page 5: Como Desenvolver Aplicações Utilizando Processamento de Imagens

ABSTRACT

Pattern recognition is an extremely complex task under computing viewpoint. The amount of

information contained in an image is absurdly large and this information, in accordance with

the application, cannot be neglected so any calculation executed for extracting information

from these images becomes extremely massive computation under the look and memory

occupation. This work aims to introduce the technique IPCA-acronym for Incremental Main

Component Analysis tool to assist professionals in software development that require per

requirement using image processing and/or pattern recognition. This technique will be

addressed with the use of Matlab® software and will be discussed how to develop

applications using image processing with a simulation of developing a prototype for faces

recognition. The relevance of this work is because any professional that use will reduce great

effort in research and in understanding this technique.

Page 6: Como Desenvolver Aplicações Utilizando Processamento de Imagens

SUMÁRIO

CAPÍTULO 1 - INTRODUÇÃO.............................................................................................1

CAPÍTULO 2 - TECNOLOGIAS PARA AQUISIÇÃO DE IMAGENS............................3

2.1 TIPOS DE IMAGENS.................................................................................................4

CAPÍTULO 3 - PASSOS NO PROCESSAMENTO DE IMAGENS...................................7

3.1 DEFINIÇÃO DO PROBLEMA...................................................................................8

3.1.2 Diferenças de Imagens por Formação de Cor.................................................................9

3.2 AQUISIÇÃO DE IMAGENS....................................................................................14

3.3 PRÉ-PROCESSAMENTO DAS IMAGENS.............................................................15

3.4 SEGMENTAÇÃO......................................................................................................15

3.5 REPRESENTAÇÃO E DESCRIÇÃO.......................................................................16

3.6 RECONHECIMENTO E INTERPRETAÇÃO.........................................................16

3.7 RESULTADO............................................................................................................17

CAPÍTULO 4 - TECNICAS DE PROCESSAMENTO UTILIZANDO O MATLAB.....18

4.1 DEFINIÇÃO DO PROBLEMA.................................................................................18

4.2 AQUISIÇÃO DE IMAGENS....................................................................................18

4.3 DEFINIÇÃO DA TÉCNICA ESCOLHIDA..............................................................23

4.3.1 Funcionamento do Ipca................................................................................................24

4.3.2 Autovetores e Autovalores...........................................................................................26

4.3.3 Utilização do Matlab® em outras Plataformas de Desenvolvimento............................28

4.4 SEGUIMENTAÇÃO.................................................................................................30

4.5 APRESENTAÇÃO DOS PASSOS ATÉ A SEGMENTAÇÃO................................31

4.6 RECONHECIMENTO E INTERPRETAÇÃO.........................................................32

CAPÍTULO 5 - RESULTADOS EXPERIMENTAIS.........................................................33

CAPÍTULO 6 - PROJETOS FUTUROS..............................................................................35

Page 7: Como Desenvolver Aplicações Utilizando Processamento de Imagens

CAPÍTULO 7 - CONCLUSÃO..............................................................................................36

REFERENCIAS......................................................................................................................37

Page 8: Como Desenvolver Aplicações Utilizando Processamento de Imagens

1

CAPÍTULO 1 - INTRODUÇÃO

O uso de métodos para processamento de imagens é alvo de estudo de muitos especialistas de

diversas áreas de atuações. Essa preocupação em utilizar imagens em aplicações diversas

advém do fato de o ser humano ter uma capacidade limitada de analisar fatos ou dados

abstratos, quer dizer, o ser humano necessita de uma habilidade gigantesca para conseguir

fazer uma análise de um fato se este for algo abstrato, impalpável.

De acordo com Santaella “O estudo da linguagem e dos signos é muito antigo. A preocupação

com os problemas da linguagem começam na Grécia. A semiótica implícita compreende todas

as investigações sobre a natureza dos signos, da significação e da comunicação, é uma

semiótica explícita quando a ciência semiótica propriamente dita começou a se desenvolver”

(SANTAELLA, 2002: XII apud FRIZERA & VALADÃO, 2008).

“A teoria semiótica nos habilita a penetrar no movimento interno das mensagens, o que nos dá

a possibilidade de empreender os procedimentos e recursos empregados nas palavras,

imagens, diagramas, sons, nas relações entre elas, permitindo a análise das mensagens. As

mensagens podem ser analisadas em si mesmas, nas suas propriedades internas, quer dizer,

nos seus aspectos qualitativos, sensórios, tais como, na linguagem visual, por exemplo, as

cores, linhas, formas, volumes, movimento, dinâmica, quando, em terminologia semiótica,

analisa-se os quali-signos das mensagens” (MAGALHÃES BARBOSA, 2008 apud

FRIZERA & VALADÃO, 2008).

Segundo Gonzalez & Woods (2003) “O interesse em métodos de processamento de imagens

digitais decorre de duas áreas principais de aplicação: melhoria de informação visual para

interpretação humana e o processamento de dados de cenas para percepção automática através

de maquinas”.

Esse interesse em se utilizar meios digitais e computacionais para processamento de imagens

esta relacionada à tentativa de extrair ao máximo a interferência humana em processos de

verificações/constatações, onde o indivíduo responsável por este processo é alvo de muito

desgaste e imperícia. A justificativa então para utilização de tecnologia para este tipo de

aplicação é de se reparar as “falhas” que este indivíduo pode cometer.

No estudo de processamento de imagens estão envolvidos diversos tipos de profissionais

formados em diversas áreas de conhecimento, porém existe um grande problema para os

profissionais formados em tecnologia da informação, onde disciplinas que contemplem estes

Page 9: Como Desenvolver Aplicações Utilizando Processamento de Imagens

2

fundamentos teóricos simplesmente não existem. Comenta-se a falta de informação teórica

apenas para este tipo de profissional, pois a sua formação lhe permite desenvolver aplicações

comerciais e industriais diversas, mas deixa a desejar se no decorrer de sua carreira necessitar

de desenvolver algo envolvendo processamento de imagens.

Seguindo este contexto, a aquisição da imagem é algo de suma importância para que possa ser

analisada de forma íntegra e detalhada um determinado fato, porém não se deve perder o foco

do problema a ser solucionado com esta comparação.

Neste trabalho será mostrado como desenvolver uma aplicação utilizando processamento de

imagens adotando o software Matlab® que já possui um toolbox (biblioteca de ferramentas)

com inúmeras funções para manipulação e aquisição de imagens. Deve-se ainda ressaltar que

será mostrado como utilizar o software Matlab® para “exportar” as ferramentas necessárias

para composição da técnica IPCA para utilização em outra IDE (Integrated Development

Environment ou Ambiente Integrado de Desenvolvimento).

Toda essa demonstração será abordada de forma expositiva com utilização de tabelas e

imagens do software Matlab® durante o processo de desenvolvimento do projeto proposto.

Page 10: Como Desenvolver Aplicações Utilizando Processamento de Imagens

3

CAPÍTULO 2 - TECNOLOGIAS PARA AQUISIÇÃO DE IMAGENS

Com o avanço tecnológico e com a popularização de câmeras de vídeo torna-se

gradativamente fácil a aquisição de imagens para diversos fins. Este fato esta relacionado à

“disseminação da tecnologia CCD (Charge Coupled Device – Dispositivo de Carga

Acoplado), na década de 80, o que permitiu uma redução de custos e aumento de

confiabilidade em relação às antigas câmaras de tubo de raios catódicos” (GALO,

HASEGAWA & TOMMASELLI, 1999).

Os dispositivos de acoplamento de carga (CCD) são circuitos integrados de silício, usados

como transdutores de imagem. Um dispositivo transdutor é aquele capaz de transformar uma

forma de energia em outra, no caso energia luminosa em energia elétrica. Existem dois tipos

básicos de CCDs, o CCD linear e o CCD Array, que podem ser utilizados em função da

aplicação da câmera.

“O CCD linear nada mais é que uma fileira com milhares de elementos fotossensíveis que

varrem a área onde a imagem se forma na câmera, desta forma, captura uma coleção de linhas

que formam a foto”. (CAPELARO, MENDONÇA & TEIXEIRA, 1997).

A outra forma básica de um CCD é do tipo Array que “é uma matriz com milhares, ou até

milhões, de elementos fotossensíveis que capturam os pontos da imagem na câmera de uma

vez só. As câmeras que utilizam este tipo de CCD são as mais populares do mercado e

apresentam não só preços mais acessíveis, como também facilidade de uso e portabilidade.”

(CAPELARO, MENDONÇA & TEIXEIRA, 1997).

Na figura I temos exemplos de como é feita a captura da imagem pelos dois tipos de CCDs.

Figura I: Exemplos de CCDs capturando imagens do mundo real.

Fonte: Adaptado de (CAPELARO, MENDONÇA & TEIXEIRA, 1997).

Page 11: Como Desenvolver Aplicações Utilizando Processamento de Imagens

4

Deve-se ainda ressaltar que os dispositivos com tecnologia CCD estão ligados a imagens

digitais que, por este fato, tem um elevado grau de confiabilidade para uma possível tentativa

de recuperação ou “ajuste” na imagem capturada em relação à imagem real.

Neste processo existem dois pontos fundamentais a serem observados: um dispositivo físico

que seja sensível a uma banda do espectro de energia eletromagnética e que produza um sinal

de saída elétrica proporcional a um nível de energia percebida, o segundo ponto é um

conversor deste sinal elétrico de saída para a forma digital. O CCD então é utilizado para

solucionar estes dois pontos citados, reduzindo assim o custo neste procedimento e a

interferência externa na captura e digitalização da imagem.

2.1 TIPOS DE IMAGENS

Para utilização de ferramentas no processamento de imagens primeiramente deve-se conhecer

os tipos de imagens (ao menos os tipos mais comuns) e quais são suportadas pelas

ferramentas que serão empregadas.

A informação sobre o tipo de imagem que será adquirida pelo sistema poderá acarretar em

efeitos inesperados como excesso de processamento, perda de informação ou mesmo

dificuldades em manipular estas imagens de forma computacional.

Levando este ultimo comentário em consideração devemos então ter o domínio sobre como os

tipos de imagens se “comportam” dentro do sistema computacional, para que possamos

identificar as ferramentas necessárias para suas devidas manipulações.

Para este trabalho em especial serão apresentadas os tipos de imagens (e originários de

importação) suportados pelo software Matlab® que estão apresentadas na figura II:

Tipos de

ArquivoExtensão Descrição

Função de

Importação

Função de

Exportação

Imagens BMP Windows Bitmap imread imwrite

GIF Graphics Interchange Format

Page 12: Como Desenvolver Aplicações Utilizando Processamento de Imagens

5

Tipos de

ArquivoExtensão Descrição

Função de

Importação

Função de

Exportação

HDF Hierarchical Data Format

JPEG ou JPG Joint Photographic Experts Group

JP2, JPF, JPX, J2C, ou

J2K

JPEG 2000

PBM Portable Bitmap

PCX Paintbrush

PGM Portable Graymap

PNG Portable Network Graphics

PNM Portable Any Map

PPM Portable Pixmap

RAS Sun Raster

TIFF ou TIF Tagged Image File Format

XWD X Window Dump

CUR Windows Cursor resources imread None

FITS ou FTS Flexible Image Transport

System

ICO Windows Icon resources

Áudio AU ou SND NeXT/Sun sound auread auwrite

WAV Microsoft WAVE sound wavread wavwrite

Vídeo

(Qualquer

AVI Audio Vídeo Interleave VídeoReader VídeoWriter

MJ2 Motion JPEG 2000 VídeoReader None

Page 13: Como Desenvolver Aplicações Utilizando Processamento de Imagens

6

Tipos de

ArquivoExtensão Descrição

Função de

Importação

Função de

Exportação

plataforma)

Vídeo

(Windows)

MPG Motion Picture Experts Group,

phases 1 and 2

VídeoReader None

ASF, ASX ou WMV Windows Media

any Formats supported by

Microsoft DirectShow®

Vídeo

(Mac®)

MPG, MP4 ou M4V MPEG-1 e MPEG-4 VídeoReader None

any Formats supported by

QuickTime®,

including .mov, .3gp, .3g2,

and .dv

Vídeo

(Linux)

any Formats supported by your

installed GStreamer plug-ins,

including .ogg

VídeoReader None

Figura II: Comandos na linguagem “m” (Linguagem proprietária do software Matlab®).

Fonte: Adaptado de (Product Help Software Matlab®).

Page 14: Como Desenvolver Aplicações Utilizando Processamento de Imagens

7

CAPÍTULO 3 - PASSOS NO PROCESSAMENTO DE IMAGENS

Depois de obtida as imagens começam as etapas de “preparação” destas imagens para

melhorar as informações que se queira extrair, ou seja, começamos neste ponto a pensar no

que devemos extrair da imagem para que posteriormente se faça as devidas comparações ou

conclusões.

Deve-se ressaltar ainda que para extrair as informações que queremos processar deve-se

pensar em algo compreensível para computadores, pois a performance e confiabilidade neste

tipo de aplicação são pontos cruciais.

Para que se tenha sucesso no processo de comparação deve-se seguir uma sequência no

processamento da imagem até que se obtenha uma “informação” a ser analisada e comparada.

Para isto, será referenciada neste trabalho uma sequência tida como “passos fundamentais em

processamento de imagens digitais” (figura III) proposta por Gonzalez & Woods (2003) e

utilizada largamente em diversos projetos deste campo de pesquisa.

Figura III: Passos Fundamentais em Processamento de Imagens Digitais

Fonte: Adaptado de (GONZÁLES & WOODS, 2003).

Page 15: Como Desenvolver Aplicações Utilizando Processamento de Imagens

8

3.1 DEFINIÇÃO DO PROBLEMA

No primeiro passo está a delimitação e definição do problema. Esta etapa consiste em não

ultrapassar os limites do projeto, já que o processamento de imagens, utilizando-se dos passos

supracitados, pode ser utilizado em diversas aplicações. Deve-se citar que este passo,

comparando com a Engenharia de Software, é onde se faz todos os levantamentos de

qualidade, prazo, custo, etc.

No decorrer do desenvolvimento da aplicação, no que tange os processos de Engenharia de

Software, temos que levar em consideração conhecimentos prévios sobre conceitos de

processamento de imagens dentro da visão computacional e sobre as tecnologias que serão

empregadas no projeto, então, neste passo, estará a descrição de alguns desses conceitos:

3.1.1 Visão Computacional

Nesta grande área do conhecimento, uma imagem é composta de uma matriz (ou mais) de

pontos que são chamados de pixels (unidade básica em uma imagem). Embora para os seres

humanos isso possa ser de vários tamanhos, para o computador é a unidade básica de “ponto

luminoso”, ou seja, naquele pequeno retângulo que contém um pixel pode haver apenas uma

cor, com apenas uma intensidade de luz. (GONZÁLES & WOODS, 2003).

A partir deste conceito de pixel poderemos falar de resolução: o conceito de resolução é

exatamente quantos pixels há em uma determinada área. Utilizando este conceito, pode-se

saber quando uma imagem é melhor que a outra, já que a de melhor qualidade terá mais pixels

por área, ou seja, mais resolução. Quanto maior a resolução mais pixels por polegada terá a

imagem. (FREITAS, 1999).

Para demonstrar como é definida a resolução de uma imagem verifica-se quantos pixels temos

na “altura” (linhas) e na “largura” (colunas), exemplo: uma foto de 480x640 (normalmente é

representado sempre o maior número primeiro: 640x480, e também normalmente o número de

Page 16: Como Desenvolver Aplicações Utilizando Processamento de Imagens

9

“colunas” é maior que o número de “linhas”) pixels nos fornece uma resolução de 307.200

pixels na tela. Cada pixel contendo apenas uma cor e apenas uma intensidade de luz.

Por convenção uma imagem tem seus pixels mapeados da seguinte forma:

Figura IV: Convenção utilizada na leitura de imagens digitais (a) e, leitura de imagens digitais

pelo Matlab®(b).

Fonte: Adaptado de (GONZÁLES, WOODS & EDDINS, 2007).

3.1.2 Diferenças de Imagens por Formação de Cor

A imagem pode ser formada basicamente por três tipos de formação de cor: RGB, HSI e

Intensity. (GONZÁLES & WOODS, 2003)

Na etapa de definição do problema devemos conhecer bem os tipos de formação de imagens e

como estas imagens são compreendidas pelos computadores, assim conseguiremos assegurar

um nível de processamento satisfatório e minimizaremos possíveis erros no decorrer do

desenvolvimento.

(b)(a) (b)(b)(b)(b)(b)(b)(a)(a)(a)(a)(a)(a)

Page 17: Como Desenvolver Aplicações Utilizando Processamento de Imagens

10

3.1.2.1 RGB

A imagem RGB é formada por três matrizes sobrepostas com quantificações de cores

relacionadas a vermelho (Red), verde (Green) e azul (Blue) como mostrado na figura abaixo:

Figura V: Formação da imagem RGB

Fonte: (Wikimedia Commons, acessado em 23/10/10).

Esta representação é equivalente, matematicamente a (equação 1):

(1)

Onde:

Im: Imagem Final

Ik: Imagem de apenas uma cor em cada camada

Em termos computacionais temos a seguinte leitura da imagem no formato RGB:

Im= ∑camadas

[ I k ]

Page 18: Como Desenvolver Aplicações Utilizando Processamento de Imagens

11

Figura VI: Leitura da imagem RGB pixel a pixel pelo computador

Fonte: Product Help Matlab®.

3.1.2.2 HSI

O sistema HSI funciona com uma espécie de disco em que uma vez selecionada a cor correta,

é possível variar sua iluminação (quanto de branco ela possui) e quanto de cor ela possui

(saturação). (GONZÁLES & WOODS, 2003)

Este tipo de imagem é composta por angulação (H), saturação (S) e intensidade (I, que pode

ser entendido também como luminosidade) conforme diagramado na figura VII:

Page 19: Como Desenvolver Aplicações Utilizando Processamento de Imagens

12

Figura VII: Exemplificação dos discos HSI

Fonte: Adaptado de (SOBRAL, 2002 Disponível em

http://gec.di.uminho.pt/lesi/vpc0203/Aula04Cor.pdf).

Para o software Matlab® este tipo de formação de imagem não é suportado, porém existe uma

forma (funções) similar para se trabalhar com este tipo de imagem utilizando o HSV:

Page 20: Como Desenvolver Aplicações Utilizando Processamento de Imagens

13

Figura VIII: Ilustração da compatibilidade da formação HSI com HSV

Fonte: Product Help Matlab®.

3.1.2.3 Intensity

O modo intensity (Intensidade ou Luminosidade) consiste no preto e branco, composto por

pontos que variam de 0 a 255 em escala de intensidade de luz. Não possui componente de cor,

portanto a imagem fica em tons de cinza. Computacionalmente é uma matriz bidimensional, o

que exige menos do poder de processamento do computador. (LU, 2001 apud FRIZERA &

VALADÃO, 2008).

Page 21: Como Desenvolver Aplicações Utilizando Processamento de Imagens

14

Figura IX: Leitura da imagem em tons de Cinza (Gray Scale) pixel a pixel pelo computador

Fonte: Product Help Matlab®.

3.2 AQUISIÇÃO DE IMAGENS

Neste passo do processo faz-se a aquisição das imagens que serão utilizadas nas comparações

e/ou identificações. Como citado anteriormente, a aquisição das imagens dependem de um

dispositivo que seja sensível a uma banda do espectro de energia eletromagnética e que

produza um sinal de saída elétrica proporcional a um nível de energia percebida e converta

este sinal elétrico de saída para a forma digital.

Este dispositivo será de crucial importância, pois com ele é que determinaremos os tipos de

imagens que servirão de “entrada” no sistema.

Page 22: Como Desenvolver Aplicações Utilizando Processamento de Imagens

15

Dependendo do dispositivo teremos de verificar questões de transformações, manipulações

das imagens de entrada, redimensionamento, etc. Portanto a escolha do dispositivo interferirá

completamente no andamento do projeto.

Neste projeto será utilizado o CCD de uma câmera digital integrada ao computador (WebCan)

para a aquisição das imagens que serão testadas e demonstradas.

O software Matlab® por sua vez nos permite controlar este hardware internamente sem

precisar utilizar a interface do proprietário fabricante, ou seja, conseguimos através de

algumas funções controlar completamente o dispositivo de captura sem problemas.

3.3 PRÉ-PROCESSAMENTO DAS IMAGENS

Nesta fase será evidenciado o que se espera recuperar nas próximas etapas, ou seja, o sucesso

nesta fase é determinante nas fases subsequentes. Um exemplo de pré-processamento é a

retirada de ruído (na imagem o ruído é perceptível como distorções ou falhas na figura), o

realce de uma determinada região, etc.

A imagem de “entrada” passará por filtros e transformadas como, por exemplo, a

transformada de Laplace, que tem como objetivo de trabalhar a imagem no domínio da

frequência, ou seja, se desejarmos aplicar um filtro na cor ou luminosidade da imagem esta é

uma possível solução de filtro.

A escolha dos filtros e transformadas a que as imagens serão submetidas deve ser estudado

com clareza e levado em consideração a que se propõe a solução computacional idealizada,

pois se a informação for extraída de forma errônea ou mesmo perdida, todos os passos

subsequentes não terão eficiência.

3.4 SEGMENTAÇÃO

De acordo com GONZÁLES & WOODS, seguimentação faz com que se divida uma imagem

de entrada em partes ou objetos constituintes. Esta fase é a mais complexa principalmente se

Page 23: Como Desenvolver Aplicações Utilizando Processamento de Imagens

16

tratando de sistemas real-time (tempo real) pois o nível de processamento da máquina é muito

alto e dependendo da aplicação se torna inviável.

Por esta razão deve-se utilizar padrões de entradas e trabalhar focado nestes padrões, a fim de

conseguir limitar o número de características relevantes a que se propõe o sistema a ser

desenvolvido, ganhando robustez e confiabilidade.

Pode-se citar como exemplo de padronização o formato de entrada em pixels das fotos a

serem testadas para reconhecimento facial, ou mesmo o formato da imagem, RGB, Gray

Scale (tons de cinza), etc. Mais a frente será demostrada uma melhor definição das técnicas e

ferramentas propostas.

3.5 REPRESENTAÇÃO E DESCRIÇÃO

A saída do processo de segmentação é constituída tipicamente de dados em forma de pixels

(raw pixel data), desta forma devemos então transformar esta saída em uma forma adequada

ao processamento computacional, ou seja, devemos fazer uma transformação dos dados

segmentados em estruturas fáceis de se manipular de forma computacional: strings, inteiros,

pontos flutuantes, etc.

O processo de Descrição é também conhecida como seleção de característica, onde

procuramos separar a informação que representa o que esperamos comparar/constatar.

3.6 RECONHECIMENTO E INTERPRETAÇÃO

Reconhecimento é o ato de atribuir um rótulo a um objeto baseado na informação fornecida

por seu descritor. A interpretação envolve a atribuição de um significado a um conjunto de

objetos conhecidos. Esta etapa é muito confusa pelos termos utilizados, porém deve-se

destacar que aqui não identifica nada, nesta fase atribuímos um rótulo e em seguida (ou

contíguo) atribuímos um significado a um conjunto de objetos conhecidos e esse rótulo e este

significado é que será testado junto a uma base de conhecimento previamente categorizada

Page 24: Como Desenvolver Aplicações Utilizando Processamento de Imagens

17

com valores e características que devem ser padrões a fim de se conseguir clareza e eficácia

no processamento.

3.7 RESULTADO

Resultado é o que se espera como saída deste sistema de processamento, e a partir daí

devemos manipular, exibir, ou qualquer outra ação de acordo com a aplicação desejada com

este processamento.

Não necessariamente precisamos passar por todas estas etapas para se chegar ao resultado

esperado, porém o que determinará este fato será como será feito e para que será feito este

processamento.

Page 25: Como Desenvolver Aplicações Utilizando Processamento de Imagens

18

CAPÍTULO 4 - TECNICAS DE PROCESSAMENTO UTILIZANDO O MATLAB

Seguindo a linha de raciocínio do capítulo anterior vamos demonstrar neste capítulo como

utilizar a ferramenta Matlab® (R2010b) para desenvolver os “passos fundamentais”, porém

não será levado em consideração o tipo de projeto, ou seja, demonstraremos de forma

genérica as funções e ferramentas que o software Matlab® oferece.

4.1 DEFINIÇÃO DO PROBLEMA

Este passo no desenvolvimento de qualquer atividade é indiferente de sistema ou ferramenta a

ser utilizado, então iremos propor a seguinte definição:

“Temos em nosso estabelecimento comercial uma câmera de vídeo ao qual é feito um

monitoramento a fim de se preservar a segurança dos funcionários e dos clientes contra furtos

e/ou roubo. Através desta câmera podemos utilizar um sistema computacional (esta é a

proposta) que reconheça os funcionários e/ou clientes caso seja efetuado um furto ou roubo,

assim poderemos identificar o infrator em futuros eventos facilmente, ou ainda, se houver

uma prévia dos recentes infratores da região poderemos evitar que o estabelecimento sofra

também um evento deste”.

Deve-se ressaltar que nesta proposta não será identificado o infrator automaticamente sem

nenhuma informação prévia, ou seja, o sistema identificará o infrator, porém este já será

conhecido.

4.2 AQUISIÇÃO DE IMAGENS

A partir deste passo levaremos em consideração para as demonstrações o problema proposto

no passo anterior e antes de iniciar os passos seguintes falaremos um pouco mais sobre o

software Matlab®. Porém como propomos anteriormente estes passos poderão ser utilizados

para desenvolver qualquer tipo de projeto.

Page 26: Como Desenvolver Aplicações Utilizando Processamento de Imagens

19

O Matlab® é uma ferramenta de utilidades diversas usada largamente no meio científico e

também no meio industrial, e tem como diferenciação de utilidades seus “toolboxes”, que no

caso de processamento de imagens iremos utilizar os seguintes:

Imaq e Image, além dos conjuntos de operadores e funções básicas do próprio software.

Utilizaremos ainda para demonstrações o “Product Help”, ou seja, o Help do Matlab® que é

de grande utilidade e bem extenso.

Na tela inicial do programa temos o seguinte layout como aparência default:

Figura X: Aparência default do software na tela principal

Fonte: Software Matlab® (R2010b).

Nesta tela temos os seguintes componentes para auxílio e controle dos passos que estão sendo

desenvolvidos:

Current Folder: Esta é a área de trabalho ao qual o software controla e mantém todos os

arquivos gerados. O software Matlab® tem esta característica, ele não opera fora dos seus

“limites” dentro da máquina.

Command Windows: Esta janela é a responsável por executar os comandos.

Page 27: Como Desenvolver Aplicações Utilizando Processamento de Imagens

20

Workspace: Neste espaço ficam armazenadas todas as variáveis criadas pelos comandos

executados no Command Window.

Command History: Janela onde ficam documentados todos os comandos executados (ou não)

no Command Window, ou seja, tudo o que for digitado no Command Window será registrado

no Command History.

Deve-se ressaltar que este layout de tela pode ser alterado a qualquer momento pelo usuário,

ou até mesmo incluído outras janelas como, por exemplo, os arquivos de script, que são

arquivos onde podemos criar programas, ou funções ou partes de programas de acordo com a

necessidade de utilização.

Para a aquisição de imagens temos diversas funções como:

videoinput - Construtor de um objeto de entrada no formato de vídeo.

get - Retorna as propriedades do objeto adquirido em forma de imagem.

inspect - Abre uma janela contendo as configurações e propriedades da imagem adquirida.

set - Modifica os valores de propriedades das imagens que serão adquiridas.

getselectedsource - Retorna as propriedades do vídeo corrente.

start - Inicializa a captura do vídeo.

stop - Para a captura do vídeo.

wait - Verifica se o video está rodando.

trigger - Inicialização manual do objeto que esta sendo capturado (vídeo).

triggerconfig - Configura a entrada do objeto no formato de vídeo.

triggerinfo - Retorna todas as configurações validas do trigger.

closepreview – Fecha a janela de visualização do vídeo.

imaqmem - Limita o uso de memória na aquisição do vídeo (frames).

imaqmontage – Mostra as imagens adquiridas em forma de montagem.

imaqtool - Ferramenta de aquisição e configuração manual das propriedades de aquisição de

imagens.

preview – Mostra o vídeo em nova janela.

imaqhelp – Mostra Funções e propriedades para aquisição de imagens.

Page 28: Como Desenvolver Aplicações Utilizando Processamento de Imagens

21

imaqhwinfo - Retorna informações dos hardwares instalados na máquina.

Estas funções destacadas acima são as de uso frequente em sistemas de processamento de

imagens, porém temos que destacar que o mais difícil no processo de aquisição é controlar o

hardware e padronizar as entradas no processo computacional visto que este processo se

tornará automático no sistema proposto.

Todas as funções supracitadas podem ser executadas em arquivos de script ou diretamente

pelo Command Window. A escolha da função correta dependerá então do tipo de entrada que

se fará no sistema, como a nossa entrada será um vídeo, então usaremos a função

“videoinput(‘winvideo’, 1, ‘RGB24_640X480’)” como podemos ver na figura abaixo:

Figura XI: Funcionamento da digitação e execução do código pelo Matlab®

Fonte: Software Matlab® (R2010b).

Note que como não foi informado nenhuma variável recebendo a estrutura de dados contendo

o objeto de vídeo, o próprio software criou a variável “ans”. Note ainda que não precisamos

informar o tipo de dado que a variável irá receber, esta é outra característica própria do

Matlab®.

Page 29: Como Desenvolver Aplicações Utilizando Processamento de Imagens

22

Deve-se saber ainda: o software Matlab® é case sensitive, possui ainda uma ferramenta de

help intelligence, que interpreta o código que esta sendo digitado e lhe fornece as opções para

concluir a “assinatura” do método.

Após digitado o ultimo comando (preview) o software mostra uma outra janela contendo o

vídeo com as características incluídas o comando de entrada:

Figura XII: Exibição do vídeo pelo Matlab®

Fonte: Software Matlab® (R2010b).

Verifica-se que nesta tela do vídeo ainda não temos uma interface para que outras pessoas

possam fazer as comparações entre imagens e verificar se existe a pessoa no ambiente.

O desenvolvimento desta interface pode ser feita como em qualquer outro ambiente de

desenvolvimento, utilizando o GUI Builder (ou simplesmente GUIDE) ou diretamente em

arquivo de script.

Se ainda o desenvolvedor quiser utilizar outra linguagem diferente da proprietária (chamada

m) poderá utilizar ainda a linguagem TLC, C/C++, Java, VHDL, Verilog ou XML/HTML

com uma simples escolha no arquivo de script (ou no projeto inteiro) seguindo o caminho

Page 30: Como Desenvolver Aplicações Utilizando Processamento de Imagens

23

“File\Preferences”, assim será mostrada a seguinte janela contendo as configurações do

software:

Figura XIII: Tipos possíveis de utilização de linguagens no Matlab®

Fonte: Software Matlab® (R2010b).

O que é bem interessante nesta mudança de linguagens é que os métodos do software não

sofrem alterações nas assinaturas, podendo então ser utilizados os mesmos métodos

supracitados em qualquer destas linguagens suportadas pelo Matlab®.

Para o nosso propósito não será discutido então como desenvolver a interface para o sistema,

nos focaremos no reconhecimento e na técnica utilizada para esta finalidade.

Mais a frente discutiremos ainda uma forma de se “produzir” no Matlab® ferramentas para

utilização em outras plataformas de desenvolvimento como .Net, Java e Delphi por exemplo.

4.3 DEFINIÇÃO DA TÉCNICA ESCOLHIDA

Page 31: Como Desenvolver Aplicações Utilizando Processamento de Imagens

24

Como neste projeto esta definido a utilização da técnica conhecida como IPCA acrônimo de

Incremental Principal Component Analysis - Análise de Componentes Principais

Incrementáveis, que é uma forma incremental, em termos computacionais, do PCA -

Principal Component Analysis (Freitas et. al, 2003), temos que a partir deste passo pensar em

como será o tratamento das imagens de entrada para que a técnica seja bem sucedida, então

abaixo será descrita como é o funcionamento desta técnica e por qual razão foi escolhida.

4.3.1 Funcionamento do Ipca

Uma imagem discreta de face pode ser representada como uma matriz X de dimensão l ×c,

onde l é o número de linhas e c é o número de colunas da matriz. No entanto, é possível

representar também essa mesma matriz como um vetor xT n -dimensional, onde n = l . c, e que

na realidade representa a matriz X concatenada. Se considerarmos que a imagem de uma face

pode ser descrita como um vetor no espaço ℜn, então essa face é um ponto nesse espaço ℜn.

Portanto um espaço de faces Zx é um espaço multidimensional que contém todas as faces de

um determinado conjunto de treinamento (TURK & PENTLAND, 1991 apud KITANI &

THOMAZ, 2001).

Considere que temos agora um conjunto de N imagens discretas de faces. Se concatenarmos

as imagens e as agruparmos em uma matriz Zx, a matriz será formada por N.l.c elementos.

Deste modo, cada coluna (ou linha) da matriz Zx pode ser a representação de uma face. A

figura XIV ilustra didaticamente um espaço de faces, cuja dimensão é de N linhas por n

colunas, onde N é o número de faces e n é o produto l.c que representa a dimensionalidade

desse espaço. Apesar das fotos na figura XIV estarem coloridas (RGB_24) o espaço de fotos

desenvolvido no projeto proposto esta representado em fotos preto e branco (tons de cinza),

que compreendem um espaço de 8 bits de luminância, ou seja, cada célula da matriz Zx

representa uma escala monocromática que, por sua vez, pode variar de 256 tons assumindo

somente um destes valores como explicado anteriormente.

Page 32: Como Desenvolver Aplicações Utilizando Processamento de Imagens

25

Figura XIV: Ilustração do arranjo de fotos formado utilizando o IPCA

Fonte: Adaptado de (KITANI & THOMAZ, 2001).

A razão de se concatenar a matriz de face foi baseada no primeiro trabalho apresentado por

(SIROVICH & KIRBY, 1987), onde eles apresentaram a hipótese da redução da

dimensionalidade da matriz de face utilizando uma técnica de compressão de dados muito

utilizada na área de processamento de sinais.

A técnica, que também é conhecida como Técnica de Expansão de Karhunen-Loéve,

normalmente é aplicada em sinais que variam no domínio do tempo e que são representados

como vetores randômicos (FUKUNAGA, 1990). A figura XV ilustra como seria o vetor

imagem de uma face visto como um sinal no domínio do tempo.

Figura XV: Gráfico do vetor de imagem de uma face. No canto superior direito da figura

temos a imagem da face que é representada por este gráfico.

Fonte: Adaptado de (KITANI & THOMAZ, 2001).

Page 33: Como Desenvolver Aplicações Utilizando Processamento de Imagens

26

Seguindo a linha de raciocínio desenvolvida por Sirovich e Kirby esta dimensionalidade pode

ser diminuída o bastante, utilizando-se uma média de tudo aquilo que é comum a todas as

faces (imagens) que compõem o banco de dados, assim conseguimos extrair todas as

redundâncias e melhorar consideravelmente o grau de processamento que será necessário para

a aplicação. Na figura XVI temos um exemplo de “Face Média” e matematicamente temos a

equação (2) para extração desta média:

(2)

Figura XVI: Imagem de uma face média.

Fonte: Adaptado de (KITANI & THOMAZ, 2001).

4.3.2 Autovetores e Autovalores

Autovalores e autovetores são conceitos importantes de matemática, com aplicações práticas

em áreas diversificadas como mecânica quântica, processamento de imagens, análise de

vibrações, mecânica dos sólidos, estatística, etc. (KAMPEN, 2001 disponível em:

http://pt.wikipedia.org/wiki/Matriz_de_covari%C3%A2ncia).

Graficamente a ideia básica pode ser vista de uma forma bastante simples. Seja uma imagem

formada por um retângulo com 2 vetores segundo (a) da Figura XVII. Essa imagem sofre uma

ampliação (transformação) apenas na horizontal, resultando no retângulo (b). Nessa condição,

o vetor v2 passou a v2', que não tem a mesma direção do original v2. Portanto, o vetor v2' não

pode ser representado por v2 multiplicado por um escalar.

Page 34: Como Desenvolver Aplicações Utilizando Processamento de Imagens

27

Mas o vetor v1' tem a mesma direção de v1 e, por isso, pode ser representado por v1

multiplicado por um escalar. Diz-se então que v1 é um autovetor da transformação e que esse

escalar é um autovalor associado.

Figura XVII: Ilustração gráfica de Autovetores e autovalores.

Fonte: Adaptado de (MSPC - Informações Técnicas, disponível em:

http://www.mspc.eng.br/matm/al_auto_val_vet_01.shtml).

Dentro da matriz cada um dos vários autovetores são ortogonais uns aos outros. Em outras

palavras isso significa que essa matriz é multidimensional e a mesma não é graficamente

visualizável. (FRIZERA & VALADÃO, 2008).

Porém, em termos matemáticos pode-se escrever o polinômio como sendo (equação 3):

(3)

Uma matriz guarda todo o banco de dados relativo à imagem (coeficientes Q) e outra os

autovetores (Z) necessários para a reconstrução da mesma (a imagem é representada pela

variável Im). Desta forma, a imagem vira um grande polinômio de grau n, porém com

formato linear.

Por outro lado, apenas a matriz não seria suficiente para representar uma imagem e reconstruí-

la. Para isso são necessários, além dos autovetores, os autovalores, que geram posteriormente,

os coeficientes de multiplicação dos autovetores. (FREITAS et. al., 2003)

Im=[ Z1 Z2 . .. Zn]⋅¿ [ q1 ¿ ] [q2 ¿ ] [. . .¿ ]¿¿

¿¿

Page 35: Como Desenvolver Aplicações Utilizando Processamento de Imagens

28

Quanto ao processo do IPCA muda-se, então, a questão do reprocessamento, já que, neste

caso, não é necessário recalcular toda a matriz - apenas acrescentar os novos vetores e valores

nas matrizes de autovetor e autovalor (FREITAS et. al, 2003).

É importante frisar que como esta técnica exige a retirada de uma “média” das imagens,

temos então um grau de erro que deve ser considerado.

Este erro é na verdade um distanciamento entre as imagens (distanciamento entre os vetores

que são organizados por esta técnica de forma ortogonal uns aos outros) e em processamento

de imagens é chamado de threshold (Valor de corte).

Durante o teste, um novo ponto é formado. Com isso, calcula-se a distância Euclidiana

(distância no espaço n-dimensional). Através do valor dessa distância pode-se determinar de

quem é a face. Para isso determina-se um valor de corte ou threshold. (FREITAS et. al., 2003)

No projeto proposto esta distância foi fixada com valor 2 para que o grau de precisão pudesse

ser satisfeito pelo sistema.

4.3.3 Utilização do Matlab® em outras Plataformas de Desenvolvimento

Como falado anteriormente o Matlab® é uma IDE de desenvolvimento completíssimo e de

alto grau de funcionalidades e ferramentas disponíveis e dentre milhares delas destaco o

Matlab Builder (Construtor), que é uma ferramenta de criação de arquivos diversos (depende

do Builder) para “transferir” funções específicas do Matlab® para a plataforma de destino.

Nesta release estão disponíveis os seguintes Builders:

MATLAB Builder EX (para Microsoft Excel): Esta é uma ferramenta para criação de

arquivos que podem ser incluídos diretamente no Microsoft Excel para utilizar funções

específicas que o próprio Excel talvez não tenha.

MATLAB Builder JA (para Linguagem Java): Esta ferramenta é utilizada para criação de

arquivos para serem incluídos diretamente no compilador Java (O help informa que os testes

de integração foram realizados na IDE Eclipse, mas que não teria problemas em utilizar em

outra IDE).

Page 36: Como Desenvolver Aplicações Utilizando Processamento de Imagens

29

MATLAB Builder NE (para Microsoft .NET Framework): Esta ferramenta é utilizada para

criação de arquivos que serão incluídos diretamente em algum projeto .Net, nele é possível

especificar sobre qual versão dos Frameworks será construído a DLL (Dynamic-link library –

Biblioteca de Ligação Dinâmica).

Na figura XVIII temos uma ilustração do que podemos fazer com essas ferramentas:

Figura XVIII: Ilustração das ferramentas disponíveis no Matlab®.

Fonte: Adaptado de (Product Help do Matlab®).

Todos os aplicativos (executáveis) desenvolvidos pelo Matlab® devem ser configurados na

máquina final de acordo com a figura XIX:

Page 37: Como Desenvolver Aplicações Utilizando Processamento de Imagens

30

Figura XIX: Ilustração das ferramentas disponíveis no Matlab®.

Fonte: Adaptado de (Product Help do Matlab®).

4.4 SEGUIMENTAÇÃO

Para o desenvolvimento deste projeto foi utilizado como segmentação somente a

padronização das imagens capturadas através do vídeo em termos de resolução e de formação

de cor.

Foi determinado que o vídeo será capturado e mostrado para o usuário de forma colorida, ou

seja, no formato RGB, porém para que tivéssemos sucesso no processamento definimos que a

captura e armazenamento ficasse preto e branco (tons de cinza).

Outra padronização realizada foi a compressão da foto para o formato PGM (Portable Gray

Map), que na verdade é uma imagem no formato BMP comprimida em tons de cinza.

Page 38: Como Desenvolver Aplicações Utilizando Processamento de Imagens

31

Devemos deixar claro que o processo de segmentação, como foi dito anteriormente, é o

processo mais complexo de todo o desenvolvimento e, como esta sendo utilizada uma

webcam como forma de captura do vídeo, passamos a considerar que a imagem capturada

estaria segmentada o suficiente ao ponto de termos na tela somente a face da pessoa que

serviria para o banco de imagens e para o teste de reconhecimento.

4.5 APRESENTAÇÃO DOS PASSOS ATÉ A SEGMENTAÇÃO

Para que o algoritmo funcione corretamente é preciso fazer alguns equacionamentos

matemáticos e computacionais logo após a aquisição das imagens.

Então na figura XIX será demonstrado graficamente todo o equacionamento que compõe o

projeto até o “passo v” dos passos fundamentais no processamento de imagens:

Figura XIX: Ilustração gráfica do equacionamento computacional utilizado no projeto.

1

Page 39: Como Desenvolver Aplicações Utilizando Processamento de Imagens

32

4.6 RECONHECIMENTO E INTERPRETAÇÃO

Neste passo do desenvolvimento fazemos a leitura da imagem específica (imagem para o

reconhecimento) e para esta imagem específica fazemos praticamente todos os passos citados

na figura XVIII e adicionamos a mesma na base de fotos.

Após ser adicionada a imagem na base de fotos e rotacionada a matriz de vetores (que

representam as imagens) verifica-se a distancia desta imagem específica com a distancia das

outras imagens, se existir alguma imagem que satisfaça a distancia de acordo com o valor de

distanciamento (threshold) máximo estabelecido esta imagem será validada como sendo a

mais próxima da imagem testada.

Page 40: Como Desenvolver Aplicações Utilizando Processamento de Imagens

33

CAPÍTULO 5 - RESULTADOS EXPERIMENTAIS

Inicialmente para testar códigos e ter mais precisão nos testes foi utilizado o banco de

imagens (faces) de 192 x 168 pixels da Universidade de Yale. Foi utilizada a linguagem

proprietária do software Matlab®. Porém como o intuito deste projeto seria de se obter a

imagem diretamente da câmera e depois testá-la, foi efetuado os testes finais dentro da

perspectiva esperada, ou seja, foram feitos os testes dentro dos padrões de saída da imagem

capturada pela webcam.

Abaixo seguem algumas imagens da utilização do sistema desenvolvido.

Deve-se levar em consideração que o propósito deste trabalho é mostrar o funcionamento do

IPCA e o reconhecimento das imagens, então na interface criada não deve ser levada em

consideração.

Existem ainda algumas funcionalidades na interface que não foram terminadas e por esta

razão estão com a descrição nos botões de “projetos futuros” pois espera-se concluí-los em

breve.

Figura XX:

Demonstração da tela desenvolvida para projeto.

Page 41: Como Desenvolver Aplicações Utilizando Processamento de Imagens

34

O botão “Tirar Foto” é responsável pela captura da imagem, sendo alocada a imagem salva na

pasta correspondente ao Current Folder do Matlab®.

O botão “Testar Foto” é responsável pela leitura e comparação da foto selecionada com as

fotos no banco de imagens, e a figura XXI mostra como se dá essa seleção:

Figura XXI: Demonstração da tela de seleção da foto a ser testada.

Nota-se que a tela de seleção carrega exatamente no local correspondente ao Current Folder e

permite somente a seleção de fotos no formato PGM.

Page 42: Como Desenvolver Aplicações Utilizando Processamento de Imagens

35

CAPÍTULO 6 - PROJETOS FUTUROS

Como neste projeto foi considerada que a face seria tirada diretamente da câmera sem

nenhuma outra seguimentação, pretende-se utilizar meios de seguimentação a fim de detectar

no vídeo as faces sem que seja necessária a ação de um usuário, a fim de que o teste da face se

torne algo automático.

Outro aprimoramento que está em fase de desenvolvimento é manter o banco de dados

sempre ativo enquanto houver vídeo, pois até o momento o executável monta o banco de

imagens somente no momento em que se pede para “testar” a foto, ou seja, quando se clica no

botão “Testar Foto” é que o banco de fotos é montado e testado a imagem.

Page 43: Como Desenvolver Aplicações Utilizando Processamento de Imagens

36

CAPÍTULO 7 - CONCLUSÃO

O IPCA vem sendo largamente utilizado em diversas aplicações e bem difundido nas

comunidades acadêmicas pelo fato de ter um comportamento computacional relativamente

suportável (dependendo do tamanho da aplicação) e de ser relativamente de fácil

compreensão. Este fato computacional foi o caracterizante para a escolha e detalhamento

desta técnica neste trabalho.

Apesar do IPCA ter se mostrado bem eficaz para o reconhecimento de faces, vale destacar

que ele não é empregado somente com esta empregabilidade. Como esta técnica é um

aprimoramento contínuo de vários estudiosos da área tecnológica e seu precursor advém da

área de processamento de sinais, ela pode ser empregada em qualquer tipo de projeto que

tenha como finalidade reconhecer padrões, como por exemplo:

Biometria (Facial, digital, etc.);

Detecção de padrões em objetos;

Leitura de textos;

Reconhecimento de voz;

A grande vantagem e motivação em se utilizar e aprimorar o IPCA, comparando-se com a

técnica PCA (Principal Component Analysis), é o advento de não utilizar redundâncias e

diminuir consideravelmente o nível de utilização de processamento da máquina, ou seja, a

utilização de recursos computacionais diminui consideravelmente com a utilização desta

técnica. Além de não precisar recomeçar todo o processo de reconhecimento ao inserir um

novo parâmetro para análise.

Page 44: Como Desenvolver Aplicações Utilizando Processamento de Imagens

37

REFERENCIAS

ANDRADE NETO, E. L. Sistemas de identificação pessoal utilizando técnicas de reconhecimento e verificação facial automáticas. Campinas: Unicamp, (1997).

APOSTOL, Tom M. MSPC - Informações Técnicas. Acesso em 17 de novembro de 2010,

disponível em: http://www.mspc.eng.br/matm/al_auto_val_vet_01.shtml.

AT&T. The Database of Faces. Acesso em 9 de dezembro de 2010, disponível em http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html.

BONSOR, K. Como funciona o sistema de reconhecimento facial. Acesso em 28 de junho de 2010, disponível em: http://pessoas.hsw.uol.com.br/sistema-de-reconhecimento-facial.htm.

CAPELARO, E. A., MENDONÇA, F. C., & TEIXEIRA, J. Acesso em 18 de junho de 2010,

disponível em: http://educar.sc.usp.br/licenciatura/trabalhos/camera.htm.

CHAPMAN, S. Programação em Matlab para Engenheiros. Thomson Learning, (2003).

CHRISTOUDIAS, M., MORENCY, L.-P., & DARRELL, T. Light Field Appearance Manifolds. Acesso em 26 de 11 de 2008, disponível em: http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/CHRISTOUDIAS1/.

FREITAS, R. A. Sistema de Visão para Robôs Móveis: Uma Aplicação ao Reconhecimento de Referências Geométricas. Vitória: Universidade Federal do Espírito Santo, (1999).

FREITAS, R. A., BASTOS FILHO, T., SARCINELLI FILHO, M., & SANTOS-VICTOR, J. Avaliação de Desempenho de Modelos Incrementais de Autoespaços na Localização de Robôs Móveis. Instituto Superior Técnico/Universidade Federal do Espírito Santo, (2003).

FRIZERA, B. B., VALADÃO, C.T., Desenvolvimento de um Sistema Computacional para o

Reconhecimento de Faces. Serra: UCL - Faculdade do Centro Leste, (2008).

GONZÁLES, R., & WOODS, R. Processamento de imagens digitais. Califórnia: Ed, Edgard Blücher, (2003).

KAMPEN, N.G. Processos Estocásticos em Física e Química. Acesso em 17 de novembro de

2010, disponível em http://pt.wikipedia.org/wiki/Matriz_de_covari%C3%A2ncia.

LU, X. Image Analisys for Face Recognition. Michigan: Michigan State University, (2001).

MAGALHÃES BARBOSA, M. E. A Semiótica na Moda: Uma imagem vale mais que mil palavras. Acesso em 28 de Novembro de 2008, disponível em http://www.filologia.org.br/viiicnlf/anais/caderno12-05.htm.

NÖTH, W. Panorama da Semiótica: de Platão a Pierce. São Paulo, Ed. Annablume, (1995).

Page 45: Como Desenvolver Aplicações Utilizando Processamento de Imagens

38

PANG, S., KASABOV, N., & SEIICHI, O. A Modified Incremental Principal Component. Auckland University/Kobe University, (2001).

SANTAELLA, L. Semiótica Aplicada. São Paulo: Pioneira Thompson Learning, (2002).

SMITH, L. A tutorial on principal component analisys. (2006).

SOBRAL, J. L., Visão Por Computador. Acesso em 20 de novembro de 2010, disponível em

http://gec.di.uminho.pt/lesi/vpc0203/Aula04Cor.pdf.

VON WANGENHEIM, A. Técnicas estatísticas para reconhecimento e detecção de face. Santa Catarina: Universidade Federal de Santa Catarina, (2001).

WIKIMEDIA COMMONS. Disponível em http://commons.wikimedia.org/

WILSON, T. Como funciona a HDMI. Acesso em 26 de Novembro de 2008, disponível em: http://eletronicos.hsw.uol.com.br/hdmi.htm.

WINTERS, N. A Holistic Approach to Mobile Robot Navigation. Dublin: University of Dublin, (2001).

WISKOTT, L. Face Recognition by Elastic Bunch Graph Matching. Rhur University/ University of Southern California, (1997)

YALE, U. O. Yale Database. Acesso em 29 de outubro de 2008, disponível em: http://cvc.yale.edu/projects/yalefaces/yalefaces.html.