universidade tecnolÓgica federal do paranÁ...

32
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTOS ACADÊMICOS DE INFORMÁTICA E DE ELETRÔNICA CURSO DE ENGENHARIA DE COMPUTAÇÃO EDUARDO AMADEO DE CARLI NARDI LUCAS CARDOSO POLAK LUCAS DE SOUZA VALIATI MARSHAL MORI CAVALHEIRO SISTEMA DE CONTROLE DE ACESSO UTILIZANDO RECONHECIMENTO DE CARACTERES EM PLACA DE AUTOMÓVEL RELATÓRIO DE PROJETO CURITIBA 2015

Upload: letruc

Post on 09-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁDEPARTAMENTOS ACADÊMICOS DE INFORMÁTICA E DE

ELETRÔNICACURSO DE ENGENHARIA DE COMPUTAÇÃO

EDUARDO AMADEO DE CARLI NARDILUCAS CARDOSO POLAK

LUCAS DE SOUZA VALIATIMARSHAL MORI CAVALHEIRO

SISTEMA DE CONTROLE DE ACESSO UTILIZANDORECONHECIMENTO DE CARACTERES EM PLACA DE

AUTOMÓVEL

RELATÓRIO DE PROJETO

CURITIBA2015

EDUARDO AMADEO DE CARLI NARDILUCAS CARDOSO POLAK

LUCAS DE SOUZA VALIATIMARSHAL MORI CAVALHEIRO

SISTEMA DE CONTROLE DE ACESSO UTILIZANDORECONHECIMENTO DE CARACTERES EM PLACA DE

AUTOMÓVEL

Relatório de Projeto apresentado para a disciplinade Oficina de Integração II, do Curso de Engenhariade Computação dos Departamentos Acadêmicos deInformática e de Eletrônica da Universidade Tecno-lógica Federal do Paraná.

Orientador: Dr. Wyllian Bezerra da Silva

CURITIBA2015

AGRADECIMENTOS

Agradecemos aos professores Dr. Hugo Vieira Neto e Dr. Mário Sérgio Teixeira de

Freitas da Universidade Tecnológica Federal do Paraná pelas orientações e apoio no decorrer

do desenvolvimento do projeto. Agradecemos em especial ao professor Dr. Wyllian Bezerra

da Silva da Universidade Federal de Santa Catarina, orientador deste projeto, que, mesmo à

distância não poupou esforços em contribuir para o bom andamento do projeto. Agradecemos

também aos professores da Universidade Tecnológica Federal do Paraná, Dr. Alexandre de

Almeida Prado Pohl , que permitiu o uso do Laboratório de Comunicação de Dados da UTFPR

para o desenvolvimento do projeto e Dr. João Alberto Fabro, pelo empréstimo da Raspicam e

adaptador de vídeo HDMI-VGA.

“In the middle of difficulty liesopportunity”.

Albert Einstein

RESUMO

NARDI, Eduardo Amadeo de Carli; POLAK, Lucas Cardoso; VALIATI, Lucas de Souza; CA-VALHEIRO, Marshal Mori. SISTEMA DE CONTROLE DE ACESSO UTILIZANDO RE-CONHECIMENTO DE CARACTERES EM PLACA DE AUTOMÓVEL. 33 f. Relatório deProjeto – Departamentos Acadêmicos de Informática e de Eletrônica, Universidade Tecnoló-gica Federal do Paraná. Curitiba, 2015.

O objetivo deste trabalho foi o desenvolvimento de um sistema de controle de acesso veicu-lar baseado em reconhecimento digital de caracteres (tecnologia OCR) em imagens. Para issoutilizou-se como unidade controladora do sistema a plataforma Raspberry-Pi, uma tecnologiade baixo custo e poder computacional relativamente alto. Empregou-se também a bibliotecaALPR, com algumas pequenas modificações pontuais para melhor servir ao propósito do pro-jeto.

O sistema completo é composto por um sensor de distância que permite o acionamento dosistema de captura da imagem da placa do automóvel, quando nota a presença de um carro emfrente à câmera. Posteriormente tal imagem é processada utilizando-se o sistema de OCR dabiblioteca ALPR para extrair os caracteres da placa. Esses caracteres são comparados com umarquivo que contém o registro das placas com autorização de entrada no local onde o sistema éinstalado. Sendo autorizada a entrada do veículo, o sistema aciona a abertura da cancela e umsegundo sensor de distâncias, verifica a passagem do carro, impedindo que a cancela se fechesobre o mesmo.

Os resultados obtidos foram satisfatórios, com margem de acerto de aproximadamente 70% noreconhecimento das placas e bom desempenho do protótipo construído, levando cerca de 30segundos para realizar todo o processo.

Palavras-chave: reconhecimento de caracteres, placas de automóvel, OCR, controle, proces-samento de imagem

LISTA DE FIGURAS

–FIGURA 1 Diagrama de blocos do sistema de controle de acesso . . . . . . . . . . . . . . . . . . 15

–FIGURA 2 Aplicação do Filtro de Canny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19–FIGURA 3 Vista superior do Raspberry Pi modelo B, lado onde se encontra a maioria

dos componentes da placa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20–FIGURA 4 Vista inferior do Raspberry Pi modelo B, lado onde se encontra o conector

do cartão de memória tipo SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22–FIGURA 5 Raspicam conectada ao slot específico para webcam. . . . . . . . . . . . . . . . . . . . 22

LISTA DE TABELAS

–TABELA 1 Placas e as quantidade de caracteres reconhecidos pelo sistema de controlede acesso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

–TABELA 2 Cronograma da distribuição das atividades semanais em horas . . . . . . . . . . . 32

LISTA DE SIGLAS

