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