monografia placas
Post on 08-Oct-2015
38 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
CENTRO UNIVERSITRIO DE BRASLIA - UniCEUB
CURSO DE ENGENHARIA DE COMPUTAO
JEAN DIAS DO NASCIMENTO
DETECO E RECONHECIMENTO DE PLACA AUTOMOTIVA COM BAIXO
CUSTO
Orientador: Prof. Ms. C. Francisco Javier De Obalda Daz
Braslia
dezembro, 2012
-
JEAN DIAS DO NASCIMENTO
DETECO E RECONHECIMENTO DE PLACA AUTOMOTIVA COM BAIXO
CUSTO
Trabalho apresentado ao Centro Universitrio de Braslia
(UniCEUB) como pr-requisito para a obteno de Certificado
de Concluso de Curso de Engenharia de Computao.
Orientador: Ms. C. Francisco Javier De Obalda Daz.
Braslia
dezembro, 2012
-
JEAN DIAS DO NASCIMENTO
DETECO E RECONHECIMENTO DE PLACA AUTOMOTIVA COM BAIXO
CUSTO
Trabalho apresentado ao Centro Universitrio de Braslia
(UniCEUB) como pr-requisito para a obteno de Certificado
de Concluso de Curso de Engenharia de Computao.
Orientador: Ms. C. Francisco Javier De Obalda Daz.
Este trabalho foi julgado adequado para a obteno do Ttulo de Engenheiro de Computao,
e aprovado em sua forma final pela Faculdade de Tecnologia e Cincias Sociais Aplicadas -
FATECS.
____________________________
Prof. Abiezer Amarilia Fernandes
Coordenador do Curso
Banca Examinadora:
________________________________
Prof. Francisco Javier De Obalda Daz, Ms.
Orientador
________________________________
Prof. Fabiano Mariath DOliveira, Ms.
UniCEUB
________________________________
Prof. Flvio Antnio Klein, Ms.
UnB
________________________________
Prof. Joo Marcos Souza Costa, Esp.
UniCEUB
-
DEDICATRIA
Diz no livro de xodo, 35:35 Encheu-os de
sabedoria do corao, para fazer toda a obra de
mestre, at a mais engenhosa, e a do gravador, em
azul, e em prpura, em carmesim, e em linho fino,
e do tecelo; fazendo toda a obra, e criando
invenes.
Este trabalho s tem significado memorvel
quando existem pessoas que repassam sabedoria e
do companheirismo a cada dia. Dedico esta obra:
Aos meus pais, Jorge Jean e Alda Celeste, pela
orientao do caminho a percorrer com amor e
fraternidade. A minha amada esposa, Marcela
Zago, pela comunho de nossa famlia. A minha
irm, Ana Cludia, que sempre renova o
significado de harmonia e amizade. A Deus, pelo
qual tudo possvel e acontece.
-
AGRADECIMENTOS
Pelo apoio e orientao, professores Francisco Javier e Abiezer Fernandes que
colaboraram de forma relevante para que o trabalho fosse realizado.
-
SUMRIO
DEDICATRIA 4
AGRADECIMENTOS 5
SUMRIO 6
LISTA DE FIGURAS 9
LISTA DE TABELAS 11
LISTA DE ABREVIATURAS E SIGLAS 12
RESUMO 14
ABSTRACT 15
1. INTRODUO 16
1.1. Apresentao do Problema 16
1.2. Objetivo do Trabalho 16
1.2.1. Objetivo geral 16
1.2.2. Objetivo especfico 17
1.3. Justificativa e Importncia do Trabalho 17
1.4. Escopo do Trabalho 17
1.5. Resultados Esperados 18
1.6. Estrutura do Trabalho 19
2. APRESENTAO DO PROBLEMA 20
2.1. O Problema 20
2.2. Solues Existentes 21
2.2.1. Radar e lombada eletrnica 21
2.2.2. FISCA Sistema de Fiscalizao Inteligente 21
-
2.3. Benefcios da Soluo Apresentada 22
3. BASES METODOLGICAS PARA RESOLUO DO PROBLEMA 24
3.1. O que Viso Computacional? 24
3.2. Enfrentando os Desafios 25
3.3. Componentes de um Sistema de Viso Computacional 26
3.4. Sistema tico 29
3.5. Sistema tico Propriamente Dito 32
3.6. Sistema de Iluminao 35
3.7. Fundamentos de Imagem Digital 36
3.8. Rudo 40
3.9. Filtro Gaussiano 42
3.10. Segmentao Baseada em Bordas 44
3.11. Operaes de Dilatao e Eroso da imagem 47
3.12. OpenCV 48
3.13. Tesseract OCR 49
3.14. Linguagem de Programao C/C++ 51
3.14.1. Linguagem C 51
3.14.2. Linguagem C++ 52
4. MODELO PROPOSTO PARA DETECO E RECONHECIMENTO DE PLACA
AUTOMOTIVA 54
4.1. Apresentao Geral do Modelo proposto 54
4.2. Descrio das Etapas do Modelo 54
4.3. Ferramentas Utilizadas 55
4.3.1. Microsoft Visual Studio 2008 55
4.3.2. OpenCV 56
4.3.2.1. Baixando o OpenCV 57
-
4.3.2.2. CMake 58
4.3.2.3. Compilando com o MSVS 2008 59
4.3.2.4. Configurando a biblioteca OpenCV no MSVS 2008 61
4.3.3. Tesseract OCR 63
4.3.3.1. Leptonica 63
4.3.3.2. Baixando o Tesseract OCR 64
4.3.3.3. Compilando o Tesseract OCR 65
4.3.3.4. Configurando a biblioteca Tesseract OCR no MSVS 2008 65
4.4. Descrio da Implementao 66
4.4.1. A captura 67
4.4.2. O pr-processamento 69
4.4.3. A localizao do objeto 72
4.4.4. A validao 75
4.4.5. A segmentao 77
4.4.6. A leitura OCR 78
5. APLICAO PRTICA DA SOLUO PROPOSTA 88
5.1. Apresentao da rea de Aplicao da Soluo 88
5.2. Descrio da Aplicao da Soluo 88
5.3. Resultados da Aplicao da Soluo 90
5.4. Avaliao Global da Soluo 94
6. CONCLUSO 96
6.1. Concluses 96
6.2. Sugestes para Trabalhos Futuros 97
REFERNCIAS 98
APNDICE 104
-
LISTA DE FIGURAS
FIGURA 1.1- ARQUITETURA DO PROJETO 18
FIGURA 2.1- FISCA - BLIZ INTELIGENTE. 22
FIGURA 3.1- PARA O COMPUTADOR O RETROVISOR DE UM CARRO APENA UMA GRADE DE
NMEROS 25
FIGURA 3.2- COMPONENTES GERAIS DE UM SISTEMA DE PROCESSAMENTO DE IMAGENS. 28
FIGURA 3.3- PARMETROS FUNDAMENTAIS PARA DEFINICAO DE UM SISTEMA TICO. 30
FIGURA 3.4 - METODOLOGIA SISTEMTICA PARA O PROJETO DE UM SISTEMA DE VISO
COMPUTACIONAL. 31
FIGURA 3.5- RELACIONAMENTO ENTRE A PROFUNDIDADE DE CAMPO E A ABERTURA DE LENTES.
33
FIGURA 3.6 - FAIXAS DO ESPECTRO LUMINOSO. 35
FIGURA 3.7 - UMA IMAGEM MONOCROMTICA E A CONVENO UTILIZADA PARA O PAR DE EIXOS
(X,Y). 37
FIGURA 3.8 - OS COMPONENTES ILUMINNCIA (I) E REFLETNCIA (R) DE UMA IMAGEM. 38
FIGURA 3.9 - (A) IMAGEM RUIDOSA. (B) BORDAS DETECTADAS PELO MTODO DE PREWITT. (C)
FILTRAGEM PELA CONVOLUO COM UMA GAUSSINA. 42
FIGURA 3.10 - FILTRO GAUSSIANO 43
FIGURA 3.11- DETECO DE BORDAS DE CANNY 46
FIGURA 3.12 - PRINCPIO DE FUNCIONAMENTO DE OPERADORES MORFOLGICOS. 48
FIGURA 3.13 - A ESTRUTURA BSICA DO OPENCV. 49
FIGURA 4.1- MODELO PROPOSTO NO PROJETO 54
FIGURA 4.2 - INSTALADOR DO MICROSOFT VISUAL STUDIO 2008 56
FIGURA 4.3 - TORTOISESVN 57
FIGURE 4.4 - CMAKE 59
-
FIGURA 4.5 - COMPILAO DO OPENCV 60
FIGURA 4.6 - TORTOISE TESSERACT OCR 64
FIGURA 4.7 ESTRUTURA DO PROGRAMA IMPLEMENTADO 67
FIGURE 4.8- MODELOS DE PLACAS ADOTAS PELO CONTRAN. 70
FIGURE 4.9- TRANSFORMAO DE CORES EM HLS. 71
FIGURA 4.10 - SUAVIZAO GAUSSIANA. 71
FIGURA 4.11- DETECO DE BORDAS DE CANNY. 73
FIGURA 4.12- CONTORNOS ENCONTRADOS PELO MTODO CVFINDCONTOURS, UTILIZANDO O
MODO CV_RECT_TREE E MTODO CV_CHAIN_APPROX_SIMPLE DE BUSCA. 74
FIGURA 4.13- MODO CV_RETR_TREE. RECUPERA TODOS OS CONTORNOS E RECONSTRI A
HIERARQUIA COMPLETA DE CONTORNOS ANINHADOS. 74
FIGURA 4.14 ESPECIFICAO DA PLACA AUTOMOTIVA EM MM PARA CARROS E CAMINHES. 75
FIGURA 4.15- LOCALIZAO DA PLACA. 77
FIGURA 4.16- PLACA RECORDADA E REDIMENSIONADA. 78
FIGURA 4.17- TIPOS DE LIMIARIZAES UTILIZADAS. 80
FIGURA 4.18- PLACA EM PRETO E BRANCO APS O THRESHOLD. 81
FIGURA 4.19- PLACA APS O DILATE E ERODE. PREPARADO PARA LEITURA. 81
FIGURA 4.20- ESPECIFICAO DE FONTE PARA PLACAS. 82
FIGURA 4.21- ARQUIVO PLACA.ARIAL.EXP0.TIF. CARACTERES UTILIZADOS PARA O
TREINAMENTO DA FERRAMENTA DE OCR. 83
FIGURA 5.1-MOTION EYE DO SONY VAIO. 89
FIGURA 5.2- CMERA ISIGHT DE 8 MEGAPIXELS 89
-
LISTA DE TABELAS
TABELA 3.1- EXEMPLOS DE VALORES PARA I(X,Y) [EM LUX OU LMEN/M2]. ............................ 38
TABELA 3.2- EXEMPLOS DE VALORES PARA R(X,Y). .................................................................. 38
TABELA 3.3 - NMERO DE BYTES NECESSRIOS PARA ARMAZENAR UMA IMAGEM DIGITAL NXN
COM 2N NVEIS. .................................................................................................................. 40
TABELA 5.1- EXATIDO NA DETECO DA PLACA ..................................................................... 90
TABELA 5.2- PERFORMANCE DO ALGORITMO ............................................................................ 91
TABELA 5.3- EXATIDO DO TESSERACT OCR ........................................................................... 91
TABELA 5.4 - PERFORMANCES DOS SISTEMAS DE DETECO DE PLACAS AUTOMOTIVAS, NAS
LITERATURAS. .................................................................................................................... 92
-
LISTA DE ABREVIATURAS E SIGLAS
A/D Analgico/Digital
ALGOL ALGOrithmic Language
API Application Programming Interface
ASCII American Standard Code for Information Interchange
BCPL Basic Combined Programming Language
CLU CLUsters Language
CNSeg Confederao Nacional das Empresas de Seguros Gerais, Previdncia Privada e
Vida, Sade Suplementar e Capitalizao
CONTRAN Conselho Nacional de Transito
FISCA Sistema de Fiscalizao Inteligente
HSL Hue Saturation Lightness
IP Interface Protocols
LCD Liquid Crystal Display
LED Light Emitting Diode Displays
ML Metalanguage
MSVS Microsoft Visual Studio
OCR Optical Character Recognition
RAM Random Access Memory
RGB Red-Green-Blue
SURF Speedef-Up Robust Features
SVN Subversion
TCP Transmission Control Protocol
UF Unidade Federativa
UTF-8 8-bit Unicode Transformation Format
-
VGA Video Graphics Array
-
RESUMO
A proposta desse trabalho apresentar uma soluo de viso computacional para
deteco e reconhecimento de placa automotiva utilizando cmeras de baixo custo e
bibliotecas open source de tratamento de imagem OpenCV e de reconhecimento de caracteres
Tesseract OCR. Sendo assim, criado um modelo seguindo os conceitos da viso
computacional abordado em seis etapas, todas comentadas em nvel de instalao e
implementao, sejam elas: a captura, o pr-processamento, a localizao, a validao, a
segmentao e por final transcrevendo a imagem da placa do veculo em caracteres. Aps o
desenvolvimento das etapas, so realizadas trs aferies: do nvel de exatido na deteco da
placa do veiculo, do desempenho do algoritmo e da exatido na converso dos caracteres da
imagem para o formato texto. Neste trabalho so apresentadas todas as dificuldades que foram
encontradas no transcorrer do projeto, desde a fase de concepo aos resultados obtidos,
colecionando assim, vrios materiais tcnicos para se trabalhar com a viso computacional e
proporcionando um exemplo de aplicao que ajudar entender melhor cada etapa.
Palavras Chave: viso computacional, OpenCV, Tesseract OCR, placa automotiva, deteco,
reconhecimento.
-
ABSTRACT
The purpose of this study is to present a computer vision solution for detection and
recognition of automotive plate using inexpensive cameras and opensource libraries like
OpenCV processing image and Tesseract OCR character recognition. Thus, a model is created
following the concepts of computer vision approached in six steps, all commented on the
level of installation and implementation, they are: the capture, preprocessing, location,
validation, targeting and end transcribing the image of the characters on board the vehicle.
After the development of the steps are performed three measurements: the level of accuracy in
detecting plate of the vehicle, the algorithm's performance and accuracy in converting the
characters from the image into the text format. This work presents all the difficulties that were
encountered in the course of the project, from the design stage to the results obtained,
collecting so many technical materials to work with computer vision and providing an
example application that will help better understand each step.
Keywords: computer vision, OpenCV, Tesseract OCR, automotive plate, detection,
recognition.
-
16
1. INTRODUO
1.1. Apresentao do Problema
Os seres humanos podem reconhecer, sem muito esforo, objetos em movimento
utilizando o sentido da viso. E o avano da tecnologia, em capacidade de processamento,
memria e sensoriamento, alm do conjunto de bibliotecas de softwares, envolvendo
melhores prticas e tcnicas, vem reconstruindo a possibilidade dessa capacidade humana.
Porm, a tarefa de reconhecimento de um objeto especfico pelo computador em uma
imagem, um dos tpicos mais complexos no campo da programao visual. O
reconhecimento de uma placa veicular um pequeno desafio nessa rea, devido aos diferentes
tipos, formas e cores. Tambm, dos diversos meios de exposio luminosa, ngulo e distncia
durante aquisio da imagem. Alm disso, para esse tipo de aplicao, fundamental utilizar
uma codificao que satisfaa um rpido processamento para reconhecimento dos padres,
tpico de sistemas que operam em tempo real.
Diante do exposto questiona-se: como possvel localizar e determinar padres de
objetos atravs de uma cmera? Como por exemplo: localizar uma placa veicular em uma
rodovia.
1.2. Objetivo do Trabalho
1.2.1. Objetivo geral
A proposta desse trabalho desenvolver um software que identifique a placa veicular
por vdeo imagem utilizando uma cmeras de baixo custo, como por exemplo, de um celular,
adotando melhores tcnicas e estudos acadmicos em filtros, deteco de padres e
bibliotecas de software, utilizando como base as interfaces de programao de aplicativos
(API) OpenCV e Tessaract OCR, na linguagem de programao C/C++.
-
17
1.2.2. Objetivo especfico
Para alcanar o objetivo geral do projeto, foram traados alguns objetivos especficos
que primeiramente precisavam ser atendidos:
Identificar as melhores prticas para a programao em C/C++;
Conhecer o funcionamento de sistema de viso: sistema tico, sistema de iluminao,
sistema de aquisio de imagens, sistema de processamento de dados, propriedades
das imagens, pr-processamento, tcnicas de segmentao, filtros e reconhecimento de
padres;
Integrar as bibliotecas de tratamento de imagem OpenCV e de reconhecimento de
caracteres Tesseract OCR, aplicando-as.
1.3. Justificativa e Importncia do Trabalho
Essa necessidade de reconhecer uma placa veicular vem ganhando espao comercial,
onde cada vez mais, o sistema de transporte e segurana vem incrementando benefcios vida
dos cidados, uma vez que pode ser utilizado em inmeras aplicaes, como em controle de
acesso, monitoramento e segurana. Exemplos: utilizando em acessos aos estacionamentos,
controle de trfego em rodovias, em pedgios, em deteco e controle de veculos pelo
departamento de trnsito etc.
1.4. Escopo do Trabalho
Sendo assim, este trabalho dar nfase somente implementao do aplicativo:
deteco e leitura da placa veicular para carros e caminhes - respeitando as possibilidades
impostas pelas configuraes mnimas do meio fsico (distncias, ngulos, condies
climticas e iluminao) e dispositivos eletrnicos (cmera e microcomputador), esclarecidas
ao longo desse trabalho. A figura 1.1 a seguir representa a proposta global:
-
18
Figura 1.- Arquitetura do projeto
Fonte: Autor.
1.5. Resultados Esperados
O projeto final tem por finalidade:
A entrada de um vdeo em tempo real ou gravado;
A deteco da placa do veculo;
A leitura da placa detectada para o formato texto.
Espera-se tambm com esse trabalho dar profundidade ao assunto, aplicando tcnicas
cada vez mais elaboradas para deteco de objetos e padres, com possibilidade de futura
comercializao.
-
19
1.6. Estrutura do Trabalho
Alm deste captulo introdutrio, esse trabalho est estruturado em mais cinco
captulos, organizados da seguinte forma:
Captulo 2 Apresentao do Problema: Nesse captulo apresentada uma descrio
do problema que o projeto pretende resolver. Primeiramente sero mostrados alguns
dados atuais e como o problema vem sendo resolvido por alguns profissionais da rea.
Em seguida so mostrados os benefcios da soluo apresentada.
Captulo 3 Bases Metodolgicas para a Resoluo do Problema: Aqui a monografia
apresenta todo o referencial terico e tecnolgico que embasa o projeto. Alm de
aplicar contedos vistos nas disciplinas para a resoluo do problema proposto.
Captulo 4 Modelo Proposto: Esse captulo detalha todas as etapas e passos
necessrios para a resoluo do problema apresentado no captulo 2.
Captulo 5 Aplicao do Modelo Proposto: apresentada nesse captulo uma
aplicao prtica, envolvendo um caso real de aplicao, mostrando a viabilidade da
proposta de resoluo sugerida. Aqui so demonstrados os testes, a simulao e a
avaliao do projeto.
Captulo 6 Concluso: Com este termina-se a documentao do trabalho, permitindo
uma anlise completa de todo o desenvolvimento do projeto e da monografia. Em
seguida so apresentadas sugestes para trabalhos futuros.
-
20
2. APRESENTAO DO PROBLEMA
2.1. O Problema
Para muitos especialistas, as estatsticas oficiais no Brasil no relatam a real situao
do trnsito no pas. A demora em compilar os dados obtidos e a forma como so notificados,
at mesmo pelos estados e municpios, comprometem o resultado final das estatsticas. Por
exemplo, sabe-se que atualmente existe um aumento desenfreado da frota de veculos e que a
malha viria das grandes cidades j no suporta essa capacidade de crescimento, porm no se
sabe muito bem como est sendo distribudo o fluxo de veculos que trafegam naquele
determinado instante ou perodo em uma via central de uma capital, inviabilizando a tomada
de decises instantneas para controlar o trafego. Ou, no tem informaes mais elaboradas
da quantidade de carros que trafegam em uma via sem o devido licenciamento do veculo.
Uma situao que muito vem se discutindo tambm sobre o controle da segurana
pblica. Estatsticas do ms de junho de 2012, elaborado pela CNseg (Confederao Nacional
das Empresas de Seguros Gerais, Previdncia Privada e Vida, Sade Suplementar e
Capitalizao), revelou que 19.987 veculos foram furtados no Brasil. Esses elevados nmeros
refletem a ineficincia dos sistemas de segurana.
Portanto, na tendncia natural, previsto que no decorrer do tempo estes nmeros
aumentem ainda mais, tornando o monitoramento e a identificao dos veculos um problema
complexo, trabalhoso ou mesmo ineficiente.
Sendo assim, o intuito deste projeto desenvolver um aplicativo que ajude a realizar o
reconhecimento da placa do veculo, auxiliando, assim, trabalhos futuros que consigam
solucionar os problemas que envolvem a fiscalizao urbana, a gesto do trnsito e a
segurana pblica.
-
21
2.2. Solues Existentes
2.2.1. Radar e lombada eletrnica
Atualmente, a forma mais comum de monitoramento e fiscalizao dos veculos so os
radares fixos ou mveis que existem nas ruas das grandes cidades.
Existem quatro tipos de radares que multam carros, o radar fixo um deles. Seu
funcionamento bastante simples e acontece sem qualquer interveno humana. So trs
laos detectores em cada faixa de uma via. Quando um veculo passa, os laos calculam sua
velocidade. Se o motorista estiver acima da velocidade permitida no local, a cmera
fotogrfica acionada. Para no ofuscar o motorista durante a noite, alguns radares utilizam
flash infravermelho. O sistema independente em cada faixa, ou seja, se dois carros passarem
ao mesmo tempo um do lado do outro em um radar, ele consegue diferenciar a velocidade.
Os outros trs tipos de radares tambm funcionam de modo parecido, mas com
algumas diferenas. No primeiro, h totens na calada que mostram a velocidade do veculo
para o motorista utilizando um lao detector que calcula a velocidade do carro. O segundo o
radar esttico com trip popularmente conhecido como o radar mvel dois feixes de
laser perpendiculares pista calculam a velocidade dos carros que passam. Esse sistema
incapaz de diferenciar dois carros que passem juntos por um feixe. Assim, quando isso
acontece, o radar anula a medio, mesmo que um dos veculos esteja em alta velocidade. O
ltimo tipo de radar o nico realmente mvel e tambm o nico que , de fato, um radar,
pois usa o efeito doppler para clculo da velocidade. Apontado para um veculo, ele lana
uma onda eletromagntica que, aps atingir o veculo e voltar, mostra a velocidade em que ele
estava.
2.2.2. FISCA Sistema de Fiscalizao Inteligente
A empresa Search Tecnologia desenvolveu um produto chamado FISCA visando
fiscalizar os veculos cadastrados na base local e de outras UF's do Departamento de Transito
(DETRAN), propondo a deteco instantnea das irregularidades dos veculos que trafegam.
-
22
O sistema captura a placa dos veculos que cruzam pela barreira (BLITZ), por meio de
cmara. O procedimento pode capturar as placas dianteiras ou traseiras dos veculos.
O sistema transmite a placa em forma de imagem para uma estao de reconhecimento
de caracteres onde convertida para arquivo texto e encaminha para o sistema central de
processamento que por sua vez, verifica as informaes de dbitos, informaes de bloqueios,
informaes de roubo/furto, informaes de seguro obrigatrio e ainda os dados do condutor
se este for o proprietrio do veiculo.
A figura 2.1 a seguir, exemplifica o funcionamento.
Figura 2.- FISCA - Bliz Inteligente.
Fonte: extrado da internet no endereo, em 13/10/12: http://detran.ap.gov.br/produtos/fisca/fisca.jsp
2.3. Benefcios da Soluo Apresentada
A ideia de trazer a inteligncia na fiscalizao com a prvia triagem dos veculos,
identificando possveis usurios com problemas e prestando servios para corrigirem suas
pendncias com os rgos arrecadadores, ou na possibilidade de identificao e localizao
imediata de veculo com registro de roubo e bloqueios judiciais para apreenso do veculo,
-
23
so alguns dos benefcios para o sistema. Essa possibilidade aumentaria a eficincia das
autoridades de fiscalizao, acabando com a seleo aleatria de veculos e prestando um
servio de segurana eficiente.
-
24
3. BASES METODOLGICAS PARA RESOLUO DO PROBLEMA
Nas prximas sees sero apresentados conceitos importantes para o
desenvolvimento do projeto.
3.1. O que Viso Computacional?
Viso computacional a transformao de dados de uma cmera fotogrfica ou de
vdeo em qualquer uma deciso ou em uma nova representao, segundo os autores Trucco
(1998) e Forsyth (2003). Todas essas transformaes so feitas para alcanar algum objetivo
particular. Os dados de entrada podem incluir uma informao de contexto como tem um
carro nesse local ou o laser localizador indica um objeto est a 1 metro de distncia". A
deciso pode ser o carro est em movimento" ou existem 14 clulas tumorais neste slide. A
nova representao pode transformar uma imagem colorida em escala de cinza ou remoo de
uma cena a partir de uma sequncia de imagens.
Como criaturas visuais, fcil o ser humano se enganar pensando que o computador
realizar tarefas de forma simples. Quo difcil encontrar, por exemplo, um carro quando
algum est olhando para ele em uma imagem? O crebro humano divide a viso em muitos
canais diferentes, onde exprimem uma grande quantidade de informaes em seu crebro. O
crebro humano tambm tem um sistema de deteco que cruza informaes ao ver uma parte
de um objeto, utilizando uma espcie de realimentao que cruza informaes associadas ao
longo da experincia vivida.
Num sistema de viso artificial, no entanto, um computador recebe grandes
quantidades de nmeros a partir de uma cmera ou de um meio de armazenamento de
informao. Que, para a maior parte, no h reconhecimento do padro interno ou nenhum
controle automtico de foco e abertura. Tambm no h associaes cruzadas com anos de
experincia. Assim, por inferncia ao exposto, conclui-se que a rea da viso computacional
pouco desenvolvida, exigindo assim, vrios estudos complexos de fsica, matemtica e
computao.
A Figura 3.1 mostra a imagem de um automvel. Nesse quadro, existe um retrovisor
do lado do motorista. No entanto, o que o computador "v" apenas uma grade de nmeros.
-
25
Estes nmeros trazem poucas informaes. Existe assim, a difcil misso de transformar esta
grande quantidade de nmeros em sentido, o que faz o estudo da viso computacional uma
tarefa difcil.
Figura 3.- para o computador o retrovisor de um carro apena uma grade de nmeros
Fonte: Bradski e Kaehler (2008).
Outro motivo importante que os dados so corrompidos por rudo e distoro. Tal
fato decorre de variaes no mundo (clima, iluminao, reflexos, movimentos), imperfeies
na lente e configurao mecnica, o tempo de integrao com o sensor (borro na imagem), o
rudo eltrico no sensor ou outros aparelhos eletrnicos e artefatos de compresso aps
captura de imagem. Dado os desafios, como obter algum progresso?
3.2. Enfrentando os Desafios
Para o autor E. Roy Davies (2005), a viso computacional depende de vrios mtodos
para ter uma margem de sucesso considervel. Desde a aquisio da imagem tomada de
deciso. A seguir, algumas resumidamente:
-
26
Aquisio de imagem: atualmente existem de vrios modelos de sensores de imagem,
como por exemplo: as cmeras fotogrficas, dispositivos de infravermelho e
ultravioleta, sensores gamas etc. Que tem por finalidade extrair um conjunto de
informaes bidimensional ou tridimensional.
Pr-processamento: antes que algum mtodo de viso computacional possa ser
aplicado, a fim de extrair alguma informao especfica, geralmente necessrio
processar os dados de modo a assegurar que a mesma satisfaa certas hipteses
impostas pelo mtodo. Exemplos so: re-amostragem, a fim de assegurar que o
sistema de coordenadas est correta. A reduo do rudo, a fim de assegurar que o
rudo do sensor no introduza informaes falsas. Aumento de contraste, para
assegurar que a informao relevante seja detectada.
Segmentao: um ponto importante para deteco de um objeto conhecer as regies
da imagem, pontuando-as por nveis de interesse ou relevncia.
Alto nvel de processamento: nessa etapa, tipicamente utiliza-se um pequeno
conjunto de informaes, assumindo que contenha o objeto especfico de pesquisa.
Como por exemplo: verifica-se se os dados satisfazem o modelo bsico ou um
pressuposto especfico das informaes. Assim como os parmetros de observao,
como o tamanho do objeto ou a posio onde este se encontra. O reconhecimento da
imagem, classificando-a como um objeto. E o registro da informao, comparando ou
combinando duas vises de um mesmo cenrio.
Tomada de deciso: nesse nvel, o sistema toma a deciso final. Como por exemplo:
encontrou ou no o objeto de estudo. Se, passa ou descarta o produto, pela inspeo
automtica de qualidade. Sinaliza o cenrio, indicando se existem as caractersticas
informadas, como a deteco da placa do automvel ou localizao de uma
determinada pessoa em um local.
3.3. Componentes de um Sistema de Viso Computacional
Sistemas de viso integram, em uma nica soluo, uma srie de tecnologias
diferentes, permitindo a grande flexibilidade no desenvolvimento de aplicaes em diversas
reas do conhecimento.
-
27
A organizao destes sistemas em diferentes partes/componentes conveniente, pois
permite o estudo de cada tecnologia empregada no sistema em separado.
Gonzalez and Woods (2002) apresentam uma estrutura de componentes interligados
para a organizao de sistemas de processamento de imagens como pode ser visto na figura
3.2.
Segue uma breve descrio de cada componente do modelo:
Sensores: dispositivo fsico sensvel energia irradiada pelo objeto do qual se
pretende adquirir uma imagem, convertendo-a num sinal eltrico proporcional
intensidade da energia recebida.
Hardware de Aquisio: dispositivo responsvel pela digitalizao do sinal
proveniente do sensor e por realizar algum pr-processamento sobre estes dados antes
de envi-los ao computador.
Computador: o elemento principal do sistema, que coordena todas as atividades
desempenhadas, desde o acionamento do hardware de aquisio da imagem, as tarefas
do software de processamento de imagem, o armazenamento dos dados, cpia backup
em mdias, at a visualizao dos resultados em um display. De acordo com o tipo de
aplicao, o computador pode ser um PC comum, ou um super computador, ou at
mesmo uma unidade de processamento dedicada ao controle das tarefas do sistema,
podendo estar embutido totalmente junto ao sensor e ao hardware de aquisio das
imagens (cmeras inteligentes).
Software de Processamento: consiste de uma cadeia de algoritmos de processamento
de imagem ordenada de forma a solucionar o problema em questo, retornando dados
importantes para o computador, o qual deve tomar as decises em relao aos
resultados apresentados.
Armazenamento: espao de memria dedicada ao armazenamento das imagens e
dados adquiridos pelo sistema para possibilitar seu processamento de forma rpida e
otimizada. Compreende o espao de memria RAM no computador, memria no
prprio hardware de aquisio ou at mesmo as demais mdias de acesso mais lento do
computador.
-
28
Displays: dispositivos responsveis por apresentar um resultado grfico do estado de
evoluo do sistema ao usurio. Pode ser um monitor, LCDs, telas de plasma, dentre
outros.
Meios de cpia: dispositivos que fazem a cpia fsica segura da informao adquirida
e processada pelo sistema. Podem ser impressoras, mdias ticas, cartes de memria,
dentre outros.
Rede: a rede um componente essencial do sistema principalmente quando os
resultados do sistema tm de ser enviados a uma estao remota distante do local de
operao do sistema.
Figura 3.- Componentes gerais de um sistema de processamento de imagens.
Fonte: Gonzalez and Woods (2002).
-
29
J para a organizao modular de um sistema de viso completo, segundo o autor
Jhne (1999) apresenta uma estrutura de componentes visando separar metodicamente as
diferentes tecnologias contidas no sistema.
Fonte de Radiao: iluminao adequada para o realce das caractersticas do objeto
em estudo necessria, tendo em vista que a maioria dos objetos no emitem luz
prpria, sendo esta importante para sensibilizar o sensor de aquisio da imagem.
Cmera: direciona e coleta a radiao proveniente do objeto em estudo para o sensor
de aquisio.
Sensor: converte o sinal de radiao recebido em outro compreensvel unidade de
processamento.
Unidade de Processamento: coleta, organiza e processa os sinais recebidos do
sensor, extraindo caractersticas e tomando decises a partir destas informaes.
Atores: reagem ao resultado das observaes realizadas pela unidade de
processamento.
3.4. Sistema tico
No desenvolvimento de uma aplicao de viso, deve-se tomar muito cuidado na
escolha de cada componente do sistema. Um princpio bsico para que se possa escolher bons
algoritmos de processamento de imagens e alcanar bons resultados na interpretao das
informaes, obter como entrada do sistema uma imagem de boa qualidade (Davies, 2005);
(Jain, Kasturi e Schunck, 1995). Ou seja, a etapa de aquisio da imagem deve ser bem
configurada, o que implica a escolha correta e precisa do hardware do sistema de viso.
Conforme explicado anteriormente, erros na configurao destes equipamentos, como por
exemplo, obteno de imagens escuras ou com sombras perturbadoras, foco inapropriado,
magnificao insuficiente, tempo de aquisio imprprio e rudos demasiados podem
inviabilizar a implementao da aplicao.
-
30
Alguns parmetros de um sistema de viso exercem normalmente maior influncia
sobre a configurao do sistema tico. Estes parmetros so ditos parmetros fundamentais,
sendo necessrio familiarizar-se com os mesmos para de iniciar um projeto.
A figura 3.3 ilustra estes parmetros.
Figura 3.- Parmetros fundamentais para definicao de um sistema tico.
Fonte: Edmund Optics em http://www.edmundoptics.com/
Segue uma descrio detalhada dos mesmos parmetros segundo os autores Jain,
Kasturi and Brian (1995):
Campo de Viso (Field of Vision FOV): representa a rea visvel do objeto em
estudo que incide sobre o sensor, ou seja, a poro do objeto que preenche e
sensibiliza a rea do sensor.
Distncia de Trabalho (Working Distance WD): representa a distncia da parte
frontal das lentes at a superfcie do objeto. Trata-se normalmente de uma faixa de
valores (mximo e mnimo).
Profundidade de Campo (Depth of Field DOF): representa a maior distncia (em
termos profundidade no campo de viso) que pode ser mantida em foco no objeto de
estudo para uma determinada distncia de trabalho. Tambm pode ser vista como a
quantidade de movimento permitida ao objeto que ainda conserve foco na rea ou
superfcie inspecionada.
-
31
Resoluo (Resolution R): representa a menor poro do objeto em estudo que pode
ser distinguida pelo sistema. normalmente visualizada em pares de linha, ou em
nmero de pixels, e tambm bem conhecida pela expresso resoluo espacial.
Tamanho do Sensor (Sensor Size SS): representa o tamanho da rea ativa do sensor,
especificada em sua dimenso horizontal.
Desta forma, o primeiro passo de um projeto de sistema de viso identificar os
parmetros fundamentais na aplicao, que permitem inferir a respeito dos demais
dispositivos necessrios ao sistema. A figura 3.4 apresenta uma metodologia sistemtica para
o projeto de um sistema de viso do ponto de vista do hardware do sistema (Deschamps,
2004).
Figura 3. - Metodologia sistemtica para o projeto de um sistema de viso computacional.
Fonte: Deschamps (2004).
-
32
Observa-se no diagrama que o projeto inicia sempre com a identificao dos
parmetros fundamentais para a boa formao das imagens (FOV, DOF, WD, R, SS e
derivados). Na sequncia, um pr-projeto do sistema de processamento pode ser inferido, de
acordo com as restries temporais da aplicao. Em geral nesta fase j foram adquiridas
algumas imagens do objeto de estudo, e pode-se tentar inferir solues preliminares para o
processamento destas.
Um sensor para aquisio das imagens deve ser escolhido, levando-se em conta o tipo
de varredura, taxa de aquisio e resoluo necessrias para atacar o problema. O conjunto
tico e de iluminao devem ser ajustados para permitir correta magnificao, foco e destaque
para o objeto em estudo na imagem. Em geral a escolha de ambos estes sistemas feita de
maneira paralela pela forte ligao de algumas caractersticas das lentes e a quantidade de
luminosidade que afeta o sistema.
3.5. Sistema tico Propriamente Dito
O sistema tico formado pela composio de lentes, tubos extensores e de
montagem, filtros, difusores, polarizadores, espelhos, prismas e fibras ticas, sendo
responsvel pelo direcionamento e dimensionamento dos feixes luminosos que provm do
objeto para o sensor tico (Jhne, 1999).
As lentes definem a superfcie de foco e a magnificao (ampliao ou reduo) da
imagem do objeto em estudo. Podem ser cncavas, convexas, plano-convexas, telecntricas,
dentre outras. Os tubos extensores (ou espaadores) auxiliam na magnificao da imagem do
objeto em estudo, porm, diminuem a quantidade de iluminao incidente sobre o sensor e
limitam a distncia de trabalho. J os tubos de montagem servem para adaptar diferentes
padres de lentes e cmeras. Filtros extraem frequncias especficas do espectro luminoso que
incide no sensor, como por exemplo, filtros de cores visveis ao olho humano, filtros
infravermelhos e ultravioletas, dentre outros. Difusores so aplicados no espalhamento ou
disperso dos raios luminosos incidindo sobre os objetos, para dar um aspecto mais
homogneo de iluminao. J os polarizadores filtram a intensidade dos feixes luminosos
incidentes sobre o objeto em estudo. Espelhos so usados na manipulao da trajetria dos
feixes luminosos incidentes na cena em estudo por reflexo, sendo muito usados para simular
dupla aquisio de imagens, ou seja, aquisio feita por duas cmeras, porm, realizada com
-
33
apenas uma cmera, para economizar custos do sistema. Os prismas tambm possuem
caractersticas reflexivas, porm, costumam ser usados para realizar a diviso dos feixes
luminosos em mais de uma direo, ou at mesmo a separao de componentes da luz.
Abaixo alguns conceitos para entendimento do sistema tico:
Abertura de lentes ( f /# ou f-number): representa o controle de abertura da ris das
lentes, proporcionando uma medida da quantidade de luminosidade que sensibiliza o
sensor tico. medida que a ris se fecha, f /# aumenta. H uma relao ntima entre a
abertura de lentes e a profundidade de campo do sistema, como pode ser visto na
figura 3.5. H um aumento na profundidade de campo do sistema medida que a
abertura da ris diminui. Em contrapartida, deve-se compensar a quantidade luminosa
incidente no sensor aumentando a potncia da fonte luminosa.
Figura 3.- Relacionamento entre a profundidade de campo e a abertura de lentes.
Fonte: Edmund Optics em http://www.edmundoptics.com/
Magnificaes primria: representam a relao de proporo entre as dimenses do
objeto em estudo no mundo real e as imagens projetadas no sistema. Representa o
quanto o objeto em estudo ser aumentado (ou diminudo) de acordo com o tamanho
da imagem projetada no sensor.
-
34
Limites focais da lente: influenciada diretamente pela distncia de trabalho do
sistema, ou seja, necessrio conhecer a distncia do objeto em estudo em relao s
lentes para poder determinar onde queremos manter foco para a aquisio das
imagens. Os limites focais significam na verdade uma faixa de valores de distncias
em que o sistema alcana foco sobre o objeto. O termo limite focal tambm
conhecido como profundidade de foco na literatura de viso de Griot (1999).
Contraste: uma comparao entre as diversas tonalidades de cinza (intensidade
luminosa) da imagem adquirida, que auxilia a identificar e separar objetos do fundo da
imagem. fortemente influenciado pelas caractersticas da lente, da cmera e
principalmente da iluminao do sistema. O contraste normalmente definido em
termos de porcentagem. Por exemplo, uma linha preta desenhada sobre uma superfcie
branca resulta em 100% de contraste entre a linha e a superfcie.
Distores e erros de perspectiva: fenmenos como o de distoro e os erros de
perspectiva alteram a qualidade final da imagem. A distoro um fenmeno (ou
aberrao de natureza geomtrica) que ocorre com as lentes devido as suas
caractersticas esfricas, produzindo diferenas de magnificao em pontos distintos
da imagem, fazendo com que os objetos sejam dispostos incorretamente na imagem
em relao ao seu centro. Ou seja, a distoro no causa perda de informaes na
imagem, mas sim um posicionamento incorreto de partes da imagem. A distoro
(D%) pode ser corrigida por software calculando a porcentagem de erro de distoro
ou deslocamento ocasionado pelas lentes, atravs dos valores de distncia atuais (AD)
e previstos (PD) nas imagens adquiridas. J os erros de perspectiva (conhecidos por
parallax) so fenmenos bem conhecidos da viso humana, sendo de fato, o que
permite o crebro humano interpretar as informaes 3D do mundo real. Estes erros
so mudanas na magnificao de um objeto, dando a impresso de que as regies
mais prximas da lente tenham dimenses maiores do que as que se encontram mais
distantes.
Os conceitos apresentados nos tpicos de sistema tico (3.4) e sistema tico
propriamente dito (3.5), no fazem parte do projeto fsico deste trabalho e tem por finalidade,
citar conceitos mais amplos sobre o assunto. O autor deste projeto utiliza um sistema tico de
baixo custo, a exemplo de vdeos cmeras de celulares (Iphone 4S) e webcam (resoluo
VGA) cujo sistema tico projetado foi otimizado necessidade do prprio aparelho.
-
35
3.6. Sistema de Iluminao
O objetivo do sistema de iluminao a projeo de luz sobre o objeto em estudo, pois
em geral estes no emitem luz prpria, que necessria para a sensibilizao do sensor tico.
Quando se menciona em luz, entende-se qualquer faixa do espectro luminoso, e no apenas a
faixa do espectro visvel ao olho humano. Existem muitas solues de viso que requerem
inclusive a aplicao de luz incidente em faixas no visveis do espectro luminoso, como, por
exemplo, as imagens de tomografia mdica, algumas imagens astronmicas e imagens
infravermelho de curvas de calor. A figura 3.6 ilustra toda a faixa do espectro luminoso.
Repara-se como pequena a faixa visvel ao olho humano, e quo limitada seria a tecnologia
de viso caso se restringisse apenas a esta estreita faixa do espectro.
Figura 3. - faixas do espectro luminoso.
Fonte: extrado da internet no endereo, em 21/11/2012: http://dan-
scientia.blogspot.com.br/2010/03/relacao-da-frequencia-com-o-comprimento.html
Sendo assim, a escolha de um tipo de iluminao correto para o ambiente da aplicao
torna-se extremamente importante, pois se o objeto em estudo no for destacado (apresentar
bom contraste) em relao s demais informaes da cena, dificilmente consegue-se progredir
na soluo, e o projeto pode ser totalmente inviabilizado. Em contrapartida, caso uma boa
-
36
iluminao seja alcanada, as etapas de processamento das informaes tornam-se muito mais
fceis conforme Erhardt-Ferron (2000).
Em geral, a escolha de uma fonte luminosa e de uma tcnica de iluminao adequada
so influenciadas pelas caractersticas superficiais do objeto em estudo (geometria, estrutura,
cor, transparncia, reflectncia), onde o objetivo normalmente incidir sobre a superfcie do
objeto uma iluminao homognea e constante ao longo do tempo, conforme Erhardt-Ferron
(2000) e Jhne (1999).
O projeto de iluminao de um sistema de viso consiste normalmente de trs etapas,
Deschamps (2004):
Determinar o tamanho exato do campo de viso (junto ao projeto do sistema tico),
para que se compreenda o tamanho e as caractersticas superficiais da rea que se
deseja iluminar.
Determinar o tipo de fonte luminosa adequada aplicao (tungstnio, fluorescente,
halognio, LED, laser), escolhendo uma faixa de frequncia apropriada do espectro
luminoso conforme as caractersticas superficiais do objeto em estudo vistas no passo
anterior.
Determinar a geometria (posio da fonte em relao ao objeto e sensor, direo dos
feixes luminosos), a potncia, eficcia e caractersticas temporais da fonte luminosa,
necessrias para realar as partes desejveis do objeto de forma homognea e
constante ao longo do tempo.
3.7. Fundamentos de Imagem Digital 1
Este tpico tem por objetivo apresentar as principais caractersticas das imagens
digitais.
Uma imagem monocromtica pode ser descrita matematicamente por uma funo
f(x,y) da intensidade luminosa, sendo seu valor, em qualquer ponto de coordenadas espaciais
1 MARQUES FILHO, Og; VIEIRA NETO, Hugo. Processamento Digital de Imagens, Rio de Janeiro:
Brasport, p.19-20, 1999.
-
37
(x,y), proporcional ao brilho (ou nvel de cinza) da imagem naquele ponto. A figura 3.7
mostra uma imagem monocromtica e a conveno utilizada para o par de eixos (x,y).
Figura 3. - Uma imagem monocromtica e a conveno utilizada para o par de eixos (x,y).
Fonte: MARQUES FILHO, Og; VIEIRA NETO (2009).
A funo f(x,y) representa o produto da interao entre a iluminncia i(x,y) que
exprime a quantidade de luz que incide sobre o objeto e as propriedades de refletncia ou
de transmitncia prprias do objeto, que podem ser representadas pela funo r(x,y), cujo
valor exprime a frao de luz incidente que o objeto vai transmitir ou refletir ao ponto (x,y).
Estes conceitos esto ilustrados na figura 3.8. Matematicamente:
f ( x, y ) = i ( x, y ) . r ( x, y ) (3.1)
com:
i ( x, y ) > 0
0 < r (x,y) < 1
-
38
Figura 3. - Os componentes iluminncia (I) e refletncia (R) de uma imagem.
Fonte: MARQUES FILHO, Og; VIEIRA NETO (2009).
As tabelas 3.1 e 3.2 apresentam valores tpicos de iluminncia e refletncia.
Tabela 3.- Exemplos de valores para i(x,y) [em lux ou lmen/m2].
i(x,y)
900 dia ensolarado
100 dia nublado
10 iluminao mdia de escritrio
0,001 noite clara de lua cheia
Fonte: MARQUES FILHO, Og; VIEIRA NETO (2009).
Tabela 3.- Exemplos de valores para r(x,y).
r(x,y)
0.93 neve
0.8 parede branco-fosca
0.65 ao inoxidvel
0.01 veludo preto
Fonte: MARQUES FILHO, Og; VIEIRA NETO (2009).
-
39
No caso de uma imagem que possui informaes em intervalos ou bandas distintas de
frequncia, necessria uma funo f(x,y) para cada banda. o caso de imagens coloridas
padro RGB, que so formadas pela informao de cores primrias aditivas, como o vermelho
(R - Red), verde (G - Green) e azul (B - Blue).
No processo de digitalizao, o sinal analgico de vdeo obtido atravs da sada do
dispositivo de aquisio deve ser submetido a uma discretizao espacial e em amplitude para
tomar o formato desejvel ao processamento computacional.
A amostragem o processo de discretizao espacial e dar-se o nome de quantizao
ao processo de discretizao em amplitude.
Basicamente, a amostragem converte a imagem analgica em uma matriz de M por N
pontos, cada qual denominado pixel (ou elemento de imagem):
( ) [
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( )
] (3.2)
Maiores valores de M e N implicam em uma imagem de maior resoluo.
Por outro lado, a quantizao faz com que cada um destes pixels assuma um valor
inteiro, na faixa de 0 a 2n-1. Quanto maior o valor de n, maior o nmero de cores presentes na
imagem digitalizada.
Do ponto de vista eletrnico, a digitalizao consiste em uma converso analgica
digital na qual o nmero de amostras do sinal contnuo por unidade de tempo indica a taxa de
amostragem e o nmero de bits do conversor A/D utilizado determina o nmero cores
resultantes na imagem digitalizada.
Na especificao do processo de digitalizao deve-se decidir que valores de N, M e n
so adequados, do ponto de vista de qualidade da imagem e da quantidade de bytes
necessrios para armazen-la. A tabela 3.3 fornece uma ideia estimada do nmero de bytes
necessrios para armazenar uma imagem de N x N pixels com 2n tons de cinza, calculados
como: N x N x n / 8.
-
40
Tabela 3. - Nmero de bytes necessrios para armazenar uma imagem digital NxN com 2n
nveis.
Fonte: MARQUES FILHO, Og; VIEIRA NETO (2009).
Assume-se que um pixel estar inteiramente contido em um byte, mesmo que isto
signifique que alguns bits de cada byte permaneam vazios. Por exemplo, para n igual a 5,
assume-se que cada pixel ocupa um byte, restando 3 bits sem utilizao em cada byte.
Do ponto de vista qualitativo, pode-se perguntar: quantos pontos e nveis de cinza
sero necessrios para que a verso digitalizada de uma imagem apresente qualidade
comparvel imagem original? Parece evidente que quanto maiores os valores de M, N e n,
melhor a imagem digital resultante. Mas sabendo que elevados valores de M, N e n implicaro
em maiores custos de digitalizao e armazenagem. Deve existir uma forma de definir valores
adequados qualidade desejada. Convm observar ainda que qualidade de imagem um
conceito altamente subjetivo, que tambm depende fortemente dos requisitos da aplicao
dada.
3.8. Rudo 2
Na prtica, as imagens digitais so corrompidas por rudos durante sua aquisio ou
transmisso, requerendo que essas imagens sejam filtradas antes de seu processamento. A
definio do termo rudo no precisa, mas geralmente rudo considerado informao
espria (indesejada) na imagem. Em sentido amplo, o termo filtragem implica na manipulao
2 ROSITO JUNG, Cludio. Filtragem de Imagens com Preservao das Bordas Usando a Transformada
Wavelet, Porto Alegre: p. 19-20, 2002.
-
41
do contedo de frequncia da imagem, porm aqui utilizado para denotar a remoo (ou
atenuao) do rudo em uma imagem.
Em particular, de extrema importncia que as bordas sejam preservadas durante a
filtragem. As bordas da imagem delimitam as fronteiras entre dois objetos que compem uma
cena, e so fundamentais tanto na percepo do sistema visual humano segundo Hubel (1962),
quanto na anlise de imagens (por exemplo, na segmentao da imagem em seus objetos
componentes). Infelizmente, a grande maioria das tcnicas de filtragem existentes na literatura
no se mostram eficientes na preservao das bordas. A distino entre rudo e bordas
muito difcil para um sistema de viso computacional, embora seja normalmente uma tarefa
trivial para o sistema visual humano. Na verdade, os processos de filtragem e deteco de
bordas so interdependentes, como ser visto a seguir.
A caracterizao matemtica do rudo no simples, pois existem diferentes tipos de
rudos e com origens distintas. Entretanto, o rudo em uma imagem monocromtica
caracterizado geralmente por variaes de alta frequncia espacial na intensidade de tons de
cinza. Por outro lado, as bordas da imagem representam as fronteiras entre os objetos que
compem uma cena, e so caracterizadas por variaes bruscas nos tons de cinza
(correspondentes s transies entre duas regies aproximadamente homogneas associadas a
dois objetos distintos), que tambm correspondem s altas frequncias espaciais.
Em geral, as variaes de intensidade correspondentes s bordas tm amplitude maior
do que as variaes de intensidade associadas ao rudo. Contudo, essa hiptese no vlida
para bordas de baixo contraste (como, fronteiras entre regies que tem aproximadamente a
mesma mdia nos tons de cinza), ou quando a quantidade de rudo presente na imagem
grande. Nesses casos, a distino entre bordas e rudo pode ser bastante complexa, resultando
em falsas bordas (rudo erroneamente detectado como borda) e/ou falhas na deteco das
bordas de baixo contraste.
Para que a filtragem seja eficiente, o rudo deve ser atenuado nas regies homogneas
da imagem, mas as bordas no devem ser suavizadas. Para tal, importante que se conhea a
localizao das bordas. Por outro lado, a deteco das bordas requer uma imagem filtrada,
pois a deteco das mesmas em imagens ruidosas apresenta resultados errneos. Como
exemplo, a figura 3.9 (a) mostra uma imagem contaminada por rudo Gaussiano aditivo,
Larson and Shubert (1979). A figura 3.9 (b), mostra as bordas detectadas pelo mtodo de
Prewitt, Pratt (1991), enquanto que a figura 3.9 (c) mostra o resultado da filtragem pela
-
42
convoluo com filtro Gaussiano (Jain, 1989). Pode-se notar que as bordas da imagem filtrada
esto borradas, e que a deteco delas no foram eficientes (contornos abertos e varias falsas
bordas detectadas).
Figura 3. - (a) Imagem ruidosa. (b) Bordas detectadas pelo mtodo de Prewitt. (c) Filtragem
pela convoluo com uma Gaussina.
Fonte: Jung, Cludio (2002).
3.9. Filtro Gaussiano 3
Um dos filtros mais utilizados para atenuao de rudo o baseado na distribuio
Gaussiana. O filtro gaussiano tambm muito utilizado para suavizao de imagens, com a
diferena de no preservar as arestas uma vez que no considera a diferena das intensidades.
Ele possui dois parmetros, a dimenso da janela e um valor para o desvio padro mximo
sigma. Seu comportamento similar ao filtro passa-baixa, isto , suavizao de imagens. O
quanto a imagem ser suavizada est relacionada ao desvio padro sigma, isto , quanto maior
o sigma, mais a imagem suavizada, no dependendo muito do parmetro referente a
dimenso da janela. Quanto maior o sigma, maior o nmero de pixels cujo valor diferente de
zero, o que leva os pixels vizinhos a terem maior influncia em cada ponto, realizando uma
suavizao maior na imagem, o que no significa, necessariamente, uma melhoria na qualidade
da imagem, conforme mostra a figura 3.10.
3 Texto modificado, retirado em Joint Bilateral Upsample (disponvel em:
acesso em 13/10/2012).
-
43
Visto que um filtro utilizado para atenuao do rudo, o mtodo deve ser bem
empregado para trabalhar com a deteco de bordas, visto que a qualidade da imagem diminui
devido a suavizao, dificultado a localizao precisa do objeto.
O filtro Gaussiano definido por:
(|| ||) (3.3)
Onde,
( )
(3.4)
A figura 3.10, a seguir, mostra o resultado da aplicao do filtro gaussiano com
diferentes .
Figura 3. - Filtro Gaussiano
Fonte: extrado da internet no endereo, em 13/10/12: http://lvelho.impa.br/ip09/demos/jbu/filtros.html
-
44
3.10. Segmentao Baseada em Bordas 4
Na deteco de bordas so analisadas as descontinuidades nos nveis de cinza. Neste
trabalho ela empregada para delimitar os objetos encontrados na imagem. Definindo os
padres dos objetos, o sistema capaz de identific-los.
Uma borda o limite entre duas regies com propriedades relativamente distintas de
nvel de cinza. As bordas na imagem caracterizam os contornos dos objetos e so bastante
teis para segmentao e identificao de objetos na cena. Porm, quando a imagem
diferenciada, todas as variaes dos nveis de cinza so detectadas e, por consequncia,
detectam-se tambm bordas esprias, que uma forma indesejvel de variao. Para que as
bordas esprias, provenientes de rudo ou textura da imagem, no sejam detectadas, deve-se
suavizar a imagem antes da deteco. Contudo, existem efeitos inoportunos ligados
suavizao, como a perda de informao e o deslocamento de estruturas de feies relevantes
na imagem. Alm disso, existem diferenas entre as propriedades dos operadores diferenciais
comumente utilizados, ocasionando bordas diferentes. Logo, difcil formular um algoritmo
de deteco de bordas que possua um bom desempenho em diferenciados contextos e capture
os requisitos necessrios aos estgios subsequentes de processamento (Ziou e Tabbone,
1997). Consequentemente, no tocante ao processamento de imagem digital, uma variedade de
detectores de bordas tem sido desenvolvida visando diferentes propsitos, com formulaes
matemticas diferenciadas e com propriedades algortmicas distintas.
Com base nos problemas acima mencionados, Canny (1986), desenvolveu um
processo de deteco de bordas a partir de critrios de quantificao de desempenho de
operadores de bordas conhecidos como os critrios de deteco e de localizao.
Canny menciona trs critrios bsicos. O primeiro deles denominado Taxa de Erro
ou Deteco, consistindo na maximizao da razo sinal/rudo (SNR). Quanto maior for o
SNR, maior a probabilidade de se detectar as bordas verdadeiras da imagem. Assim, o
detector de bordas deveria detectar somente bordas e nenhuma poderia faltar. O segundo
critrio especifica que pontos de borda devem estar bem localizados, isto , as distncias entre
os pontos extrados pelo detector e as respectivas posies verdadeiras devem ser
minimizadas. Tem-se ento o critrio de Localizao (L), definido como sendo o inverso da
4 Texto extraido: VALE , G. e DAL POZ, A. Processo de deteco de bordas de Canny. Curitiba: Bol. Cinc.
Geod., sec. Artigos, v. 8, no 2, p.67-78, 2002.
-
45
distncia entre um ponto detectado e a respectiva posio verdadeira. Portanto, quanto maior
for L, mais prximos das posies verdadeiras estaro os pontos detectados pelo filtro. Pelo
exposto, o projeto de um filtro para a deteco de bordas arbitrrias envolve a maximizao
de ambos os critrios, o que equivalente maximizao do produto entre ambos (SNR e L),
ficando (Canny, 1986):
(3.5)
onde f(x) a resposta de impulso do filtro definido no intervalo [-w; w], G(x) uma
borda unidimensional e n0 a quantificao do rudo da imagem. Assume-se que a borda est
centrada em x = 0. Na equao 3.5, a primeira quantidade entre parntesis corresponde ao
SNR e a segunda L. A condio de filtro timo de Canny deve ainda atender a um terceiro
critrio, denominado critrio de resposta mltipla. A idia bsica que deve haver um nico
ponto de borda onde existe uma nica borda verdadeira. Seja (Canny, 1986):
(3.6)
a expresso matemtica para a distncia (xmax ) entre mximos adjacentes na resposta do
filtro f(x) devido ao rudo. Assim, ao maximizar a condio dada pela equao 3.5, deve-se
tambm garantir que xmax seja maior possvel, aumentando a possibilidade de separao de
mximos verdadeiros dos falsos na sada do filtro f(x).
-
46
Figura 3.- Deteco de bordas de Canny
Fonte: Autor.
Sendo assim, se considerar uma borda de uma dimenso variando no contraste (um
degrau) e ento convolucionando a borda com a funo de uniformizao de Gauss, o
resultado ser uma variao contnua do valor inicial ao final, com uma inclinao mxima no
ponto onde existe o degrau. Se esta continuidade diferenciada em relao a x, esta
inclinao mxima ser o mximo da nova funo em relao a original (figura 3.11).
Os mximos da convoluo da mscara e da imagem indicaro bordas na imagem.
Este processo pode ser realizado atravs do uso de uma funo de Gauss de 2-dimenses na
direo de x e y. Os valores das mscaras de Gauss dependem da escolha do sigma na
equao de Gauss, visto na frmula 3.4 deste trabalho.
A aproximao do filtro de Canny para deteco de bordas G'. Convolucionando a
imagem com G' se obter uma imagem I que mostrar as bordas, mesmo na presena de rudo.
A convoluo relativamente simples de ser implementada, mas cara computacionalmente,
especialmente se for em 2-dimenses. Entretanto, uma convoluo de Gauss de 2-dimenses
pode ser separada em duas convolues de Gauss de 1-dimenso.
A intensidade computacional do detector de bordas de Canny relativamente alta, e os
resultados so geralmente ps-processados para maior clareza. Entretanto, o algoritmo mais
eficiente no processamento de imagens com rudos ou com bordas difusas.
Algoritmo de Canny:
Ler a imagem (I) a ser processada;
-
47
Criar uma mscara de Gauss de 1-D (G) para convolucionar I. O desvio (S) de Gauss
um parmetro para o detector de bordas;
Criar uma mscara de 1-D para a primeira derivada de Gauss nas direes x e y;
nomear como Gx e Gy. O mesmo valor S usado;
Convolucionar a imagem I com G percorrendo as linhas na direo x (Ix) e percorrer
as colunas na direo y (Iy);
Convolucionar Ix, com Gx, para dar Ix (o componente x). De I convolucionado com a
derivada de Gauss. E convolucionar Iy, com Gy para dar Iy;
Neste ponto, o resultado dos componentes x e y devem ser "combinados". A
magnitude do resultado computada para cada pixel (x,y).
3.11. Operaes de Dilatao e Eroso da imagem
Duas operaes bsicas so fundamentais para o tratamento da imagem que auxiliaro
posteriormente o processo de segmentao e leitura dos caracteres da placa.
Dilatao: a aplicao de um elemento estruturante de forma concntrica sobre um
conjunto definido de pontos (brancos ou pretos) em uma imagem, de maneira que o
elemento estruturante adicione informao sobre a vizinhana destes pontos. Ou seja,
pode-se imaginar que o elemento estruturante desliza sobre um conjunto de pontos
dilatando sua vizinhana numa proporo que varia conforme as dimenses do
elemento estruturante (Gonzalez and Woods, 2002). Esta operao utilizada
principalmente para preencher intervalos e lacunas indesejveis na imagem.
Eroso: o inverso da dilatao. A aplicao do elemento estruturante ocorre
analogamente operao anterior, porm, ao invs de dilatar a vizinhana do ponto
percorrido inserindo informao, o elemento retira informao (gerando eroso nas
reas percorridas) (Gonzalez and Woods, 2002). Esta operao utilizada
principalmente para eliminar detalhes irrelevantes, como rudos, e abrir intervalos ou
lacunas em regies de conexo indesejada.
-
48
Figura 3. - Princpio de funcionamento de operadores morfolgicos.
Fonte: Gonzalez and Woods (2002).
3.12. OpenCV
Conforme mencionado no objetivo do trabalho, o OpenCV a interface de
programao utilizada para o desenvolvimento do software.
uma biblioteca de viso computacional open source (cdigo aberto) escrito na
linguagem de programao C e C++. Sua infraestrutura trabalha com um grau de desempenho
em processamento - muito exigido no tratamento de imagens em tempo real retirando
proveito da tecnologia de multiprocessamento.
Atualmente com um pouco mais de 500 funes, proporciona uma srie de facilidades
no processo de entrada e sada de imagens e vdeos, estrutura de dados, lgebra linear, filtros,
calibrao de cmera, tratamento de imagem etc.
Desde seu lanamento em janeiro de 1999, vrias aplicaes e pesquisas esto
utilizando o OpenCV. Alguns exemplos: na reduo de rudo em imagens mdicas, na anlise
de objeto, nos sistemas de segurana e deteco objeto, em aplicao militar e inspeo area.
A biblioteca basicamente estruturada em cinco principais componentes, dentre as
quais quatro so mostradas na figura 3.13.
-
49
Figura 3. - A estrutura bsica do OpenCV.
Fonte: Autor.
O mdulo CV contm as principais funcionalidades de processamento de imagem,
contemplando o algoritmo de viso computacional. O mdulo ML a biblioteca de
aprendizado, que inclui funes de estatsticas e ferramentas de clusterizao. O mdulo
HighGUI contm o controle de interface com o usurio e as rotinas de entrada e sada de
vdeos e imagens. O CXCore contm a estrutura bsica de dados, funes de desenho e
operao vetorial. A figura 3.13 no contempla o mdulo CVAux integrando tcnicas de
reconhecimento de objetos, pois ainda est em fase experimental.
3.13. Tesseract OCR
No trabalho empregada a biblioteca Tesseract OCR para leitura da placa automotiva.
OCR significa Optical Character Recognition, o processo pelo qual o computador
consegue ler o texto contido numa imagem. Quando passada uma pgina de texto de um
livro no scanner o resultado uma foto. Essa foto precisa passar por um processo de OCR
para extrair o texto dela.
Originalmente desenvolvido pela Hewlett Packard (HP) entre 1985 e 1995, o Tesseract
OCR foi redescoberto pelo Google. A biblioteca tambm open source e desenvolvida na
linguagem C++, onde combinada com a biblioteca de processamento de imagem Leptonica,
-
50
pode ler uma grande variedade de formatos de imagem e convert-los em texto em mais de 40
idiomas.
A partir da verso 3.x, a ferramenta fornece o mdulo totalmente treinvel, podendo
lidar com quaisquer caracteres na codificao UTF-8 (8-bit Unicode Transformation Format).
Por convenincia, o que se segue um breve resumo de como funciona Tesseract:
Os contornos so analisados e armazenados;
Os contornos so reunidos como bolhas;
As bolhas so organizadas em linhas de texto;
Linhas de texto so divididas em palavras;
A primeira passagem do processo de reconhecimento tenta encontrar cada palavra,
uma de cada vez;
As palavras encontradas so ento informadas ao treinador adaptativo;
Existe uma segunda anlise das palavras que no foram entendidas na primeira
passagem
Os espaos borrados do texto so considerados como pequenas marcaes;
As palavras encontradas so informadas;
Durante esses processos, o Tesseract utiliza:
Algoritmos para deteco de linhas de texto de uma pgina distorcida;
Algoritmos para detectar a proporo das palavras e smbolos (essa proporo verifica
se todas as letras de uma palavra tem a mesma largura);
Algoritmos para cortar caracteres unidos ou associar caracteres quebrados;
Analisador lingustico para identificar as palavras mais utilizadas dentre um conjunto
de caracteres;
Dois classificadores de caracteres: um classificador esttico, e um classificador
adaptativo que utiliza os dados de treino, distinguindo caracteres maisculos e
minsculos.
O projeto Tesseract est no seguinte endereo da internet:
http://code.google.com/p/tesseract-ocr/.
-
51
3.14. Linguagem de Programao C/C++5
No projeto proposto utilizada uma mistura da linguagem de programao C e C++,
pelo fato das bibliotecas empregadas: OpenCV e Tesseract OCR, serem desenvolvidas para
estas linguagens.
Abaixo uma viso geral das linguagens C e C++, mostrando algumas caractersticas:
3.14.1. Linguagem C
O desenvolvimento inicial de C ocorreu nos laboratrios Bell da AT&T, entre 1969 e
1973. Segundo Ritchie, o perodo mais criativo ocorreu em 1972. Deu-se o nome C
linguagem porque muitas das suas caractersticas derivaram de uma linguagem de
programao anterior chamada B. H vrios relatos que se referem origem do nome B:
Ken Thompson d crdito linguagem de programao BCPL mas ele tambm criou uma
outra linguagem de programao chamada Bom, em honra da sua mulher Bonnie. Por volta
de 1973, a linguagem C tinha se tornado suficientemente poderosa para que grande parte do
ncleo de Unix, originalmente escrito na linguagem de programao PDP-11/20 assembly,
fosse reescrito em C. Este foi um dos primeiros ncleos de sistema operativo que foi
implementado numa linguagem sem ser o assembly.
C uma linguagem imperativa e procedural para implementao de sistemas. Seus
pontos de design foram para ele ser compilado, fornecendo acesso de baixo nvel memria e
baixos requerimentos do hardware. Tambm foi desenvolvido para ser uma linguagem de alto
nvel, para maior reaproveitamento do cdigo. C foi til para muitas aplicaes que forma
codificadas originalmente em Assembly. Essa propriedade no foi acidental; a linguagem C
foi criada com o objetivo principal: facilitar a criao de programas extensos com menos
erros, recorrendo ao paradigma da programao algortmica ou procedimental, mas
sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as
caractersticas complexas da linguagem. Para este fim, a linguagem C possui as seguintes
caractersticas:
5 Texto modificado, retirado em Expert.net (disponvel em: acesso em 13/10/2012).
-
52
Uma linguagem nuclear extremamente simples, com funcionalidades no-essenciais,
tais como funes matemticas ou manuseamento de ficheiros (arquivos), fornecida
por um conjunto de bibliotecas de rotinas padronizada;
A focalizao no paradigma de programao procedimental;
Um sistema de tipos simples que evita vrias operaes que no fazem sentido;
Uso de uma linguagem de pr-processamento, o pr-processador de C, para tarefas tais
como a definio de macros e a incluso de mltiplos ficheiros de cdigo fonte;
Um acesso de baixo-nvel memria do computador, atravs do uso de ponteiros;
Parmetros que so sempre passados por valor para as funes e nunca por referncia
( possvel simular a passagem por referncia com o uso de ponteiros);
Definio do alcance lexical de variveis;
Estruturas de variveis (structs), que permitem que dados relacionados sejam
combinados e manipulados como um todo.
3.14.2. Linguagem C++
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs durante a
dcada de 1980 com o objetivo de melhorar a linguagem de programao C ainda que
mantendo mxima compatibilidade. Stroustrup percebeu que a linguagem Simula possua
caractersticas bastante teis para o desenvolvimento de software, mas era muito lenta para
uso prtico. Por outro lado, a linguagem BCPL era rpida, mas possua demasiado baixo
nvel, dificultando sua utilizao em desenvolvimento de aplicaes. Durante seu perodo na
Bell Labs, ele enfrentou o problema de analisar o kernel UNIX com respeito computao
distribuda. A partir de sua experincia de doutorado, comeou a acrescentar elementos do
Simula no C. O C foi escolhido como base de desenvolvimento da nova linguagem pois
possua uma proposta de uso genrico, era rpido e tambm portvel para diversas
plataformas. Algumas outras linguagens que tambm serviram de inspirao para o cientista
da computao foram ALGOL 68, Ada, CLU e ML.
-
53
Vantagens:
Produo de cdigo o quanto mais eficiente possvel;
Possibilidade em programao de alto e baixo nvel;
Alta flexibilidade, portabilidade e consistncia;
Adequado para grandes projetos;
Ampla disponibilidade e suporte, devido principalmente grande base de
desenvolvedores;
No est sob o domnio de uma empresa (em contraste do Java Sun ou Visual Basic
Microsoft);
Padronizao pela ISSO;
Grandes possibilidades para a metaprogramao e programao genrica;
Compatilidade com C, resultando em vasta base de cdigos.
Desvantagens:
Compatilidade com o C herdou os problemas de entendimento de sintaxe do mesmo;
Os compiladores atuais nem sempre produzem o cdigo mais otimizado, tanto em
velocidade quando tamanho do cdigo;
Grande perodo para o aprendizado;
A biblioteca padro no cobre reas importantes da programao, como threads,
conexes TCP/IP, interface grfica e manipulao de sistemas de arquivos, o que
implica na necessidade de criao de bibliotecas prprias para tal, que pecam em
portabilidade;
Devido grande flexibilidade no desenvolvimento, recomendado o uso de padres
de programao mais amplamente que em outras linguagens.
-
54
4. MODELO PROPOSTO PARA DETECO E RECONHECIMENTO DE PLACA
AUTOMOTIVA
Neste captulo ser detalhado o desenvolvimento da aplicao, demonstrando os
passos utilizados desde a instalao das bibliotecas bases para o projeto aos mtodos
utilizados para deteco e leitura da placa veicular.
4.1. Apresentao Geral do Modelo proposto
Conforme mostrado de modo superficial na arquitetura do projeto (vide figura 1.1),
para obteno dos caracteres alfanumrico da placa, foi desenvolvida a seguinte estratgia
baseada nas metodolgicas supracitadas no captulo anterior. Na figura 4.1 abaixo, observa-se
o modelo proposto da viso computacional empregado neste projeto:
Figura 4.- Modelo proposto no projeto
Fonte: Autor.
4.2. Descrio das Etapas do Modelo
Captura: a imagem pode ser adquirida por um dispositivo que filma em tempo real;
por exemplo, de uma webcam, cmera infravermelha de segurana, cmera profissional de
alta resoluo etc. Ou, atravs de uma gravao armazenada em uma memria; no caso, um
pendrive ou um hard disk. importante enfatizar, que no mtodo utilizado, no pr-
estabelecido que j se tenha a imagem da placa do veculo fotografado, visto que o objetivo
aqui a deteco automtica da placa.
-
55
Pr-processamento: nessa etapa so utilizadas algumas tcnicas para o tratamento da
imagem, aumentando as condies para o sistema de localizao do objeto. Neste trabalho
empregaram-se tcnicas de diminuio de rudo de Gauss, converso de cores do formato
RGB (com trs canais, vermelho-verde-azul) para escala de cinza (nico canal),
experimentando tambm a tcnica de converso em HSL (matriz-saturao-luz) para
manipulao das cores.
Localizao do objeto: aqui sero detectadas as bordas dos objetos presentes na
imagem. Nesse processo, aplicou-se a tcnica de deteco e segmentao de bordas de Canny.
Tentou-se tambm utilizar outras tcnicas de deteco de borda, como Sobel e Wavelet 2D,
onde a tcnica de Sobel foi implementada (vide apndice A), porm sem xito significante ao
trabalho devido ao reduzido tempo de projeto e pesquisas.
Validao: aps a localizao dos objetos, os mesmo sero validados, procurando
localizar a placa do carro. Aqui so utilizadas como parmetros as dimenses da placa, como
a altura e o comprimento. Assim, objetos retangulares e proporcionais pela razo do
comprimento e da altura sero considerados como objetos vlidos. Sero apresentadas
tambm outras condies de validao da placa.
Segmentao: um processo de recorte do objeto localizado e validado.
Leitura OCR: nessa fase a imagem preparada para o processo de leitura da imagem
onde o reconhecedor de caracteres ir retornar os valores alfanumricos da placa.
4.3. Ferramentas Utilizadas
Para o desenvolvimento deste trabalho, foi utilizado o sistema operacional Windows 7,
no precisando ter uma experincia aprofundada sobre este sistema operacional. Abaixo
demonstrado o processo de instalao das ferramentas utilizadas.
4.3.1. Microsoft Visual Studio 2008
Conforme explicado anteriormente, as bibliotecas aqui utilizadas (OpenCV e o
Tesseract OCR), tem suporte a linguagem de programao C/C++. Alm disso, essas
bibliotecas podem ser configuradas para utilizao em diversos ambientes de
-
56
desenvolvimento (IDE) empregando para isso o programa CMake. Nesse trabalho, as
bibliotecas foram configuradas para o Microsoft Visual Studio 2008 (MSVS), devido a um
suporte completo e vasto contedo literrio.
O MSVS na verso Professional Edition foi instalado utilizando o instalador no modo
custom e desmarcando a opo de instalao do SQL Server Express, pois no se far
proveito neste trabalho. importante observar tambm se as linguagens C e C++ esto
selecionadas para instalao, na opo Language Tools.
O processo de instalao no apresentou nenhuma dificuldade ou problema.
Na figura 4.2 abaixo, exibe a interface do instalador.
Figura 4. - Instalador do Microsoft Visual Studio 2008
Fonte: Autor.
4.3.2. OpenCV
Resumo da instalao:
Optou-se utilizar a verso mais recente do OpenCV a partir do repositrio SVN do
desenvolvimento, na verso 2.4.2. A ideia era obter o cdigo fonte e conhecer o
processo de compilao da biblioteca;
-
57
Instalao do CMake: utilizado para criao do projeto OpenCV para o formato
MSVS 2008, a partir dos fontes da biblioteca. No final desse processo ser gerado o
arquivo sln, extenso MSVS utilizado para organiza projetos, itens de projeto e itens
de soluo, fornecendo ao ambiente, referncias a seus locais no disco.
Compilao do projeto OpenCV no MSVS 2008;
Finalmente, a configurao no MSVS para utilizar a biblioteca OpenCV compilada.
4.3.2.1. Baixando o OpenCV
Para obter o cdigo fonte que atualizado quase diariamente, necessrio baixar a
partir do repositrio SVN, no endereo: http://code.opencv.org/svn/opencv/trunk/opencv.
Nesse caso, o programa TortoiseSVN realizou esta tarefa no dia 20/09/2012 baixando
a verso 2.4.2, conforme figura 4.3, abaixo:
Figura 4. - TortoiseSVN
Fonte: Autor.
-
58
Seguindo os passos:
Deve-se localizar a pasta onde deseja fazer o download dos cdigos
fontes. Ex.: C:\opencv;
Com o boto direito do mouse escolha SVN checkout no menu de contexto;
Preencher o URL: http://code.opencv.org/svn/opencv/trunk/opencv;
Escolher o diretrio de checkout. Ex.: C:\opencv;
Clicar em OK. O programa comea a baixar os fontes.
4.3.2.2. CMake
CMake criar os arquivos de projeto para verso MSVS 2008 necessrios para
construir posteriormente os fontes do OpenCV.
A verso utilizada foi a 2.8.9, baixado no endereo: http://www.cmake.org/.
Seguindo os passos:
Abrir CMake (cmake-gui);
Escolher o caminho do cdigo fonte (onde foi baixado OpenCV). Neste diretrio deve
conter o arquivo CMakeLists.txt. Ex.: C:\opencv;
Escolher o diretrio de sada (onde construir os binrios). Ex.: C:\opencv\msvc2008;
Clique em Sim para criar o diretrio se no existir;
Clicar no boto Configurar;
Escolher o compilador / IDE que deseja usar. Neste caso, escolha Visual Studio 9.
Escolher as opes que deseja usar. Como construir exemplos, construir opencv_core,
construir opencv_highgui, etc;
Clicar no boto Configurar at que todos os conflitos sejam resolvidos (todas as
linhas vermelhas mudam a sua cor para branca);
Clicar em Gerar.
-
59
Figure 4. - CMake
Fonte: Autor.
4.3.2.3. Compilando com o MSVS 2008
Para compilar o cdigo fonte do OpenCV com o Visual Studio 2008:
Abrir o arquivo de soluo, localizado no diretrio de sada informado no CMaker.
Ex.: "C:\opencv\msvc2008\OpenCV.sln";
Aguardar at que todos os arquivos sejam completamente carregados;
Pressionar F7 para criar a soluo.
-
60
Figura 4. - Compilao do OpenCV
Fonte: Autor.
No final desse processo, ser gerado um diretrio. Como, por exemplo:
C:\opencv\build.
-
61
4.3.2.4. Configurando a biblioteca OpenCV no MSVS 2008
1. Configurando o Visual Studio
Abrir VC++ Directories: Tools > Options > Projects and Solutions > VC++
Directories;
Escolher Show directories for: Include files;
Adicionar $openCVDir\include
Escolher Show directories for: Library files;
Adicionar $openCVDir\lib
Escolher Show directories for: Source files;
Adicionar $openCVDir\bin
2. Configurando o projeto de reconhecimento de placa veicular
Abrir Propriedades do Projeto: NomedoProjeto > Properties;
Escolher Linker: Configuration Properties > Linker > Input;
Em Configuration , selecionar o modo: Debug | Release;
Para Configuration Debug:
No Additional Dependencies , colocar em cada linha:
opencv_calib3d242d.lib
opencv_contrib242d.lib
opencv_core242d.lib
opencv_features2d242d.lib
opencv_flann242d.lib
tbb.lib
opencv_gpu242d.lib
opencv_haartraining_engined.lib
-
62
opencv_highgui242d.lib
opencv_imgproc242d.lib
opencv_legacy242d.lib
opencv_ml242d.lib
opencv_nonfree242d.lib
opencv_objdetect242d.lib
opencv_photo242d.lib
opencv_stitching242d.lib
opencv_ts242d.lib
opencv_video242d.lib
opencv_videostab242d.lib
Para Configuration Release:
No Additional Dependencies, colocar em cada linha:
opencv_contrib242.lib
opencv_core242.lib
opencv_features2d242.lib
opencv_flann242.lib
opencv_gpu242.lib
opencv_haartraining_engine.lib
opencv_highgui242.lib
opencv_imgproc242.lib
opencv_legacy242.lib
opencv_ml242.lib
opencv_nonfree242.lib
opencv_objdetect242.lib
-
63
opencv_photo242.lib
opencv_stitching242.lib
opencv_ts242.lib
opencv_video242.lib
opencv_videostab242.lib
Feito isso, o projeto reconhecer todas as bibliotecas do OpenCV.
4.3.3. Tesseract OCR
Resumo da instalao:
Conforme explicado anteriormente, o Tesseract OCR compartilha recursos da
biblioteca Leptonica, necessitando a prvia instalao dessa biblioteca;
Para instalao do Tesseract OCR, a equipe de suporte ao produto recomenda baixar o
cdigo fonte para manter o produto atualizado. Sendo assim, o mesmo processo
utilizado para o OpenCV foi realizado, utilizando o repositrio SVN;
Compilar a biblioteca no MSVS2008;
Configurar a biblioteca no MSVS para utilizao no projeto.
4.3.3.1. Leptonica
A verso utilizada foi a 1.68 pr-compilada, no endereo:
http://code.google.com/p/leptonica/downloads/detail?name=leptonica-1.68-win32-lib-
include-dirs.zip;
Feito isso, descompacte-a para C:\opencv\tesseract\.
-
64
4.3.3.2. Baixando o Tesseract OCR
A partir do repositrio SVN, o programa TortoiseSVN realizou a mesma tarefa
utilizada para o OpenCV, conforme figura 4.6, abaixo:
Figura 4. - Tortoise Tesseract OCR
Fonte:Autor
Seguindo os passos:
Ir at a pasta onde deseja fazer o download das
fontes. Ex.: C:\OpenSource\Tesseract-OCR;
Com o boto direito do mouse escolher SVN checkout no menu de contexto;
Preencher o URL: http://tesseract-ocr.googlecode.com/svn/trunk/;
Escolher o diretrio de checkout. Ex.: C:\OpenSource\Tesseract-OCR;
Clicar em OK. Ele comear a baixar os cdigos fontes.
A verso da biblioteca a 3.0.2.
-
65
4.3.3.3. Compilando o Tesseract OCR
Para construir o Tesseract com o Visual Studio 2008:
Abra o arquivo de soluo, localizado no diretrio de sada. Ex.: "C:\
OpenSource\Tesseract-OCR\vs2008\tesseract.sln";
Aguarde at que todos os arquivos sejam completamente carregados;
Abrir Propriedades do Projeto: libtesseract302 > Properties;
Em Configuration, selecionar o modo: DLL_Debug | DLL_Release | Lib_Debug |
Lib_Release;
Compilar para cada configurao acima o projeto libtesseract302, clicando com o boto direito do mouse o e selecione Build;
No final desse processo sero gerados quatro diretrios na pasta "C:\ OpenSource\Tesseract-
OCR\vs2008\", chamados: LIB_Debug, LIB_Release, DLL_Debug e DLL_Release;
4.3.3.4. Configurando a biblioteca Tesseract OCR no MSVS 2008
1. Configurando o Visual Studio
Abrir VC++ Directories: Tools > Options > Projects and Solutions > VC++
Directories;
Escolher Show directories for: Include files;
Adicionar:
C:\OpenSource\Tesseract-OCR\include,
C:\OpenSource\Tesseract-OCR\include\leptonica;
C:\OpenSource\Tesseract-OCR\tesseract-ocr\ccutil;
C:\OpenSource\Tesseract-OCR\tesseract-ocr\ccstruct;
C:\OpenSource\Tesseract-OCR\tesseract-ocr\ccmain;
C:\OpenSource\Tesseract-OCR\tesseract-ocr\api
-
66
2. Configurando o projeto de reconhecimento de placa veicular
Abrir Propriedades do Projeto: NomedoProjeto > Properties
Escolher Linker: Configuration Properties > Linker > Input
Em Configuration, selecionar o modo: Debug | Release
Para Configuration Debug:
libtesseract302d.lib
Para Configuration Release:
libtesseract302.lib
3. Adicionando a biblioteca ao projeto
Adicionar os seguintes arquivos no pasta Debug do projeto:
Libfftw3-3.dll
Liblept168.dll
Libtesseract302d.dll
Completada todas as instalaes e configuraes dos pr-requisitos de software, ser
possvel desenvolver o projeto aqui proposto.
4.4. Descrio da Implementao
A seguir, ser descrito a implementao do software desenvolvido neste projeto, de
acordo com as etapas do modelo proposto. Com isso, se compreender melhor os conceitos da
viso computacional e da prpria soluo final, de forma a contribuir com os futuros trabalhos
acadmicos que d esse enfoque. No apndice A, contm o cdigo fonte completo. A figura a
seguir representa a estrutura do programa implementado.
-
67
Figura 4. Estrutura do programa implementado
Fonte: Autor.
1. O programa inicializado pela estrutura Main que realiza o processo de captura da
imagem e chama o mtodo frameDeteccaoPlaca;
2. O mtodo frameDeteccaoPlaca l cada frame do vdeo e responsvel pelo pr-
processamento e localizao das bordas da imagem;
3. A funo encontraPlaca valida todas as bordas encontradas tentando encontrar objetos
que tenham a dimenso de uma placa de carro ou caminho. Caso positivo, realiza a
segmentao e passa esta imagem para o mtodo tesseractOCR;
4. O mtodo tesseractOCR l a imagem segmentada e a transforma para o formato texto
(caracteres).
4.4.1. A captura
O algoritmo de captura da biblioteca OpenCV foi otimizado para trabalhar com
diversas operaes de processamento de imagem. Tambm prov interface para diferentes
modelos de cmera.
Nesse trabalho, foi utilizado uma cmera de baixssima resoluo (640x480), 8 bits
por pixel (256 cores), no padro VGA (Video Graphics Array), provendo otimizao no
processamento da imagem, porm dificultando proporcionalmente o processo de
reconhecimento de padres. O motivo pela escolha foi a falta de recurso do autor na obteno
-
68
de uma cmera de alta qualidade. Por outro lado, funcionando em cmeras de baixa resoluo,
de se esperar um melhor resultado com cmeras que trabalham em alta resoluo.
importante destacar, que para um projeto com finalidade comercial fundamental a
escolha de um sistema tico adequado, exigindo um estudo mais complexo de cmeras,
conforme o anunciado do tpico 3.4.
A seguir, o trecho de cdigo para captura de vdeo na cmera (em tempo real) extrado
do cdigo fonte utilizado nesse trabalho:
24 CvCapture *capture = NULL;
30 //capture = cvC
top related