Aura Conci e Leonardo Hiss Monteiro
Introdução
Automação do processo de controle de
estacionamento
Automação do processo de aplicação de
multas nos veículos
Necessidade de automação do processo
de reconhecimento de placas
Objetivo
Conseguir um método simples e eficaz
para o reconhecimento das placas dos
veículos.
Considerações
Independente da distância de captura
Fácil adaptação a fonte utilizada
Processo utilizado
Imagem com 256 tons de
cinza no formato PCX
Binarização
Segmentação dos
objetos conectados
Esqueletização
Cálculo dos
momentos
invariantes
Cálculo das
cavidades e
extremidades
Reconhecimento
dos caracteres
Adição no banco de
dados
Placa reconhecida
Caracteres
adicionados no
banco de dados
Fases do processamento
Pré-Processamento
Armazenamento no formato PCX
Binzarização
Segmentação dos objetos conectados
Primeira Fase de Processamento
Cálculo dos momentos invariantes
Segunda Fase do Processamento
Cálculo das extremidades
Cálculo das cavidades
Binarização
Separação da imagem do fundo.
Utilização de um único ponto de corte
(threshold).
Utilizamos o método de limiarização
Bimodal de Otsu.
Método de Limiarização
Bimodal de Otsu
Particionamento dos pixeis de uma
imagem com L niveis de cinza em duas
classes C0 e C1.
Limiar otimo -> Maximização da função
critério
2
b
 2
t
Histograma - Threshold
Erosão
Diminuição do tamanho original sem
perder as caractarísticas geométricas
Utilizada para remover ruídos
Processo de Erosão
Elemento escolhido:
Processo:
 Coloca-se o elemento escolhido para fazer a erosão na coordenada (i,j)
 Verifica-se se os vizinhos do elemento são pixeis do objeto (com valor
1)
 Se todos os vizinhos possuírem valor 1 mantêm-se o pixel central com
valor 1.
 Se algum dos pixeis vizinho não possuir valor 1, muda-se o valor do
pixel central para 0 (pixel de fundo).
Imagem Antes e Depois da
Erosão
Imagem Antes:
Imagem Depois:
Segmentação de Objetos
Conectados
Separação dos caracteres
Utiliza como entrada a imagem binarizada
e erodida.
Na saida do algoritmo possuimos várias
imagens sendo cada uma composta por
um caracter.
Processo de Segmentação
 Num primeiro momento é feita uma varredura na imagem buscando
o primeiro pixel do objeto (pixel com valor 1).
 O valor desse pixel é alterado para o valor de um índice I.
 O valor desse índice I é incrementado (I=I+1).
 É feita uma varredura nos pixeis vizinhos a esse, de modo, que toda
a vez que um pixel vizinho é encontrado o seu valor é alterado para
o valor do índice e o índice I é incrementado.
 Esse processo se repete até que não se encontrem mais pixeis