OCR Optical Character RecognitionGNU GNU is Not UnixGPL GNU General Public LicenseGPIO General Pupose Input/OutputC++ Linguagem de programação C++OpenCV Open Source Computer Vision LibrarySVH Sistema Visual HumanoAPI Application Programming InterfaceALPR Automated License Plate RecognitionRGB Red, Green, BlueARM Advanced Risc MachineX86_64 Nome genérico da família de processadores baseados no Intel 8086 64 bitsMHz mega hertz - unidade de frequênciaMB mega bytesRAM Random Access MemoryGPU Graphics Processing UnitRCA Radio Corporation of AmericaNTSC National Television Systems CommitteePAL Phase Alternating LineRJ45 Registered Jack 45SD Secure Digital Card

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.1 MOTIVAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2 DESCRIÇÃO DO DISPOSITIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.2.1 Descrição do hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.2.2 Descrição do software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.4.1 Relação de dependência entre as tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.1 LINGUAGEM DE PROGRAMAÇÃO C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 BIBLIOTECA OPENCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 TECNOLOGIA OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4 TESSERACT OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 BIBLIOTECA ALPR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 BINARIZAÇÃO DE IMAGENS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7 MECANISMOS PARA DETECÇÃO DE BORDAS EM IMAGENS . . . . . . . . . . . . . . . . 182.8 RASPBERRY PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8.1 Características Principais do Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.9 SEQUÊNCIA DO SISTEMA DE RECONHECIMENTO DA PLACA VEICULAR . . 223 COMPORTAMENTO DO SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1 RESULTADOS OBTIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2 PROBLEMAS NO RECONHECIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 DISCUSSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4 DIFICULDADES ENCONTRADAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.5 TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Apêndice A -- CRONOGRAMA E ORÇAMENTO DO SISTEMA . . . . . . . . . . . . . . . . . . 32A.1CRONOGRAMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32A.2ORÇAMENTO DO SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

11

1 INTRODUÇÃO

1.1 MOTIVAÇÃO

O crescimento contínuo do número de veículos no mundo traz consigo uma grande

diversidade de problemas, deixando complicado o controle de acesso eficiente a locais com

grande fluxo de automóveis. Nos grandes centros urbanos, por exemplo, os setores que contro-

lam o acesso de carros têm grandes dificuldades em conseguir informações de forma rápida e

precisa. Essas informações são importantes para uma boa fluidez dos veículos, como também

para segurança da população.

Devido a esses diversos problemas, surge a necessidade da criação de soluções auto-

matizadas para um melhor controle de acesso de forma rápida. Uma maneira eficiente de se

obter informações sobre os carros é através do reconhecimento de suas placas utilizando de um

sistema computacional capaz de capturar e identificar as informações do carro, permitindo um

controle rápido e eficaz. (GUINGO et al., 2014).

Contudo, mesmo com a alta velocidade no processamento dos dados em um sistema

computacional, a identificação de caracteres alfanuméricos (necessária para a identificação da

placa de um veículo) não é uma tarefa trivial para sistemas de visão computacional, já que

a localização de uma placa numa região com fundo que apresente uma grande variedade de

formas e cores é uma tarefa complexa porque o processamento é feito pixel a pixel de forma

sequencial. Além disso, a literatura sobre imagens mostra que elas podem ser corrompidas

por degradações como a distorção linear de frequência, ruídos e artefatos de blocagem (no

caso da imagem capturada ser comprimida no processo) que podem ocorrer durante a captura

ou processamento das imagens (DAMERA-VENKATA et al., 2000). Outras dificuldades que

devem ser consideradas são condições naturais de luminosidade, neblina e regiões de sombra.

Mesmo em meio a esses obstáculos, ainda que a detecção de caracteres em placas au-

tomotivas seja uma tarefa complexa e desafiadora , a área de análise computacional de imagens

apresenta uma vasta quantidade de soluções para os diversos problemas encontrados na captura

e processamento de imagens. Dentre elas podemos citar a binarização, detecção de bordas,

12

segmentação de imagens, tecnologia OCR entre outros.

Fazendo uso das tecnologias elencadas anteriormente, o objetivo deste projeto é de-

senvolver um protótipo de um sistema de controle de acesso baseado em visão computacional

capaz de reconhecer a placa de um automóvel e verificar se o mesmo possui ou não permissão de

acesso ao local onde o sistema for instalado, buscando minimizar os problemas anteriormente

citados.

1.2 DESCRIÇÃO DO DISPOSITIVO

O dispositivo desenvolvido nesse trabalho consiste em um sistema de autorização de

acesso de automóveis em recintos que necessitem de controle de tráfego. Esse sistema faz

o reconhecimento dos caracteres alfanuméricos das placas dos automóveis. Primeiramente é

capturada a imagem da placa do carro, que em seguida passa por um processamento digital

com base em processos já consagrados na literatura. Após a obtenção dos caracteres ocorre a

verificação no banco de dados. Se o automóvel estiver registrado, uma cancela/portão se abrirá

permitindo sua passagem.O sistema permitirá maior segurança e agilidade no controle de acesso

bem como melhor logística em locais com grande fluxo de automóveis.

1.2.1 DESCRIÇÃO DO HARDWARE

O hardware utilizado no sistema consiste de um computador de pequeno porte, uma

câmera digital, um servo motor e dois sensores de proximidade. O computador é o Raspberry

Pi, utilizado como unidade controladora do software e hardware adicional. A câmera digital,

com integração específica para Raspberry Pi, tem como função obter a imagem da placa do

veículo automotor. O servo motor é empregado na tarefa de abir e fechar a cancela de acordo

com o sinal recebido da unidade controladora. Por fim, dois sensores de proximidade foram

