UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática



Documentos relacionados
TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Modelo Cascata ou Clássico

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Base de Dados para Administrações de Condomínios

Universidade da Beira Interior

5. Métodos ágeis de desenvolvimento de software

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Entrega de Folhas de Férias

Orientação a Objetos

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS

ARTIGO TÉCNICO. Os objectivos do Projecto passam por:

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Instituto Politécnico de Beja. Escola Superior de Tecnologia e Gestão

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO As Normas da família ISO 9000

Arquitetura de Rede de Computadores

Diagrama de transição de Estados (DTE)

Persistência e Banco de Dados em Jogos Digitais

Novo Formato de Logins Manual de Consulta

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

A SÈTIMA. O nosso principal objectivo

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

Aplicações de Escritório Electrónico

Processo do Serviços de Manutenção de Sistemas de Informação

Prof. Marcelo Machado Cunha

Universidade Federal de Pernambuco

Rock In Rio - Lisboa

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Mobilidade na FEUP Deslocamento Vertical

Esclarecimento: Não, a operação de matching ocorre no lado cliente da solução, de forma distribuída.

IW10. Rev.: 02. Especificações Técnicas

Programa de Parcerias e Submissão de Propostas 2014/15

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

1. NÍVEL CONVENCIONAL DE MÁQUINA

Guia de Estudo Folha de Cálculo Microsoft Excel

Seu manual do usuário EPSON LQ-630

Prova de Aferição de Matemática

Tarefa Orientada 18 Tabelas dinâmicas

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

Reconhecimento de marcas de carros utilizando Inteligência Artificial. André Bonna Claudio Marcelo Basckeira Felipe Villela Lourenço Richard Keller

Escola Superior de Tecnologia de Setúbal. Projecto Final

Departamento de Sistemas e Informática. Licenciatura em Engenharia Informática Industrial EDP

Sphinx Scanner Informações gerais V

RELATÓRIO DE ESPECIFICAÇÃO DE REQUISITOS

ISO 9001:2008. A International Organization for Standardization (ISO) publicou em a nova edição da Norma ISO 9000:

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Gerenciamento de software como ativo de automação industrial

Gestão dos Níveis de Serviço

4 Segmentação Algoritmo proposto

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Cálculo de volume de objetos utilizando câmeras RGB-D

Gestão da Informação

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

Organização. Trabalho realizado por: André Palma nº Daniel Jesus nº Fábio Bota nº Stephane Fernandes nº 28591

Relatório de Análise de Requisitos

Análise de Sistemas. Conceito de análise de sistemas

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

PHC Serviços CS. A gestão de processos de prestação de serviços

GARANTIA DA QUALIDADE DE SOFTWARE

Software Registado e Certificado pela AT GESTÃO DE LAVANDARIAS. mercado exigente! Certificado. Retail Solutions

Manual SAGe Versão 1.2 (a partir da versão )

CURSO DE FOTOGRAFIA DIGITAL COMPLETO

Controladores Lógicos Programáveis 2

PALAVRAS-CHAVE: Massas Nodulares, Classificação de Padrões, Redes Multi- Layer Perceptron.

Manual do Utilizador

Módulo 15 Resumo. Módulo I Cultura da Informação

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Relatório de Estágio

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

yuiopasdfghjklçzxcvbnmqwertyuiopasdfghjklçzxcvbnm qwertyuiopasdfghjklçzxcvbnmqwertyuiopasdfghjklçzxc

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

Engenharia de Software

Agrupamento Vertical de Escolas de Salir Biblioteca Escolar 2008/2009. Como fazer um trabalho

EMPRESAS VIRTUAIS. Autor: Pedro Miguel da Silva Fernandes. PDF processed with CutePDF evaluation edition Pág.

Engenharia de Software III

Certificação da Qualidade dos Serviços Sociais. Procedimentos

Global T126 e GFS), executando para ambos os horários (00Z e 12Z), utilizando

DOCBASE. 1. Conceitos gerais. 2. Estrutura da pasta de associações. 3. A área de documentos reservados. 4. Associação de Imagens

Figura 1 - O computador

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

Computação Adaptativa


GESTÃO de PROJECTOS. Gestor de Projectos Informáticos. Luís Manuel Borges Gouveia 1

Escola Secundária/3 da Maia Cursos em funcionamento Técnico de Electrónica, Automação e Comando

Transcrição:

UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática Solução Integrada de Video-Based Vehicle Identification Rafael Soledade Matos DISSERTAÇÃO MESTRADO EM ENGENHARIA INFORMÁTICA Especialização em Sistemas de Informação 2013

UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática Solução Integrada de Video-Based Vehicle Identification Rafael Soledade Matos DISSERTAÇÃO Trabalho orientado pelo Prof. Doutor António Manuel Silva Ferreira e por Ricardo André Santos Gomes de Almeida MESTRADO EM ENGENHARIA INFORMÁTICA Especialização em Sistemas de Informação 2013

Agradecimentos E assim termina o meu percurso académico. Se estes são, como se costuma dizer, os melhores anos de uma vida, não posso dizer. Mas sei que vou sempre olhar para trás e recordar com alegria a minha vida académica. Relembro então (quase) todos aqueles que dela fizeram parte. Em primeiro lugar, muito obrigado à minha mãe por todo o apoio e carinho e apoio que me deu ao longo destes anos. Foi, sem dúvida, o pilar que me aguentou neste percurso. Ao meu pai, que sempre esteve lá para dar o apoio essencial e para me manter no caminho certo, muito obrigado. E à minha avó, que tornou as idas a casa muito mais especiais, muito obrigado. E à chata da Mariana, agora é a tua vez! Muito obrigado, Joana, por todo o apoio, carinho e amor que me deste nos meses em que escrevi este relatório, e não só. Foste essencial no meu percurso, no limar das arestas, na determinação que tive em chegar aqui. Estiveste presente em todos os momentos mais importantes da minha vida académica, e certamente estarás presentes em muitos mais. Esta tese também é tua. Aos amigos de sempre: Fábio Lopes, João Costa, Catarina Lopes, Bruno Melo, André Melo, Bruno Silva, António Lopes, Nuno Raposo, Brian Matos, Filipe Rodrigues. Um grande obrigado por tudo. Podem nem se ter apercebido, mas só as férias que passei com vocês ao longo deste percurso foi o suficiente para nunca perder a sanidade e ter sempre a força necessária para seguir em frente. Tomás Trindade, não me esqueci de ti. Tenho pena de não poder partilhar este feito com alguém de quem gostávamos muito. Também lhe é dedicado. Cabaço, Diana, Diogo, Faísca, Noites, Eduardo, Reis, Monteiro, Alentejano, Ana Sofia, Santinho, Guns, Marcos, Saraiva, Smack, Fernando, Silveira, Antunes, Telmo, Piu, Raúl, François, Quim, JP, todos os meus afilhados e afilhadas de faculdade e muitos muitos muitos mais que não me lembro agora mas que certamente não ficarão chateados por não alongar mais esta lista. Um grande enorme obrigado a vocês, uma autêntica família que criei durante a minha vida académica, e que certamente nunca cairá no esquecimento. Foi a vossa simpatia, hospitalidade e carinho para com um pequeno nativo como eu que tornou rápida e fácil a minha adaptação à vida em Lisboa. Eliana Sousa e Ana Alcaidinho, palavras para quê? Ganhei mais duas irmãs. iii

Andriy Boychenko, companheiro de muitas batalhas nesta guerra que foi o fingeprinting! Muito obrigado pelo teu apoio, pela sessões de brainstorming e pelo espírito de entre-ajuda. Garanto-te que sem ti não teria conseguido. Ao professor António Ferreira, um muito obrigado pela dedicação e interesse demonstrados desde o primeiro contacto que tivemos. A qualidade deste documento é fruto disso. Last but not least, um grande obrigado ao Ricardo Almeida e a toda a malta do OBO e CBO que me acolheu na Accenture. Sem a vossa paciência e apoio, teria sido perto de impossível fazer tudo a tempo. Foi um prazer ter trabalhado numa equipa tão competente e profissional. Quando se aprende com os melhores, tudo parece mais fácil. iv

Para ti.

Resumo Face à crescente necessidade de soluções de análise de imagem e correlação com eventos, nomeadamente no âmbito dos sistemas de apoio à decisão, detecção e controlo de fraude e problemáticas conexas, e no caso deste PEI que foi realizado na Accenture, da necessidade de aplicação desses conceitos ao tráfego rodoviário pretendi, como primeiro objectivo, estudar e desenvolver os componentes de um sistema de análise, avaliação e medição de eventos vídeo e/ou identificar informações relativas a veículos com base em foto-análise, segundo um sistema de regras suportado por um motor de decisão. Mais precisamente, pretendi que, dada a imagem de um veículo, sujeita a diversas condições que podem afectar a sua qualidade/legibilidade, se consiga localizar e retirar com precisão a zona da matrícula, para posterior comparação com um conjunto de outras imagens presentes numa base de dados, devolvendo, com um nível de confiança elevado, a informação necessária ao processo de facturação, tudo isto processado de forma automática. Para tal, investiguei conceitos de identificação de padrões em imagens, tais como fingerprinting multi-vectorial, detecção e extracção de pontos de interesse usando heurísticas de relevância, distâncias computacionais segundo perfis de confiança de modulação de ruído, e cálculo de contornos e respectivas formas geométricas com base em métodos matemáticos. O segundo objectivo deste projecto foi o desenvolvimento de uma framework genérica, organizada em módulos de avaliação dos resultados das análises automáticas a matrículas, reutilizáveis para aplicação a futuros protótipos ou projectos de Tecnologias da Informação ligados às diferentes áreas de negócio da empresa onde decorre o PEI. O terceiro objectivo do PEI consistiu no desenvolvimento de uma aplicação web, que serve para validar contas de utilizadores e consultar ou corrigir os dados relativos a esses utilizadores, no contexto de uma aplicação móvel que é adicional ao processo de identificação de matrículas através da criação de pórticos virtuais, cuja cobrança será activada através da leitura dos valores GPS do dispostivo. Palavras-chave: Computer Vision, Fingerprinting de Imagens, Optimização de Desempenho, Detecção de Matrícula, Aplicações Móveis ix

