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 Bacharelado em Ciência da Computação da Universidade Federal de Ouro Preto como requisito parcial 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.
Dr.
David Menotti
Orientador
Université Paris-Est
Dr.
Guillermo Câmara Chavez
Université Cergy-Pontoise
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. Filtragem.
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 estarí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 momentos 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
2.1
2.2
9
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
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.2
1
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). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
2
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étodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Controle de Acesso de Veículos Automotivos, (SACAVA), destancando o sistema de Reconhecimento 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 delituoso, 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.
4
1. Introdução
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éricos 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,
5
1. Introdução
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.
6
1. Introdução
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 permitindo 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
• 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.
8
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 apontando 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, podemos 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 retangulares 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
12
2. Desenvolvimento
caracteres (7), como demonstrado na FIG2.3 ilustrando o diagrama de um RCPIV.
Imagem de identicação da
placa de veículo
Filtragem
Reconhecimento
- OCR
Texto com os caracteres 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
2.2.1.1 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.
2.2.1.2 Alinhar a placa de identicação do veículo
Um algoritmo de detecção de ângulo é utilizado sobre a imagem resultante da etapa de conversã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 resultados, é 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.
2.2.1.3 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ção.Esses 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.
2.2.1.4 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
15
2. Desenvolvimento
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
largura máxima de
1
7
1
7
da área de imagem. Cada caracter tem uma
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
2.2.1.5 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 agrupamento 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
10
75
258
0
1
3
4
5
6
7
0%
0%
0%
0%
2.8%
21.99%
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
6
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−− Criar Template do Reconhecimento de Padrões dos l e t r a s −−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%− Letra
A=imread (
C=imread (
E=imread (
G=imread (
I=imread (
11 K=imread (
M=imread (
O=imread (
Q=imread (
S=imread (
16 U=imread (
W=imread (
Y=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 \C. bmp ' ) ;D=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 \G. bmp ' ) ;H=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 \K. bmp ' ) ; L=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 \O. bmp ' ) ; P=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 \S . bmp ' ) ;T=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 \W. bmp ' ) ;X=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 \B . bmp ' ) ;
' l e t r a s _ n u m e r o s \D. bmp ' ) ;
' l e t r a s _ n u m e r o s \F . bmp ' ) ;
' l e t r a s _ n u m e r o s \H. bmp ' ) ;
' l e t r a s _ n u m e r o s \J . bmp ' ) ;
' l e t r a s _ n u m e r o s \L . bmp ' ) ;
' l e t r a s _ n u m e r o s \N. bmp ' ) ;
' l e t r a s _ n u m e r o s \P . bmp ' ) ;
' l e t r a s _ n u m e r o s \R. bmp ' ) ;
' l e t r a s _ n u m e r o s \T. bmp ' ) ;
' l e t r a s _ n u m e r o s \V. bmp ' ) ;
' l e t r a s _ n u m e r o s \X. bmp ' ) ;
' 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
22
4. Implementação
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
6
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−− Criar Template do Reconhecimento de Padrões dos Numeros −−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%− Numero
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 comparar 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
23
4. Implementação
5
10
% 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=[ ] ;
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 ' ;
24
4. Implementação
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
else
end
l e t r a= 'Y ' ;
l e t r a= ' Z ' ;
4.4 Identicar as imagens dos números
Esta função tem o objetivo de identicar as imagens retiradas da placas do veiculos, e comparar 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 )
6
% 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 .
% Tamanho da 'imagem ' deve ser 42 x 24 p i x e l s
11
global t e m p l a t e s
comp=[ ] ;
for n=1:num_number
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
else
numero= ' 9 ' ;
25
4. Implementação
36
end
numero= ' 0 ' ;
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
3
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−− Correção do angulo da Placa −−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
function [ c o r r e c a o _ p l a c a angulo_theta ] = correcao_do_angulo_da_placa ( imagem_placa )
8
%Correção das matrizes da Placa
% imagem_placa
− Placa da Imagem
%− Filtragem
denoised_imagem_placa = w i e n e r 2 ( imagem_placa , [ 1 1 0 ] ) ;
13
%− 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 ' ) ;
%− Calculo de transformação randomico
theta = 60:120;
[R xp ] = radon ( edges_image , t h e t a ) ;
18
%#ok<NASGU>
%− 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 −−−−−−−−−−−−−−−−−−−−−−−−−
26
4. Implementação
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 ) ;
18
23
%#ok<NASGU>
%− Transformar a busca da máxima
%#ok<ASGLU>
[ r c ] = find (R == max(R ( : ) ) ) ;
angulo_theta = t h e t a ( c ( 1 ) ) ;
%− 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.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
10
%− 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
auxImagemPlaca = [ 'D: \ PlacasDeCarro \ ' img ] ;
placa_do_carro=imread ( auxImagemPlaca ) ;
15
%− Redimensionar o tamanho da placa para o tamanho compativel do OCR
%− 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.
27
4. Implementação
Listing 4.8: ocr.m
3
%−−−−−−−−−−−−−−− Converte para escala de cinza
i f s i z e ( placa_do_carro , 3 )==3
end
−−−−−−−−−−−−−−−−−−−−−−−−−−−
%RGB image
placa_do_carro=r g b 2 g r a y ( placa_do_carro ) ;
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
4
−−−−−−−−−−−−−−−−−−−−−−−−−−
%− Chama a funcao de correção do angulo da placa do carro
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 ) ;
19
%− Define o tamanho que ocupa a placa do carro
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 caracteres 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.
1
%−−−−−−−−−−−−−−−−−−−−−− Indexação
Listing 4.10: ocr.m
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[ L n ] = b w l a b e l ( placa_do_carro_BW ) ;
6
%− Altura mínima do Caracter da Placa
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
11
%− Array para manter as áreas de a l t i t u d e .
h = [];
boxes = { } ;
16
%− iteração , após todas as áreas detectadas .
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 ) ;
28
29
4. Implementação
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 )
% Escolha o índice
71
indx = i n d ( i ) ;
% Seleciona o menor
box = boxes { indx } ;
boxx { i } = box ;
76
%#ok<AGROW>
% Area do caracter
c h a r a c t e r = imcrop ( plate_image_histeq , box ) ;
% Escreve os resultado para matriz
%#ok<AGROW>
81
chars { i } = character ;
end
img_bw3 = img_bw3 + (L == i n d e x e s ( indx ) ) ;
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 posteriomente é 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
30
4. Implementação
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
nnumeros=s i z e ( t e m p l a t e s , 2 ) ;
41
%#ok<REDEF>
for n=4:Ne
[ r , c ] = find (L==n ) ;
%− Extrai a l e t r a
nN=imgn ( min ( r ) : max( r ) , min ( c ) : max( c ) ) ;
46
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 ) ;
% Concatena a l e t r a
56
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 )
end
p l a c a E n c o n t r a d a = ' 000ERRO ' ;
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
5
%− e x i b i r a área original da placa
%f2 = figure (2) ;
axis t i g h t e q u a l o f f ;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
31
4. Implementação
subplot ( 4 , 7 , 1 : 7 ) , imshow ( placa_do_carro ) ,
axis on ,
t i t l e ( ' Placa do Carro ' ) ;
10
15
%− 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 ' ) ;
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
4
% −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−Programa Principal −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
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 ' ) ;
19
%−− Um loop para l e i t u r a de todos as placas lidas
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
% 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 ) ;
% Limpar a variavel placaEncontrada '
29
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
44
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−− Gerar Log dos Resultados −−−−−−−−−−−−−−−−−−−−−−−−−
%−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
%−− Numero de placas a serem verificadas
numIni = 1 ;
numCap = 3 4 3 ;
49
%−− Arquivo que se encontra as placas com sua licença correta .
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 .
59
64
69
M = blanks ( 5 0 ) ;
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 ) ;
M( 3 , : ) = blanks ( 5 0 ) ;
letras = 0;
captchas = 0;
h = 1;
for i =1:7
end
74
nL{ i }=0;
for i = numIni : numCap
M( i + 6 , : ) = blanks ( 5 0 ) ;
M( i + 6 , 1 : 7 ) = r e s p ( i , : ) ;
79
sprintf ( '%d ' , i )
M( i +6 ,10:(9+7) ) = o c r ( i , : ) ;
letAux = 0 ;
32
33
4. Implementação
for k = 1 : 7
i f ( r e s p ( i , k ) == o c r ( i , k ) )
84
end
letAux = letAux + 1 ;
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 ;
e l s e i f letAux == 2
%#ok<∗SAGROW>
nL{2} = nL{2} + 1 ;
e l s e i f letAux == 3
nL{3} = nL{3} + 1 ;
e l s e i f letAux == 4
99
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
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 ;
104
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
119
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) ;
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
37
5. Conclusões
Figura 5.2: Imagens de Placas de Automoveis Utilizados.
Figura 5.3: Imagens de Placas de Automoveis Utilizados.
38
5. Conclusões
Figura 5.4: Imagens de Placas de Automoveis Utilizados.
Figura 5.5: Imagens de Placas de Automoveis Utilizados.
39
5. Conclusões
Figura 5.6: Imagens de Placas de Automoveis Utilizados.
Figura 5.7: Imagens de Placas de Automoveis Utilizados.
40
5. Conclusões
Figura 5.8: Imagens de Placas de Automoveis Utilizados.
Figura 5.9: Imagens de Placas de Automoveis Utilizados.
41
5. Conclusões
HUMANO METODO CARACT PLACAS
ADG3444
AHU2573
BMU6346
BOV7337
BRH4632
BUI7570
CLK9444
CMK6694
CVV7846
CXT4243
DNI8357
GAB8777
GLJ0356
GLN2355
GLO8402
GLT0069
GMF3341
GMF5701
GMX4850
GNW8399
GOH8343
GOR5902
GOV1389
GQG3734
GQH3187
GQV4323
GQV4759
GQX0268
GQX3367
GQX7050
GRW0293
GRX9925
GRZ0555
GRZ6530
GRZ7943
GRZ9397
GSB0678
GSB2077
GSB2157
GSB2330
GSB2783
GSC2047
ADG3444
AHU2573
BMU6346
BOV7337
BRH4632
BUI7570
CLK9444
CMK6694
CVV7846
CXT4243
DNI8357
GAB8777
GLJ0356
GLN2355
GLO8402
GLT0069
GMF3341
GMF5701
GMX4850
GNW8399
GOH8343
GQP5902
GOV1389
GQG3734
GQH3187
GQV4323
GQV4759
GQX0268
GQX3367
GQX7050
GRW0293
GRX9925
GRZ0555
GRZ6530
GRZ7943
GRZ9397
GSB0678
GSB2077
GSB2157
GSB2330
GSB2783
GSC8047
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
5 (75%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.1: Log dos Resultados das Placas
42
5. Conclusões
HUMANO METODO CARACT PLACAS
GSE3765
GSP3097
GTD5740
GTF2243
GTP3257
GTQ9462
GTS4634
GTX2744
GUA3528
GUF0738
GUH0971
GUK1344
GUK5180
GUK8523
GUU0540
GUU4332
GUU5853
GUU7262
GUU8324
GUU8445
GUU8588
GUX9740
GUZ2467
GUZ9313
GVH9587
GVW0999
GWD6459
GWD6958
GXI7210
GXQ1100
GXQ2445
GXQ2754
GXQ3460
GXQ5743
GXQ5882
GXQ6772
GXQ6980
GXQ8216
GXQ8347
GSE3765
GSP3097
GTD5740
GTF8243
GTP3257
GTQ9462
GTS4634
GTX2744
GUA3528
GUF0738
GUH0971
GUK1344
GUK5180
GUK8523
GUU0540
GUU4332
GUU5853
GUU7262
GUU8324
GUU8445
GUU8588
GUX9740
GUZ2467
GUZ9313
GVH9587
GVW0999
GWD6459
GWD6958
GXI7210
GXQ1100
GXQ2445
GYQ2754
GXQ3460
GXQ5743
GXQ5882
GXQ6772
GXQ6980
GXQ8216
GXQ8347
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.2: Log dos Resultados das Placas
43
5. Conclusões
HUMANO METODO CARACT PLACAS
GXQ9464
GXQ9905
GXS0003
GXS3454
GXS8752
GXT1200
GXT1307
GXW7435
GYC5029
GYC5051
GYC5887
GYJ7721
GYL5121
GYQ0179
GYQ6064
GYX1167
GYX1233
GYX1329
GZF8464
GZN6490
GZQ6523
GZQ6663
GZQ7146
GZT5542
GZW1074
GZW9457
GZX8374
GZX8547
GZX8965
GZX9802
HAA2632
HAB1626
HAB8995
HAD0978
HAI0232
HAI2917
HAX5097
HAX5997
HAX7092
HBD4717
HBH4278
GXQ9464
GXQ9905
GXS0003
GXS3454
GXS8762
GXT1200
GXT1307
GXV7435
GYC5029
GYC5051
GYC5887
GYJ7721
GYL5121
LYQ0179
GYQ6064
GYX1167
GYX1233
GYX1329
GZF8444
GZN6490
GZQ6523
GZQ6663
GZQ7146
GZT5542
GZW1074
GZW9457
GZX8374
GZX8547
GZX8965
GZX9802
HAA2632
HAB1626
HAB8995
HAD0978
HAQ0232
HAI2917
HAX5097
HAX5997
HAX7092
HBD4717
HBH4278
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.3: Log dos Resultados das Placas
44
5. Conclusões
HUMANO METODO CARACT PLACAS
HBJ2602
HBJ6905
HBL8709
HBM6448
HBQ4061
HBQ4084
HBR9257
HBR9435
HCH0186
HCH0338
HCH0687
HCH1342
HCH1423
HCH1991
HCH2026
HCH2549
HCH2726
HCH2784
HCH3011
HCH3382
HCH3609
HCH3611
HCH3838
HCH3946
HCH4155
HCH4174
HCH4175
HCH4183
HCH4184
HCH4188
HCH4202
HCH4216
HCH4228
HCH4239
HCH4677
HCH4970
HCH5859
HBJ2602
BSJ6905
HBL8709
HBM6448
HBQ4061
BSQ4084
HBR9257
HBR9435
HCH0686
HCH0338
HCH0687
HCL1342
HCH1423
HCH4991
HCH2026
HCH2549
HLH2726
HCH2784
HCH3014
HEH3382
HCH3609
HCH3611
HCH3838
HCH3946
HCH4155
HCH4974
HCH4176
HCH4183
HCH4484
TCH4188
JCH4202
TCH4216
HCH4228
HCH4733
HLH4677
HCH4970
HCH5859
7 (105%)
5 (75%)
7 (105%)
7 (105%)
7 (105%)
5 (75%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
5 (75%)
6 (90%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.4: Log dos Resultados das Placas
45
5. Conclusões
HUMANO METODO CARACT PLACAS
HCH6109
HCH6696
HCH6706
HCH6709
HCH6799
HCH6855
HCH6921
HCH6970
HCH7034
HCH7108
HCH7353
HCH7538
HCH7594
HCH7650
HCH7731
HCH8151
HCH8165
HCH8169
HCH8748
HCH9092
HCH9098
HCH9179
HCH9306
HCH9444
HCH9622
HCH9633
HCH9877
HCL8290
HCO8028
HDB9806
HDE2233
HDH0856
HDH1017
HDH1860
HDH3868
HCH6109
HCH6696
HCH6706
HCH6709
HCH6799
HCH6855
JCH6921
HLH6970
BCH7034
HCH7108
HCH7353
HCH7538
HCH7594
HCH7650
HCN7731
HCH8151
HCH8165
HEH8769
HCH8748
HCH9092
HCH9098
HCH9679
BCH9306
HCH9444
HCH9622
HCH9633
NCH9877
HCL8890
HCO6028
HUB9806
HDE2233
HDH0856
HUH1017
HDH1860
HDH3868
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
5 (75%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.5: Log dos Resultados das Placas
46
5. Conclusões
HUMANO METODO CARACT PLACAS
HDJ6122
HDQ0438
HDR4317
HDT2092
HDT2574
HDV4861
HEA2417
HEA7792
HEE0281
HEE0764
HEE0841
HEF3132
HEF5925
HEL3194
HEL3940
HEL4185
HEL4297
HEL4312
HEL4423
HEL4540
HEL4752
HEL4880
HEO1098
HEQ8032
HEQ8035
HEQ8036
HEQ8464
HEQ8725
HEQ8847
HEQ8902
HEQ8914
HEQ9103
HEQ9209
HEQ9858
HER4666
HEU7177
HFG3959
HDJ6122
HUP0438
HQR4317
HUT2092
HST2574
HDV4861
HEA8447
HEA7792
HEE0289
HEE0764
HEE0841
HEF3138
HEF5926
HEL3194
HEL3940
HEL4185
HEL4297
HEL4312
HEL4423
HEL4540
HEL4752
HEL4880
HEO6098
HEO8032
HEO8035
HEQ8036
HEO8464
HEQ8726
HEQ8847
HEO8902
HEO8914
HEO9103
HEO9209
HEO9858
HER4666
HEU7177
HFG3959
7 (105%)
5 (75%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
5 (75%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.6: Log dos Resultados das Placas
47
5. Conclusões
HUMANO METODO CARACT PLACAS
HFH2360
HFH2929
HFH6430
HFH7176
HFH7237
HFH7345
HFH7368
HFH7456
HFH7461
HFH7472
HFH7845
HFN1324
HFN1379
HFN1688
HFN1763
HFN1826
HFN1993
HFN4862
HFS6291
HFW1387
HFW4766
HFX0763
HFX2426
HFX9493
HGH0348
HGH0605
HGH0606
HGH1029
HGH1708
HGH1952
HGH2435
HGH3043
HGH3189
HGH3415
HGH3728
HGH3860
HGH3981
HFH2360
BFH2929
HFH6430
HFH7176
HFH7837
HFH7345
HFH7368
HFH7456
HFH7466
HFH7472
HFH7845
HFN1324
HFN1379
HFN1688
HFN1763
HFN1826
HFN1993
HFN4858
HFS6291
HFW1387
HFW4766
HFX0763
HFX2426
HFX9423
HBH0348
HGH0605
HGH0606
HGH1079
HGH3708
HGH1952
HGH2435
BGH3043
HGH3189
HGH3415
HGH3728
HGH3860
HGH3981
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
5 (75%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.7: Log dos Resultados das Placas
48
5. Conclusões
HUMANO METODO CARACT PLACAS
HGH4030
HGH4206
HGH5765
HGH6605
HGH6845
HGH7005
HGH7100
HGH9506
HGH9528
HGH9712
HGH9779
HGH9869
HGI2601
HGS2400
HGX6939
HHW2571
HII4700
HIP0880
HJB1336
HJE4997
HJF1660
HJQ2004
HJR2045
HJU8739
HJX2220
HKJ9877
HKR6459
HKS9900
HKT0282
HLG8043
HLG8240
HLJ8586
HLP3057
HMH5408
HML9784
HMM2731
HMM6851
HMN4491
HMN5438
HMT8067
HMT8098
HMT8175
HMT8367
HMT8564
HOI2934
HUB0711
HWX7762
HQH4030
HGH4206
HGH5765
HGH6605
HGH6845
HGH7005
HGH7100
HGH9506
HGM9578
HGH9712
HGH9779
HGH9869
HGI2601
HGS2400
HGX6939
HHW2576
HII4700
HQP0880
HJB1336
HJE4997
HJF7660
HJQ2004
HJR2045
HJU8739
NJX2220
HKJ9877
HKR6459
HKS9900
HKT0282
HLG8043
HLG8240
HLJ8586
TLP3057
HMH5408
HML9784
HMM2737
HMM6851
HKN4491
HMN5438
HMT8067
HMT8098
HMT8175
HMT8367
BMT8564
HDI2934
HUB0731
HWX7762
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
5 (75%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
6 (90%)
7 (105%)
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Tabela 5.8: Log dos Resultados das Placas
49
5. Conclusões
HUMANO METODO
HZP7150
HZZ2477
JMS5629
JNH5433
JOA1248
JOR6248
JPM6990
JQE9512
JSE2256
KHY2229
KLJ5846
LBZ0358
LCO7319
LJG2474
LPH0622
LPV0329
LRS0944
MDM5547
MQA0282
MQI0544
MQJ4844
MQS8420
MRC0930
MRQ9638
MSA4457
MSR8632
MUH3560
NJY5796
HZP7150
HZZ2477
JMS5629
JNH5433
JDA1248
JOR6248
JPM4990
JQE9512
JSE2256
KHY2229
KLJ5846
LBZ0358
LCO7311
LIC2474
LPH0422
LPV0329
LRS0944
MDH5547
MQA0282
MQI0544
MQJ4844
MQS8420
MRE0930
HRQ9638
MSA4457
MSR8632
MUH3540
NJY5796
CARACT
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
5 (75%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
7 (105%)
7 (105%)
7 (105%)
6 (90%)
6 (90%)
7 (105%)
7 (105%)
6 (90%)
7 (105%)
2306/2401 (96%)
PLACAS
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
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: http://www.ceftru.unb.br/projetos/andamento/samtra. Acessado: de 28
de outubro 2010>.
[2] CONTRAN
(2007).
Estabelece
o
sistema
de
pla-
<Disponivel
em:
http://www.denatran.gov.br/download/Resolucoes/RESOLUCAO_231.pdf.
Acessado:
28 de outubro 2010>.
cas
de
identicação
de
veículos.
Giro das
Estradas <Disponível em: http://www.girodasestradas.com.br/PO_37_03.php. Acessado:
9 de novembro 2010>.
[das Estradas] das Estradas, G.
Informações do trânsito em tempo real.
[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: http://www.redcorn.co.uk. 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: http://velocidademaxima.wordpress.com/2010/02/06/como-funcionao-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: http://www.ci.pwr.wroc.pl/ kwasnick/download/kwasnickawawrzyniak.pdf. Acessado: 28 de outubro 2010>.
[Matthews] Matthews,
C.
Dartford tunnel,
proxímo ao dartford crossing,
thur-
Geograph - Photograph every grid square! <Disponível em:
http://www.geograph.org.uk/photo/1038154. Acessado: 9 de novembro 2010>.
rock, great britain.
50
51
Referências Bibliográficas
[10] Murphy-Chutorian,
E.
(2006).
N-tree
disjoint-set
forests
for
maxi-
University of California <Disponível em:
http://www.macs.hw.ac.uk/bmvc2006/papers/276.pdf. Acessado: 1 de novembro 2010>.
mally
stable
extremal
[Nijhuis] Nijhuis,
J.
regions.
A.
Car
license
plate
recognition
with
neural
net-
University of Groningen <Disponível em:
http://www.it.lth.se/users/lambert/leftovers/LicenseplateSydney.pdf. Acessado:
1 de
novembro 2010>.
works
and
[12] Parker,
fuzzy
J.
logic.
R.
(1996).
An
approach
to
licence
University
of
Calgary
<Disponível
em:
http://pages.cpsc.ucalgary.ca/ federl/Publications/LicencePlate1996/licence-plate-1996.pdf.
Acessado: 30 de outubro 2010>.
plate
recognition.
[13] Ron, B. (2002). A real time vehicle license plate recognition (lpr) system. Vision and
Image Science Lab - Israel <Disponível em: http://visl.technion.ac.il/projects/2003w24/.
Acessado: 1 de novembro 2010>.
[14] Sem Parar, Via Facil. (2010). Via fácil. <Disponível em: http://www.viafacil.com.br.
Acessado: de 27 de outubro 2010>.
[15] Shapiro, V. (2003). Randomized hough transform. Encyclopedia of Articial Intelli-
gence. <Disponível em: http://ecet.ecs.ru.acad.bg/cst04/Docs/sIIIA/32.pdf. Acessado: 28
de Julho 2010>.
Bulgarian Academy of Sciences.
<Disponível em: http://www.cse.cuhk.edu.hk/ lxu/papers/RHT08a.pdf. Acessado: 29 de
Julho 2010>.
[Xu] Xu, L.
Adaptive license plate image extraction.
Download

submetido - Decom