empregados, o primeiro alertará a presença do carro na região visada pela câmera e segundo

verificará se o automóvel já passou completamente pela cancela.

1.2.2 DESCRIÇÃO DO SOFTWARE

O software desenvolvido para o controle do sistema desempenha as funções descritas a

seguir. Interpretação dos sinais elétricos recebidos dos sensores de proximidade. Processamento

da imagem da placa utilizando filtros de correção/ajuste de luminosidade, eliminação de ruídos,

detecção de bordas e preenchimentos de pontos destoantes da imagem ideal da placa. Os passos

anteriores são de vital importância para o passo seguinte, que é o reconhecimento óptico de

13

caracteres (OCR). Após a extração dos caracteres da imagem e a obtenção definitiva da placa,

essa informação é comparada com os registros do banco de dados. No caso da placa existir no

banco de dados, o software enviará um sinal autorizando o servo motor a realizar o acionamento

de abertura da cancela. Por segurança mecânica do sistema, o software interpretará os dados

recebidos do sensor de passagem pela cancela e somente permitirá o fechamento desta assim

que o carro ultrapassá-la por completo.

1.3 OBJETIVOS

A seguir são descritos, de maneira sucinta, os objetivos gerais e específicos que norte-

aram esse trabalho.

1.3.1 OBJETIVO GERAL

Criar um sistema de identificação de caracteres alfanuméricos presentes em uma ima-

gem de placa de automóvel e integrá-lo com um computador de pequeno porte, servindo como

plataforma de controle de acesso a ambientes reservados.

1.3.2 OBJETIVOS ESPECÍFICOS

1. Implementar/adaptar um algoritmo para captura de imagens de placas de automóveis.

2. Implementar/adaptar um algoritmo para reconhecimento de caracteres das imagens das

placas de carros.

3. Interligar o Raspberry Pi (CPU) com câmera de captura de imagem, servo motor e sen-

sores de movimento.

4. Criar a comunicação do software presente na CPU com o hardware.

5. Construir uma maquete para simular o funcionamento do sistema completo.

1.4 METODOLOGIA

1. Instalação do Raspbian - O Raspbian é um sistema operacional de código aberto GNU/Linux

registrado sob licença GPL, desenvolvido especialmente para o Raspberry Pi, baseado na

distribuição Debian (FOUNDATION, 2014b).

14

2. Instalação da Raspicam (câmera) - A Raspicam é a câmera específica para o Raspberry

Pi. Sua instalação física é feita conectando seu cabo flat em uma entrada padrão presente

no Raspberry Pi. Para o funcionamento da Raspicam há duas possibilidades: através de

linha de comando em Shell e via linguagem de programação, instalando-se a biblioteca

raspicam.h.

3. Instalação das bibliotecas Leptonica, OpenCV e Tesserac OCR - Todas essas bibliote-

cas são utilizadas no processamento digital de imagens e detecção de caracteres. Tais

bibliotecas foram baixadas dos repositórios oficiais do Debian.

4. Codificação do software de captura, processamento e detecção de caracteres (OCR) da

imagem - Desenvolveu-se um software utilizando a biblioteca da Raspicam para a cap-

tura da imagem. A biblioteca OpenCV foi utilizada para o tratamento de filtragem da ima-

gem, minimização de ruídos e segmentação da imagem, para posteriormente, utilizando

a biblioteca Tesserac OCR, realizar a detecção dos caracteres presentes na imagem.

5. Conexão e programação do servomotor - Utilizando a biblioteca Servo.h, para o con-

trole de servomotores em linguagem C++, realizou-se a programação do servomotor. A

conexão física foi feita através das GPIO do Raspberry Pi.

6. Criação de um banco dados - Foi criado um banco de dados relacional, utilizando a tecno-

logia SQLite, para a armazenagem das placas dos veículos e posterior comparação com o

resultado obtido do software de processamento de imagem da placa.

7. Montagem da maquete - Realizou-se a montagem de uma maquete para simulação do fun-

cionamento do sistema e verificação da viabilidade do projeto antes de ser implementado

em escala real.

8. Testes e ajustes - Com o protótipo já em funcionamento realizou-se diversos testes e

verificando a necessidade de modificações melhorias foram sendo implementadas. Esses

testes forem realizados simulando as placas de carros em um monitor.

1.4.1 RELAÇÃO DE DEPENDÊNCIA ENTRE AS TAREFAS

O software de tratamento de imagem e OCR depende do Raspbian já que roda sob

este sistema operacional. A validação de placa depende do processamento digital de imagem,

do reconhecimento óptico de caracteres presentes na mesma e do banco de dados associado

ao software do sistema. A instalação da Raspicam depende do Raspbian e o servomotor está

15

relacionado com a estrutura provida pela maquete. De forma geral, como descrito anterior-

mente, todos os integrantes do sistema são mutuamente dependentes, que fica claro analisando

o diagrama da Figura 1.

Figura 1: Diagrama de blocos do sistema de controle de acesso.

Fonte: Autoria própria.

O cronograma das atividades realizadas no projeto e o orçamento do sistema encontram-

se respectivamente nos Apêndices A.1 e A.2

16

2 FUNDAMENTAÇÃO TEÓRICA

A seguir será apresentada uma visão geral da fundamentação dos assuntos presentes

nesse estudo.

2.1 LINGUAGEM DE PROGRAMAÇÃO C++

C++ é uma linguagem de programação orientada a objetos (derivada da linguagem

procedural C), considerada de nível médio, já que reúne características de linguagens de baixo

nível, como o acesso a áreas de memória e acesso direto a recursos do sistema operacional, bem

como características de linguagens de alto nível como a facilidade na manipulação de strings.