vizinhos. Quando isso ocorre o valor do ultimo índice é armazenado
em um vetor e volta-se ao passo 1 enquanto houver pixel não
analisado na imagem.
Segmentação da Imagem
Imagem após o algoritmo de contagem:
Caracter segmentado utilizando o vetor:
Eliminação dos Ruídos
Conectados aos Caracteres
Geralmente no 2 e 5 caracter.
União do caracter com o furo de fixação
Filtro Utilizado
Retas superior e inferior
Caracteres após a filtragem
Filtragem dos Elementos
Relevantes
Remoção dos objetos que estão na parte
superior e inferior da imagem.
Remoção dos objetos que estão na
extremidade direita ou esquerda da
imagem.
Remoção dos objetos muito pequenos.
Remoção dos objetos que contém
dimensões horizontais muito grandes.
Limites Utilizados
Coordenada X:
Remoção dos objetos com coordenada X menor que 2,5% do
comprimento.
Remoção dos objetos com coordenada X maior que 97,5% da
comprimento.
Coordenada Y:
Remoção dos objetos com coordenada Y menor que 10% da
altura.
Remoção dos objetos com coordenada Y maior que 90% da
altura.
Limites Utilizados
Área:
Remover os objetos com área menos que
0,6% da área da imagem original.
Dimensões horizontais:
Remover se os objetos com dimensões
horizontais maior que 12% do tamanho
original da imagem.
Esqueletização
Reduzir as partes de um objeto a uma
linha fina que representa a representa.
Favorece uma análise estrutural simples.
Reduz a imagem a sua essência podendo
eliminar algumas distorções.
Mantem as propriedades geométricas e
topológicas.
Algoritmo MAT (Medial Axis
Transformation)
Passo1:
(a ) 2  NN ( p1 )  6
(b) CRN ( p1 )  1
( c ) p 2  p 4  p6  0
(d ) p4  p6  p8  0
Vizinhança
NN ( p)  Númerode pontosvizinhosdiferentesde 0 do pontoP.
CRN ( p1 )  Númerode transições de 0 para1 na sequência p2 , p3 ,..., p9 , p2 .
Passo2:
(e) p2  p4  p8  0
( f ) p2  p6  p8  0
Imagem Antes e Depois da
Esqueletização
Antes
Depois
Primeira Fase de
Processamento
No final da fase de pré-processamento a
imagem inicial se encontra segmentada,
esqueletizada e binarizada.
Cada nova imagem é composta por um
caracter.
A primeira fase de processamento é
composta pelo cálculo dos momentos
invariantes.
Momentos Invariantes
Teoria:
Existe apenas um objeto B que pode produzir
o mesmo valor para os momentos de todas
as ordens.
Se dois objetos tem os mesmos momentos
em todas as ordens, estes objetos são
identicos.
Momentos Geométricos
Definição:
M
N
m pq   B(i, j )  i p  j q
i 1 j 1
onde p,q  0,1,2,3...
Momentos Centrais
Considerando a translação para a origem
das coordenadas temos:
M
N
m0 pq   B(i  i0 , j  j0 )  i p  j q
onde p,q  0,1,2,3...
i 1 j 1
Onde:
M
i0 
N
 B(i, j )  i
i 1 j 1
M N
 B(i, j )
i 1 j 1
M
m
 10
m00
j0 
N
 B(i, j )  j
i 1 j 1
M N
 B(i, j )
i 1 j 1

m01
m00
Invariância a Rotação
Observamos que alguns momentos são
invariantes a rotação como:
m000  Área
m0 20  m002  Soma dos momentosde inércia
4(m011 ) 2  (m0 20  m002 ) 2  Excentricidade
A invariância a rotação pode ser obtida
utilizando um sistema que coincida com
os eixos principais:
tan2 
2m011
 onde é o ângulo de orientaçãodos eixosprincipais
m020  m002
Momentos Utilizados
f1  m20  m02
f 2  (m20  m02 ) 2  4m11
2
f 3  (m30  3m12 ) 2  (3m21  m03 ) 2
f 4  (m30  m12 ) 2  (m21  m03 ) 2

f 5  (3m21  m03 )(m30  m12 ) (m30  m12 ) 2  3(m21  m03 ) 2

 (m30  3m12 )(m21  m03 ) 3(m30  m12 ) 2  (m21  m03 ) 2


