monografia placas

107
  CENTRO UNIVERSITÁRIO DE BRASÍLIA - UniCEUB CURSO DE ENGENHARIA DE COMPUTAÇÃO  JEAN DIAS DO NASCIMENTO  DETECÇÃO E RECONHECIMENTO DE PLACA AUTOMOTIVA COM BAIXO CUSTO  Orientador: Prof. Ms. C. Francisco Javier De Obaldía Díaz  Brasília dezembro, 2012

Upload: andre-fonseca

Post on 08-Oct-2015

41 views

Category:

Documents


0 download

DESCRIPTION

monografic

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