Justamente por reunir todas essas características, o C++ é uma linguagem extremamente po-

derosa e versátil, sendo inclusive utilizada na construção de sistemas operacionais, tais como

o Linux. O processamento digital de imagens é uma tarefa que apresenta elevado custo com-

putacional e, nesse sentido, o uso de C++ é muito vantajoso, principalmente pela velocidade

de processamento oferecida pela linguagem. Todo o projeto de reconhecimento de placas de

automóveis relatado neste trabalho foi desenvolvido em linguagem C++, pela sua praticidade e

versatilidade, principalmente devido aos recursos limitados de processamento e memória dis-

poníveis no Raspberry Pi.

2.2 BIBLIOTECA OPENCV

A OpenCV é uma biblioteca de código aberto para visão computacional e inteligência

artificial desenvolvida pelo grupo Itseez com mais de 2500 algoritmos otimizados na área pro-

cessamento digital de imagem e vídeo (TEAM, 2014). Esta biblioteca, disponível para diversas

linguagens de programação, como Java, Python, C, MATLAB e C++, facilita muito o processa-

mento de imagens, pois possui uma enorme gama de algoritmos implementados. Esse conjunto

de funcionalidades implementadas pela OpenCV acelera muito o processo de codificação do

software de processamento de imagens. Neste trabalho utilizou-se a OpenCV para realizar o

processamento das imagens de placas, aplicando filtros e segmentação na imagem para que

17

os caracteres ficassem mais fáceis de serem detectados para o processo de reconhecimento de

caracteres.

2.3 TECNOLOGIA OCR

OCR é uma tecnologia que utiliza mecanismos de aquisição, tais como câmeras fo-

tográficas, filmadoras e afins para capturar imagens e posteriormente realizar processamentos

nestas para reconhecer caracteres alfanuméricos presentes. Essa tecnologia tenta se aproximar

do sistema visual humano (SVH), porém ainda não é capaz de competir com a capacidade de

leitura deste (MITHE et al., 2013). É conhecido que o cérebro humano processa suas infor-

mações visuais principalmente no campo da semântica, ou seja, no significado do que é visto,

enquanto computadores processam os dados sobre as informações espaciais que carregam, não

tendo muita sensibilidade para variações de cores e texturas, por exemplo (ZHANG, 2010).

Por isso, atualmente, processos que envolvem visão computacional exigem uma capacidade de

processamento relativamente grande para obterem resultados significativos.

2.4 TESSERACT OCR

Tesseract OCR é uma API de código aberto para reconhecimento óptico de caracteres

desenvolvida pelos laboratórios da empresa HP entre os anos de 1985 e 1995 e pelo Google

desde 2006, sendo licenciada sob os termos da Apache 2.0 licence. A API, que é considerada

uma das melhores da área de OCR na atualidade, pode ser usada como um software indepen-

dente com interface gráfica ou via linhas de comando, ou ser integrada ao código de outro

software, podendo ser instalada em diversos ambientes operacionais, como o Linux, Windows

e Mac OS X (HOSTING, 2014). A documentação da API ainda não é muito vasta e formal,

porém não é difícil encontrar informações no site da empresa desenvolvedora e nos fóruns de

discussão referentes ao tema. A versão da Tesseract OCR utilizada no desenvolvimento deste

projeto foi a 3.03.

2.5 BIBLIOTECA ALPR

A ALPR é uma biblioteca open source, criada para reconhecer automaticamente os

caracteres presentes numa imagem de uma placa de um carro. Para fazer isso, ela foi desenvol-

vida utilizando a linguagem de programação C++, a biblioteca OpenCV e a biblioteca Tesseract

OCR. A ALPR processa e analisa as imagens das placas utilizando a biblioteca OpenCV e se

18

utiliza da biblioteca Tesseract OCR para reconhecer os caracteres das placas. Ela capaz de

reconhecer os caracteres alfanuméricos de uma grande variedade de placas de diversos países.

2.6 BINARIZAÇÃO DE IMAGENS

O processo de binarização de imagens é útil para o projeto visto que em imagens de

baixa qualidade ou com muitos artefatos esse tratamento possibilita a diminuição de ruídos, a

diminuição de texturas na imagem e variações bruscas de iluminação (KANG et al., 2008) (as

texturas e pontos luminosos podem gerar confusão para o software de OCR).

O princípio básico que envolve o processo de binarização consiste em passar a imagem

de RGB para escala cinza, cujos valores de pixel vão de 0 a 255, e posteriormente estabelecer

um valor limiar. Valores de pixel abaixo do limiar recebem o valor zero (preto) e valores acima

recebem 255 (branco). Dessa forma o resultado final é uma imagem em preto e branco.

2.7 MECANISMOS PARA DETECÇÃO DE BORDAS EM IMAGENS

O processo de detecção de bordas consiste em encontrar contornos que são evidencia-

dos pelas diferenças dos valores de pixels entre o objeto e o fundo da imagem.

Dentre os algoritmos computacionais que realizam essa tarefa um dos mais eficientes

encontrado na literatura é o filtro de Canny, que pode ser verificado na Figura 2.

19

Figura 2: Aplicação do Filtro de Canny.

Fonte: http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html.

Apesar de robusto, esse filtro apresenta pequenas variações na detecção das bordas

quando há grandes variações de luminosidade na imagem, devido ao fato de ser baseado na

diferença entre valores de pixel. Algumas outras abordagens de detecção de bordas se baseiam

na razão entre os valores de pixel, o que minimiza as dificuldades encontradas devido a presença

de luz (NETO, 2014).

2.8 RASPBERRY PI

O Raspberry Pi é um computador do tamanho de cartão de crédito que pode ser conec-