Invariância a Escala
Utilizada quando a distância de captura
pode variar.
Considerando uma transformação de escala:
i"  a  i '
j"  a  j '
A área mudará:
m000 "  a 2  m000 '
Invariância a Escala nos
Momentos Utilizados
v0 
f1
2
m00
v1 
f2
4
m00
f3
v2 
5
m00
f4
v3 
5
m00
v4 
f5
m00
10
Segunda Fase de
Processamento
Detectar características geométricas de
cada um dos caracteres.
Distinguir caracteres como:
6 e 9
M e W
Cálculo das Cavidades e extremidades.
Análise das Cavidades
Dividida em duas etapas:
Algorítmo para a detecção dos candidatos
Algorítmo para a contagem das cavidades
Detecção das Cavidades
Entrada
Imagem de uma caracter
binarizado e esqueletizado
Fazer a varredura de cada linha da
imagem até encontrar um pixel com o
valor 0 (candidato a ser parte da
cavidade).
Verificar se o pixel é cercado na
direção superior e inferior por
pixeis com valor 1 (pixeis de
borda)
Regiões canditatas a cavidades
Verificar se o pixel é cercado a
esquerda ou direitar por pixeis
com valor 1 (pixeis de borda)
As duas condições
acima foram atendidas ?
Não
Não alterar o
valor do pixel
Alterar o valor do
pixel para 3
Sim
Fazer a varredura de cada linha
imagem até encontrar um pixel com o
valor 3 (candidato a ser parte da
cavidade).
Sim
Verificar se o pixel possui o
vizinho imediatamente acima ou
abaixo com o valor 0
Alterar o valor de todos os
pixeis na direção superior
para 0 até encontrar um
pixel com o valor 1
Alterar o valor de todos os
pixeis na direção inferior
para 0 até encontrar um
pixel com o valor 1
A condição acima
foram atendida ?
Fim
Não
Não alterar o
valor do pixel
Regiões de cavidades
Contagem do Número de
Cavidades
Imagem de entrada binarizada onde:
0 representa o fundo
1 representa o contorno do objeto
3 regiões de cavidade
Indice=2
IndiceAtual=2
Varrer a imagem até encontrar
um pixel com valor 3
Encontrado ?
Sim
Não
Sair
Incrementar o numero de cavidades
Alterar o valor de 3 para Indice
Incrementar Indice
Verificar a vizinhança do pixel a
procura de valores 3
Encontrado ?
Sim
Sim
Alterar o valor de 3 para Indice
Incrementar Indice
Não
Deixe o valor como original
Varrer a imagem até encontrar
um pixel com IndiceAtual
Verificar a vizinhança do pixel a
procura de valores 3
Sim
Encontrado ?
Alterar o valor de 3 para Indice
Incrementar Indice
Não
Deixe o valor
como original
Indice=IndiceAtual ?
Não
Incrementar IndiceAtual
Número de Cavidades dos
Caracteres
Letra Num Cavidades
C
E
F
G
H
I
J
K
L
M
N
S
T
U
V
X
Y
W
Z
A
D
O
P
Q
R
B
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
2
Numero Num Cavidades
1
2
3
5
7
4
6
9
0
8
0
0
0
0
0
1
1
1
1
2
Análise das Extremidades
Detecção e classificação das extremidades
dos caracteres.
Classificação:









Superior esquerda - SE
Superior central - SC
Superior direita - SD
Central esquerda - CE
Central central - CC
Central direita - CD
Inferior esquerda - IE
Inferior central - IC
Inferior direita – ID
SE SC SD
CE CC CD
IE IC ID
Algorítmo para Detecção das
Extremidades
Entrada
Imagem de um caracter
binarizado e esqueletizado
Fazer a varredura de cada linha da
imagem até encontrar um pixel com
coordenadas (i,j) com valor 1
Verificar se o pixel na posição (i-1,j-1) possui o valor 1
Verificar se o pixel na posição (i,j-1) possui o valor 1
Verificar se o pixel na posição (i+1,j-1) possui o valor 1
Verificar se o pixel na posição (i-1,j) possui o valor 1
Verificar se o pixel na posição (i+1,j) possui o valor 1
Verificar se o pixel na posição (i-1,j+1) possui o valor 1
Verificar se o pixel na posição (i,j+1) possui o valor 1
Verificar se o pixel na posição (i+1,j+1) possui o valor 1
O número de condições
acima atendidas é 1 ?
Não
Não alterar o
valor do pixel
Alterar o valor do
pixel para 2
(Extremidade)
Sim
Classificação das
Extremidades
Entrada
Imagem de um caracter
binarizado e esqueletizado
Calcular as dimensões do frame
através do tamanho horizontal e do
tamanho vertical da imagem sendo:
deltax=(ext_dir-ext_esq)/3;
deltay=(ext_inf-ext_sup)/3;
Fazer a varredura de cada linha da
imagem até encontrar um pixel de
coordenadas (i,j) com valor 2
Verificar se o pixel com coordenada (i,j) está no quadrante SE
Verificar se o pixel com coordenada (i,j) está no quadrante SC
Verificar se o pixel com coordenada (i,j) está no quadrante SD
Verificar se o pixel com coordenada (i,j) está no quadrante CE
Verificar se o pixel com coordenada (i,j) está no quadrante CC
Verificar se o pixel com coordenada (i,j) está no quadrante CD
Verificar se o pixel com coordenada (i,j) está no quadrante IE
Verificar se o pixel com coordenada (i,j) está no quadrante IC
Verificar se o pixel com coordenada (i,j) está no quadrante ID
Armazenar a classificação da extremidade
Classificação das
Extremidades Detectadas
Letra Class
B
D
O
U
W
H
X
T
Y
N
L
Z
I
V
K
G
F
E
J
S
C
P
M
R
Q
A
SE
SE
SE
SE
SE
SE
SE
SE
SE
SC
SD
SD
SD
SD
SD
SD
SD
SD
IE
IE
IE
IC
ID
SD
SD
SD
SD
SD
SD
SD
ID
ID
IC
SE
SE
CC
CD
CD
IE
IE
ID
ID
ID
ID
IE
Numero Class
IE
IE
IC
IC
ID
IE
IE
ID
-
ID
ID
IE
ID
-
8
0
3
7
2
6
1
5
4
9
SE CC
SE IE
SE ID
SD SD SE
SD CE
SD ID
IE
-
IE
ID
IE
ID
-
-
Reconhecimento da Imagem
Momentos invariantes
Número de cavidades
Classificação das extremidades
Posição do caracter na imagem inicial
Processo de Reconhecimento
Criação do Banco de Dados.
Comparação com o Banco de Dados:
1 Fase:
Análise da posição do caracter na placa
Análise do número de cavidades
Análise das extremidades
2 Fase:
Análise dos momentos invariantes
Casos de Reconhecimento
Possíveis situações após a 1 Fase de
Reconhecimento:
Nenhum elemento identificado
Necessário adicionar do Bando de Dados
Apenas 1 elemento identificado
Elemento Reconhecido. 2 Fase não é necessária
Mais de um elemento identificado
2 Fase é iniciada com os elementos identificados.
Segunda Fase de
Reconhecimento
Análise dos momentos invariantes nos
elementos que foram identificados na
Primeira Fase.
Cálculo das distâncias:
Di  M i  M iBD 
2
M i  Momentode ordem i do objetoque está sendo reconhecido
M iBD  Momentosde ordem i do Banco de Dados
Reconhecimento => Objeto que possuir
as menores “distâncias”
Placas Processadas
Placa
GWK2323
KMG9066
KMH9737
KML4188
KNA2764
KNA4521
KOC8204
KQM1513
KRE4315
KRJ2309
KRE5912
KMJ0305
KMM2090
KNA7675
KOD7728
KRJ7761
KSY4558
KUB6657
LAB7582
LAE0231
LBE9571
LBM7321
LCC4261
LCU3687
LIY3173
LJF2087
LNC3270
LNI7263
LNJ7519
LNT0251
LNU4768
KMX2742
KPC6146
GZP6226
JEV1099
GZN3681
LAV7125
LBX7363
Carac. Geom Momentos M0 M1 M2 M3 M4
4
4
2
5
4
6
5
4
5
4
4
4
6
5
2
2
4
2
4
5
5
4
3
2
1
4
4
1
2
3
2
2
3
3
6
4
3
2
3
3
5
2
3
1
2
3
2
3
3
3
1
2
5
5
3
5
3
2
2
3
4
5
6
3
3
6
5
4
5
5
4
4
1
3
4
5
1
0
1
0
0
0
1
1
0
1
1
1
0
1
2
2
0
1
0
0
1
1
2
2
1
2
1
1
1
1
2
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
0
0
1
0
0
0
0
1
0
0
0
1
2
0
1
2
0
0
1
0
0
1
0
1
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
Resultados Obtidos
Número de Erros
Erros no Reconhecimento
35
30
25
20
15
10
5
0
M0
M1
M2
Momentos
M3
M4
Resultados Obtidos
Erros por Momentos
14
10
7;3 K;N H;N D;O 2;1 S;J W;U T;Y L;Z K;X
M0 14 1
1
2
4 6
0
1 1
0
M1 11 2
2
2
0 0
0
0 1
0
M2 1
0
2
0
2 0
0
1 0
0
M3 0
0
1
0
0 0
0
0 0
0
M4 0
0
0
0
0 0
0
0 0
1
8
6
4
M0
K;X
L;Z
T;Y
M2
W;U
Car
ac t
er e
s
S;J
M4
2;1
D;O
H;N
K;N
2
0
7;3
Numero de. Erros
12
om
M
to
en
s
Dados Obtidos
266 Caracteres Processados de 38 Placas
diferentes.
51% Caracteres reconhecidos sem a necessidade do cálculo dos
momentos
49% Caracteres reconhecidos com as técnicas dos momentos
917 Cálculos de momentos.
1% Erros apresentado no cálculo da distância dos momentos
Trabalhos Futuros
Busca automática da placa do veículo nas
imagens.
Pré - processamento para corrigir placas que
não estejam no plano xy.
Detecção das bordas antes da esqueletização
para melhorar a qualidade da esqueletização.
Cálculo da projeção dos pixeis nas direções
horizontais e verticais.
Aperfeiçoamento do Banco de Dados
Programas Existentes no
Mercado
HTS Israel
SIAV 2.0 - Automatisa
Links Interessantes