Abstract Given the growing need for image analysis solutions and correlation with events in the context of traffic road tolling, particularly in what concerns decision support systems and detection and control of fraud, this project aims to study and develop the components of a system for analysis, evaluation and measurement of video information with the purpose of identifying vehicles license plates, according to a system of rules supported by a decision engine. Specifically, it is intended that, given an image of a vehicle subject to various conditions that can affect its quality / readability, the system is able to accurately locate and retrieve the license plate area for subsequent comparison with a set of other images stored in a database, returning with a high level of confidence the information needed for the billing process. The whole process is automatic and relies on methodologies for identifying patterns in images such as multi-vector fingerprinting with detection and extraction of points of interest using heuristics relevance, distance profiles based on computational trust modulation noise and calculation of contours and corresponding geometric shapes, based on mathematical methods. The second objective is to develop a generic framework organized into modules for evaluation of the results, with reusable components that can be used in future projects on several different business areas related to Accenture. The third and final objective of the project was to develop a web application that will be used to validate user accounts, as well as to consult and correct the user related data in the context of a mobile application, to be installed on smartphone devices, which will provide additional information to the license plate identification process. Keywords: Computer Vision, Image Fingerprinting, Performance Optimization, License Plate Detection, Mobile App xi

Conteúdo Lista de figuras Lista de tabelas xviii xxi 1 Introdução 1 1.1 Motivação.................................. 1 1.2 Objectivos.................................. 2 1.3 Instituição de acolhimento......................... 4 1.4 Planeamento e execução.......................... 4 1.5 Contribuições................................ 5 1.6 Notação adoptada.............................. 5 1.7 Organização do relatório.......................... 5 2 Trabalho relacionado 9 2.1 Literatura académica............................ 9 2.1.1 Fingerprinting de imagens..................... 9 2.1.2 Frameworks para reconhecimento de matrículas.......... 13 2.2 Trabalho relacionado da Accenture..................... 13 2.3 Sumário................................... 14 3 Trabalho realizado 17 3.1 Enquadramento............................... 17 3.1.1 Ferramentas de desenvolvimento de software........... 17 3.1.2 Organização do trabalho na equipa................. 18 3.1.3 Processo de desenvolvimento de software............. 19 3.2 Algoritmo de fingerprinting de imagens.................. 20 3.2.1 Avaliação preliminar de algoritmos de fingerprinting....... 21 3.2.2 Implementação do algoritmo de fingerprinting de matrículas... 25 3.2.3 Especialização da função de matching de descritores....... 26 3.3 Algoritmo de recorte da matrícula..................... 28 3.3.1 Recorte da matrícula com o algoritmo de threshold........ 29 3.3.2 Melhoria ao algoritmo de threshold................ 29 xiii

3.3.3 Recorte da matrícula com filtro de Sobel.............. 31 3.3.4 Recorte da matrícula com combinação dos dois algoritmos.... 32 3.4 Optimização da extracção de imagens candidatas............. 32 3.4.1 Bancada de testes.......................... 34 3.4.2 Métodos de extracção de imagens candidatas........... 36 3.4.3 Alternativas de desenho físico da base de dados.......... 41 3.4.4 Resultados............................. 42 3.4.5 Síntese do sistema de fingerprinting de matrículas......... 44 3.5 Framework modular para reconhecimento de matrículas.......... 45 3.5.1 Requisitos funcionais........................ 45 3.5.2 Requisitos não-funcionais..................... 46 3.5.3 Arquitectura e componentes.................... 46 3.5.4 Implementação........................... 52 3.5.5 Testes................................ 53 3.6 Mobile Tolling Backoffice.......................... 54 3.6.1 Requisitos funcionais........................ 55 3.6.2 Arquitectura do módulo de consulta e correcção de dados..... 56 3.6.3 Implementação do módulo de consulta e correcção de dados... 56 3.6.4 Testes................................ 57 3.7 Sumário................................... 57 4 Conclusão 63 4.1 Principais contribuições........................... 63 4.2 Competências adquiridas.......................... 64 4.3 Dificuldades encontradas.......................... 64 4.4 Trabalho futuro............................... 65 Bibliografia 68 xiv

xvi

Lista de Figuras 1.1 Estrutura de serviços da Accenture...................... 4 2.1 Pontos de interesse e descritores detectados numa imagem......... 10 3.1 Processo de desenvolvimento de software em V adoptado pela Accenture. 19 3.2 Processamento do fingerprinting de uma matrícula............. 20 3.3 Exemplos de imagens de matrículas capturadas pelo RSE......... 21 3.4 Pontos de interesse detectados pelos diferentes algoritmos, em imagens de boa qualidade................................. 22 3.5 Tempos de execução dos algoritmos de detecção e extracção de pontos de interesse, em imagens de boa qualidade................... 22 3.6 Pontos de interesse detectados pelos diferentes algoritmos, em imagens de má qualidade................................. 23 3.7 Tempos de execução dos algoritmos de detecção e extracção de pontos de interesse, em imagens de má qualidade................... 23 3.8 Resultados do match entre duas imagens diferentes da mesma matrícula, com boa qualidade.............................. 24 3.9 Resultados do match entre duas imagens da mesma matrícula, com diferentes rotações................................ 24 3.10 Pontos de interesse detectados para o dígito 2 de uma matrícula...... 25 3.11 Resultados da função de match em diferentes imagens de caracteres.... 26 3.12 Resultados da função de match entre duas matrículas diferentes...... 27 3.13 Taxa de sucesso do algoritmo de fingerprinting............... 27 3.14 Taxa de falsos positivos do algoritmo de fingerprinting........... 28 3.15 Exemplos de binarização de imagem.................... 30 3.16 Detecção de matrículas em imagens de níveis de cinzento......... 31 3.17 Detecção de matrículas utilizando o filtro de Sobel............. 33 3.18 Extracção da matrícula em duas etapas................... 34 3.19 Esquema relacional da base de dados com imagens e pontos de interesse. 36 3.20 Média das coordenadas cartesianas dos pontos de interesse de uma imagem. 37 3.21 Média dos valores dos ângulos dos pontos de interesse de uma imagem.. 38 3.22 Exemplo de ruído em matrículas....................... 39 xvii

3.23 Cálculo do descritor binário LSH...................... 40 3.24 Distribuição da probabilidade de encontrar a matrícula correcta...... 43 3.25 Percentagem de candidatos extraídos em função do tamanho da chave LSH. 44 3.26 Arquitectura de alto nível do sistema de tolling............... 47 3.27 Arquitectura da framework IALPR para reconhecimento de matrículas... 48 3.28 Rede Bayesiana para a camada de análise.................. 50 3.29 Arquitectura do sistema de processamento de eventos assíncronos..... 52 3.30 Diagrama de sequência do IALPR...................... 53 3.31 Arquitectura de alto nível do funcionamento do módulo de consulta e correcção de dados.............................. 55 3.32 Arquitectura MVC do módulo de consulta e correcção de dados...... 57 3.33 Diagrama de sequência do módulo de consulta e correcção de dados.... 58 xviii

xx

Lista de Tabelas 1.1 Plano de tarefas do PEI............................ 7 2.1 Algoritmos de detecção e extracção de pontos de interesse......... 10 3.1 Percentagem de sucesso dos algoritmos de recorte de matrículas...... 32 3.2 Descrição de cada atributo da tabela lpn fingerprint............ 35 3.3 Descrição de cada atributo da tabela fp interest point........... 35 3.4 Percentagem de candidatos filtrados através da classificação de pontos de interesse como sendo fortes ou não fortes.................. 41 3.5 Tempos de execução do algoritmo de fingerprinting, incluindo a pesquisa na base de dados............................... 42 3.6 Resultado dos testes aos requisitos funcionais da framework modular... 54 3.7 Lista de requisitos funcionais do módulo de correcção de dados testados com sucesso................................. 58 xxi

Capítulo 1 Introdução Neste capítulo abordo o conceito de reconhecimento automático de matrículas, que está na base deste Projecto de Engenharia Informática (PEI) realizado na empresa Accenture. Descrevo também os objectivos definidos, o plano de trabalho traçado e as minhas contribuições ao projecto. Finalmente, faço um sumário dos capítulos do relatório. 1.1 Motivação No tradicional pórtico de portagens, a cobrança da passagem é efectuada por um funcionário da empresa, que executa as seguintes tarefas: informar o condutor da taxa a ser paga, receber o pagamento e, finalmente, permitir a passagem do veículo. Esta cobrança manual requer algum tempo a ser processada e causa filas de espera que, nalguns casos, podem ser intoleráveis (por exemplo, na Ponte 25 de Abril), para além de ter um custo adicional para a empresa. Foi neste contexto que surgiram os sistemas automáticos de cobrança. O video tolling é um sistema de identificação de veículos que permite aumentar a rapidez de cobrança de portagens através da automação das tarefas envolvidas. Neste tipo de sistema são instalados equipamentos RSE (Roadside Equipment) nos pórticos, que são câmaras com sensores de infravermelhos e velocidades de obturador elevadas que permitem fotografar os veículos em trânsito, independentemente da velocidade a que seguem ou das condições atmosféricas presentes. Após a captura da imagem do veículo, procede-se à identificação da matrícula através de um algoritmo de OCR (Optical Character Recognition), para que possa ser processado o pagamento da passagem pelo pórtico. No entanto, o algoritmo OCR nem sempre apresenta resultados satisfatórios no que toca à identificação correcta dos caracteres presentes na imagem de uma matrícula. Para além disso, em países como os Estados Unidos da América, onde as matrículas podem ter símbolos, imagens e até caracteres personalizados, torna-se mais complicada a aplicação eficaz de um algoritmo de OCR, o que implica uma validação manual de todas as matrículas 1