tado a hardware de naturezas diversas. Por ser um pequeno computador, é usado em projetos

eletrônicos variados, possuindo a capacidade de fazer muitas funções que são realizadas por um

computador comum, como criação de planilhas, processamento de textos, exibição de vídeos,

programação de software e execução de jogos (FOUNDATION, 2014a).

Para esse projeto foi escolhido o Raspberry Pi modelo B, por ter um tamanho reduzido,

20

ser barato e possuir características semelhantes a um computador pessoal comum. Ele servirá

como unidade gerenciadora do software de reconhecimento de imagens, da câmera de captura

de imagens, de um servomotor e de sensores de presença.

2.8.1 CARACTERÍSTICAS PRINCIPAIS DO RASPBERRY PI

A seguir serão apresentadas os principais componentes que formam o Raspberry Pi.

Para isso, utilizaremos como guia as Figuras de 3 a 5, onde estão marcados os componentes a

serem descritos.

Figura 3: Vista superior do Raspberry Pi modelo B, lado onde se encontra a maioria dos componentesda placa.

Fonte: Autoria própria.

1. Processador - Esse processador é baseado na arquitetura ARM, que foi projetada para ter

menor consumo de energia, baixo aquecimento, sem muita perda de capacidade de pro-

cessamento quando comparado a processadores de arquitetura X86_64 (FOUNDATION,

2014a).

Os ARM possuem menos estágios de processamento se comparados aos X86, mas para

compensar a simplificação da arquitetura, os ARM possuem algumas soluções que tornam

a execução dos códigos mais eficientes. O processador ARM do Raspberry Pi é de 32

bits, com 700 MHz (MEMBREY; HOWS, 2013).

O Raspberry Pi possui 512 MB de RAM que é compartilhado entre o sistema e a unidade

gráfica de processamento (GPU) (RICHARDSON; WALLACE, 2012).

21

Apesar de seu processador modesto em comparação com os X86, o Raspberry Pi ainda

possui uma exibição de alta qualidade para as imagens, bem como alta qualidade na

decodificação de streams de vídeo, devido a presença de uma GPU especializada (MEM-

BREY; HOWS, 2013).

2. Saída de vídeo - É uma saída de vídeo padrão RCA, o sistema de codificação utilizado

por esse padrão é uma composição NTSC com o PAL. O NTSC, assim como o PAL são os

sistemas adotados por vários países como padrão de codificação para a televisão em cores.

No Raspberry Pi esses dois sistemas podem ser utilizados alternadamente, e fornecem um

formato de vídeo com baixa resolução quando comparado ao HDMI (RICHARDSON;

WALLACE, 2012).

3. Saída de áudio - A saída de áudio do Raspiberry Pi é o padrão de 3,5 mm de conectores.

Esse padrão é bastante comum tendo um bom suporte para diversos equipamentos como

alto-falantes e headfones (DENNIS, 2013).

4. Porta USB - O Raspberry Pi modelo B possui duas portas USB 2.0, para ligação de hard-

ware adicional como teclado, mouse, além de outros dispositivos que utilizam o padrão

USB (DENNIS, 2013).

5. Porta Ethernet - No Raspberry Pi modelo B há uma porta Ethernet que utiliza o padrão

RJ45 para a conexão com rede e/ou internet (DENNIS, 2013).

6. Conector HDMI - A porta HDMI é uma saída para áudio e vídeo digital. O HDMI do

Raspberry Pi suporta 14 resoluções diferentes de vídeo (RICHARDSON; WALLACE,

2012).

7. Alimentação de energia - A alimentação de energia do Raspberry Pi é feita por um

conector micro USB, esse padrão também é utilizado em diversos aparelhos celulares

para o carregamento da bateria e também comunicação com um computador. No entanto,

para Raspberry Pi o micro USB serve apenas de alimentação de energia (RICHARDSON;

WALLACE, 2012).

8. Conector do cartão SD - A Figura 4 apresenta o conector do cartão SD, fazendo uma

analogia com um computador padrão, o cartão do tipo SD faz o papel do HD em um mi-

crocomputador convencional. É no SD onde se encontra o sistema operacional Raspbian,

uma versão enxuta da distribuição Linux Debian.

22

Figura 4: Vista inferior do Raspberry Pi modelo B, lado onde se encontra o conector do cartão dememória tipo SD.

Fonte: Autoria própria.

9. Conector da Raspicam - Na Figura 5 temos a Raspicam (câmera para a captura das placas

dos automóveis) conectada ao slot específico para essa finalidade.

Figura 5: Raspicam conectada ao slot específico para webcam.

Fonte: Autoria própria.

2.9 SEQUÊNCIA DO SISTEMA DE RECONHECIMENTO DA PLACA VEICULAR

Nas seções anteriores foram apresentadas as diversas tecnologias empregadas nesse

trabalho. Nessa parte será descrito como elas estão interligadas, possibilitando a obtenção do

reconhecimento dos caracteres alfanuméricos das placas automotivas.

23

Com o sistema em funcionamento, o sensor de proximidade ultrassônico de automó-

veis verifica constantemente se há algum carro em seu raio de alcance, que no sistema foi de

aproximadamente 20 cm. Caso o sensor detecte algum veículo, o código do sistema aciona a

Raspicam, a qual captura uma imagem frontal do automóvel. Essa foto será processada através

da ALPR, da seguinte forma:

Com a utilização de um algoritmo de reconhecimento de padrões, o sistema faz a de-

tecção de regiões onde provavelmente a placa está e o que sobra da imagem é descartado. Após

essa etapa, todas as regiões encontradas são binarizadas várias vezes com diferentes limiares,

com a finalidade de excluir ruídos, principalmente causados pelas variações de luminosidade,