Automatic Number Plate Recognition - Portugual


CARINA - Software Product for Automatic Number Plate Recognition - Hungary


http://fire.relarn.ru/personal/charly/berkut/index.htm
CarFlow - Russia


http://www.garlic.com/biz/eotek/
License Plate reader “Golden Eagle” - Russia


http://www.perceptics.com/
License Plate Recognition Systems - USA


http://www.htsol.com/Products/SeeCar.html
License Plate Reader - USA


http://espresso.ee.sun.ac.za/~cc/npr/
License Plate Recognition (LPR) - Israel


http://www.ednet.co.uk/~euroquest/falcon.htm
Number Plate Recognition System - Africa do Sul


http://www.arhungary.hu/
Automated Car Number Plate Recognition - Escocia


http://www.utad.pt/~jbarroso/html/number_plate.html
http://www.photocop.com/products.htm#MegaPixel
Jet ANPR Car Number Plate Recognition - Reino Unido

http://www.citysync.co.uk/pagedef.htm
Links Interessantes

Auto Vu Technologies Inc. - Canada


Computer Recognition Systems, Ltd - USA


http://www.dacolian.nl/
Ponfac S.A - Brasil


http://www.transportdatasystems.com/products.htm
Dacolian - Recognition Software - Netherlands


http://www.crs-its.com/
Tranport Data Systems - USA


http://www.autovu.com/website/content/products.html
http://www.ponfac.com.br/
Automatisa Sistemas Ltda - Brasil

http://www.automatisa.com.br/siav2.htm
Download

UTILIZAÇÃO DE TÉCNICAS DE PROCESSAMENTO DE IMAGEM