Capítulo 1. Introdução 2 que não sejam reconhecidas automaticamente. A seguir apresento dois problemas importantes inerentes aos sistemas actuais de video tolling. a) Eficácia insuficiente do algoritmo OCR de identificação de matrículas: O algoritmo actualmente utilizado no reconhecimento dos caracteres da matrícula nem sempre apresenta resultados satisfatórios, havendo uma percentagem considerável de matrículas a ter de ser validada manualmente. Outro cenário possível é o do envio de dados de pagamento ao condutor errado, causado por erros de leitura de caracteres. b) Apenas uma fonte de dados para fazer o reconhecimento de matrículas: O OCR é um componente isolado, não existindo métodos de avaliação alternativos. Este tipo de centralização da avaliação de imagens de matrículas aceita o primeiro resultado obtido, não havendo outra componente que o reforce ou enfraqueça. Surge então a necessidade de encontrar uma solução mais eficaz para o video tolling, e que também seja escalável em termos de desempenho, pois está previsto um crescimento sucessivo dos dados a processar pelo facto de ser guardado o histórico de passagens. A solução proposta neste PEI passa por combinar um sistema de fingerprinting de imagens com o sistema de OCR já existente, passando a existir duas fontes de dados para fazer o reconhecimento de matrículas. O conceito de fingerprinting baseia-se na ideia de que cada imagem possui um conjunto de características, tais como pontos de interesse e respectivos descritores (intensidade de pixel, orientação, entre outros), que permitem atribuir-lhe uma identificação única, naquela que pode ser vista como uma analogia à impressão digital de um ser humano. Torna-se então possível comparar duas imagens diferentes da mesma matrícula e determinar que representam a mesma sequência de caracteres. Desta forma, determinei os componentes principais daquele que é um sistema de avaliação automática de matrículas com recursos a vários módulos. Daqui foi desenvolvida uma framework cujo objectivo passa por garantir que uma matrícula é validada com um nível de certeza o mais próximo possível dos 100%, recorrendo a vários módulos e métricas de processamento dos dados. Irei então discutir, ao longo deste trabalho, abordagens possíveis para a resolução dos desafios inerentes à implementação do sistema proposto, para que seja escolhida e desenvolvida uma solução eficaz e que se adapte às necessidades do mercado, oferecendo também um elevado nível de robustez. 1.2 Objectivos O trabalho que desenvolvi divide-se em três objectivos principais, discutidos a seguir:

Capítulo 1. Introdução 3 Objectivo 1: Sistema de fingerprinting de imagens Para este objectivo, desenvolvi um sistema de fingerprinting de imagens para aumentar o nível de automação do processo de reconhecimento de matrículas. Este sistema inclui também um algoritmo de detecção e extracção da zona de matrícula, dada a imagem de um veículo. Actualmente, os melhores algoritmos de fingerprinting apresentam níveis de confiança na ordem dos 96%, e são produtos considerados state of the art. A avaliação deste objectivo passou por atingir um nível de confiança de 90%. Objectivo 2: Framework modular para reconhecimento de matrículas Este objectivo consistiu na modelação e implementação do IALPR (Intelligent Automatic License Plate Recognition), que é uma framework de análise automática de matrículas. Pretendo com isto aliar ao resultado do objectivo 1 um conjunto de regras e métodos de avaliação, para minimizar o fluxo de matrículas que têm de passar pela validação manual. A avaliação deste objectivo consistiu em garantir que o fluxo de processos da framework é executado do início ao fim, de forma assíncrona e com persistência de cada estado de processamento, o que representa a simulação do processamento de um evento do IALPR numa situação em que seja necessário reconhecer uma matrícula. Objectivo 3: Mobile Tolling Backoffice O último objectivo consistiu na criação de um portal que permite o acesso e validação dos dados da aplicação móvel Mobile Tolling App. Esta aplicação móvel tem como principal função criar e gerir um conjunto de pórticos virtuais geo-referenciados através do GPS do dispositivo smartphone. Estes dados, juntamente com os dados que o utilizador inseriu acerca do seu veículo, servem para reforçar a confiança com que as matrículas são validadas pela framework desenvolvida no objectivo 2, através de uma correlação com os dados recolhidos pelos RSE do pórtico. A avaliação deste objectivo consistiu em criar um conjunto de contas de utilizador para serem inseridas no sistema, de forma a testar a sua validação e pesquisa de dados. O portal serve principalmente para efectuar a correcção de dados em ambiente backoffice, comprovando assim a modularidade que se pretendia da framework do objectivo 2. Por exemplo, se a imagem de uma matrícula estiver associada a um número de matrícula incorrecto, todos as transacções daquele cliente irão ser processadas de forma errada mesmo que o fingerprinting da imagem tenha uma confiança de 100%. Numa situação destas, os dados podem facilmente ser corrigidos.

Capítulo 1. Introdução 4 1.3 Instituição de acolhimento O PEI decorreu na Accenture, actualmente considerada uma das maiores consultoras do mundo, prestando serviços nas áreas de Gestão, Tecnologias de Informação e Outsourcing. Em Janeiro de 2011, a empresa empregava mais de 225 mil funcionários, num total de 120 países. A estrutura dos serviços da empresa está esquematizada na Figura 1.1. Este projecto insere-se na parte de Tecnologia, mais concretamente, na área de Produtos. Fui integrado na equipa especializada em Tolling, cujo objectivo passa por desenvolver soluções para a área das portagens em diversos países, e todo o trabalho está a ser desenvolvido no Tolling Center of Excellence de Lisboa, no escritório situado na sede da empresa. Comunicação, Média e Tecnologia Serviços Financeiros Produtos Saúde e Serviço Público Recursos Consultoria de gestão da Accenture Tecnologia Outsourcing de processos de negócio Figura 1.1: Estrutura de serviços da Accenture. As zonas a cinzento definem o contexto em que se inseriu o PEI na estrutura da empresa. 1.4 Planeamento e execução Na Tabela 1.1 descrevo em detalhe o plano de trabalhos proposto para este PEI. Todas as tarefas estão organizadas por tarefa principal e respectivas sub-tarefas, com data de início e data de fim. O planeamento nesta versão do relatório apresenta algumas diferenças em relação ao relatório preliminar. Isto deve-se ao facto do objectivo 2 ter sofrido um atraso de 3 meses em relação ao que estava previsto, devido a dificuldades técnicas relacionadas com a framework JBPM, tendo inclusive sido discutida a hipótese de utilizar outra ferramenta. Isto levou a um reajustamento da minha contribuição ao objectivo 3 e ao invés de desenvolver toda a aplicação móvel, como estava planeado inicialmente, desenvolvi o módulo de consulta e correcção de dados relativos ao Mobile Tolling App, sendo que outros elementos da equipa

Capítulo 1. Introdução 5 de trabalho iniciaram o desenvolvimento da app paralelamente ao meu desenvolvimento da framework do objectivo 2. 1.5 Contribuições A maior contribuição que dei no decorrer do PEI foi no objectivo 1, a componente de fingerprinting de matrículas, pois o objectivo inicial de atingir uma taxa de sucesso de reconhecimento de 90% foi superado até aos 94%. Para além disso, desenvolvi um algoritmo de localização e extracção da zona da matrícula, dada a imagem de um veículo, que fornece as imagens de matrícula necessárias à operação de fingerprinting. Implementei também a arquitectura que serviu de base à framework de processamento e reconhecimento de matrículas, que funciona de forma assíncrona entre os seus processos e utiliza persistência para garantir que o estado do sistema é sempre mantido, para pode ser restaurado em caso de falha do sistema, conseguindo. Adicionalmente, desenvolvi uma aplicação web, no âmbito da Mobile Tolling App, que é responsável por validar e consultar os dados dos clientes em ambiente de backoffice. Esta aplicação serve também para corrigir dados do cliente, evitando assim potenciais situações em que o cliente errado recebe dados de pagamento relativos à passagem por um dado pórtico. 1.6 Notação adoptada Todas as expressões que se encontrem noutro idioma estão em itálico, como por exemplo fingerprinting. 1.7 Organização do relatório O relatório encontra-se dividido em quatro capítulos. No Capítulo 1, fiz uma introdução ao tema do PEI e apresentei os objectivos definidos, assim como o planeamento das tarefas relacionadas e contribuições dadas ao projecto. No Capítulo 2, discuto algumas referências literárias na área do fingerprinting de imagens e de frameworks de reconhecimento automático de matrículas, assim como projectos relacionados, desenvolvidos pela empresa de acolhimento. No Capítulo 3, apresento todo o trabalho que realizei, no que toca aos objectivos definidos. Descrevo também a organização da equipa de trabalho, as ferramentas que utilizei e o processo de desenvolvimento de software que utilizei. Finalmente, no Capítulo 4 descrevo as minhas contribuições e competências adquiridas, discuto as decisões tomadas em relação às dificuldades que encontrei e identifico possível trabalho futuro.

Capítulo 1. Introdução 7 Actividades Data Início Data Fim 1 Fingerprinting de Imagens de Veículos e Framework modular 01-10-2012 18-01-2013 1.1 Análise dos algoritmos de Fingerprinting 01-10-2012 02-11-2012 1.1.1 Entendimento do problema de negócio 1.1.2 Identificação dos requisitos de negócio e operacionais 1.1.3 Estudo e selecção de tecnologias candidatas 1.1.4 Estudo de processos complementares de avaliação 1.1.5 Prototipagem e avaliação de resultados 1.1.6 Setup do ambiente de desenvolvimento 1.2 Desenho da Framework modular 05-11-2012 30-12-2012 1.2.1 Desenho dos processos operacionais 1.2.2 Desenho da arquitectura funcional 1.2.3 Desenho da arquitectura técnica 1.2.4 Definição da estratégia de testes 1.2.5 Definição do ambiente de desenvolvimento 1.3 Testes 03-12-2012 12-04-2013 1.3.1 Criação da base de dados de testes 1.3.2 Codificação dos componentes e testes unitários 1.3.3 Testes de Sistema 1.3.4 Testes de Desempenho 1.4 Preparação dos Resultados Estatísticos 15-04-2013 26-04-2013 2 Relatório preliminar 10-11-2012 24-11-2012 2.1 Escrita e entrega do relatório preliminar do estágio 3 Mobile Tolling CRM 29-04-2013 14-06-2013 3.1 Análise 29-04-2013 03-05-2013 3.1.1 Entendimento do problema de negócio 3.1.2 Identificação dos requisitos de negócio e operacionais 3.2 Desenho 06-05-2013 17-05-2013 3.2.1 Desenho dos esboços da página CRM 3.2.2 Desenho da arquitectura funcional 3.2.3 Desenho da arquitectura técnica 3.2.4 Definição da estratégia de testes 3.3 Desenvolvimento e Testes 20-05-2013 21-06-2013 3.3.1 Setup do ambiente de desenvolvimento 3.3.2 Codificação dos componentes e testes unitários 3.3.4 Testes de Integração 3.3.5 Testes de Sistema 4 Relatório final 21-06-2013 20-09-2013 4.1 Elaboração e entrega do relatório final de estágio Tabela 1.1: Plano de tarefas do PEI.

Capítulo 1. Introdução 8

Capítulo 2 Trabalho relacionado No capítulo anterior, identifiquei as problemáticas inerentes à utilização do algoritmo de OCR, propondo então aliar uma solução de fingerprinting de imagens para colmatar os casos em que o OCR falha na detecção da matrícula. De forma a encontrar maneiras de concretizar a solução pretendida, pesquisei algoritmos de detecção e extracção de descritores de imagens que pudessem ser aplicados em imagens de matrículas e que permitam determinar se duas imagens diferentes representam a mesma matrícula. Este capítulo está organizado em duas partes: na primeira descrevo as referências literárias que constituem a base para o desenvolvimento do projecto proposto, enquanto que na segunda parte discuto a solução anteriormente concretizada pela equipa de trabalho onde me inseri. 2.1 Literatura académica Analisei diversos artigos científicos que abordam soluções diferentes para o problema do fingerprinting de imagens, incluindo testes de desempenho que ajudam na análise dos algoritmos e para que situações se adequam melhor. A seguir descrevo e discuto alguns dos algoritmos que estudei para que no Capítulo 3 seja explícito o porquê das decisões tomadas. 2.1.1 Fingerprinting de imagens Para que seja possível realizar fingerprinting de imagens no contexto do reconhecimento de matrículas é necessário identificar os pontos de interesse e características chave que as tornam únicas. Os pontos de interesse são pontos na imagem que contêm algumas características que definem a área à sua volta, tais como textura, claridade ou formas geométricas. Os algoritmos de detecção de pontos de interesse de imagens actuam em duas fases: detecção e extracção (ver Figura 2.1). Finalmente, há uma terceira fase que visa comparar 9

Capítulo 2. Trabalho relacionado 10 Figura 2.1: Pontos de interesse e descritores detectados numa imagem. Tabela 2.1: Algoritmos de detecção e extracção de pontos de interesse. SURF [4] FAST [13] BRIEF [5] ORB [14] BRISK [10] Detector X X X X Extractor X X X X os descritores das imagens, calculados com base na informação dos respectivos pontos de interesse. Fase 1) Identificação de pontos de interesse, através de um detector: A imagem é percorrida por um algoritmo de detecção de pontos de interesse, os quais são obtidos através da análise do histograma de gradientes de luz da imagem ou de aproximações geométricas. Para cada ponto de interesse detectado estão associadas as suas coordenada (x, y) e ângulo. Fase 2) Cálculo de descritores, através de um extractor: Com base nos pontos de interesse obtidos, são calculados os descritores que contêm a informação relevante para a comparação com outros descritores. Estes descritores geralmente são de 64 ou 32 valores, calculados para cada ponto de interesse detectado. Os descritores são matrizes com tantas linhas quantos os pontos de interesse, e com 32 ou 64 colunas. Etapa 3) Fazer correspondência entre descritores: É utilizada uma função que faz a correspondência entre os descritores dos pontos de interesse considerados iguais em duas imagens com o fim de determinar quais os pontos que podem ser considerados representativos do mesmo objecto. Tendo em conta que alguns algoritmos fazem tanto a detecção como a extracção de pontos de interesse, estudei as combinações de detector e extractor que constam na Tabela 2.1.

Capítulo 2. Trabalho relacionado 11 Algoritmo SURF SURF, ou Speeded-Up Robust Features [4], baseia-se em aproximações de matrizes Hessianas [8] para detectar pontos de interesse. Após essa detecção, são calculados os seus descritores. Os descritores do algoritmo SURF são extraídos com base num quadrado que é centrado em cada ponto de interesse, ao qual é dada uma orientação. Cada quadrado é dividido em sub-regiões de 4 4, permitindo assim manter informação espacial. Para cada sub-região, é calculado um Haar-wavelet, tanto na vertical como na horizontal, obtendo-se as somas dos Haar-Wavelet para cada sub-região, o que forma o primeiro conjunto de entrada do vector descritor, de dimensão 4. Tendo em conta que cada sub-região irá ter um desses descritores, temos então vectores com 64 valores floating-point que irão ser computados aquando da comparação com os descritores de outras imagens. Tendo este método sido a base para a compreensão do funcionamento dos algoritmos de detecção de pontos de interesse, acabou por não ser uma solução testada. O motivo deveu-se a este algoritmo já ter sido implementado numa solução de fingerprinting de imagens, realizado pela equipa de trabalho anteriormente responsável por esta componente, não tendo sido considerada uma solução viável, pois o uso de descritores com tamanho 64 valores tornava a computação demasiado pesada. Algoritmo FAST + BRIEF Outra abordagem que estudei foi a combinação do detector FAST (Features from Accelerated Segment Test) [13] com o extractor BRIEF [5]. O algoritmo FAST utiliza a detecção de cantos Harris [11] e assume como candidatos a pontos de interesse todos os cantos da imagem detectados. Seja p um ponto de interesse candidato, e dada uma máscara (n,r), em que n é o número de pixels e r é o raio de um círculo, o detector desenha um círculo de r pixels à volta do ponto. Assume-se p como um ponto de interesse se existe um conjunto de n pixels consecutivos, dentro da área desse círculo, que são mais claros ou mais escuros que o pixel inicial, tendo em conta um intervalo de valores definido. Este detector, no entanto, não calcula a orientação do ponto de interesse, tendo portanto uma computação mais rápida, mas menor robustez, pois os descritores contêm menos informação. Considerando esta vantagem no tempo de computação, a combinação dos dois algoritmos é então uma forte candidata a algoritmo de fingerprinting de imagens. Após detectados os pontos de interesse, a extracção dos descritores é feita pelo algoritmo BRIEF. Estes descritores são vantajosos em relação aos do SURF, pois têm tamanho de 32 valores, ao invés de 64, mas preservando a informação relevante. Esta foi, aliás, uma das principais contribuições do algoritmo. A redução de dimensionalidade é conseguida através de técnicas como a PCA (Principal Component Analysis) [16], quantização das coordenadas do descritor ou binarização do mesmo, como descrito por Stommel [17]. A

Capítulo 2. Trabalho relacionado 12 técnica adoptada pelo BRIEF é a da conversão do descritor numa string binária, o que reduz bastante o espaço em disco necessário para guardar o descritor (particularmente útil no caso de se quererem guardar milhões de descritores), assim como permite calcular funções de matching mais rapidamente pelo processador do computador. Algoritmo ORB O ORB (Oriented-Fast and Rotated-Brief ) [14] baseia-se na combinação FAST + BRIEF, apresentando no entanto algumas melhorias. A solução proposta por Rabaud et al. [14] adiciona orientação aos pontos de interesse obtidos pelo detector FAST através do cálculo da luminosidade do seu ponto central, que tem como premissa a ideia de que, a partir do primeiro canto detectado, haverá um offset da sua luminosidade até ao centro, o que permite calcular um vector e o ângulo que este tem, obtendo-se assim uma orientação. No ORB, o extractor BRIEF foi modificado para poder tratar imagens do mesmo objecto, mesmo que este seja apresentado com diferentes ângulos de rotação, passando a designar-se r-brief. Esta modificação considera uma matriz dos ângulos obtidos na fase de detecção de pontos de interesse, que é utilizada para dar uma direcção ao descritor. Como é preciso ter em conta diversos ângulos para se poder fazer match correctamente entre imagens com diferentes rotações, são pré-computados valores padrão numa tabela de procura, onde são pesquisados os ângulos coerentes com o ponto de interesse a ser comparado, que por sua vez são os utilizados para computar o descritor. Algoritmo BRISK O BRISK [10] baseia-se, à semelhança do ORB, no detector de pontos de interesse FAST, e devolve também descritores de 32 valores. Inicialmente, o algoritmo é executado com uma máscara (9,16), que calcula, para 9 pixels consecutivos dentro de um círculo de raio 16 pixels, as variações de luminosidade até um limiar dado, identificando-se assim os candidatos a pontos de interesse. De seguida, é aplicado novamente o algoritmo nas áreas detectadas para extrair mais informação sobre os pontos de interesse a ser conjugada à existente, mas desta vez com uma máscara (5,8). Dado um conjunto de pontos de interesse, o algoritmo BRISK apresenta algumas diferenças fundamentais em relação ao BRIEF na forma como calcula os descritores. É utilizado um padrão determinista de amostras, com base em pré-cálculos, que resulta num conjunto de densidades, dentro do raio à volta de cada ponto de interesse. Isto evita a perda de informação sobre a luminosidade da imagem, quando aplicado um filtro (por exemplo, o Gaussian smoothing) para reduzir o espaço de procura de novos pontos de interesse aquando da fase de matching. Desta forma, este método limita mais a pesquisa feita, não só por reduzir o tamanho do descritor (os descritores BRISK também são de 32 valores), mas também através de restrições espaciais, pois só são comparados pontos cujas variações de luminosidade sejam coerentes localmente (na sua vizinhança).

Capítulo 2. Trabalho relacionado 13 Matching dos descritores Com base nos algoritmos anteriormente descritos, concluí que existem dois tipos de descritores: vectores com 64 ou 32 valores floating-point. Uma função de matching serve para comparar dois descritores e devolver o número de pontos de interesse que coincidem, ou seja, que são parte do mesmo objecto, apesar de estarem em imagens diferentes. Dados dois descritores floating-point, uma das maneiras de os comparar é através do cálculo da distância Euclidiana entre quaisquer dois pontos, um em cada imagem. Esta solução é robusta pois restringe espacialmente o matching de pontos, mas apresenta um grave problema de desempenho quando é necessário comparar milhões de descritores por causa do cálculo da distância Euclidiana, que não é uma simples operação de computação e comparação de bits. 2.1.2 Frameworks para reconhecimento de matrículas Existem diversas frameworks de avaliação de reconhecimento de matrículas [19, 15, 12, 9], que, apesar das suas taxas de sucesso, apenas possuem módulos de localização e extracção da zona de matrícula e avaliação OCR (Optical Character Recognition), não havendo qualquer outro método de avaliação e/ou confirmação dos resultados obtidos. Estas frameworks têm taxas de sucesso com valores entre 80-97% na detecção de matrículas, enquanto que o OCR apresenta uma taxa de sucesso de, em média, 90% no reconhecimento dos caracteres. Pegando num exemplo concreto de uma framework de reconhecimento de matrículas utilizada nos Estados Unidos da América, a solução oferecida em [9] consiste num detector e extractor da zona da matrícula, dada a foto do veículo, com uma taxa de sucesso de 94.3% e um módulo OCR com 91.4% de sucesso na leitura dos caracteres, o que se traduz numa confiança geral de 87,6% de probabildade de sucesso no reconhecimento da matrícula. A possibilidade de adaptar a framework de forma a que seja possível reconhecer matrículas de diversos países através de diferentes parametrizações dos atributos utilizados é notável e serviu de base ao trabalho desenvolvido para o objectivo 2, mas as taxas de sucesso no reconhecimento são baixas face ao custo associado aos 12.4% de imagens de matrículas que têm de ser validadas manualmente. 2.2 Trabalho relacionado da Accenture A Accenture tem uma solução de OBO (Operational Back-Office), responsável por todo o sistema de video tolling, composta por vários módulos e que está constantemente a ser submetida a melhorias. Uma solução de fingerprinting de imagens já havia sido desenvolvida anteriormente, mas provou ser pouco escalável, o que deu início a uma nova abordagem ao tema, sendo este o principal propósito deste PEI. Nessa solução, foi utilizado o algoritmo SURF, que

Capítulo 2. Trabalho relacionado 14 apresentou resultados de sucesso na detecção de imagens semelhantes na ordem dos 85%. No entanto, era exigida uma comparação por força bruta na base de dados entre os 64 valores do descritor actual com os outros descritores guardados, que demorava, num universo de 2000 imagens de matrículas e 250.000 descritores, cerca de 18 horas até devolver resultados. Este PEI (Projecto de Engenharia Informática) enquadra-se na evolução do sistema existente, não só com a implementação de um sistema de fingerprinting de imagens mas também com a contínua melhoria dos resultados da detecção automática de matrículas. 2.3 Sumário Neste capítulo, apresentei a literatura relacionada com a problemática do fingerprinting de imagens, tendo estudado diversos algoritmos de detectores e extractores apropriados ao problema proposto. Fiz também um enquadramento ao trabalho realizado pela equipa de trabalho anterior, relativamente à solução de fingerprinting de imagens de matrículas. Essa solução, no entanto, tinha várias limitações que foram ultrapassadas neste PEI. No próximo capítulo explico o porquê da minha escolha do algoritmo de fingerprinting e justifico todo trabalho que realizei durante o PEI.

Capítulo 2. Trabalho relacionado 16

Capítulo 3 Trabalho realizado Após referidas as problemáticas que motivam o projecto, assim como feito o estudo de literatura, neste capítulo apresento o trabalho que realizei para cumprir os objectivos traçados, nomeadamente no que toca à implementação do fingerprinting de imagens, o desenvolvimento da framework modular IALPR (Intelligent Automatic License Plate Recognition) e o Mobile Tolling Backoffice. 3.1 Enquadramento Nesta secção, descrevo as ferramentas que utilizei no decorrer do PEI, a organização de trabalho da equipa de tolling da Accenture e o processo de desenvolvimento de software. 3.1.1 Ferramentas de desenvolvimento de software As ferramentas de desenvolvimento de software que apresento a seguir estão organizadas em torno dos objectivos do PEI. Sistema de fingerprinting de matrículas Utilizei um computador portátil equipado com processador Intel Core i5, 4 GB de memória RAM e sistema operativo Windows 7 Enterprise Edition de 64 bits. Todo o software foi desenvolvido na linguagem Java, usando o Eclipse IDE 1, e utilizei duas bibliotecas para manipulação de imagens. A OpenCV 2 (Open Computer Vision) é uma biblioteca Open- Source que contém as funcionalidades necessárias à realização do projecto, nomeadamente no que toca a filtros a serem aplicados nas imagens e a algoritmos de fingerprinting. A JavaCV 3 funciona como complemento ao OpenCV, desenhado especificamente para a linguagem Java, de forma a permitir o uso das suas funções nativas. 1 http://www.eclipse.org/ 2 http://opencv.willowgarage.com/wiki/ 3 http://code.google.com/p/javacv/ 17

Capítulo 3. Trabalho realizado 18 Adoptei esta estratégia de trabalhar com duas bibliotecas em paralelo para efectuar testes de desempenho e determinar a solução que oferece maior rapidez de processamento, tendo a escolha final recaído sobre a biblioteca OpenCV, visto que, por ser uma adaptação directa do código original (escrito em C++) através do uso de wrappers Java, torna-se mais eficiente em termos de desempenho. O sistema de gestão de bases de dados que utilizei foi o MySQL 4, servindo para armazenar os dados relativos aos pontos de interesse e descritores de cada imagem, assim como a localização em disco das imagens dos veículos. Estas imagens estão agrupadas por pastas cujos nomes são números de matrículas, e imagens da mesma matrícula encontramse na mesma pasta. Framework modular A escolha para o desenvolvimento da framework modular recaiu sobre a ferramenta JBPM5 5, uma framework de criação e gestão de processos de negócio. Dado que é uma ferramenta baseada em Drools 6, um sistema de regras suportado por um motor de decisão, e que permite a alteração do fluxo de processos de uma forma muito acessível (para inserção de novos processos ou alterações específicas para um determinado cliente), pareceu uma escolha bastante interessante e adequada para futuras modificações na arquitectura. A rede Bayesiana, correspondente à camada de análise, foi implementada na framework através do jsmile 7, uma bibloteca de classes Java que permitiu a criação de modelos probabilísticos. Mobile Tolling Backoffice A interface do módulo de consulta e correcção de dados foi desenvolvida em HTML5 e CSS3, com recurso a funções oferecidas por jquery e Javascript. A componente de backoffice foi totalmente desenvolvida em Java, com recurso a tags JSP, e a sua arquitectura baseou-se no MVC (Model-View-Controller) da framework Struts 8. 3.1.2 Organização do trabalho na equipa A equipa de trabalho foi composta por duas pessoas, sendo que uma terceira ajudou, quando necessário. Todo o trabalho foi supervisionado por um membro sénior do projecto, que garantiu a execução do planeamento dentro do previsto. Toda a equipa encontravase no mesmo escritório, em ambiente informal, e a comunicação foi sempre efectuada pessoalmente, excepto quando algum elemento estivesse deslocado, sendo que nesse caso 4 http://www.mysql.com/ 5 http://www.jboss.org/jbpm/ 6 http://www.jboss.org/drools/ 7 http://genie.sis.pitt.edu/wiki/introduction_to_jsmile 8 http://struts.apache.org/

Capítulo 3. Trabalho realizado 19 a comunicação foi feita por correio electrónico. O projecto foi documentado internamente de acordo com as normas do Accenture Delivery Method, de forma a normalizar o formato da documentação. 3.1.3 Processo de desenvolvimento de software O processo de desenvolvimento que adoptei seguiu o modelo em V [1], sendo este utilizado na maioria dos projectos realizados na instituição de acolhimento (ver Figura 3.1). O modelo em V adopta uma estruturação do projecto em várias etapas, mas ao invés de seguir uma abordagem linear até à fase de implementação, segue uma estrutura mais flexível e com várias iterações de melhoria em cada etapa. Para além disso, este modelo foca-se muito nos testes de software, o que permite uma correcção rápida de erros. Do ponto de vista da gestão de projeto, este processo permite, em caso de anomalia, um retorno às etapas precedentes, o que facilita o desenvolvimento de novos requisitos que possam surgir durante o projecto. Especificação de requisitos Testes de aceitação Projecto de alto nível Testes de sistema Desenvolvimento Teste Projecto detalhado Testes de integração Codificação Testes de unidade Figura 3.1: Processo de desenvolvimento de software em V adoptado pela Accenture.

Capítulo 3. Trabalho realizado 20 3.2 Algoritmo de fingerprinting de imagens O algoritmo de fingerprinting da imagem de uma matrícula é processado como no diagrama da Figura 3.2, onde, dada uma imagem de uma matrícula, são detectados os seus pontos de interesse e calculados os descritores, para depois ser feita a extracção de candidatos a matrícula igual presentes na base de dados. Se a função de matching determinar com um nível de confiança suficentemente alto que alguma das matrículas candidatas é a correspondente à matrícula de entrada, há validação dos dados. Caso contrário, a matrícula é validada manualmente por um operador. Todas as etapas do processamento serão explicadas em detalhe desde esta secção até à Secção 3.4. Base de dados de imagens Validação manual Detecção de pontos de interesse Não Extracção dos descritores Extracção de candidatos a matrícula igual Nivel de confiança suficiente? Sim Função de matching Validação da matrícula Figura 3.2: Processamento do fingerprinting de uma matrícula. Apesar de todos os algoritmos mencionados no Capítulo 2 apresentarem resultados semelhantes em imagens de boa qualidade, não se pode assumir o mesmo para as imagens obtidas em situações reais, onde as fotografias tiradas podem estar sujeitas às condições atmosféricas como chuva e nevoeiro. Nestas circunstâncias, e após testes de detecção de pontos de interesse e extracção de descritores em imagens com diferentes dimensões e níveis de ruído, concluí que o algoritmo ORB (Oriented-Fast and Rotated-Brief ) apresenta melhores resultados, tanto em termos da quantidade de pontos de interesse detectados como na sua qualidade. Algumas das alternativas estudadas chegaram a não detectar

Capítulo 3. Trabalho realizado 21 qualquer ponto de interesse em certas imagens, devido à sua baixa resolução ou excesso de ruído. Na Figura 3.3 estão exemplos de imagens de matrículas enviadas pelo RSE (Roadside Equipment), que foram as que utilizei nos testes efectuados. (a) Exemplo de uma imagem de matrícula com boa qualidade. (b) Exemplo de uma imagem de matrícula com má qualidade. Figura 3.3: Exemplos de imagens de matrículas capturadas pelo RSE. Alguns dos dígitos destas matrículas foram ocultados por questões de privacidade. Para os testes de benchmark que efectuei de forma a confirmar a superioridade do algoritmo ORB, utilizei 100 imagens de matrículas com boa qualidade e 100 imagens de má qualidade. A Figura 3.4 apresenta o número de pontos de interesse detectados para imagens de matrícula com boa qualidade, sob forma de box plot. Neste gráfico, podemos ver os valores máximos e mínimos que existem através dos whiskers, enquanto que as barras a preto representam o primeiro quartil, no seu extremo inferior, o terceiro quartil, no seu extremo superior, e a mediana. A Figura 3.5 apresenta o tempo (em milissegundos) que o algoritmo demorou a ser executado. Consegui então confirmar que o algoritmo SURF é 20 vezes mais lento que o ORB, devido ao facto de gerar descritores de 64 valores face aos descritores de tamanho 32 dos outros algoritmos. O ORB apresenta os melhores resultados, detectando mais pontos de interesse em menos tempo do que os restantes algoritmos. Na Figura 3.6 estão os resultados do teste de benchmark semelhante ao anterior, mas desta vez utilizando imagens com bastante ruído. Nesta situação, o algoritmo SURF detecta bastante mais pontos de interesse que o ORB, no entanto, isso deve-se ao facto do ruído presente na imagem ser confundido como pontos de interesse. Nesta situação, o ORB revela novamente a sua superioridade ao demonstrar uma melhor filtragem do que é verdadeiramente ponto de interesse e o que é apenas ruído. O BRISK continua a apresentar resultados insatisfatórios. Na Figura 3.7 verifica-se que os tempos de execução não variam muito em relação a imagens com boa qualidade. Nos gráficos ilustrativos dos tempos de execução dos algoritmos não utilizei box plot porque os valores variam muito pouco. 3.2.1 Avaliação preliminar de algoritmos de fingerprinting Passo então aos testes de desempenho no que toca à operação de match. Na Figura 3.8 é notória a vantagem dos descritores de 32 valores floating point face aos de 64. Dadas duas imagens diferentes da mesma matrícula, os algoritmos apresentam todos percentagens

Capítulo 3. Trabalho realizado 22 Figura 3.4: Pontos de interesse detectados pelos diferentes algoritmos, em imagens de boa qualidade. Figura 3.5: Tempos de execução dos algoritmos de detecção e extracção de pontos de interesse, em imagens de boa qualidade. de match entre pontos de interesse bastante semelhantes, mas o algoritmo SURF demora cerca de mais 200ms a ser executado. A Figura 3.9 apresenta o último teste que realizei, sendo novamente um exercício de match, mas desta vez com uma sequência de imagens diferentes da mesma matrícula rodadas desde os 10 até aos 45 graus. Como se pode observar pela linha de tendência do

Capítulo 3. Trabalho realizado 23 Figura 3.6: Pontos de interesse detectados pelos diferentes algoritmos, em imagens de má qualidade. Figura 3.7: Tempos de execução dos algoritmos de detecção e extracção de pontos de interesse, em imagens de má qualidade. gráfico, nenhum dos algoritmos lida bem com muita rotação na imagem, mas é notória a superioridade do ORB e do SURF em relação ao BRISK.

Capítulo 3. Trabalho realizado 24 Figura 3.8: Resultados do match entre duas imagens diferentes da mesma matrícula, com boa qualidade. Figura 3.9: Resultados do match entre duas imagens da mesma matrícula, com diferentes rotações. Concluídos os testes de desempenho, constatei que o ORB é o algoritmo que apresenta melhores resultados no que toca a pontos de interesse detectados em função do tempo de

Capítulo 3. Trabalho realizado 25 execução. 3.2.2 Implementação do algoritmo de fingerprinting de matrículas A solução considerada neste PEI, para o objectivo 1, passou pela conversão dos descritores do algoritmo ORB para formato binário, e concatenar estes 32 valores numa só string. Sendo esta representação uma simples sequência de zeros e uns, a sua computação é bastante rápida e exige poucos recursos por parte do processador. A comparação de dois descritores é feita através do cálculo da distância de Hamming, que, dadas duas strings binárias, devolve o número de bits em que diferem. Por exemplo, dadas as strings abc e aba, a distância de Hamming é 1. Esta função reduz-se a uma operação XOR, seguida de uma contagem de bits, o que, dadas as arquitecturas informáticas actuais, é uma operação muito eficiente. Passo então a explicar como obtenho os pontos de interesse e respectivos descritores de uma imagem. Fiz a implementação do algoritmo ORB na linguagem Java, através do uso de métodos da biblioteca OpenCV. Primeiro, é instanciado um objecto da classe ORB. Após este objecto ter sido criado e parametrizado 9, são inicializados o detector e o extractor de pontos de interesse. O detector percorre a query image, que é a imagem da matrícula a comparar com todas as imagens de matrículas já existentes (as train images), de forma a encontrar pontos de interesse que a identifiquem univocamente, como exemplificado na Figura 3.10. Para tal, é necessário invocar o método detect() com dois argumentos: a query image e uma matriz de valores, inicialmente vazia. Esta matriz, depois de preenchida, tem n linhas e 4 colunas e é representada através de uma estrutura de dados própria, chamada Keypoints, e é nela que são guardados todos os pontos de interesse detectados. Estes pontos de interesse são objectos, cada qual guardado numa linha da matriz, e que contêm informação sobre as suas coordenadas cartesianas x e y, respectivo ângulo de rotação e descritor de 32 valores. Figura 3.10: Pontos de interesse detectados para o dígito 2 de uma matrícula. O passo seguinte do algoritmo ORB consiste na computação dos descritores, para cada ponto de interesse detectado, por invocação do método compute(), que, dada uma imagem e a sua matriz de keypoints, coloca nessa estrutura de dados os valores floating point que 9 A criação do objecto ORB foi feita através do comando ORB(int nfeatures=500, float scalefactor=1.2f, int nlevels=8, int edgethreshold=31, int firstlevel=0, int WTA-K=2, int scoretype=harris- SCORE, int patchsize=31). Para mais detalhes, consultar [14].

Capítulo 3. Trabalho realizado 26 correspondem às variações de luminosidade, dentro de um certo limiar. Quando for feita a extracção dos descritores, estes valores float serão convertidos em 0 ou 1, construíndo-se assim a string binária que representa um descritor. 3.2.3 Especialização da função de matching de descritores Após obtidos os descritores dos pontos de interesse em imagens, o algoritmo ORB encontrase apto a efectuar a correspondência entre pontos equivalentes. As funções de match que o OpenCV oferece encontram todos os pontos correspondentes entre duas imagens, como mostrado na Figura 3.11(a), o que não é o que se pretendia, pois o objectivo era filtrar espacialmente as correspondências encontradas. Desta forma, modifiquei o algoritmo de correspondência oferecido pelo ORB para que sejam devolvidos apenas os descritores representativos do mesmo objecto (ver Figura 3.11(b) e Figura 3.11(c)). Na Figura 3.12 está um exemplo de match entre duas matrículas consideradas diferentes pelo algoritmo. (a) Exemplo de match entre todos os pontos de interesse. (b) Exemplo de good match entre duas imagens da letra 0. (c) Exemplo de good match entre duas imagens da letra H. Figura 3.11: Resultados da função de match em diferentes imagens de caracteres. Para criar a função de correspondência entre os pontos de interesse relevantes, tive de obter, com base nos descritores, as distâncias de Hamming entre os descritores correspondentes das query e train images, ou seja, da imagem actualmente em uso e da imagem na base de dados com a qual está a ser feita a comparação. De seguida, calculo as distâncias físicas entre os pontos correspondentes das imagens através do teorema de Pitágoras, para restringir espacialmente a distância a que cada ponto da query image pode estar do seu possível correspondente da train image. Finalmente, aplico um filtro aos ângulos dos dois descritores a serem comparados, definido pelos limites mínimo e máximo a que podem pertencer, para poder determinar com maior probabilidade se representam o mesmo ponto de interesse. Após completos estes procedimentos de filtragem, calculo uma percentagem de confiança para a correspondência entre as imagens das matrículas. Para tal, utilizo uma heurística que, após dividir ambas as imagens em seis regiões de dimensão igual, calcula o número de pontos de interesse de cada região correspondente e efectua match entre esses pontos. Se pelo menos em três das seis regiões houver uma percentagem de igualdade superior a 70%, então considero que ambas as imagens representam a mesma matrícula.

Capítulo 3. Trabalho realizado 27 (a) Pontos de interesse detectados para a matrícula 1. (b) Pontos de interesse detectados para a matrícula 2. (c) Match apenas na parte comum às duas matrículas. Figura 3.12: Resultados da função de match entre duas matrículas diferentes. A Figura 3.13 mostra uma mediana de 93% para a taxa de reconhecimento de matrículas com o algoritmo de fingerprinting que desenvolvi, num conjunto de cerca de 2000 fotografias de teste. Na Figura 3.14 verifica-se que as taxas de falsos positivos mantêm-se sempre à volta de 1%. Tendo em conta que cada falso positivo é sinónimo de uma cobrança de passagem ao cliente errado, 1% é um valor ainda elevado tendo em conta o custo de transacção processada de forma errada. Figura 3.13: Taxa de sucesso do algoritmo de fingerprinting.

Capítulo 3. Trabalho realizado 28 Figura 3.14: Taxa de falsos positivos do algoritmo de fingerprinting. 3.3 Algoritmo de recorte da matrícula Para que o algoritmo de fingerprinting possa ser executado de forma correcta, é preciso antes resolver a questão fulcral de como obter a zona da matrícula e recortá-la, dada a imagem de um veículo. Após alguma pesquisa sobre os métodos oferecidos pela biblioteca OpenCV, concluí que esta oferece todos os recursos necessários para a concretização da operação de detectar e recortar a matrícula. As funções do OpenCV que utilizei foram invocadas com imagens de níveis de cinzento, logo, a única informação necessária para o recorte da matrícula é o histograma de luminosidade. Para além disso, o processamento dos métodos que o OpenCV oferece é mais rápido sobre imagens sem informação de cor. Esta é, portanto, a primeira operação de transformação aplicada à imagem da qual se pretende extrair a zona onde se encontra a chapa da matrícula. Outra operação base para poder efectuar o recorte da matrícula é a suavização da imagem, conseguida através de um filtro de suavização de mediana, com o propósito de eliminar algum do ruído da imagem. Esta detecção é conseguida através de uma binarização da imagem, dentro um certo limiar, ou através da aplicação de um fltro de Sobel, ambos descritos a seguir.

Capítulo 3. Trabalho realizado 29 3.3.1 Recorte da matrícula com o algoritmo de threshold Dada uma imagem de níveis de cinzento, em que os seus valores de luminosidade variam entre 0 e 255, e dado um valor de referência, o algoritmo de binarização rejeita todos os pixels que estejam abaixo desse valor e aceita apenas os que estão acima, devolvendo assim uma imagem de fundo negro, onde os pixels brancos representam as zonas aceites. A premissa deste algoritmo é que, dados valores de referência apropriados, a binarização da imagem devolverá a zona da matrícula (entre algumas outras) totalmente pintada de branco (ver Figura 3.15(a) (c)). O próximo passo do processo de recorte de matrículas é obter os contornos da imagem binarizada e as coordenadas cartesianas dos pontos dos contornos. Isto é conseguido através do método findcontours(), que se baseia nas mudanças bruscas de luminosidade para calcular o que pode ser considerado um contorno (ver Figura 3.15(d)). Obtidos os contornos, são construídos rectângulos à sua volta, com base em aproximações geométricas, através do método minarearect(). Isto é importante na identificação da área correspondente à matrícula, de entre os vários candidatos detectados pois, segundo o método sugerido por Duan et al. [7], as matrículas são formas geométricas que obedecem a um determinado rácio entre a sua altura e comprimento. Após análise das dimensões das matrículas portuguesas, concluí que estas têm um rácio entre 3 e 7,5, havendo ainda o caso das matrículas dos motociclos, que têm um rácio entre 0,7 e 1,5. Outra condição para o reconhecimento de matrículas inclui o cálculo da área do rectângulo correspondente à zona candidata. Novamente, fiz uma análise empírica às dimensões das matrículas, e determinei que os valores variam entre 3500 e 7200 pixels quadrados, em imagens com uma resolução média de 500 300 pixels. O motivo para um intervalo de valores tão grande prende-se com o facto de haver mudanças na escala de cada imagem, devido à velocidade a que o veículo segue quando é registada a imagem: veículos a maior velocidade ficam mais próximos da objectiva, logo, terão maior área. Note-se que todos estes valores de rácio e área são ajustáveis, podendo assim utilizar-se o algoritmo para qualquer tipo de matrícula, em qualquer país do mundo. Este algoritmo de conversão para a imagem binarizada tem, no entanto, um problema quando existem demasiados elementos reflectores no veículo, que acabam por se confundir com a chapa de matrícula (ver Figura 3.16). Isto é considerado inaceitável, visto ser da mais alta importância que não haja excepções neste processo de detecção da matrícula. Desta forma, tornou-se necessário explorar outra alternativa para o problema proposto. 3.3.2 Melhoria ao algoritmo de threshold O algoritmo de threshold baseia-se na binarização de imagens. De forma a obter os melhores resultados possíveis, aplico nove níveis de teste em que os valores de threshold variam entre 35 e 180 (numa escala de níveis de cinzento que vai de 0 a 255). A ordem

Capítulo 3. Trabalho realizado 30 (a) Valor de referência 50. (b) Valor de referência 120. (c) Valor de referência 200. (d) Detecção de contornos. Figura 3.15: Exemplos de binarização de imagem.

Capítulo 3. Trabalho realizado 31 (a) Matrícula bem detectada. (b) Algoritmo não reconheceu matrícula por haver excesso de elementos reflectores. Figura 3.16: Resultados do algoritmo de detecção de matrículas em imagens de níveis de cinzento. com que estes valores são aplicados à imagem foi testada de forma a optimizarem-se os resultados obtidos na detecção da zona da matrícula. Valores de threshold mais altos servem para extrair informação de imagens com maior luminosidade, ao passo que valores mais baixos aplicam-se na extracção de matrículas em imagens mais escuras. 3.3.3 Recorte da matrícula com filtro de Sobel O filtro de Sobel permite obter os contornos presentes numa imagem com base na detecção de mudanças de luminosidade entre pixels adjacentes. As imagens que resultam da aplicação deste filtro não têm informação suficiente para a extracção de candidatos a matrícula, pois apenas apresentam um conjunto de contornos, sendo assim necessário binarizá-las, segundo o método de pré-processamento de imagem sugerido por Duan et al. [7]. Após um estudo às funções oferecidas pela biblioteca OpenCV, concluí que a função dilate() ajuda a salientar ainda mais os contornos ao ler regiões da imagem. Para cada uma dessas regiões, é encontrado o pixel de maior intensidade e substitui-se o ponto central da região actual por esse novo pixel. Isto causa um dilatar das zonas mais claras da imagem, facilitando assim o processo de selecção de candidatos a matrícula. Após feito este pré-processamento, o algoritmo de recorte da matrícula com filtro de Sobel segue os mesmos passos que o algoritmo do threshold, ou seja, cálculo de contornos e detecção de formas geométricas que obedecem a um certo rácio e área.

Capítulo 3. Trabalho realizado 32 Tabela 3.1: Percentagem de sucesso dos algoritmos de recorte de matrículas. Universo de teste Etapa 1 - Sobel Etapa 2 - Threshold Duas etapas activas 1726 imagens 96% 92% 99.5% Este algoritmo apresenta, no entanto, resultados pobres quando as imagens são demasiado escuras, pois os contornos das imagens não são bem obtidos. Na Figura 3.17 apresento o resultado de cada passo do pré-processamento, assim como um caso de sucesso de detecção da matrícula com o filtro de Sobel, numa imagem na qual o algoritmo de recorte baseado só em binarização de imagens havia falhado (consultar Figura 3.16(b)). 3.3.4 Recorte da matrícula com combinação dos dois algoritmos Fazendo então um ponto da situação, implementei dois algoritmos de detecção e recorte automático de matrículas: Algoritmo de threshold que se baseia na binarização de imagens e que funciona melhor em imagens com pouca luminosidade. Algoritmo de Sobel que extrai contornos a partir de um filtro de Sobel, aplicando posteriormente as funções de dilatação e binarização da imagem, que funciona melhor em imagens com boa luminosidade. Daqui decorreu a ideia de combinar estes dois algoritmos, da seguinte forma: dada uma imagem da qual se pretenda extrair a matrícula, é primeiro aplicado o algoritmo de Sobel, pois presumo que a imagem tenha boa luminosidade; caso isto não se verifique, ou seja, se não for detectado nenhum candidato a matrícula, é executada uma segunda etapa de extracção segundo o algoritmo do threshold (ver Figura 3.18). Os testes que efectuei confirmaram que os casos mais óbvios são detectados com sucesso pelo algoritmo de Sobel, ao passo que as imagens de pior qualidade são analisadas com sucesso pela segunda etapa de extracção (consultar Tabela 3.1). 3.4 Optimização da extracção de imagens candidatas Resolvido o problema do fingerprinting de imagens, passei à afinação do desempenho do algoritmo. Para o efeito, utilizei um segundo conjunto de cerca de 6000 imagens de matrículas e criei uma bancada de testes com uma base de dados com as imagens do conjunto de teste e cerca de 2 milhões de pontos de interesse. O maior desafio foi arranjar uma forma de quantificar imagens, de forma a que fosse possível seleccionar um número de candidatos a matrícula igual para serem extraídos da base de dados, de tal forma que as

Capítulo 3. Trabalho realizado 33 (a) Após aplicação do filtro de Sobel. (b) Após aplicação do método dilate(). (c) Após aplicação da binarização da imagem. (d) Matrícula detectada com sucesso. Figura 3.17: Resultados do algoritmo de detecção de matrículas utilizando o filtro de Sobel.

Capítulo 3. Trabalho realizado 34 (a) Primeiro nível de extracção. (b) Segundo nível de extracção. Figura 3.18: A imagem (a) apresenta um exemplo em que a primeira etapa de extracção (Sobel) foi o suficiente para detectar a área da matrícula, enquanto que em (b) foi necessário passar à segunda etapa (threshold). operações de extracção de candidatos e matching demorassem apenas alguns milissegundos a serem processadas, num universo de milhões de dados. Passo então a explicar com mais detalhe as técnicas que apliquei para optimizar o desempenho do algoritmo. 3.4.1 Bancada de testes A máquina que utilizei para efectuar os testes de desempenho foi um computador portátil equipado com processador Intel Core i5, 4 GB de memória RAM e sistema operativo Windows 7 Enterprise Edition de 64 bits. Criei uma base de dados que armazenou os dados de teste. O diagrama da Figura 3.19 ilustra o esquema relacional dessa base de dados de apoio. Os testes realizados consistiram na extracção dos pontos de interesse de uma imagem de matrícula e cálculo dos seus respectivos descritores. Após a base de dados ter sido populada com a informação necessária, iniciei so processo de match entre matrículas, ou seja, dada uma query image, a base de dados foi percorrida até ser encontrada uma matrícula igual. A Tabela 3.2 e a Tabela 3.3 contêm, respectivamente, as descrições de cada atributo das tabelas lpn fingerprint e fp interest point da base de dados de testes. A tabela lpn fingerprint contém informações acerca da imagem da matrícula enquanto que a tabela fp interest point contém os dados relativos a cada ponto de interesse de uma matrícula.

Capítulo 3. Trabalho realizado 35 Tabela 3.2: Descrição de cada atributo da tabela lpn fingerprint. Atributo Descrição id plate number file path fp interest point id fp interest point cord x Chave primária que identifica a imagem O número de matrícula A localização da imagem da matrícula no disco Chave estrangeira para a tabela fp interest point Referencia a partição correcta de cada ponto de interesse. Tabela 3.3: Descrição de cada atributo da tabela fp interest point. Atributo Descrição id fingerprint id cord x cord y angle desc1...desc32 is strong point dbinary Chave primária que identifica o ponto de interesse O identificador do fingerprint da imagem A coordenada x do ponto de interesse. Referencia a partição correcta A coordenada y do ponto de interesse O ângulo do ponto de interesse Os 32 pontos de interesse que constituem o descritor Tem valor 1 se o ponto de interesse for forte e 0 se não for Representação binária de todos os descritores

Capítulo 3. Trabalho realizado 36 Figura 3.19: Esquema relacional da base de dados com imagens e pontos de interesse. 3.4.2 Métodos de extracção de imagens candidatas Passo a discutir alguns dos métodos que estudei no que toca à extracção de imagens candidatas a match da base de dados, assim como a solução que encontrei e a sua implementação. O objectivo destes métodos é reduzir o espaço de procura da função de match, optimizando assim o processo do fingeprinting. Extracção de candidatos através de strings que representam ângulos de cada ponto de interesse Construída a bancada de testes, passei a focar os meus esforços na procura de uma forma de quantificar imagens num valor ou conjunto de valores que possam ser utilizados para extrair imagens candidatas a matrícula igual a uma dada. A primeira abordagem passou por agrupar os ângulos dos pontos de interesse por letra. Assim, fiz a substituição do valor de cada ângulo pelo carácter A, B, C ou D, em que A engloba valores entre 0-90, B entre 91-180 e assim por diante. Considerando um exemplo prático, se uma imagem tiver quatro pontos de interesse com os ângulos [30, 70, 355, 178], a sua representação em string será AADB. A ideia principal deste conceito baseia-se na expectativa de existirem padrões entre conjuntos de letras que possam ser visados na filtragem de imagens candidatas. Esta abordagem, no entanto, não chegou a ser testada, pois uma análise preliminar às strings resultantes revelou não haver qualquer espécie de padrão na sequência de caracteres. Isto deveu-se ao facto de cada imagem ter pontos de interesse numa ordem própria, ou seja, duas imagens diferentes do mesmo objecto possuem uma quantidade relevante de pontos em comum, mas não necessariamente pela mesma ordem. Esta hipótese foi então descartada.

Capítulo 3. Trabalho realizado 37 Extracção de candidatos através da média das coordenadas de cada ponto de interesse Outra ideia para a resolução do problema de quantificar uma imagem num valor que possa ser um atributo utilizado para extracção candidatas a match passou por calcular a média das coordenadas cartesianas x e y dos pontos de interesse de cada imagem e criar um índice na base de dados sobre esse atributo, para que mais tarde fosse feita uma pesquisa, por intervalo, desse mesmo valor. Se tivermos uma imagem com 30 pontos de interesse, a sua média de coordenadas x e y seria calculada, e a extracção de candidatos seria feita com base nesses valores. Uma análise aos resultados obtidos, presentes na Figura 3.20, revelou uma extracção de 30-60% de candidatos a matrícula no total da tabela da base de dados, mas por vezes imagens de objectos diferentes tinham um valor de média de ângulos mais próximo do que imagens do mesmo objecto. Como os resultados obtidos não foram os pretendidos, uma outra alternativa, dentro da mesma lógica, passou por calcular e comparar médias dos ângulos dos pontos de interesse de cada imagem, mas os resultados foram igualmente insatisfatórios. A Figura 3.21 mostra como imagens de matrículas diferentes podem ter médias de ângulos dos pontos de interesse mais semelhantes do que imagens de matrículas iguais. Figura 3.20: Valor médio das coordenadas cartesianas dos pontos de interesse de uma imagem, para comparação entre imagens de diferentes matrículas.

Capítulo 3. Trabalho realizado 38 Figura 3.21: Valor médio dos ângulos dos pontos de interesse de uma imagem, para comparação entre imagens de diferentes matrículas. Extracção de candidatos através do método do centróide Uma análise às imagens e aos seus contornos levou-me a crer que uma solução poderia passar por aproveitar a informação dos mesmos para extracção de candidatos a matrícula igual. Tendo em conta o método sugerido por Arivazhagan et al. [3], decidi adaptar a ideia de usar o centro da massa (centróide) dos contornos de uma imagem para calcular a distância desde esse ponto a cada contorno, devolvendo um somatório desse valor. Por exemplo, obtidos os centros de massa, ou centróides, dos caracteres AB e XY, o somatório da distância de cada contorno dos caracteres até ao centróide iria diferir bastante de uma imagem para outra, o que permite determinar que não se trata da mesma imagem. Analogamente, se o valor do somatório das distâncias ao centróide for muito parecido ou igual em ambas as imagens, então são iguais. A lógica aqui é que, através deste método, é possível fazer a extracção de um número bastante reduzido de candidatos a imagem igual. Um centróide C é obtido pelas suas coordenadas cartesianas, através das Fórmulas 3.1 e 3.2, sendo n o número total de contornos da matrícula. De seguida, é calculada a distância Euclidiana d das coordenadas (x, y) de cada contorno até ao centróide, através da Fórmula 3.3. Xc = Y c = n i=1 n i=1 Xi n Y i n (3.1) (3.2)

Capítulo 3. Trabalho realizado 39 d = (x Xc) 2 + (y Y c) 2 (3.3) Esta técnica funcionou bem em situações ideais, ou seja, quando as imagens das matrículas têm uma qualidade muito boa, sem qualquer ruído. Contudo, caso a imagem tenha ruído são detectados contornos na imagem da matrícula que não pertencem a qualquer carácter, e isso é o suficiente para alterar o valor obtido do somatório das distâncias do centróide a cada ponto do contorno. Desta forma, se forem comparadas duas imagens diferentes de matrículas iguais, em que uma delas possua muito mais ruído do que a outra (ver Figura 3.22), pode não ser possível extraí-la para a lista de candidatos correctamente, pois a soma das distâncias do seu centróide a cada contorno pode diferir bastante da query image. Tendo em conta as limitações impostas pelo factor ruído nas imagens, esta solução não foi adoptada. (a) (b) Figura 3.22: Os contornos em (a) possuem mais ruído do que em (b), o que altera o cálculo do centróide e da distância Euclidiana, apesar de representarem os mesmos caracteres. Extracção de candidatos através do descritor binário Locality Sensitive Hashing (LSH) Por esta altura apercebi-me que dificilmente conseguiria encontrar uma representação da imagem que pudesse ser compactada num valor que fosse comparável de forma a permitir a extracção de imagens candidatas a match. A nova abordagem passou por determinar descritores de pequena dimensão para as imagens. De acordo com o método sugerido por Andoni et al. [2], é possível arranjar uma representação binária de um dado ponto de interesse de uma imagem, que permite também obter os seus vizinhos mais próximos com base em operações lógicas. Assumindo então a imagem de uma matrícula com um sistema de coordenadas cartesianas centrado a meio da imagem, a lógica do LSH assenta na atribuição de um conjunto de bits a um dado ponto, com base na sua posição relativamente a uma recta traçada. Assim, dada uma recta com declive m que passa pelo centro do sistema de coordenadas, e dada a lista de pontos de interesse da imagem, é calculada, para cada ponto de interesse P dessa lista, a sua posição relativamente à recta: se estiver à sua esquerda, é-lhe atribuído o bit 0, caso contrário, o valor do bit é 1. Os primeiros dois bits do descritor LSH são indicativos da posição do ponto de interesse relativamente aos eixos x e y, respectivamente. Ou seja, se P x 0, sendo P x o valor da coordenada x de um ponto de interesse P, o primeiro bit será 1, caso contrário 0. A

Capı tulo 3. Trabalho realizado 40 mesma lo gica aplica-se a P y. O descritor tem, portanto, um tamanho 2 + N, em que aos primeiros dois bits relativos aos eixos x e y e somado N, o nu mero de rectas utilizadas para o ca lculo de cada bit. A imagem da Figura 3.23 e ilustrativa do processo de criac a o do descritor descritor bina rio LSH. (a) Valor do descritor considerando os eixos x e (b) Valor do descritor acrescido da recta r1. y. (c) Valor do descritor acrescido da recta r2. (d) Valor do descritor acrescido da recta r3. Figura 3.23: Ca lculo do descritor bina rio LSH para um dado ponto relativamente a s rectas trac adas. O ca lculo da posic a o de um ponto relativamente a uma recta e feito atrave s da Fo rmula 3.4, em que m e o declive e b a deslocac a o da recta no eixo do x. y = mx + b (3.4) O valor de b e sempre 0, pois a recta vai passar sempre na origem do eixo cartesiano. O pro ximo passo e resolver a equac a o linear em ordem a x, ficando com a Fo rmula 3.5. Quando o declive da recta forma um a ngulo de 45o entre o eixo dos x e dos y, sei que m = 1. Com uma regra de tre s simples consigo calcular, dado um a ngulo α, o declive m da recta, como na Fo rmula 3.6. x= y m (3.5) m= α 45 (3.6)