facilitando, assim, a procura por caracteres. Esse processo gera diversas imagens em preto e

branco, sendo que em algumas dessas imagens, predominam as partes escuras e em outras,

predominam as partes brancas. Fazendo a intercalação dessas imagens é possível obter uma

imagem com o maior número de detalhes relevantes para o OCR, ou seja, maior contraste entre

os caracteres e o restante da imagem. A pesquisa dos caracteres, que acontece em todas as

regiões selecionadas, começa com a localização de áreas onde existe uma diferença de propri-

edades de cores conectadas. Essas áreas são analisadas de acordo com suas alturas e larguras.

Assim, o algoritmo da ALPR seleciona a região na qual o padrão se assemelhe ao de caracteres

de placas licenciadas. Com ela, é possível encontrar as bordas externas da placa, gerando uma

nova imagem apenas com a placa, ou seja, sem possíveis figuras de fundo, como para-choque,

árvores e afins. O algoritmo da APLR então segmenta a imagem isolando os caracteres um a

um, limpando possíveis ruídos. Por fim, utiliza-se o OCR para o reconhecimento dos caracteres,

acabando-se assim o reconhecimento da placa.

A placa encontrada é comparada com uma série de placas cadastradas em um arquivo.

Se um número relevante de caracteres - no caso específico deste projeto foi determinado que

o reconhecimento de 4 caracteres seria aceitável, visto que o sistema pode confundir alguns

caracteres e mesmo com o processo de filtragem da imagem, relatado anteriormente, pode haver

imperfeições nos caracteres - da placa lida coincidir com alguma das placas cadastradas, o

sistema aciona o servomotor para a abertura da cancela. Caso contrário, o acesso será negado e

a cancela não se abrirá.

Após a abertura da cancela, o sensor ultrassônico de passagem pela cancela verificará

se o automóvel já passou pela cancela, permitindo-se assim o fechamento desta, evitando algum

possível acidente.

24

3 COMPORTAMENTO DO SISTEMA

Este capítulo apresenta as quantidades dos caracteres alfanuméricos reconhecidos pelo

sistema de controle de acesso para 25 placas brasileiras, os valores estão apresentados na Ta-

bela 1.

Algumas observações importantes sobre os dados da Tabela 1 devem ser consideradas.

Primeiro, as placas numeradas de 1 a 15 apresentam apenas a imagem da placa, ou seja, elas

foram recortadas não aparecendo partes de seu automóvel. Segundo, as placas de 16 a 26

apresentam partes do automóvel. Terceiro, as placas de números 2 e 16 têm a mesma numeração

mas elas diferem porque a placa de número 16 apresenta partes do carro e a 2 não.

3.1 RESULTADOS OBTIDOS

Para obtenção dos resultados apresentados na Tabela 1, o sistema de reconhecimento

dos caracteres, já com todos os ajustes finais realizados, foi executado três vezes para cada

placa (que era simulada em um monitor de vídeo). Isso se deu porque as placas estavam em três

distâncias diferentes em relação à câmera fotográfica digital (Raspicam), sendo estas distâncias

de 45 cm, 60 cm e 100 cm do monitor em relação a câmera. Esses valores estão presentes nos

campos Distância. As colunas Caracteres apresentam as quantidades de símbolos alfanuméri-

cos reconhecidos pelo sistema nas distâncias fixadas, o zero significa que não foi reconhecido

nenhum caractere e 7 todos foram encontrados.

25

Tabela 1: Placas e as quantidade de caracteres reconhecidos pelo sistema de controle de acesso.

Número Placa Distância(cm) Caracteres Distância(cm) Caracteres Distância(cm) Caracteres

1 JJK1960 45 0 60 0 100 0

2 IRS1836 45 0 60 5 100 6

3 BFQ8663 45 0 60 7 100 7

4 CSC2013 45 0 60 4 100 5

5 HAO1462 45 0 60 0 100 0

6 HQW5678 45 0 60 7 100 0

7 NQC0876 45 6 60 0 100 5

8 UTS0000 45 0 60 0 100 0

9 HMG0248 45 0 60 0 100 0

10 NRH5091 45 0 60 5 100 0

11 FOR1904 45 0 60 6 100 6

12 JSQ7436 45 0 60 0 100 6

13 LPT4625 45 0 60 0 100 0

14 CXP0000 45 0 60 0 100 0

15 JDR0312 45 0 60 3 100 4

16 IRS1836 45 6 60 0 100 6

17 FMW3777 45 7 60 5 100 7

18 JSF1084 45 6 60 6 100 0

19 EUL0433 45 6 60 7 100 0

20 ASU3212 45 0 60 6 100 6

21 ENW9720 45 7 60 7 100 7

22 AFS9287 45 5 60 6 100 6

23 ITA2407 45 6 60 7 100 7

24 AJL4734 45 0 60 0 100 7

25 DEV8337 45 5 60 5 100 0

3.2 PROBLEMAS NO RECONHECIMENTO

Nos testes das 25 placas dois problemas de reconhecimento de caracteres chamaram a

atenção. O primeiro foi que o sistema não reconheceu o número um e o outro em alguns casos

não reconhecia o número 8.

Em todos os testes feitos quando na placa existia o número 1, o sistema sempre o

considerou como letra I, esse fato é compreensível já que nas placas nacionais o número um

é representado por um traço vertical, ou seja, realmente uma letra I. Como solução desse pro-

blema, foi implementado no software de reconhecimento uma condição nas leituras numéricas

para considerar a letra I como número 1 após o 4o caractere da placa, pois é conhecido que após

26

o 4o caractere da placa, todos o caracteres são numéricos.

No caso das placas que apresentavam o número 8 em sua composição, nos testes, em

