Skip to content

nikolas1301/Identificacao-de-placa

Repository files navigation

Identificacao-de-placa

Programa para identificar através do vídeo não está funcionando, foi feito o upload caso alguem queria utilizar a logica.

Primeiramente deve-se explicar que foram criados dois programas onde a única diferença está em que um dos programas lê uma foto para identificar a placa e o outro lê um vídeo, os programas ficam iguais a partir do momento m que retiramos um frame do vídeo. O programa inicia criando o dataset “alfabeto” e “números” que servirão para comparar as letras, após utiliza-se a função otsu para achar o melhor threshold e assim criar a mascara, então se identifica se a imagem já é de uma placa ou se precisa ser achada a placa nela, isto é feito através da proporção da imagem. Se a imagem não for de uma placa utiliza-se a função iblob para identificar os blobs desta e então procura-se qual destes possui no mínimo 6 filhos, este valor foi utilizado para caso um dos caracteres não seja identificado, sabendo qual blob é possivelmente a placa utiliza-se o label dele para identificar os quatro pontos da borda desta e defini-se onde estes pontos deveriam estar, utilizando estes oito pontos realiza-se a homografia da imagem para então recorta-se somente a placa da imagem.

Quando se tem uma imagem que representa somente a placa divide-se esta em duas imagens novas, utilizando a proporção definida da placa, onde uma contem somente a cidade e a outra contem os caracteres alfanuméricos da placa. Então se usa a função otsu novamente para binarizar ambas as imagens e identificar os blobs nelas, esses blobs representam os caracteres de cada imagem, no caso da cidade dois blobs representam os caracteres do estado e os outros representam o da cidade, e no caso da placa três blobs representam os caracteres alfabéticos e os outros quatro representam os caracteres numéricos. Com os blobs identificados realiza-se a ordenação crescente deles pela sua posição em u para criar-se um vetor de imagens que representa a posição correta de cada caractere, isto para as imagens da cidade e dos caracteres alfanuméricos.

Esses mesmo vetores são criados para nossas imagens de referencia de caracteres, a primeira que possui todas as letras do alfabeto e a segunda que possui os números de 0 a 9 em formato mandatory. Com os vetores definidos precisa-se realizar o template match para identificar quais letras e números estão na placa, para isso escalamos as imagens das letras e dos números, tanto da placa como do referencial, para um padrão de tamanho 100 em v e tamanho 70 em u. Com isso feito utiliza-se a função zncc para comparar as imagens e criar um uma matriz, onde cada coluna representa um caractere da imagem e cada linha é um caractere da referência. Então se procura qual o maior valor de todas as linhas em cada coluna, este maior valor representa qual template foi mais parecido e o número da linha representa a posição nos vetores de letras e números de referência. Logo, com o conhecimento da posição de cada letra e número, é possível escrever qual a placa e qual a cidade e estado. Para o código do vídeo, se para de procurar um frame quando esse valor de zncc for aceitável.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages