DANIEL ROCHA GUALBERTO
Orientador: David Menotti
EM RUMO A UM SISTEMA AUTOMÁTICO DE
CONTROLE DE ACESSO DE VEÍCULOS AUTOMOTIVOS:
RECONHECIMENTO DE CARACTERES EM PLACAS DE
VEÍCULOS
Ouro Preto
Novembro de 2010
Universidade Federal de Ouro Preto
Instituto de Ciências Exatas
Bacharelado em Ciência da Computação
EM RUMO A UM SISTEMA AUTOMÁTICO DE
CONTROLE DE ACESSO DE VEÍCULOS AUTOMOTIVOS:
RECONHECIMENTO DE CARACTERES EM PLACAS DE
VEÍCULOS
Monograa apresentada ao Curso de Bachare-
lado em Ciência da Computação da Universi-
dade Federal de Ouro Preto como requisito par-
cial para a obtenção do grau de Bacharel em
Ciência da Computação.
DANIEL ROCHA GUALBERTO
Ouro Preto
Novembro de 2010
UNIVERSIDADE FEDERAL DE OURO PRETO
FOLHA DE APROVAÇÃO
Em Rumo a Um Sistema Automático de Controle de Acesso de Veículos
Automotivos: Reconhecimento de Caracteres em Placas de Veículos
DANIEL ROCHA GUALBERTO
Monograa defendida e aprovada pela banca examinadora constituída por:
Dr. David Menotti Orientador
Université Paris-Est
Dr. Guillermo Câmara Chavez
Université Cergy-Pontoise
Dr. Ricardo Augusto Rabelo de Oliveira
Universidade Federal de Ouro Preto
Ouro Preto, Novembro de 2010
Resumo
Em um sistema de reconhecimento existem três etapas entre a aquisição da imagem de um
carro até a extração do caractere. A primeira consiste na localização da placa. A segunda
consiste num pré-processamento da placa, para binarizar a imagem e remover ruídos. E a
terceira etapa consiste em aplicar uma função de Reconhecimento Ótico de Caracteres (OCR)
a m de identicar os caracteres. Este projeto propõe a realização da segunda e terceira
etapa do Reconhecimento de Caracteres de Placas de Veículos.
Palavras-chave: Reconhecimento ótico de caracteres OCR. Imagem. Binarização. Fil-
tragem.
i
Abstract
In a recognition system there are three stages between image acquisition of a car until the
extraction of character. The rst is the location of the plate. The second is a pre-processing
of the card to the binarized image and remove noise. And the third step is to apply a function
Optical Character Recognition (OCR) to identify the characters. This project proposes to
carry out the second and third stage of Character Recognition License Plate.
Keywords: Optical Character Recognition OCR. Image. Binarization. Filtering.
ii
Dedico este trabalho primeiramente a Deus, pois sem Ele, nada seria possível e não es-
taríamos aqui reunidos, desfrutando, juntos, destes momentos que nos são tão importantes.
Aos meus pais João e Zuleides pelo esforço, dedicação e compreensão, em todos os mo-
mentos desta e de outras caminhadas.
Ao meu irmão Rafael pelo incentivo, cooperação e apoio.
iii
Agradecimentos
Aos professores, especialmente ao Professor David Menotti, pela contribuição, dentro de sua
área, para o desenvolvimento da monograa e principalmente pela dedicação e empenho que
demonstrou no decorrer de suas atividades para com o projeto.
A minha mãe Zuleides, meu irmão Rafael, minha tia Lourdinha e meu Tio Selio pelo
empenho e auxílio, num momento decisivo do trabalho.
E a todos aqueles que, direta ou indiretamente, colaboraram para que este trabalho consiga
atingir os objetivos propostos.
iv
Sumário
1 Introdução 1
1.1 Justicativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Objetivo geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Objetivos especícos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Desenvolvimento 9
2.1 Identicação de placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Método: Áreas de alto contraste . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 Método: Análise de Freqüência . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Reconhecimento de Caracteres de Placas de Identicação de Veículos . . . . . . 11
2.2.1 Filtragem da placa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Reconhecimento de caractere . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Experimentos 18
3.1 Placa GOR5902 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Placa GZF8464 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Placa HCH8169 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Implementação 21
4.1 Criar o Template das Letras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Criar o Template dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 Identicar as imagens das Letras . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4 Identicar as imagens dos números . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.5 Correção ao ângulo da Placa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6 Correção ao ângulo dos Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.7 Reconhecimento dos Caracteres - OCR . . . . . . . . . . . . . . . . . . . . . . . 26
4.8 Metodo Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
v
5 Conclusões 35
Referências Bibliográcas 50
vi
Lista de Figuras
1.1 Foto do Túnel de Dartford, onde se realizou o teste do primeiro SACAVA, FONTE
(Matthews) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 O sistema E-ZPASS ao aproximar um carro da área do pedágio, o campo de ra-
diofreqüência emitido pela antena ativa o mecanismos que deduz da conta pré-paga
do motorista. FONTE (6). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Imagens ao vivo são transmitidas do Centro de Controle de Tráfego para o site da
CCR Ponte e para emissoras de TV, FONTE(das Estradas) . . . . . . . . . . . . . 3
1.4 Placa de um veículo de aluguel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Placa de um veículo que se encontra em estado de teste. . . . . . . . . . . . . . . . 4
1.6 Placa de um veículo particular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Placas utilizadas por veículos de consulados. . . . . . . . . . . . . . . . . . . . . . . 5
1.8 Placas utilizadas em veículos utilizados por altos cargos. . . . . . . . . . . . . . . . 5
1.9 Placa utilizadas em automóveis de propriedade do estado, união ou município. . . . 6
1.10 Placa de veículo de auto-escola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.11 Placa de automóvel de coleção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.12 Placa de carro que ainda estão em fase de teste. . . . . . . . . . . . . . . . . . . . . 6
1.13 Demonstração de uma placa de veículo brasileira, de acordo com (2) . . . . . . . . 7
2.1 (A) Imagem original condensada, (B) Bordas verticais (C) Classicação da imagem
lltrada (D) Projeção vertical PV (y). FONTE: (15) . . . . . . . . . . . . . . . . . 10
2.2 (A)Imagem de entrada com os candidatos identicados placa de licença,(B) Placa
reconhecida corretamente,(C)O algarismo "8"foi reconhecido como uma letra "B"e
(D)método de segmentação de caracteres não identica caracteres na imagem,
FONTE: (8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Um uxograma do sistema RCPIV FONTE: (7) . . . . . . . . . . . . . . . . . . . . 12
2.4 Foto da Placa HAI0232, que será utilizada como exemplo para demonstrar os méto-
dos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Imagem da Placa HAI0232 apos ser convertida para escala de cinza. . . . . . . . . 13
2.6 Imagem da Placa HAI0232 ápos ter passada pelo método de correção de angulo. . 14
2.7 Imagem da Placa HAI0232 apos ter passada pelo método de binarização da imagem. 15
vii
2.8 Imagem da Placa HAI0232 apos ter passada pelo método de limpeza de ruidos. . . 15
2.9 Imagem da Placa HAI0232 apos ter passada pelo método de enquadramento da
placa e limpeza de ruidos novamente. . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.10 Imagem da Placa HAI0232 apos ter sido identicado os caracteres. . . . . . . . . . 16
2.11 Imagens das letras utilizadas no OCR de Reconhecimento de Padrão . . . . . . . . 17
2.12 Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão . . . . . . 17
3.1 Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão . . . . . . 19
3.2 Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão . . . . . . 19
3.3 Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão . . . . . . 20
5.1 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 36
5.2 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 37
5.3 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 37
5.4 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 38
5.5 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 38
5.6 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 39
5.7 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 39
5.8 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 40
5.9 Imagens de Placas de Automoveis Utilizados. . . . . . . . . . . . . . . . . . . . . . 40
viii
Lista de Tabelas
3.1 Resultados da placas da amostra . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.6 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.7 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.8 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.9 Log dos Resultados das Placas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
ix
Lista de Algoritmos
x
Capítulo 1
Introdução
Nesta monograa, serão abordados os conceitos fundamentais do Sistema Automático de Con-
trole de Acesso de Veículos Automotivos, (SACAVA), destancando o sistema de Reconheci-
mento de Caracteres de Placas de Identicação de Veículos (RCPIV).
Um SACAVA foi criada em 1976, pelo Departamento de Desenvolvimento Cientíco da
Polícia no Reino Unido, com o objetivo de identicar carros roubados. O protótipo inicial
desenvolvido foi nalizado em 1979 e desenvolvido pela empresa Britânica EMI Electronics.
Esse sistema começou a ser testado na rodovia A1 e no Túnel Dartford, ambos na Inglaterra
(5).(FIG.1.1)
Figura 1.1: Foto do Túnel de Dartford, onde se realizou o teste do primeiro SACAVA, FONTE
(Matthews)
Apenas em 1981 ocorreu a identicação de um carro furtado, seguido da prisão do deli-
tuoso, através do uso desse sistema. Há algum tempo atrás, a identicação de veículos era
um trabalho completamente manual, porém, com o crescimento do tráfego de veículos nas
1
1. Introdução 2
rodovias, a tarefa de identicação manual de veículos se tornou inviável (5).
Hoje em dia, o SACAVA se tornou o principal método para muitos sistemas de transporte
automatizado, algumas das áreas mais famosas são:
• Pagamento Automático de Pedágios
A maioria das estradas pedagiadas está equipada com um sistema eletrônico de coleta
de pedágio FIG(1.2), ela foi desenvolvida para tornar o uxo de tráfego mais rápido,
já que carros não precisam parar para fazer o pagamento. Ele usa basicamente um
transponder instalado no veículo, ativado por uma antena em uma faixa de pedágio.
A sua informação de conta está guardada no transponder, a antena identica o seu
transponder e lê a sua informação de conta. A quantia do pedágio é debitada na sua
conta e você tem a permissão de passar. No Brasil, o sistema eletrônico de coleta do
pedágio é chamado de Sem Parar ou Via Fácil. (14).
Figura 1.2: O sistema E-ZPASS ao aproximar um carro da área do pedágio, o campo de
radiofreqüência emitido pela antena ativa o mecanismos que deduz da conta pré-paga do
motorista. FONTE (6).
• Medição da velocidade media de uma auto estrada
Ao guiar um carro de um ambiente para outro em uma auto estrada pode ser avaliado
a aceleração da velocidade média. Este método é mais potente que o método onde
você simplesmente faz uma única medida, uma vez que o motorista pode desacelerar
rapidamente se ele está ciente de que são realizados no local controle de velocidade.
• Estatísticas sobre o Tráfego
1. Introdução 3
O uso das estradas e outras instalações podem ser avaliados. Quantos automóveis que
trafegam em determinado local durante um dia? Como movimentar o tráfego através de
um município? Como difundir o tráfego das rodovias?
• Controle de acesso a pontes e estacionamentos
Sistemas que detectam os veículos que utilizam pontes ou estacionamentos particulares,
onde os proprietários de veículos que se deslocam recebem uma multa se não pagar pelo
tempo e utilização da mesma.
• Monitoramento de tráfego
Uma metodologia, para contagem de veículos em cruzamentos e vias urbanas. Com
o objetivo de demonstrar que o número de veículos particulares aumentou de forma
signicativa nos centros urbanos. Nesta conjuntura, os estudos de contagem de uxo
de veículos são instrumentos de primordial importância no planejamento de transportes
e no controle da operação, melhorando as condições de uidez do tráfego urbano e a
qualidade de vida da população. Uma demonstração pode ser encontrada em (1) e
observado na FIG1.3.
Figura 1.3: Imagens ao vivo são transmitidas do Centro de Controle de Tráfego para o site da
CCR Ponte e para emissoras de TV, FONTE(das Estradas)
O SACAVA começa seu processo a partir de uma imagem de um carro, onde encontra a
placa e identica seus caracteres. Com o reconhecimento dos caracteres presentes na placa, é
possível identicar o carro e levantar informações sobre o mesmo automaticamente.
Em um SACAVA existem três etapas entre a aquisição da imagem de um carro até o
reconhecimento dos caracteres que compõe a placa de identicação do veículo. A primeira
consiste na localização da placa. A segunda consiste em realizar uma ltragem, ou pré-
processamento da imagem da placa localizada, visando binarizar e remover ruídos da imagem.
E a terceira etapa, consiste em utilizar a função de Optical Character Recognition, (OCR, ou
em português, Reconhecimento Ótico de Caracteres), a m de identicar os caracteres.
1. Introdução 4
Esta pesquisa propõe a realização do sistema RCPIV, ou seja:
• Implementação da segunda etapa, referente ao pré-processamento ou ltragem da placa;
• Implementação da terceira etapa, referente ao reconhecimento de caractere - OCR;
Esse sistema é parte fundamental do sitema SACAVA, já que sua precisão é essencial para
levantar informações sobre veículos com exatidão.
O sistema proposto foi desenvolvido como um programa de computador, em que o sistema
deve ser capaz de analisar as fotograas a cores em qualquer resolução nitida, sendo retirados
em plena luz do dia sem o uso de luz articial. Cada fotograa deve conter uma placa de
carro. O sistema de placa brasileiro é subdivido de acordo o tipo de uso para que o veículo
está registrado:
• Automóveis de aluguel: Táxis, ônibus e caminhões recebem as placas vermelhas, como
pode ser observados na FIG1.4, com caracteres alfanuméricos em branco.
Figura 1.4: Placa de um veículo de aluguel.
• Automóveis de experiência: Os carros que estão em reparo nas concessionárias ou ocinas
e que precisam ser testados na rua levam a placa verde, como demonstrado na FIG1.5.
Figura 1.5: Placa de um veículo que se encontra em estado de teste.
• Automóveis particular: A mais comum, aquela que todo proprietário de carros tem em
seu automóvel, (FIG1.6). O fundo desse tipo de placa é cinza e os caracteres alfanuméri-
cos em preto.
• Placas especiais: Usadas pelos consulados, nas cores azul e branca, veja 1.7. Elas levam
as letras CC, que indicam Corpo Consular. São dois modelos, a do cônsul de carreira,
1. Introdução 5
Figura 1.6: Placa de um veículo particular
que tem o fundo azul e os caracteres em branco e a do cônsul honorário. Essa placa é
igual a comum, porém é adicionada uma chapa ovalada em azul com as letras CC, em
branco.
Figura 1.7: Placas utilizadas por veículos de consulados.
• Placas de bronze: Utilizadas em carros ociais de prefeitos, presidentes de câmaras,
presidente da assembléia, presidente de tribunais, entre outros. O fundo é preto e os
caracteres alfanuméricos dourados. A placa contém o brasão da república, veja a FIG1.8.
Figura 1.8: Placas utilizadas em veículos utilizados por altos cargos.
• Automóveis ociais: Usada nos carros de propriedade do estado, união ou município.
No caso de ser estado, ela leva somente o nome do estado; o da união, somente o nome
do país, (FIG1.9). O fundo é branco com parte alfanumérica em preto.
• Automóveis de aprendizagem: Essa é a placa obrigatória em carros de auto-escola e
identicam que o motorista está em treinamento, (FIG1.10). O fundo é branco e letras
e números vermelhos.
1. Introdução 6
Figura 1.9: Placa utilizadas em automóveis de propriedade do estado, união ou município.
Figura 1.10: Placa de veículo de auto-escola
• Automóveis de coleção: Carros com mais de 30 anos de fabricação e um percentual de
originalidade levam a placa preta, designando carros que pertencem a coleção. O fundo
é preto e as letras utilizam a cor cinza, (FIG1.11).
Figura 1.11: Placa de automóvel de coleção
• Automóveis em fase de teste: Carros das montadoras que ainda estão em fase de testes
para ver seu desempenho rodam com a placa azul,(FIG1.12).
Figura 1.12: Placa de carro que ainda estão em fase de teste.
As placas devem ser todas no modelo particular brasileiro, em que o fundo desse tipo de
1. Introdução 7
placa é cinza e os caracteres alfanuméricos em preto, de acordo com (2). O formato das placas
deve ser (AAA XXXX), onde A são os caracteres de A - Z e X são inteiros no intervalo de
0-9. Como observa-se na FIG1.13 .
Figura 1.13: Demonstração de uma placa de veículo brasileira, de acordo com (2)
O sistema para reconhecer placas deve ser capaz de identicar pela imagem do veículo,
ocorrendo através de fotograas, ou seja, os exemplos são baseados em imagens estáticas. Na
tentativa de conseguir imagens mais nítidas, as fotos foram tiradas de veículos estacionados,
com foco e ash automático, e depois recortados a placas pelo software Photoshop.
1.1 Justicativa
Atualmente a universidade está se reestruturando pelo incentivo do governo federal, através
do REUNI (Programa de Apoio ao Plano de Reestruturação e Expansão das Universidades
Federais). Com o programa em andamento, já ca perceptível o aumento do tráfego de
veículos. Faz-se então, imprescindível um estudo para controlar a expansão desse setor. Uma
alternativa de realizar esse estudo seria por meio de um SACAVA. Com a implementação
desse sistema objetiva-se o aprendizado em processamento de imagens (7), reconhecimento de
padrões (4) e a plataforma MATLAB.
1.2 Objetivos
1.2.1 Objetivo geral
Reconhecer os caracteres de placas de licença de veículos a partir de imagens digitais per-
mitindo a identicação de veículos, sendo uma proposta de controle de acesso de veículos na
UFOP, será feita apenas em modo de simulação, ou seja, não haverá interação direta com o
ambiente real.
1.2.2 Objetivos especícos
Adquirir experiencia na prática em métodos e técnicas básicas em processamento de imagens
e reconhecimento de padrões como o utilizado no SACAVA.
1. Introdução 8
• Pré-processamento ou ltragem da placa de veículos;
• Binarizar a imagem e remover ruídos.
• Realizar reconhecimento de caracteres da placas de identicação de veículos.
Capítulo 2
Desenvolvimento
O SACAVA é realizado em três etapas. A primeira etapa em que tenta encontrar a placa
na imagem. Como segundo passo, tratamento da imagem da placa para que localize os sete
caracteres da placa, e nalmente, a identicação dos sete caracteres. O sistema retorna os
caracteres da placa em formato de texto como o resultado nal.
2.1 Identicação de placas
O método de identicação de placas não foi proposto para ser implementado, entretanto ele
foi analisado para poder compreender a primeira etapa do SACAVA, sendo assim possível ver
qual seria o corte correto realizada na imagem em torno da placa do veículo. Para exemplo,
será citado dois métodos propostos:
2.1.1 Método: Áreas de alto contraste
Espera-se que uma área com os caracteres da placa do veículo contenha as áreas de alto
contraste, devido a muitas arestas entre os caracteres e o fundo escuro brilhante. Ao fazer a
imagem em tons de cinza e, em seguida, perceber a intensidade na imagem como altura em
uma paisagem, pode-se descrever os gradientes da paisagem como gradientes conhecidos. O
método descrito nesta seção é baseado no sistema descritos em (15), onde pode ser observado
na FIG2.1.
O Gradiente descreve o declive do pixel como um vetor de duas dimensões. Uma área com
uma transição suave da intensidade do preto ao branco tem todos os gradientes curtos apon-
tando da mesma forma para todos os pixels da área, enquanto uma área com uma transição
abrupta de preto para (alto contraste) branco irá resultar em gradientes de comprimento,
qonde ira apontar para a área preta. Depois de ter calculado os gradientes da imagem, pode-
mos calcular os seus ângulos. Opta-se por criar uma nova imagem mostrando gradientes com
um ângulo de entre 0◦ e 30◦ em uma linha horizontal. Antes de fazer uma imagem binária
9
2. Desenvolvimento 10
com as possíveis posições de placas de identicação, a área da placa em uma forma coerente
correspondente a imagem com um ltro para cada pixel de uma intensidade à média da sua
vizinhança. Uma vez que estamos interessados principalmente na ligação pixels que estão
próximos uns dos outros (os caracteres da placa) e quiser evitar a área da placa de licença
está associada a áreas próximas de suas bordas superiores e inferiores, dene a placa como
um retângulo horizontal. O resultado é um espaço coeso, com uma altura igual à altura dos
caracteres da placa de licença e uma largura que é ligeiramente maior que a largura da placa.
Como última etapa, cria-se uma imagem binária.
Figura 2.1: (A) Imagem original condensada, (B) Bordas verticais (C) Classicação da imagem
lltrada (D) Projeção vertical PV (y). FONTE: (15)
2.1.2 Método: Análise de Freqüência
Ao analisar a oscilação entre as intensidades de luz e escuridão das placas incluídas, este
método para localizar a placa, marca as áreas que têm uma freqüência próxima da taxa média
de medida das áreas da placa. Para cada pixel da imagem, analisa-se uma freqüência de uma
linha que começa com um determinado número de pontos antes do pixel atual e termina o
mesmo número de pixels depois. Examinam a intensidade acima e abaixo da média da área. É
este valor que é usado como uma expressão da freqüência na área, como demonstra a FIG2.2.
2. Desenvolvimento 11
O método é baseado em (8) que também trabalha com análise de freqüência para localizar as
placas.
Figura 2.2: (A)Imagem de entrada com os candidatos identicados placa de licença,(B) Placa
reconhecida corretamente,(C)O algarismo "8"foi reconhecido como uma letra "B"e (D)método
de segmentação de caracteres não identica caracteres na imagem, FONTE: (8)
2.1.3 Trabalhos Relacionados
Na literatura existem diversas propostas sobre como localizar uma placa de veículo em uma
imagem além das duas citadas. Um exemplo é (12) com a tentativa de localizar áreas retangu-
lares que contêm pequenas áreas, com uma relação altura / largura igual caracteres em uma
placa de licença. Se vários domínios, tais colocados lado a lado é um candidato a placa do
placa do veículo.
Outra maneira de localizar áreas nas imagens é pela Maximally stable extremal regions
(MSER). Uma boa descrição intuitiva da idéia por trás da encontrada em (10),
2.2 Reconhecimento de Caracteres de Placas de Identicação
de Veículos
O reconhecimento do RCPIV consiste em duas etapas, na implementação de técnicas
de ltragem de imagem, que tem como objetivo melhorar a taxa de reconhecimento dos
2. Desenvolvimento 12
caracteres (7), como demonstrado na FIG2.3 ilustrando o diagrama de um RCPIV.
Imagem de iden-
ticação da
placa de veículo
Filtragem
Reconhecimento
- OCR
Texto com os carac-
teres reconhecidos
Figura 2.3: Um uxograma do sistema RCPIV FONTE: (7)
2.2.1 Filtragem da placa
Nesta etapa de ltragem as técnicas de pré-processamento implementadas são aplicadas as
imagens das placas dos veículos (7). Para o pré-processamento da placa utiliza cinco etapas:
Converter para escala de cinza, alinhar a placa de identicação do veículo, tratamento da placa
de identicação do veículo e segmentação da placa. A FIG2.4 será utilizada para demonstrar
os métodos.
Figura 2.4: Foto da Placa HAI0232, que será utilizada como exemplo para demonstrar os
métodos.
2. Desenvolvimento 13
[Link] Converter para escala de cinza
Aplica-se o algoritmo de conversão cromática na imagem. Como a imagem capturada da placa
do veículo é colorida, e os algoritmos empregados não fazem uso desta informação, converte-se
a mesma para 256 tons de cinza, como pode ser observado na FIG2.5.
A converção dos valores RGB para valores de tons de cinza, forma uma soma ponderada
dos R, G, B, utilizando a seguinte expressão:
0.2989 × R + 0.5870 × G + 0.1140 × B
Figura 2.5: Imagem da Placa HAI0232 apos ser convertida para escala de cinza.
[Link] Alinhar a placa de identicação do veículo
Um algoritmo de detecção de ângulo é utilizado sobre a imagem resultante da etapa de con-
versão para escala de cinza. Inicia a identicação das bordas horizontais da placas, calcula o
ângulo de inclinação dos caracteres e gira a placa de modo que o caracteres que alinhado.
Para alinhar a placa, usamos o método Radon Transform (RT) como descrito em (15).
Calcular a transformação das encostas das bordas superior e inferior da placa após converter
em escala de cinza. Uma vez que sabemos a inclinação da placa, podemos girar a imagem, um
número correspondente de graus na direção oposta a placa com o objetivo de deixar a placa
alinhada horizontalmente.
Para representar uma imagem com a Radon Transform realiza projeções para todos os
ângulos entre 0◦ e 179◦ (Não utiliza o 180◦ pois é o mesmo resultado em 0◦ ). Isso resulta em
uma matriz que indica o grau em que é provável que há uma linha na imagem original para
cada ângulo θ e linha de sensores, FIG2.6.
O método pode ser utilizado em uma imagem em tons de cinza, mas para melhores resul-
tados, é aplicado apenas em imagens de placas de veículos antes do tratamento de imagem.
Optamos por selecionar apenas as arestas horizontais. Por exemplo, uma placa borda supe-
2. Desenvolvimento 14
rior e inferior está marcada, enquanto as margens esquerda e direita não serão selecionadas.
Quando a inclinação da placa da imagem é encontrada, a imagem pode ser girada.
Figura 2.6: Imagem da Placa HAI0232 ápos ter passada pelo método de correção de angulo.
Há um outro método de rotação, o Hough Transform, visto em (Xu). Pela semelhança
entre eles, foi utilizado apenas o método RT.
[Link] Tratamento da placa
Após este procedimento, realiza-se uma binarização local adaptativa sobre a imagem, FIG2.7.
Em seguida, limpa-se os ruídos e realça a área da placa na imagem original, através de um
algoritmo de erode e dilate, FIG2.8. Esta etapa, permite uma melhora na relação do contraste
entre os caracteres e o fundo da placa, propiciando uma melhor segmentaçã[Link] fatores
contribuem para melhorar a taxa de sucesso do reconhecimento ótico dos caracteres (OCR).
Depois de realce de contraste criado uma imagem binária com componentes coesa, parece
provável que os sinais não são os únicos componentes coerente na imagem. Por exemplo,
a placa pode estar suja, ou pode estar haver elementos escuros fora da chapa, deverá ser
coerente.
Além disso, pode acontecer dos caracteres ser confundido com a borda da placa, e/ou se
há impurezas ou parafusos na placa 1 . Ao remover o estreito, elementos horizontais que são
muito branco ou muito preto e removendo ruidos entre a borda da placa e caractere.
Após faz um enquadramento da placa, para que a área exterior a placa que esteja presente
na imagem, não seja identicada pelo OCR, veja em 2.9.
[Link] Segmentação das placas
Armazenar as coordenadas das áreas detectadas que podem ser reconhecidos como caractere.
Por meio das coordenadas das áreas detectadas, são segmentadas as sete partes reconhecidas
1
A placa é acoplada em um carro com parafusos, no qual às vezes são visíveis na placa
2. Desenvolvimento 15
Figura 2.7: Imagem da Placa HAI0232 apos ter passada pelo método de binarização da
imagem.
Figura 2.8: Imagem da Placa HAI0232 apos ter passada pelo método de limpeza de ruidos.
pela indexação. Esses métodos são repetidos até que seja encontrado o número de caracteres
esperado.
Este método de componentes consecutivos realiza a separação de caractere em uma obra em
placa utilizando componentes consistentes. A idéia é baseada em cada um dos sete caracteres
que são representadas na imagem da placa é um componente único e contínuo. Os componentes
coerentes a ser trabalhado consistem de pixels escuros na imagem original (os caracteres são
escuros), o método utilizado é de (8) e (Nijhuis). Para os caracteres ser distinguidos claramente
é necessário aumentar o contraste da imagem, em caso de forte luz na placa. Para realce de
contraste ideal será pixels que fazem parte de um caractere em tons de cinza da placa, têm
valores de intensidade que são muito escuras, enquanto os pixels na luz branca da placa terão
valores de intensidade que são muito brilhantes.
Cada caracter preenche um máximo de 1
7 da área de imagem. Cada caracter tem uma
largura máxima de 1
7 de largura da imagem. A altura mínima dos caracteres deverá ser de
2. Desenvolvimento 16
Figura 2.9: Imagem da Placa HAI0232 apos ter passada pelo método de enquadramento da
placa e limpeza de ruidos novamente.
pelo menos uma certa constante, o tamanho mínimo de caracteres deve ser de pelo menos uma
certa constante,
Para cada caracter, há seis outros caracteres que são quase tão alto quanto o caracter:
Todos os sete caracteres da placa é igualmente elevado.
Para cada caracter, há seis outros caracteres que estão na mesma altura que o sinal: se a
placa é horizontal na imagem, todos os sete caracteres a mesma altura.
Os sete caracteres são divididos em dois grupos: as três letras e os quatro números, onde
forma um determinado grupo em relação à distância entre os caracteres.
Uma vez que o componente é coerente, não havendo sinais que estão ordenados, serão
obtidos a partir de uma imagem binária onde apenas os caracteres da placa de licença é
vericada, veja na gura 2.10
Figura 2.10: Imagem da Placa HAI0232 apos ter sido identicado os caracteres.
2. Desenvolvimento 17
[Link] Trabalhos Relacionados
À metodologia de Mountain Valley que é baseada em uma projeção das colunas na imagem
de uma placa de licença. Ou seja, os valores de intensidade em cada coluna é somado com
base nesses montantes . Esta projeção nos dará uma indicação de onde há indícios e onde
existem áreas dos sinais de que pode cortar os caracteres. Este método é utilizado em (8) e
(13). Pode-se mencionar que em (8) e (12) utiliza componentes semelhante para a localização
da placa.
2.2.2 Reconhecimento de caractere
O processo de extração é a etapa mais importante do OCR. A qualidade dessa etapa inuencia
no resultado de todo o sistema.
A escolha de quais características serão utilizadas no processo de reconhecimento é muito
importante. A construção do vetor de características é realizada, utilizando-se a segmentação
dos caracteres contidos na área da placa. Através da utilização de um algoritmo de agrupa-
mento por similaridade e um conjunto de heurísticas os caracteres são extraídos da imagem
binarizada, no módulo de extração de características.
Finalmente é realizada a fase de reconhecimento do vetor de características, onde os três
primeiros caracteres são apresentados para o reconhecimento de letras, utilizando as imagens
representadas na FIG2.11 , e os caracteres restantes são apresentados para o reconhecimento
de números, utilizando as imagens representadas na FIG3.3, que, enm, deverá apontar o
caractere correto. Uma abordagem usual para a construção da etapa de reconhecimento
consiste na utilização de similaridade.
Figura 2.11: Imagens das letras utilizadas no OCR de Reconhecimento de Padrão
Figura 2.12: Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão
Capítulo 3
Experimentos
Para a o experimento do programa desenvolvido ao decorrer da monograa, foram retirados
trezentos e quarenta e três (343) fotos de placas de licença de veículos, que estão no capitulo
5. As placas retiradas apresentam diversas características, desde de ângulos diferentes a
qualidade da imagem. Encontramos em nosso conjunto de amostra contem placas sujas,
com engate tampando parte do numero, placas amassadas e desgastadas. Abrangendo todas
as possibilidades do estado da placa de veículo. No processo das imagens da placas temos
reconhecidos 75% das placas do conjunto de amostras, sendo encontrado no capitulo 5, o
resultado de todas as placas, com os caracteres encontrados de cada placas. Nesse capitulo
vamos mostrar os resultado das placas e dos caracteres encontrados das placas, TABELA ??;
Numero de Placas Caracteres Reconhecidos Porcentagem
0 0 0%
0 1 0%
0 3 0%
0 4 0%
10 5 2.8%
75 6 21.99%
258 7 75.21%
Tabela 3.1: Resultados da placas da amostra
Abaixo temos alguns exemplos de erros que foram encontradas no processo da imagens. E
serão explicados a seguir;
3.1 Placa GOR5902
Esta placa esta amassada, apos o angulo dela corrigdo, obeservamos que ja se torna mais
legivel aos olhos. No metodo de reconhecimento devido ao amassado a letra 'O' e a letra 'R'
18
3. Experimentos 19
caram descongurada, sendo assim reconhecendo como 'Q' e 'P', sucessivamente. Obtendo
como resposta GQP5902.
Figura 3.1: Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão
3.2 Placa GZF8464
A placa GZF8464 se encontra fora dos padrões deno pelo contran, (? ), sendo assim o numeral
'6', na etapa de reconhecimento é reconhecido como o numeral '4', saindo com resultado
GZF8444.
Figura 3.2: Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão
3. Experimentos 20
3.3 Placa HCH8169
Nesta placa, mesmo a correção do angulo, os seus caracteres continuam alguns inclinados, o
que na etapa de reconhecimento de padrões são identicado por outros caracteres, resultado
da placa HEH8769.
Figura 3.3: Imagens dos numeros utilizadas no OCR de Reconhecimento de Padrão
Capítulo 4
Implementação
Para a implementação da monograa foi utilizado o programa Matlab versão 2009b e o
Notepad++, o código foi implementado na linguagem Matlab (extenção .m).
4.1 Criar o Template das Letras
Neste arquivo é lido todas as imagens binaria do tamanho 24x42 pixels das letras, referente
ao reconhecimento padrão das placas. Após a leitura de todas as placas é gerado um arquivo
".mat ", com o nome de "templatesL", no qual apresenta uma tabela com os valores das
imagens binarias, onde cada imagem é referente a um posição na tabela de eapaço 24x42.
Listing 4.1: criar_letras_template.m
1 %−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−− Criar Template do Reconhecimento de Padrões dos l e t r a s −−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%− Letra
6 A=imread ( ' l e t r a s _ n u m e r o s \A. bmp ' ) ; B=imread ( ' l e t r a s _ n u m e r o s \B . bmp ' ) ;
C=imread ( ' l e t r a s _ n u m e r o s \C. bmp ' ) ;D=imread ( ' l e t r a s _ n u m e r o s \D. bmp ' ) ;
E=imread ( ' l e t r a s _ n u m e r o s \E . bmp ' ) ; F=imread ( ' l e t r a s _ n u m e r o s \F . bmp ' ) ;
G=imread ( ' l e t r a s _ n u m e r o s \G. bmp ' ) ;H=imread ( ' l e t r a s _ n u m e r o s \H. bmp ' ) ;
I=imread ( ' l e t r a s _ n u m e r o s \ I . bmp ' ) ; J=imread ( ' l e t r a s _ n u m e r o s \J . bmp ' ) ;
11 K=imread ( ' l e t r a s _ n u m e r o s \K. bmp ' ) ; L=imread ( ' l e t r a s _ n u m e r o s \L . bmp ' ) ;
M=imread ( ' l e t r a s _ n u m e r o s \M. bmp ' ) ;N=imread ( ' l e t r a s _ n u m e r o s \N. bmp ' ) ;
O=imread ( ' l e t r a s _ n u m e r o s \O. bmp ' ) ; P=imread ( ' l e t r a s _ n u m e r o s \P . bmp ' ) ;
Q=imread ( ' l e t r a s _ n u m e r o s \Q. bmp ' ) ;R=imread ( ' l e t r a s _ n u m e r o s \R. bmp ' ) ;
S=imread ( ' l e t r a s _ n u m e r o s \S . bmp ' ) ;T=imread ( ' l e t r a s _ n u m e r o s \T. bmp ' ) ;
16 U=imread ( ' l e t r a s _ n u m e r o s \U. bmp ' ) ;V=imread ( ' l e t r a s _ n u m e r o s \V. bmp ' ) ;
W=imread ( ' l e t r a s _ n u m e r o s \W. bmp ' ) ;X=imread ( ' l e t r a s _ n u m e r o s \X. bmp ' ) ;
Y=imread ( ' l e t r a s _ n u m e r o s \Y. bmp ' ) ; Z=imread ( ' l e t r a s _ n u m e r o s \Z . bmp ' ) ;
l e t t e r =[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ] ;
21
c h a r a c t e r=l e t t e r ;
21
4. Implementação 22
t e m p l a t e s=m a t 2 c e l l ( c h a r a c t e r , 4 2 , [ 2 4 24 24 24 24 24 24 . . .
24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 2 4 ] ) ;
26
save ( ' t e m p l a t e s L ' , ' t e m p l a t e s ' )
clear a l l
4.2 Criar o Template dos números
Neste arquivo é lido todas as imagens binaria do tamanho 24x42 pixels dos números, referente
ao reconhecimento padrão das placas. Após a leitura de todas as placas é gerado um arquivo
".mat ",com o nome de "templatesN"no qual apresenta uma tabela com os valores das imagens
binarias, onde cada imagem é referente a um posição na tabela de eapaço 24x42.
Listing 4.2: criar_numeros_template.m
1 %−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−− Criar Template do Reconhecimento de Padrões dos Numeros −−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%− Numero
6 um=imread ( ' l e t r a s _ n u m e r o s \ 1 .bmp ' ) ; d o i s=imread ( ' l e t r a s _ n u m e r o s \ 2 .bmp ' ) ;
t r e s=imread ( ' l e t r a s _ n u m e r o s \ 3 .bmp ' ) ; q u a t r=imread ( ' l e t r a s _ n u m e r o s \ 4 .bmp ' ) ;
c i n c o=imread ( ' l e t r a s _ n u m e r o s \ 5 .bmp ' ) ; s e i s=imread ( ' l e t r a s _ n u m e r o s \ 6 .bmp ' ) ;
s e t e=imread ( ' l e t r a s _ n u m e r o s \ 7 .bmp ' ) ; o i t o=imread ( ' l e t r a s _ n u m e r o s \ 8 .bmp ' ) ;
nove=imread ( ' l e t r a s _ n u m e r o s \ 9 .bmp ' ) ; z e r o=imread ( ' l e t r a s _ n u m e r o s \ 0 .bmp ' ) ;
11
number=[um d o i s t r e s q u a t r c i n c o s e i s s e t e o i t o nove z e r o ] ;
c h a r a c t e r = number ;
16 t e m p l a t e s = m a t 2 c e l l ( c h a r a c t e r , 4 2 , [ 2 4 24 24 24 24 24 24 24 24 2 4 ] ) ;
save ( ' templatesN ' , ' t e m p l a t e s ' )
clear a l l
4.3 Identicar as imagens das Letras
Esta função tem o objetivo de identicar as imagens retiradas da placas do veiculos, e com-
parar com os dados existente no template 'templatesL', onde devolve a posição do dado mais
semelhante da imagen retirada da placa, e devolve como resultado a letra correspondente.
Listing 4.3: ler_letras.m
function l e t r a=l e r _ l e t r a s ( imagn , num_letras )
% Calcula a correlação entre modelo e imagem de entrada
4. Implementação 23
5 % E sua saída é uma seqüência de caracteres contendo a l e t r a .
% Tamanho da 'imagem ' deve ser 42 x 24 p i x e l s
global t e m p l a t e s
comp=[ ] ;
10 for n=1: num_letras
sem=c o r r 2 ( t e m p l a t e s { 1 , n } , imagn ) ;
comp=[comp sem ] ; %#ok<AGROW>
end
i n d i c e _ t a b e l a=find ( comp==max( comp ) ) ;
15
i f i n d i c e _ t a b e l a==1
l e t r a= 'A ' ;
e l s e i f i n d i c e _ t a b e l a==2
l e t r a= 'B ' ;
20 e l s e i f i n d i c e _ t a b e l a==3
l e t r a= 'C ' ;
e l s e i f i n d i c e _ t a b e l a==4
l e t r a= 'D ' ;
e l s e i f i n d i c e _ t a b e l a==5
25 l e t r a= 'E ' ;
e l s e i f i n d i c e _ t a b e l a==6
l e t r a= 'F ' ;
e l s e i f i n d i c e _ t a b e l a==7
l e t r a= 'G ' ;
30 e l s e i f i n d i c e _ t a b e l a==8
l e t r a= 'H ' ;
e l s e i f i n d i c e _ t a b e l a==9
l e t r a= ' I ' ;
e l s e i f i n d i c e _ t a b e l a==10
35 l e t r a= ' J ' ;
e l s e i f i n d i c e _ t a b e l a==11
l e t r a= 'K ' ;
e l s e i f i n d i c e _ t a b e l a==12
l e t r a= 'L ' ;
40 e l s e i f i n d i c e _ t a b e l a==13
l e t r a= 'M' ;
e l s e i f i n d i c e _ t a b e l a==14
l e t r a= 'N ' ;
e l s e i f i n d i c e _ t a b e l a==15
45 l e t r a= 'O ' ;
e l s e i f i n d i c e _ t a b e l a==16
l e t r a= 'P ' ;
e l s e i f i n d i c e _ t a b e l a==17
l e t r a= 'Q ' ;
50 e l s e i f i n d i c e _ t a b e l a==18
l e t r a= 'R ' ;
e l s e i f i n d i c e _ t a b e l a==19
l e t r a= ' S ' ;
e l s e i f i n d i c e _ t a b e l a==20
55 l e t r a= 'T ' ;
e l s e i f i n d i c e _ t a b e l a==21
l e t r a= 'U ' ;
e l s e i f i n d i c e _ t a b e l a==22
l e t r a= 'V ' ;
4. Implementação 24
60 e l s e i f i n d i c e _ t a b e l a==23
l e t r a= 'W' ;
e l s e i f i n d i c e _ t a b e l a==24
l e t r a= 'X ' ;
e l s e i f i n d i c e _ t a b e l a==25
65 l e t r a= 'Y ' ;
else
l e t r a= ' Z ' ;
end
4.4 Identicar as imagens dos números
Esta função tem o objetivo de identicar as imagens retiradas da placas do veiculos, e com-
parar com os dados existente no template 'templatesN', onde devolve a posição do dado mais
semelhante da imagen retirada da placa, e devolve como resultado o número correspondente.
Listing 4.4: ler_numeros.m
1 function numero=ler_numeros ( imagn , num_number )
% Calcula a correlação entre modelo e imagem de entrada
% E sua saída é uma seqüência de caracteres contendo a l e t r a .
6 % Tamanho da 'imagem ' deve ser 42 x 24 p i x e l s
global t e m p l a t e s
comp=[ ] ;
for n=1:num_number
11 sem=c o r r 2 ( t e m p l a t e s { 1 , n } , imagn ) ;
comp=[comp sem ] ; %#ok<AGROW>
end
i n d i c e _ t a b e l a=find ( comp==max( comp ) ) ;
16 i f i n d i c e _ t a b e l a==1
numero= ' 1 ' ;
e l s e i f i n d i c e _ t a b e l a==2
numero= ' 2 ' ;
e l s e i f i n d i c e _ t a b e l a==3
21 numero= ' 3 ' ;
e l s e i f i n d i c e _ t a b e l a==4
numero= ' 4 ' ;
e l s e i f i n d i c e _ t a b e l a==5
numero= ' 5 ' ;
26 e l s e i f i n d i c e _ t a b e l a==6
numero= ' 6 ' ;
e l s e i f i n d i c e _ t a b e l a==7
numero= ' 7 ' ;
e l s e i f i n d i c e _ t a b e l a==8
31 numero= ' 8 ' ;
e l s e i f i n d i c e _ t a b e l a==9
numero= ' 9 ' ;
else
4. Implementação 25
numero= ' 0 ' ;
36 end
4.5 Correção ao ângulo da Placa
A função identica a localidade das bordas da placa, e obtém o ângulo de inclinação da
imagem, onde depois a imagem é rotacionada, mais próximo de sua origem, ou seja, uma
placa de veículo não inclinada.
Listing 4.5: correcao_do_angulo_da_placa.m
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−− Correção do angulo da Placa −−−−−−−−−−−−−−−−−−−−−−−−−−−−
3 %−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
function [ c o r r e c a o _ p l a c a angulo_theta ] = correcao_do_angulo_da_placa ( imagem_placa )
%Correção das matrizes da Placa
% imagem_placa − Placa da Imagem
8
%− Filtragem
denoised_imagem_placa = w i e n e r 2 ( imagem_placa , [ 1 1 0 ] ) ;
%− detecção de bordas horizontal
13 edges_image = edge ( denoised_imagem_placa , ' s o b e l ' , ' h o r i z o n t a l ' ) ;
%− Calculo de transformação randomico
theta = 60:120;
[R xp ] = radon ( edges_image , t h e t a ) ; %#ok<NASGU>
18
%− Transformar a busca da máxima
[ r c ] = find (R == max(R ( : ) ) ) ; %#ok<ASGLU>
angulo_theta = t h e t a ( c ( 1 ) ) ;
23 %− Girar a imagem
xform = [
1 , tan ( ( angulo_theta − 90) ∗ pi / 1 8 0 ) , 0 ; 0 , 1 , 0 ; 0 , 0 , 1 ] ;
tform = maketform ( ' a f f i n e ' , xform ) ;
c o r r e c a o _ p l a c a = i m t r a n s f o r m ( imagem_placa , tform , ' b i l i n e a r ' ) ;
4.6 Correção ao ângulo dos Caracteres
A função identica as partes extremas dos caracteres, e obtém o ângulo de inclinação da
imagem, onde depois a imagem é rotacionada, mais próximo de sua origem, ou seja, um
caractere sem inclinação.
Listing 4.6: correcao_do_angulo_do_caracter.m
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−− Correção do angulo do Caracter −−−−−−−−−−−−−−−−−−−−−−−−−
4. Implementação 26
3 %−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
function [ c o r r e c a o _ p l a c a angulo_theta ] = correcao_do_angulo_do_caracter ( imagem_placa )
%Correção das matrizes do caracter
% imagem_placa − Placa da Imagem
8 %− Filtragem
denoised_imagem_placa = w i e n e r 2 ( imagem_placa , [ 1 3 0 ] ) ;
%− detecção de bordas horizontal
edges_image = edge ( denoised_imagem_placa , ' s o b e l ' , ' h o r i z o n t a l ' ) ;
13
%− Calculo de transformação randomico
theta = 60:120;
[R xp ] = radon ( edges_image , t h e t a ) ; %#ok<NASGU>
18 %− Transformar a busca da máxima
[ r c ] = find (R == max(R ( : ) ) ) ; %#ok<ASGLU>
angulo_theta = t h e t a ( c ( 1 ) ) ;
%− Girar a imagem
23 xform = [ 1 , tan ( ( angulo_theta − 90) ∗ pi / 1 8 0 ) , 0 ; 0 , 1 , 0 ; 0 , 0 , 1 ] ;
tform = maketform ( ' a f f i n e ' , xform ) ;
c o r r e c a o _ p l a c a = i m t r a n s f o r m ( imagem_placa , tform , ' b i l i n e a r ' ) ;
4.7 Reconhecimento dos Caracteres - OCR
Nesta primeira parte do OCR, ocorre a leitura e o redimensionamento da imagem para 216 x
104 pixels, que com esse tamanho os caracteres retirados se assemelham mais com os originais
do OCR.
Listing 4.7: ocr.m
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−− Programa de Reconhecimento de Caracteres − OCR −−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
5 %− Função
function p l a c a E n c o n t r a d a = OCR( img )
%−−−−−−−−−−− Leitura e Redisionamento da imagem −−−−−−−−−−−−−−−−−−−−−−−−−−
%− Ler a Imagem
10 auxImagemPlaca = [ 'D: \ PlacasDeCarro \ ' img ] ;
placa_do_carro=imread ( auxImagemPlaca ) ;
%− Redimensionar o tamanho da placa para o tamanho compativel do OCR
15 %− 216 x 104 Pixels
placa_do_carro = i m r e s i z e ( placa_do_carro , [ 1 0 4 2 1 6 ] , ' l a n c z o s 3 ' ) ;
O proximo passo é transformar a imagem para escala de cinza.
4. Implementação 27
Listing 4.8: ocr.m
%−−−−−−−−−−−−−−− Converte para escala de cinza −−−−−−−−−−−−−−−−−−−−−−−−−−−
3
i f s i z e ( placa_do_carro , 3 )==3 %RGB image
placa_do_carro=r g b 2 g r a y ( placa_do_carro ) ;
end
Neste ponto do algoritmo, a placa primeira é alinhada, depois transformada em uma
imagem binaria, e feito o tratamento de limpeza de ruídos na imagem.
Listing 4.9: ocr.m
%−−−−−−−−−−−−−−−−−−−−− Alinhar a placa do carro −−−−−−−−−−−−−−−−−−−−−−−−−−
%− Chama a funcao de correção do angulo da placa do carro
4 placa_do_carro_SC = correcao_do_angulo_da_placa ( placa_do_carro ) ;
[ p l a t e _ h e i g h t plate_width ] = s i z e ( placa_do_carro_SC ) ;
p l a t e _ i m a g e _ h i s t e q = a d a p t h i s t e q ( placa_do_carro_SC ) ;
9
%− Transforma a imagem para uma imagem binaria .
t h r e s h o l d = g r a y t h r e s h ( placa_do_carro_SC ) ;
placa_do_carro_BW =~im2bw ( placa_do_carro_SC , t h r e s h o l d ) ;
14
%− Limpar os ruidos deixados na imagem
placa_do_carro_BW = bwareaopen ( placa_do_carro_BW , 3 0 ) ;
%− Define o tamanho que ocupa a placa do carro
19 SE = s t r e l ( ' r e c t a n g l e ' , [ 1 5 0 ] ) ;
img_open = imopen ( placa_do_carro_BW , SE) ;
placa_do_carro_BW = placa_do_carro_BW − img_open ;
24 placa_do_carro_BW = bwareaopen ( placa_do_carro_BW , 3 0 ) ;
O algoritmo primeiro reconhece na placa as posições onde se encontra os possíveis carac-
teres e salva, e um vetor de posições, onde depois são retiradas os 7 elementos das imagens
mais prováveis em serem os caracteres.
Listing 4.10: ocr.m
1 %−−−−−−−−−−−−−−−−−−−−−− Indexação −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[ L n ] = b w l a b e l ( placa_do_carro_BW ) ;
%− Altura mínima do Caracter da Placa
6 min_character_height = c e i l ( 0 . 2 0 ∗ p l a t e _ h e i g h t ) ;
%− calcular as áreas das e s t a t í s t i c a s
s = r e g i o n p r o p s (L) ;
4. Implementação 28
11 %− Array para manter as áreas de a l t i t u d e .
h = [];
boxes = { } ;
%− iteração , após todas as áreas detectadas .
16 img_bw2 = zeros ( p l a t e _ h e i g h t , plate_width ) ;
indexes = [ ] ;
for i = 1 : n
21 %− menor retângulo que contém área
box = s ( i ) . BoundingBox ;
%− se a área atende aos c r i t é r i o s exigidos
i f box ( 3 ) / box ( 4 ) <= 1 . 5 && box ( 4 ) >= min_character_height
26
%− adicionar um retângulo e a altura de tabelas
boxes { end+1} = box ; %#ok<AGROW>
h ( end +1) = box ( 4 ) ; %#ok<AGROW>
i n d e x e s ( end +1) = i ; %#ok<AGROW>
31 img_bw2 = img_bw2 + (L == i ) ;
end
end
36 imgn = placa_do_carro_BW ;
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
41 % armazenar todo o conjunto de caracteres
chars = {};
% armazenar todo o conjunto de coordenadas de caracteres
boxx = { } ;
46
% Se encontrar mais de sete itens
i f numel ( h ) >= 7
51 % ANÁLISE ESTATÍSTICA
% Valor absoluto da diferença entre o montante do comércio e da altura média das
áreas detectadas .
hh = abs ( h − median ( h ) ) ;
56 % diferenças de c l a s s i f i c a ç ã o
[ v i n d 1 ] = sort ( hh ) ;
% selecionando os índices com sete elementos
ind = ind1 ( 1 : 7 ) ;
61
% índices ascendentes
i n d = sort ( i n d ) ;
4. Implementação 29
img_bw3 = zeros ( p l a t e _ h e i g h t , plate_width ) ;
66
% iteração dos índices selecionados
for i = 1 : numel ( i n d )
71 % Escolha o índice
indx = i n d ( i ) ;
% Seleciona o menor
box = boxes { indx } ;
76 boxx { i } = box ; %#ok<AGROW>
% Area do caracter
c h a r a c t e r = imcrop ( plate_image_histeq , box ) ;
81 % Escreve os resultado para matriz
chars { i } = character ; %#ok<AGROW>
img_bw3 = img_bw3 + (L == i n d e x e s ( indx ) ) ;
end
86
imgn = img_bw3 ;
end
Realiza-se o reconhecimento das imagens do caracteres, onde primeiramenteo carrega o
template dos dados das letras, e realiza a vericação das três primeiras imagens, e posteri-
omente é carregado o template dos números, assim realizando o resto do reconhecimento. O
resultado do reconhecimento da placa é salvo em uma variável.
Listing 4.11: ocr.m
1 %−−−−−−−−−−−−−−−−−− Reconhecimento de Caractere −−−−−−−−−−−−−−−−−−−−−−−−−−
%− Armazenamento palavra matriz da imagem
placaEncontrada = [ ] ;
6
%− Carrega templates
load t e m p l a t e s L
global t e m p l a t e s
11 %− Calcule o número de l e t r a s no arquivo de modelo
n l e t r a=s i z e ( t e m p l a t e s , 2 ) ;
[ L Ne ] = b w l a b e l n ( imgn ) ;
16 for n=1:3
[ r , c ] = find (L==n ) ;
%− Extrai a l e t r a
nL=imgn ( min ( r ) : max( r ) , min ( c ) : max( c ) ) ;
21
4. Implementação 30
nL = correcao_do_angulo_do_caracter ( nL ) ;
%− Redimensiona o tamanho para o do tamanho do template
img_L=i m r e s i z e ( nL , [ 4 2 2 4 ] , ' l a n c z o s 3 ' ) ;
26
%− Chama a funcao para converter a image para texto
l e t t e r=l e r _ l e t r a s ( img_L , n l e t r a ) ;
% Concatena a l e t r a
31 p l a c a E n c o n t r a d a =[ p l a c a E n c o n t r a d a l e t t e r ] ; %#ok<AGROW>
end
clear global t e m p l a t e s
36
%− Carrega templates
load templatesN
global t e m p l a t e s %#ok<REDEF>
nnumeros=s i z e ( t e m p l a t e s , 2 ) ;
41
for n=4:Ne
[ r , c ] = find (L==n ) ;
%− Extrai a l e t r a
46 nN=imgn ( min ( r ) : max( r ) , min ( c ) : max( c ) ) ;
nN = correcao_do_angulo_do_caracter (nN) ;
%− Redimensiona o tamanho para o do tamanho do template
51 img_N=i m r e s i z e (nN , [ 4 2 2 4 ] , ' l a n c z o s 3 ' ) ;
% Chama a funcao para converter a image para texto
l e t t e r=ler_numeros (img_N , nnumeros ) ;
56 % Concatena a l e t r a
p l a c a E n c o n t r a d a =[ p l a c a E n c o n t r a d a l e t t e r ] ; %#ok<AGROW>
end
61 i f ( s i z e ( placaEncontrada , 2 ) ~= 7 )
p l a c a E n c o n t r a d a = ' 000ERRO ' ;
end
clear global t e m p l a t e s
No nal do processo de cada placa é possível visualizar os resultados dos passos das imagens
processadas no algoritmo.
Listing 4.12: ocr.m
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Vizualizar −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%− e x i b i r a área original da placa
%f2 = figure (2) ;
5 axis t i g h t e q u a l o f f ;
4. Implementação 31
subplot ( 4 , 7 , 1 : 7 ) , imshow ( placa_do_carro ) ,
axis on ,
t i t l e ( ' Placa do Carro ' ) ;
10 %− e x i b i r a área da placa , após a correcção da inclinação
subplot ( 4 , 7 , 8 : 1 4 ) , imshow ( placa_do_carro_SC ) ,
axis on ,
t i t l e ( ' Placa c o r r i g i n a apos i n c l i n a ç ã o ' ) ;
15 subplot ( 4 , 7 , 1 5 : 2 1 ) , imshow ( placa_do_carro_BW ) ,
axis on ,
t i t l e ( ' Placa após b i n a r i z a ç ã o ' ) ;
for i = 1 : length ( boxes )
20 r e c t a n g l e ( ' p o s i t i o n ' , boxes { i } , ' e d g e c o l o r ' , ' r ' , ' LineWidth ' , 2 ) ;
end
4.8 Metodo Principal
Primeiramente são lidas todas as imagens encontradas na pasta onde estão as imagens dos
veículos, abre um arquivo texto para escrita, para escrever os resultados do OCR, e em um
loop a função de reconhecimento é chamado para realizar o processo. Após todas as placas
terem sido processadas, o programa gera um Log de Resposta, comparando com o arquivo que
contém as placas corretamente processadas, e as encontradas no algoritmo proposto.
Listing 4.13: main.m
% −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−Programa Principal −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
4
warning o f f %#ok<WNOFF>
% Limpar Tudo
clc , close a l l , clear a l l
9
%−− Ler as imagens no Diretorio do Computador
%−− Diretorio
p l a t e F i l e s = dir ( 'D: \ PlacasDeCarro \ ∗ . j p g ' ) ;
14
%−− Abrir arquivo texto para escrever as placas
a r q u i v o T e x t o = fopen ( ' t e x t . t x t ' , ' wt ' ) ;
%−− Um loop para l e i t u r a de todos as placas lidas
19
for k = 1 : length ( p l a t e F i l e s )
nomeDaImagem = p l a t e F i l e s ( k ) . name ;
24 p l a c a E n c o n t r a d a = OCR( nomeDaImagem ) ;
4. Implementação 32
% Escreva a ' placa ' no arquivo texto
f p r i n t f ( arquivoTexto , '%s \n ' , p l a c a E n c o n t r a d a ) ;
29 % Limpar a variavel placaEncontrada '
p l a c a E n c o n t r a d a =[ ] ;
end
34 %−− Fechar o ArquivoTexto
fclose ( arquivoTexto ) ;
%Abri o arquivo texto
winopen ( ' t e x t . t x t ' )
39
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−− Gerar Log dos Resultados −−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
44 %−− Numero de placas a serem verificadas
numIni = 1 ;
numCap = 3 4 3 ;
%−− Arquivo que se encontra as placas com sua licença correta .
49 r e s p = t e x t r e a d ( ' PlacasDoCarroTotal . t x t ' , '%7c ' ,numCap) ;
%−− Arquivo gerado pelo OCR, após a l e i t u r a das placas .
o c r = t e x t r e a d ( ' t e x t . t x t ' , '%7c ' ,numCap) ;
54 %−− Abrir o arquivo texto que irá gerar o LOG do Resultado .
a r q u i v o T e x t o = fopen ( ' LOG_PlacasDoCarroTotal . t x t ' , ' wt ' ) ;
%−− Escrever no arquivo o cabeçalho da tabela .
M = blanks ( 5 0 ) ;
59 M( 1 : 6 ) = 'HUMANO' ;
M( 1 0 : 1 5 ) = 'METODO' ;
M( 2 0 : 2 5 ) = 'CARACT ' ;
M( 3 5 : 4 0 ) = 'PLACAS ' ;
M( 2 , : ) = blanks ( 5 0 ) ;
64 M( 3 , : ) = blanks ( 5 0 ) ;
letras = 0;
captchas = 0;
h = 1;
69 for i =1:7
nL{ i }=0;
end
for i = numIni : numCap
74 M( i + 6 , : ) = blanks ( 5 0 ) ;
M( i + 6 , 1 : 7 ) = r e s p ( i , : ) ;
sprintf ( '%d ' , i )
M( i +6 ,10:(9+7) ) = o c r ( i , : ) ;
79 letAux = 0 ;
4. Implementação 33
for k = 1 : 7
i f ( r e s p ( i , k ) == o c r ( i , k ) )
84 letAux = letAux + 1 ;
end
h = h + 1;
end
89 l e t r a s = l e t r a s + letAux ;
msg = sprintf ( '%d (%d%%) ' , letAux , letAux ∗ 1 5 ) ;
M( i + 6 , 2 0 : ( length ( msg ) + 1 9 ) ) = msg ;
i f letAux == 1
94 nL{1} = nL{1} + 1 ; %#ok<∗SAGROW>
e l s e i f letAux == 2
nL{2} = nL{2} + 1 ;
e l s e i f letAux == 3
nL{3} = nL{3} + 1 ;
99 e l s e i f letAux == 4
nL{4} = nL{4} + 1 ;
e l s e i f letAux == 5
nL{5} = nL{5} + 1 ;
e l s e i f letAux == 6
104 nL{6} = nL{6} + 1 ;
e l s e i f letAux == 7
captchas = captchas + 1;
M( i + 6 , 3 6 : 3 7 ) = 'OK' ;
nL{7} = nL{7} + 1 ;
109 end
end
C = ( c a p t c h a s ∗ 1 0 0 ) / ( ( numCap−numIni+1) ) ;
L = ( l e t r a s ∗ 1 0 0 ) / ( 7 ∗ ( numCap−numIni+1) ) ;
114
msg = sprintf ( '%d/%d (%.0 f%%) ' , l e t r a s , 7 ∗ ( numCap−numIni+1) , L) ;
M( 2 , 2 0 : ( length ( msg ) + 1 9 ) ) = msg ;
msg = sprintf ( '%d/%d (%.0 f%%) ' , c a p t c h a s , ( numCap−numIni+1) , C) ;
119 M( 2 , 3 5 : ( length ( msg ) + 3 4 ) ) = msg ;
for i =1: s i z e (M, 1 )
f p r i n t f ( arquivoTexto , '%s \n ' ,M( i , : ) ) ;
end
124
f p r i n t f ( arquivoTexto , ' \ n P l a c a s R e c o n h e c i d a s \n %d 0 CAR\n %d 1 CAR\n %d 2 CAR\n %d
3 CAR\n %d 4 CAR\n %d 5 CAR\n %d 6 CAR\n %d 7 CAR\n ' , ( numCap−numIni+1) −(nL
{1}+nL{2}+nL{3}+nL{4}+nL{5}+nL{6}+nL { 7 } ) , nL { 1 } , nL { 2 } , nL { 3 } , nL { 4 } , nL { 5 } , nL
{ 6 } , nL { 7 } ) ;
fclose ( arquivoTexto ) ;
winopen ( ' LOG_PlacasDoCarroTotal . t x t ' )
129
%−− Limpa todas as variaveis
clear a l l
4. Implementação 34
Capítulo 5
Conclusões
Observa-se que não existe uma receita única, estabelecida para o sucesso de todo o processo,
mas alguns passos são mais normais do que outros. Vários métodos são identicados para
a localização de placas, mas são semelhantes entre si, porém as características das áreas de
placa que são interessantes de analisar. Os mais citados são: a relação entre largura e altura, o
forte contraste entre os caracteres e a cor do fundo da placa. Para a separação dos caracteres
percebe que o método é bem elaborado. Reconhecimento dos caracteres está familiarizado,
usando redes neurais ou reconhecimento de padrão.
Com base nos resultados dos testes de desempenho de teste de nosso sistema, acredita-se
ter alcançado resultados satisfatórios para uma tarefa desta dimensão.
35
Apêndice
Imagens das Placas de Carro Utilizadas.
Figura 5.1: Imagens de Placas de Automoveis Utilizados.
36
5. Conclusões 37
Figura 5.2: Imagens de Placas de Automoveis Utilizados.
Figura 5.3: Imagens de Placas de Automoveis Utilizados.
5. Conclusões 38
Figura 5.4: Imagens de Placas de Automoveis Utilizados.
Figura 5.5: Imagens de Placas de Automoveis Utilizados.
5. Conclusões 39
Figura 5.6: Imagens de Placas de Automoveis Utilizados.
Figura 5.7: Imagens de Placas de Automoveis Utilizados.
5. Conclusões 40
Figura 5.8: Imagens de Placas de Automoveis Utilizados.
Figura 5.9: Imagens de Placas de Automoveis Utilizados.
5. Conclusões 41
HUMANO METODO CARACT PLACAS
ADG3444 ADG3444 7 (105%) OK
AHU2573 AHU2573 7 (105%) OK
BMU6346 BMU6346 7 (105%) OK
BOV7337 BOV7337 7 (105%) OK
BRH4632 BRH4632 7 (105%) OK
BUI7570 BUI7570 7 (105%) OK
CLK9444 CLK9444 7 (105%) OK
CMK6694 CMK6694 7 (105%) OK
CVV7846 CVV7846 7 (105%) OK
CXT4243 CXT4243 7 (105%) OK
DNI8357 DNI8357 7 (105%) OK
GAB8777 GAB8777 7 (105%) OK
GLJ0356 GLJ0356 7 (105%) OK
GLN2355 GLN2355 7 (105%) OK
GLO8402 GLO8402 7 (105%) OK
GLT0069 GLT0069 7 (105%) OK
GMF3341 GMF3341 7 (105%) OK
GMF5701 GMF5701 7 (105%) OK
GMX4850 GMX4850 7 (105%) OK
GNW8399 GNW8399 7 (105%) OK
GOH8343 GOH8343 7 (105%) OK
GOR5902 GQP5902 5 (75%)
GOV1389 GOV1389 7 (105%) OK
GQG3734 GQG3734 7 (105%) OK
GQH3187 GQH3187 7 (105%) OK
GQV4323 GQV4323 7 (105%) OK
GQV4759 GQV4759 7 (105%) OK
GQX0268 GQX0268 7 (105%) OK
GQX3367 GQX3367 7 (105%) OK
GQX7050 GQX7050 7 (105%) OK
GRW0293 GRW0293 7 (105%) OK
GRX9925 GRX9925 7 (105%) OK
GRZ0555 GRZ0555 7 (105%) OK
GRZ6530 GRZ6530 7 (105%) OK
GRZ7943 GRZ7943 7 (105%) OK
GRZ9397 GRZ9397 7 (105%) OK
GSB0678 GSB0678 7 (105%) OK
GSB2077 GSB2077 7 (105%) OK
GSB2157 GSB2157 7 (105%) OK
GSB2330 GSB2330 7 (105%) OK
GSB2783 GSB2783 7 (105%) OK
GSC2047 GSC8047 6 (90%)
Tabela 5.1: Log dos Resultados das Placas
5. Conclusões 42
HUMANO METODO CARACT PLACAS
GSE3765 GSE3765 7 (105%) OK
GSP3097 GSP3097 7 (105%) OK
GTD5740 GTD5740 7 (105%) OK
GTF2243 GTF8243 6 (90%)
GTP3257 GTP3257 7 (105%) OK
GTQ9462 GTQ9462 7 (105%) OK
GTS4634 GTS4634 7 (105%) OK
GTX2744 GTX2744 7 (105%) OK
GUA3528 GUA3528 7 (105%) OK
GUF0738 GUF0738 7 (105%) OK
GUH0971 GUH0971 7 (105%) OK
GUK1344 GUK1344 7 (105%) OK
GUK5180 GUK5180 7 (105%) OK
GUK8523 GUK8523 7 (105%) OK
GUU0540 GUU0540 7 (105%) OK
GUU4332 GUU4332 7 (105%) OK
GUU5853 GUU5853 7 (105%) OK
GUU7262 GUU7262 7 (105%) OK
GUU8324 GUU8324 7 (105%) OK
GUU8445 GUU8445 7 (105%) OK
GUU8588 GUU8588 7 (105%) OK
GUX9740 GUX9740 7 (105%) OK
GUZ2467 GUZ2467 7 (105%) OK
GUZ9313 GUZ9313 7 (105%) OK
GVH9587 GVH9587 7 (105%) OK
GVW0999 GVW0999 7 (105%) OK
GWD6459 GWD6459 7 (105%) OK
GWD6958 GWD6958 7 (105%) OK
GXI7210 GXI7210 7 (105%) OK
GXQ1100 GXQ1100 7 (105%) OK
GXQ2445 GXQ2445 7 (105%) OK
GXQ2754 GYQ2754 6 (90%)
GXQ3460 GXQ3460 7 (105%) OK
GXQ5743 GXQ5743 7 (105%) OK
GXQ5882 GXQ5882 7 (105%) OK
GXQ6772 GXQ6772 7 (105%) OK
GXQ6980 GXQ6980 7 (105%) OK
GXQ8216 GXQ8216 7 (105%) OK
GXQ8347 GXQ8347 7 (105%) OK
Tabela 5.2: Log dos Resultados das Placas
5. Conclusões 43
HUMANO METODO CARACT PLACAS
GXQ9464 GXQ9464 7 (105%) OK
GXQ9905 GXQ9905 7 (105%) OK
GXS0003 GXS0003 7 (105%) OK
GXS3454 GXS3454 7 (105%) OK
GXS8752 GXS8762 6 (90%)
GXT1200 GXT1200 7 (105%) OK
GXT1307 GXT1307 7 (105%) OK
GXW7435 GXV7435 6 (90%)
GYC5029 GYC5029 7 (105%) OK
GYC5051 GYC5051 7 (105%) OK
GYC5887 GYC5887 7 (105%) OK
GYJ7721 GYJ7721 7 (105%) OK
GYL5121 GYL5121 7 (105%) OK
GYQ0179 LYQ0179 6 (90%)
GYQ6064 GYQ6064 7 (105%) OK
GYX1167 GYX1167 7 (105%) OK
GYX1233 GYX1233 7 (105%) OK
GYX1329 GYX1329 7 (105%) OK
GZF8464 GZF8444 6 (90%)
GZN6490 GZN6490 7 (105%) OK
GZQ6523 GZQ6523 7 (105%) OK
GZQ6663 GZQ6663 7 (105%) OK
GZQ7146 GZQ7146 7 (105%) OK
GZT5542 GZT5542 7 (105%) OK
GZW1074 GZW1074 7 (105%) OK
GZW9457 GZW9457 7 (105%) OK
GZX8374 GZX8374 7 (105%) OK
GZX8547 GZX8547 7 (105%) OK
GZX8965 GZX8965 7 (105%) OK
GZX9802 GZX9802 7 (105%) OK
HAA2632 HAA2632 7 (105%) OK
HAB1626 HAB1626 7 (105%) OK
HAB8995 HAB8995 7 (105%) OK
HAD0978 HAD0978 7 (105%) OK
HAI0232 HAQ0232 6 (90%)
HAI2917 HAI2917 7 (105%) OK
HAX5097 HAX5097 7 (105%) OK
HAX5997 HAX5997 7 (105%) OK
HAX7092 HAX7092 7 (105%) OK
HBD4717 HBD4717 7 (105%) OK
HBH4278 HBH4278 7 (105%) OK
Tabela 5.3: Log dos Resultados das Placas
5. Conclusões 44
HUMANO METODO CARACT PLACAS
HBJ2602 HBJ2602 7 (105%) OK
HBJ6905 BSJ6905 5 (75%)
HBL8709 HBL8709 7 (105%) OK
HBM6448 HBM6448 7 (105%) OK
HBQ4061 HBQ4061 7 (105%) OK
HBQ4084 BSQ4084 5 (75%)
HBR9257 HBR9257 7 (105%) OK
HBR9435 HBR9435 7 (105%) OK
HCH0186 HCH0686 6 (90%)
HCH0338 HCH0338 7 (105%) OK
HCH0687 HCH0687 7 (105%) OK
HCH1342 HCL1342 6 (90%)
HCH1423 HCH1423 7 (105%) OK
HCH1991 HCH4991 6 (90%)
HCH2026 HCH2026 7 (105%) OK
HCH2549 HCH2549 7 (105%) OK
HCH2726 HLH2726 6 (90%)
HCH2784 HCH2784 7 (105%) OK
HCH3011 HCH3014 6 (90%)
HCH3382 HEH3382 6 (90%)
HCH3609 HCH3609 7 (105%) OK
HCH3611 HCH3611 7 (105%) OK
HCH3838 HCH3838 7 (105%) OK
HCH3946 HCH3946 7 (105%) OK
HCH4155 HCH4155 7 (105%) OK
HCH4174 HCH4974 6 (90%)
HCH4175 HCH4176 6 (90%)
HCH4183 HCH4183 7 (105%) OK
HCH4184 HCH4484 6 (90%)
HCH4188 TCH4188 6 (90%)
HCH4202 JCH4202 6 (90%)
HCH4216 TCH4216 6 (90%)
HCH4228 HCH4228 7 (105%) OK
HCH4239 HCH4733 5 (75%)
HCH4677 HLH4677 6 (90%)
HCH4970 HCH4970 7 (105%) OK
HCH5859 HCH5859 7 (105%) OK
Tabela 5.4: Log dos Resultados das Placas
5. Conclusões 45
HUMANO METODO CARACT PLACAS
HCH6109 HCH6109 7 (105%) OK
HCH6696 HCH6696 7 (105%) OK
HCH6706 HCH6706 7 (105%) OK
HCH6709 HCH6709 7 (105%) OK
HCH6799 HCH6799 7 (105%) OK
HCH6855 HCH6855 7 (105%) OK
HCH6921 JCH6921 6 (90%)
HCH6970 HLH6970 6 (90%)
HCH7034 BCH7034 6 (90%)
HCH7108 HCH7108 7 (105%) OK
HCH7353 HCH7353 7 (105%) OK
HCH7538 HCH7538 7 (105%) OK
HCH7594 HCH7594 7 (105%) OK
HCH7650 HCH7650 7 (105%) OK
HCH7731 HCN7731 6 (90%)
HCH8151 HCH8151 7 (105%) OK
HCH8165 HCH8165 7 (105%) OK
HCH8169 HEH8769 5 (75%)
HCH8748 HCH8748 7 (105%) OK
HCH9092 HCH9092 7 (105%) OK
HCH9098 HCH9098 7 (105%) OK
HCH9179 HCH9679 6 (90%)
HCH9306 BCH9306 6 (90%)
HCH9444 HCH9444 7 (105%) OK
HCH9622 HCH9622 7 (105%) OK
HCH9633 HCH9633 7 (105%) OK
HCH9877 NCH9877 6 (90%)
HCL8290 HCL8890 6 (90%)
HCO8028 HCO6028 6 (90%)
HDB9806 HUB9806 6 (90%)
HDE2233 HDE2233 7 (105%) OK
HDH0856 HDH0856 7 (105%) OK
HDH1017 HUH1017 6 (90%)
HDH1860 HDH1860 7 (105%) OK
HDH3868 HDH3868 7 (105%) OK
Tabela 5.5: Log dos Resultados das Placas
5. Conclusões 46
HUMANO METODO CARACT PLACAS
HDJ6122 HDJ6122 7 (105%) OK
HDQ0438 HUP0438 5 (75%)
HDR4317 HQR4317 6 (90%)
HDT2092 HUT2092 6 (90%)
HDT2574 HST2574 6 (90%)
HDV4861 HDV4861 7 (105%) OK
HEA2417 HEA8447 5 (75%)
HEA7792 HEA7792 7 (105%) OK
HEE0281 HEE0289 6 (90%)
HEE0764 HEE0764 7 (105%) OK
HEE0841 HEE0841 7 (105%) OK
HEF3132 HEF3138 6 (90%)
HEF5925 HEF5926 6 (90%)
HEL3194 HEL3194 7 (105%) OK
HEL3940 HEL3940 7 (105%) OK
HEL4185 HEL4185 7 (105%) OK
HEL4297 HEL4297 7 (105%) OK
HEL4312 HEL4312 7 (105%) OK
HEL4423 HEL4423 7 (105%) OK
HEL4540 HEL4540 7 (105%) OK
HEL4752 HEL4752 7 (105%) OK
HEL4880 HEL4880 7 (105%) OK
HEO1098 HEO6098 6 (90%)
HEQ8032 HEO8032 6 (90%)
HEQ8035 HEO8035 6 (90%)
HEQ8036 HEQ8036 7 (105%) OK
HEQ8464 HEO8464 6 (90%)
HEQ8725 HEQ8726 6 (90%)
HEQ8847 HEQ8847 7 (105%) OK
HEQ8902 HEO8902 6 (90%)
HEQ8914 HEO8914 6 (90%)
HEQ9103 HEO9103 6 (90%)
HEQ9209 HEO9209 6 (90%)
HEQ9858 HEO9858 6 (90%)
HER4666 HER4666 7 (105%) OK
HEU7177 HEU7177 7 (105%) OK
HFG3959 HFG3959 7 (105%) OK
Tabela 5.6: Log dos Resultados das Placas
5. Conclusões 47
HUMANO METODO CARACT PLACAS
HFH2360 HFH2360 7 (105%) OK
HFH2929 BFH2929 6 (90%)
HFH6430 HFH6430 7 (105%) OK
HFH7176 HFH7176 7 (105%) OK
HFH7237 HFH7837 6 (90%)
HFH7345 HFH7345 7 (105%) OK
HFH7368 HFH7368 7 (105%) OK
HFH7456 HFH7456 7 (105%) OK
HFH7461 HFH7466 6 (90%)
HFH7472 HFH7472 7 (105%) OK
HFH7845 HFH7845 7 (105%) OK
HFN1324 HFN1324 7 (105%) OK
HFN1379 HFN1379 7 (105%) OK
HFN1688 HFN1688 7 (105%) OK
HFN1763 HFN1763 7 (105%) OK
HFN1826 HFN1826 7 (105%) OK
HFN1993 HFN1993 7 (105%) OK
HFN4862 HFN4858 5 (75%)
HFS6291 HFS6291 7 (105%) OK
HFW1387 HFW1387 7 (105%) OK
HFW4766 HFW4766 7 (105%) OK
HFX0763 HFX0763 7 (105%) OK
HFX2426 HFX2426 7 (105%) OK
HFX9493 HFX9423 6 (90%)
HGH0348 HBH0348 6 (90%)
HGH0605 HGH0605 7 (105%) OK
HGH0606 HGH0606 7 (105%) OK
HGH1029 HGH1079 6 (90%)
HGH1708 HGH3708 6 (90%)
HGH1952 HGH1952 7 (105%) OK
HGH2435 HGH2435 7 (105%) OK
HGH3043 BGH3043 6 (90%)
HGH3189 HGH3189 7 (105%) OK
HGH3415 HGH3415 7 (105%) OK
HGH3728 HGH3728 7 (105%) OK
HGH3860 HGH3860 7 (105%) OK
HGH3981 HGH3981 7 (105%) OK
Tabela 5.7: Log dos Resultados das Placas
5. Conclusões 48
HUMANO METODO CARACT PLACAS
HGH4030 HQH4030 6 (90%)
HGH4206 HGH4206 7 (105%) OK
HGH5765 HGH5765 7 (105%) OK
HGH6605 HGH6605 7 (105%) OK
HGH6845 HGH6845 7 (105%) OK
HGH7005 HGH7005 7 (105%) OK
HGH7100 HGH7100 7 (105%) OK
HGH9506 HGH9506 7 (105%) OK
HGH9528 HGM9578 5 (75%)
HGH9712 HGH9712 7 (105%) OK
HGH9779 HGH9779 7 (105%) OK
HGH9869 HGH9869 7 (105%) OK
HGI2601 HGI2601 7 (105%) OK
HGS2400 HGS2400 7 (105%) OK
HGX6939 HGX6939 7 (105%) OK
HHW2571 HHW2576 6 (90%)
HII4700 HII4700 7 (105%) OK
HIP0880 HQP0880 6 (90%)
HJB1336 HJB1336 7 (105%) OK
HJE4997 HJE4997 7 (105%) OK
HJF1660 HJF7660 6 (90%)
HJQ2004 HJQ2004 7 (105%) OK
HJR2045 HJR2045 7 (105%) OK
HJU8739 HJU8739 7 (105%) OK
HJX2220 NJX2220 6 (90%)
HKJ9877 HKJ9877 7 (105%) OK
HKR6459 HKR6459 7 (105%) OK
HKS9900 HKS9900 7 (105%) OK
HKT0282 HKT0282 7 (105%) OK
HLG8043 HLG8043 7 (105%) OK
HLG8240 HLG8240 7 (105%) OK
HLJ8586 HLJ8586 7 (105%) OK
HLP3057 TLP3057 6 (90%)
HMH5408 HMH5408 7 (105%) OK
HML9784 HML9784 7 (105%) OK
HMM2731 HMM2737 6 (90%)
HMM6851 HMM6851 7 (105%) OK
HMN4491 HKN4491 6 (90%)
HMN5438 HMN5438 7 (105%) OK
HMT8067 HMT8067 7 (105%) OK
HMT8098 HMT8098 7 (105%) OK
HMT8175 HMT8175 7 (105%) OK
HMT8367 HMT8367 7 (105%) OK
HMT8564 BMT8564 6 (90%)
HOI2934 HDI2934 6 (90%)
HUB0711 HUB0731 6 (90%)
HWX7762 HWX7762 7 (105%) OK
Tabela 5.8: Log dos Resultados das Placas
5. Conclusões 49
HUMANO METODO CARACT PLACAS
HZP7150 HZP7150 7 (105%) OK
HZZ2477 HZZ2477 7 (105%) OK
JMS5629 JMS5629 7 (105%) OK
JNH5433 JNH5433 7 (105%) OK
JOA1248 JDA1248 6 (90%)
JOR6248 JOR6248 7 (105%) OK
JPM6990 JPM4990 6 (90%)
JQE9512 JQE9512 7 (105%) OK
JSE2256 JSE2256 7 (105%) OK
KHY2229 KHY2229 7 (105%) OK
KLJ5846 KLJ5846 7 (105%) OK
LBZ0358 LBZ0358 7 (105%) OK
LCO7319 LCO7311 6 (90%)
LJG2474 LIC2474 5 (75%)
LPH0622 LPH0422 6 (90%)
LPV0329 LPV0329 7 (105%) OK
LRS0944 LRS0944 7 (105%) OK
MDM5547 MDH5547 6 (90%)
MQA0282 MQA0282 7 (105%) OK
MQI0544 MQI0544 7 (105%) OK
MQJ4844 MQJ4844 7 (105%) OK
MQS8420 MQS8420 7 (105%) OK
MRC0930 MRE0930 6 (90%)
MRQ9638 HRQ9638 6 (90%)
MSA4457 MSA4457 7 (105%) OK
MSR8632 MSR8632 7 (105%) OK
MUH3560 MUH3540 6 (90%)
NJY5796 NJY5796 7 (105%) OK
2306/2401 (96%) 258/343 (75%)
Tabela 5.9: Log dos Resultados das Placas
Referências Bibliográcas
[1] Bragatto, T. (2010). Sistema automático de monitoramento de tráfego - SAMTRA.
<Disponível em: [Link] Acessado: de 28
de outubro 2010>.
[2] CONTRAN (2007). Estabelece o sistema de pla-
cas de identicação de veículos. <Disponivel em:
[Link] Acessado:
28 de outubro 2010>.
[das Estradas] das Estradas, G. Giro das
Informações do trânsito em tempo real.
Estradas <Disponível em: [Link] Acessado:
9 de novembro 2010>.
[4] Duda, R. e Hart, P. (2000). Pattern Classication and Scene Analysis. Wiley-Interscience,
New York, 2 edição.
[5] E.L.V. (1984). A.N.P.R. - automatic number plate recognition. Nuisance Vehicle Specialist
- Redcorn Ltd. <Disponível em: [Link] Acessado: de 28 de junho 2010>.
[6] Eriovaldo (2010). Como funciona o sistema de pedágio sem parar. Velocidade Máx-
ima <Disponível em: [Link]
o-sistema-de-pedagio-sem-parar/. Acessado: 9 de novembro 2010>.
[7] Gonzalez, R. e Woods, R. (1993). Digital Image Processing. Addison-Wesley Publishing
Company.
[8] Kwasnick, H. (2002). License plate localization and recognition in camera pictures. Wro-
claw University of Technology <Disponível em: [Link] kwasnick/down-
load/[Link]. Acessado: 28 de outubro 2010>.
[Matthews] Matthews, C. Dartford tunnel, proxímo ao dartford crossing, thur-
rock, great britain. Geograph - Photograph every grid square! <Disponível em:
[Link] Acessado: 9 de novembro 2010>.
50
Referências Bibliográficas 51
[10] Murphy-Chutorian, E. (2006). N-tree disjoint-set forests for maxi-
mally stable extremal University of California <Disponível em:
regions.
[Link] Acessado: 1 de novembro 2010>.
[Nijhuis] Nijhuis, J. A. Car license plate recognition with neural net-
works and fuzzy logic. University of Groningen <Disponível em:
[Link] Acessado: 1 de
novembro 2010>.
[12] Parker, J. R. (1996). An approach to licence
plate recognition. University of Calgary <Disponível em:
[Link] federl/Publications/LicencePlate1996/[Link].
Acessado: 30 de outubro 2010>.
[13] Ron, B. (2002). A real time vehicle license plate recognition (lpr) system. Vision and
Image Science Lab - Israel <Disponível em: [Link]
Acessado: 1 de novembro 2010>.
[14] Sem Parar, Via Facil. (2010). Via fácil. <Disponível em: [Link]
Acessado: de 27 de outubro 2010>.
[15] Shapiro, V. (2003). Randomized hough transform. Encyclopedia of Articial Intelli-
gence. <Disponível em: [Link] Acessado: 28
de Julho 2010>.
[Xu] Xu, L. Bulgarian Academy of Sciences.
Adaptive license plate image extraction.
<Disponível em: [Link] lxu/papers/[Link]. Acessado: 29 de
Julho 2010>.