alguns casos o sistema reconhecia como a letra B. Aqui como no caso anterior também foi

implementado no software um solução para resolver esse problema. Caso aparecesse a letra B

nos quatro últimos algarismos o sistema consideraria como número 8.

3.3 DISCUSSÃO

Uma questão importante que ocorreu durante a execução do projeto foi: se haveria

necessidade de ter que regular a Raspicam para que a imagem capturada não apresentasse partes

do automóvel. No entanto, se fosse preciso capturar somente a placa haveria um problema a ser

resolvido, já que todos os veículos não as têm na mesma posição. Contudo, como o sistema de

captura foi feito utilizando a biblioteca ALPR, buscamos na sua documentação a resposta dessa

questão. De acordo com documentação, na sequência dos processos executados pela ALPR ela

busca a região onde está a placa.

Com isso, a questão anterior foi respondida, mas ainda ficou a dúvida, se na imagem

capturada houvesse somente a placa o sistema ficaria mais rápido se comparado da imagem com

partes do carro? A resposta para essa questão está na Tabela 1, os testes com as placas de 16 a

25, apresentam partes do automóvel, e como pode ser visto esses casos se comportaram melhor

na maioria dos casos se comparado com os testes de 1 a 15 que apresentam imagens só da placa.

Nos casos de 16 a 25 para a distância de 100 cm da Raspicam em relação à placa apenas em

três casos não houve reconhecimento, nos demais foram reconhecidos 6 ou 7 caracteres. Ainda

nos testes de 16 a 25 para as distâncias de 45 cm e 60 cm os resultados foram ainda melhor, já

que apenas duas placas não foram reconhecidas nessas distâncias. A demais reconheceram de

5 a 7 caracteres.

Diante disso foi concluído que não houve relevância na velocidade de reconhecimento

entre as imagens só com a placa e as imagens que tinham placa mais carro. No entanto, ve-

rificamos que o sistema se comporta na média, de forma melhor quando a imagem capturada

possui placa mais carro.

3.4 DIFICULDADES ENCONTRADAS

A seguir serão descritas as principais dificuldades encontradas durante o processo de

produção do sistema de controle de acesso.

27

No início do projeto a equipe de desenvolvimento tinha como objetivo principal de-

senvolver um software próprio utilizando como apoio algumas bibliotecas como a OpenCV e a

Tesseract-OCR, aplicando alguns filtros sequenciais para capturar os caracteres alfanuméricos.

Contudo, depois de vários testes e algumas pesquisas verificamos que havia muitas dificuldades

a serem vencidas. Passado esse período os integrantes perceberam que não seria possível no

tempo disponível e com o conhecimento de todos criar um software para reconhecimento de

caracteres de uma placa automotiva.

Passado o período de dificuldade anterior, a equipe começou a pesquisar algumas so-

luções prontas para serem utilizadas no projeto. A melhor opção encontrada foi a biblioteca

ALPR, no entanto sua instalação no Raspberry-Pi se mostrou um grande desafio. Dois inte-

grantes do grupo ficaram responsáveis por esse trabalho, mas depois de duas semanas não foi

obtido sucesso mesmo fazendo várias pesquisas na internet. Os problemas encontrados foram:

diferença entre a versão do OpenCV instalada no Raspberry-Pi (advinda do repositório oficial

da distribuição do Raspbian) e a exigida pela ALPR; instalação da biblioteca Tesseract-OCR

que se mostrou bastante lenta; alocar corretamente os pacotes da ALPR nos diretórios exigidos

pela biblioteca, que não eram automaticamente alocados durante a instalação e por último saber

quais pacotes Linux deveriam ter instalados no Raspbian, que é um Debian mais enxuto.Com

isso, percebemos a necessidade de procurar alguém que tivesse melhores conhecimentos na

plataforma Linux para efetivarmos essa instalação. Então procuramos o professor Dr. Wyllian

Bezerra da Silva, orientador desse projeto e um grande conhecedor de Linux para nos auxiliar

nesse trabalho. Depois de dois dias sucessivos de trabalho com esse apoio conseguimos finalizar

a instalação e inciar o próximo passo.

Na sequência implementando algumas soluções na linguagem C++, percebemos que os

códigos gerados em um computador com arquitetura X86 ou AMD64 não eram compilados da

mesma forma no Raspberry-Pi, já que este tem uma arquitetura ARM. Tivemos, em vários casos

que modificar o código feito em linguagem C++, aproximando-o da linguagem procedimental

C, já que para essa linguagem o compilador se portou de melhor forma. O problema nisso é que

em alguns casos não pudemos aproveitar das facilidades dos métodos prontos em C++, tendo

que criar códigos mais extensos em C para realizar as mesmas tarefas.

Nesse ponto é importante salientar que outras dificuldades foram encontradas durante

os trabalhos desse projeto, mas elas foram mais facilmente resolvidas em um tempo curto e por

isso não foram descritas.

28

3.5 TRABALHOS FUTUROS

Um trabalho futuro importante de grande contribuição, seria incluir na biblioteca ALPR

os layouts e códigos necessários para reconhecimento do padrão das placas brasileiras.

Neste projeto foi utilizado o padrão de reconhecimento de placas europeias, mas apre-

sentou alguns problemas que foram descritos neste documento. A equipe desse projeto tem

ciência que se forem implementadas na biblioteca ALPR as melhorias necessárias, conside-

rando o padrão de placas brasileiras, o índice de acertos na verificação dos caracteres será bem

melhor do que o mostrado neste trabalho.

29

4 CONCLUSÃO

Este trabalho apresentou um sistema de controle de acesso utilizando reconhecimento

de caracteres em placa de automóvel. Para sua confecção utilizou-se o seguinte hardware: um

computador de pequeno porte, o Raspberry-Pi modelo B, um servo motor para abrir a cancela

e dois sensores ultrassônicos para verificar a presença dos automóveis. O software implantado

foi: a biblioteca OpenCV, a biblioteca Tesseract-OCR, a biblioteca ALPR, além das soluções

criadas para acionar o motor e os sensores.

Apesar da utilização de algumas soluções de software prontas de código aberto para

a construção do sistema, fazer a ligação dessas tecnologias e deixá-las funcionando de acordo

com a proposta do trabalho se mostrou um grande desafio e exigiu um grande esforço do grupo.

Depois de concluído o sistema, foram feitos vários testes e a partir disso conseguimos

fazer algumas observações importantes do seu comportamento. Uma primeira observação que

fizemos, é que não ocorre 100% de reconhecimento dos caracteres em todas as placas e em

alguns casos nem há reconhecimento. A biblioteca ALPR tem falhas no reconhecimento de

alguns caracteres, um exemplo é o número 8 que é reconhecido em alguns casos como letra B.

No entanto, percebemos que nas imagens adquiridas pela Raspicam, quando havia a presença

do carro na imagem, teve uma média de 70% de acerto no reconhecimento dos caracteres nas

placas.

Uma das maiores contribuições deste projeto para a equipe, foi mostrar que o reconhe-

cimento de caracteres em imagens não é algo tão trivial como o grupo acreditava ser no decorrer

das primeiras pesquisas. Depois desse trabalho todos os integrantes passaram a ter uma visão

mais apurada dessa área, porém com consciência que é possível produzir soluções viáveis nesse

campo como é o caso da biblioteca ALPR.

Outra grande contribuição do projeto foi a aquisição do conhecimento e experiência

em um campo muito presente na Engenharia de Computação: A integração de software e hard-

ware. Os integrantes da equipe já possuíam uma experiência considerável na área de software,

porém nunca haviam realizado projetos que envolvessem a eletrônica e a programação desses

30

dispositivos de forma a gerar um produto funcional.

31

REFERÊNCIAS

DAMERA-VENKATA, N. et al. Image quality assessment based on a degradation model. v. 9,n. 4, p. 636 – 650, April 2000.

DENNIS, A. K. Raspberry Pi Home Automation with Arduino. [S.l.]: Packt Publishing,2013.

FOUNDATION, R. Raspberry Pi. November 2014. Disponível em:<http://www.raspberrypi.org/>.

FOUNDATION, R. P. Raspbian. Outubro 2014. Disponível em: <www.raspbian.org>.

GUINGO, B. C.; RODRIGUES, R. J.; THOME ANTONIO, C. G. Automatic identification forautomotives vehicles plates. 2014.

HOSTING, G. P. Tesseract-ocr. October 2014. Disponível em:<https://code.google.com/p/tesseract-ocr/wiki/ReadMe>.

KANG, D.; PARK, C.; WON, S. Robust image binarization method for billet identification insteelmaking process. IEEE, p. 1539 – 1544, 2008.

MEMBREY, P.; HOWS, D. Learn Raspberry Pi with Linux. 1. ed. [S.l.]: Apress, 2013.

MITHE, R.; INDALKAR, S.; DIVEKAR, N. Optical character recognition. 2013.

NETO, H. V. Lightness constancy in edge detection: A simple approach using luminance ratios.2014.

RICHARDSON, M.; WALLACE, S. Getting Started with Raspberry Pi. 1. ed. Sebastopol:O’Reilly, 2012.

TEAM, O. D. About OpenCV. October 2014. Disponível em: <www.opencv.org>.

ZHANG, B. Computer vision vs. human vision. ICCI’10, 2010.

32

APÊNDICE A -- CRONOGRAMA E ORÇAMENTO DO SISTEMA

A.1 CRONOGRAMA

O desenvolvimento do projeto seguiu o cronograma conforme a Tabela 2. Para um

melhor andamento, a divisão foi feita semanalmente. Em cada semana há uma mensuração das

horas utilizadas em cada processo.

Tabela 2: Cronograma da distribuição das atividades semanais em horasOutubro Novembro Dezembro Fevereiro

01/10 08/10 15/10 22/10 29/10 05/11 12/11 19/11 26/11 03/12 10/12 17/12 04/02

Pesquisa

da teoria4 4 4 4 4 2 2 2 2 2 2 2 2

Instalações

no Raspiberry Pi3 6

Codificação do

software de captura

de imagem

2 2 2 2 2

Codificação do

software

de segmentação

imagem

3 3 3 3

Banco de dados 3 3 3

Sensores e atuadores 3 3

Montagem maquete 3 3 3

Correções de falhas 3 3 3

Integração hardware e

software2 2 2

Testes 3 3 3

Escrita do trabalho 3 3 3 3 3 3 3 3 3 3

A.2 ORÇAMENTO DO SISTEMA

O orçamento abaixo leva em consideração os preços praticados no Brasil somados os

encargos e taxas.

1.Raspberry Pi (modelo B) - R$ 229,00 x 1 = 229,00

33

2.Display 3,2 polegadas - R$ 160,00 x 1 = 160,00

3.Servomotor pequeno - R$ 30,00 x 1 = 30,00

4.Raspicam - R$ 75,00 x 1 = 75,00

5.Sensor de proximidade ultrassônico - R$ 25,00,00 x 2 = 50,00

6.Madeira para maquete R$ 50,00 x 1 = 50,00

7.Fonte do Raspberry Pi R$ 30,00 x 1 = 30,00

Somado os valores discriminados anteriormente, temos um total de R$ 624,00 de custo

para a compra dos materiais necessários para a construção do sistema.