Sei sulla pagina 1di 167

UNIVERSIDADE FEDERAL DE SANTA MARIA

CENTRO DE TECNOLOGIA
PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA









EXTRAO E RECONHECIMENTO DE
CARACTERES PTICOS A PARTIR DO CO-
PROJETO DE HARDWARE E SOFTWARE SOBRE
PLATAFORMA RECONFIGURVEL








DISSERTAO DE MESTRADO






Gustavo Fernando Dessbesell








Santa Maria, RS, Brasil
2008






EXTRAO E RECONHECIMENTO DE CARACTERES
PTICOS A PARTIR DO CO-PROJETO DE HARDWARE E
SOFTWARE SOBRE PLATAFORMA RECONFIGURVEL






por




Gustavo Fernando Dessbesell




Dissertao apresentada ao Curso de Mestrado do Programa de Ps-Graduao
em Engenharia Eltrica, rea de Concentrao em Processamento de Energia,
da Universidade Federal de Santa Maria (UFSM, RS),
como requisito parcial para obteno do grau de
Mestre em Engenharia Eltrica.






Orientador: Prof. Dr. Joo Baptista dos Santos Martins









Santa Maria, RS, Brasil

2008


Universidade Federal de Santa Maria
Centro de Tecnologia
Programa de Ps-Graduao em Engenharia Eltrica



A Comisso Examinadora, abaixo assinada,
aprova a Dissertao de Mestrado



EXTRAO E RECONHECIMENTO DE CARACTERES PTICOS A
PARTIR DO CO-PROJETO DE HARDWARE E SOFTWARE SOBRE
PLATAFORMA RECONFIGURVEL


elaborada por
Gustavo Fernando Dessbesell



como requisito parcial para obteno do grau de
Mestre em Engenharia Eltrica


COMISSO EXAMINADORA:


_________________________________________
Prof. Dr. Joo Baptista dos Santos Martins
(Presidente/Orientador)


_________________________________________
Prof. Dr. Rolf Fredi Molz, (UNISC)
(Co-Orientador)


_________________________________________
Prof. Dr. Giovani Baratto, (UFSM)


_________________________________________
Prof. Dr. Renato Perez Ribas, (UFRGS)


Santa Maria, 7 de maro de 2008







Dedicado a todos aqueles que
nunca deixaram de me apoiar.



AGRADECIMENTOS

Ao final desta importante etapa da minha vida, so tantas as pessoas a quem devo
agradecimentos, que nem sei por quem comear. Bem, comecemos pelo incio, ento.
Aos professores Joo Baptista dos S. Martins e Csar R. Rodrigues, tanto pela
oportunidade que me foi dada no sentido de modestamente contribuir para a consolidao do
GMicro, quanto pelos ensinamentos prestados. Igualmente agradeo aos sempre prestativos
professores Andr L. Aita, Alice de J. Kozakevicius, Raul Ceretta Nunes, Giovani Baratto e
Alexandre Campos pelos esclarecimentos e contribuies fornecidos. Em especial, agradeo
novamente ao professor Joo Baptista dos S. Martins, pela orientao no trabalho e confiana
que sempre depositou em mim.
Ao CNPq e FINEP pelo apoio financeiro, o qual foi imprescindvel para o
desenvolvimento e concluso deste trabalho.
Aos colegas do GMicro, pela hospitaleira recepo, pelo companheirismo, por serem
prestativos nos momentos em que precisei de auxlio, enfim, pelo timo ambiente de trabalho
proporcionado pela convivncia com os mesmos. Um agradecimento especial ao colega
Mrcio A. Pacheco, amigo de longa data.
Ao meu co-orientador, professor Rolf F. Molz, pelas valiosas contribuies fornecidas
e o apoio prestado.
Aos bons exemplos de servidores desta universidade, que sempre se esmeraram para
fornecer uma resposta rpida e correta s consultas e solicitaes que eu lhes fiz, contribuindo
assim, mesmo que por vezes indiretamente, na concluso deste trabalho.
A toda minha famlia, em especial aos meus pais, Gilberto e Alice, pelos irrestritos
apoio, compreenso e incentivo que me foram dados ao longo destes 29 anos.
minha amada, compreensiva, incentivadora e companheira esposa Fabrcia, que
certamente uma das pessoas a quem esta dissertao dedicada.
Ao Antnio, pela capacidade de me fazer rir, mesmo depois de um dia daqueles.
A todos os que de uma maneira ou outra contriburam para a concluso deste trabalho
e que porventura eu tenha esquecido de mencionar, o meu muito obrigado.

RESUMO
Dissertao de Mestrado
Programa de Ps-Graduao em Engenharia Eltrica
Universidade Federal de Santa Maria

EXTRAO E RECONHECIMENTO DE CARACTERES PTICOS A
PARTIR DO CO-PROJETO DE HARDWARE E SOFTWARE SOBRE
PLATAFORMA RECONFIGURVEL
AUTOR: GUSTAVO FERNANDO DESSBESELL
ORIENTADOR: PROF. DR. JOO BAPTISTA DOS SANTOS MARTINS
CO-ORIENTADOR: PROF. DR. ROLF FREDI MOLZ
Data e Local da Defesa: Santa Maria, 7 de maro de 2008.

Este trabalho apresenta a implementao e anlise de um sistema voltado extrao e
reconhecimento de caracteres pticos a partir do co-projeto de hardware e software sobre uma
plataforma reconfigurvel. Por conta da importncia atribuda ao sentido da viso, sistemas
artificiais capazes de emular as tarefas envolvidas neste processo biolgico tm sido alvo de
pesquisas desde o surgimento dos primeiros computadores digitais, na dcada de 60. Tendo
em vista a recente evoluo experimentada na rea da computao configurvel, surge uma
tendncia natural pesquisa e desenvolvimento de sistemas heterogneos (compostos por uma
combinao de blocos de hardware e software) de viso artificial baseados em tal plataforma.
Dentre os principais benefcios proporcionados por sistemas em chip podem ser citados a
reduo no consumo de potncia, custos financeiros e rea fsica. Neste sentido, tomando
como estudo de caso um Sistema de Reconhecimento de Placas de Licenciamento Veicular
(SRPLV), o foco do trabalho est situado na implementao das etapas de localizao e
reconhecimento de caracteres, sendo o particionamento dos blocos de hardware e software
baseado em heursticas de custo-benefcio. Inicialmente realizada a implementao de uma
verso totalmente em software do sistema aqui proposto, sobre plataforma x86, no intuito de
avaliar os diversos mtodos passveis de implementao, bem como o de possibilitar um
parmetro de comparao com a verso embarcada do sistema. Os mtodos avaliados dizem
respeito etapa de localizao de caracteres, haja vista a definio priori do emprego de
Redes Neurais Artificiais no reconhecimento dos mesmos. A partir dos resultados obtidos por
esta avaliao realizada a implementao da verso embarcada do sistema, tendo como
plataforma um FPGA. Nesta verso, a etapa de localizao de caracteres implementada
como um bloco dedicado de hardware, enquanto a de reconhecimento constitui-se num
software executado sobre um microprocessador fisicamente embutido no interior do FPGA.
Considerando uma freqncia de operao 10 vezes superior para o processador da
plataforma x86, bem como o fato da maior parte do hardware embarcado utilizar um clock
menor ou igual a 25 MHz, o principal resultado consiste no ganho de 2,25 vezes no tempo de
execuo obtido na segunda verso do sistema. No tocante capacidade de reconhecimento
de placas, os sistemas so equivalentes, sendo capazes de reconhec-las corretamente em
51,62% das vezes, no melhor caso. Alm de SRPLVs, o sistema aqui desenvolvido pode ser
empregado na criao de outras aplicaes que envolvam a problemtica do reconhecimento
de caracteres ticos, como reconhecimento automtico de placas de trnsito e do nmero de
srie de itens numa linha de produo.

Palavras-chave: viso computacional; co-projeto de software e hardware; FPGA, redes
neurais artificiais, sistemas embarcados.

ABSTRACT
Master Dissertation
Programa de Ps-Graduao em Engenharia Eltrica
Universidade Federal de Santa Maria

EXTRACTION AND RECOGNITION OF OPTICAL CHARACTERS
BASED ON HARDWARE AND SOFTWARE CO-DESIGN OVER
RECONFIGURABLE PLATFORM
AUTHOR: GUSTAVO FERNANDO DESSBESELL
ADVISER: PROF. DR. JOO BAPTISTA DOS SANTOS MARTINS
CO-ADVISER: PROF. DR. ROLF FREDI MOLZ
Date and Place of Examination: Santa Maria, March 7
th
, 2008.

This work presents the implementation and analysis of a system devoted to the
extraction and recognition of optical characters which is based on the hardware and software
co-design methodology and built over a reconfigurable platform. Since vision is a very
important sense, the research in the field of artificial vision systems has been carried out
since the very beginning of the digital era, in the early 60s. Taking into account the recent
evolution experienced by the configurable computing area, a new tendency of research and
development of heterogeneous artificial vision systems emerges. Among the main benefits
provided by the so called systems on chip are the reduction of power dissipation, financial
costs and physical area. In this sense, taking a License Plate Recognition System (LPRS) as a
case study, the focus of this work is the implementation of the character localization and
recognition steps, while the partitioning of hardware and software resources is based in cost-
benefit heuristics. Initially, a software-only version of the system is build over an x86
platform. More than to allow the evaluation of several character localization related methods,
this software-only version is also intended to be used as parameter of comparison for the
embedded version of the system. Regarding the character recognition step, it is performed by
the means of an Artificial Neural Network. Based on the results provided by the software-only
evaluation system, the implementation of the embedded version is performed, considering an
FPGA as platform. In this embedded version, the character localization step consists of a
dedicated hardware block, while the character recognition step comprises a piece of software
executed in a microprocessor that is physically implemented inside the FPGA. Taking into
account a 10 times higher frequency of operation for the processor of the x86 platform, as
well as the fact that most of the embedded hardware block employs a clock frequency smaller
or equal to 25 MHz, the most noticeable result is the 2.25 times faster speed of processing
achieved by the embedded version. Regarding the plate recognition capability, both systems
have the same performance, being able to successfully recognize plates in 51.62 % of the
cases (considering the best case). Beyond LPRSs, the system developed here could also be
employed to build other applications that require optical character recognition features, such
as automatic traffic signs recognition and serial number reading of items in a production line.

Keywords: computer vision; hardware and software co-design; FPGA, artificial neural
networks, embedded systems.










LISTA DE ILUSTRAES

Figura 2.1 Ilustrao de uma imagem digital, composta por uma coleo de elementos
discretos f(x,y) e definida num plano cuja origem se situa no canto superior esquerdo... 27
Figura 2.2 Ilustrao de (a) uma imagem contnua projetada numa matriz de sensores e (b)
sua verso amostrada e quantizada, considerando (c) uma paleta de cores composta por
oito tons de cinza. ............................................................................................................. 27
Figura 2.3 Ilustrao de (a) uma paleta de cores composta por 256 tons de cinza, utilizada
para representar a imagem em (b). J em (c), a mesma imagem foi representada com
apenas os dois tons desta paleta (0 e 255). ....................................................................... 28
Figura 2.4 Exemplo de uma imagem colorida no formato RGB de 24 bits por pixel. .......... 29
Figura 2.5 Resultados obtidos a partir da ampliao em 32 vezes de uma imagem de 64x64
pixels pelos mtodos de interpolao (a) vizinho mais prximo, (b) bilinear e (c)
bicbico. ........................................................................................................................... 31
Figura 2.6 Conectividade entre pixels numa imagem binria ............................................... 33
Figura 2.7 Representao em diagrama de blocos do sistema nervoso humano. .................. 33
Figura 2.8 Ilustrao de um neurnio biolgico e seus quatro principais elementos: corpo
celular, dendritos, axnio e terminais sinpticos. ............................................................. 34
Figura 2.9 Modelo no-linear de um neurnio. ..................................................................... 37
Figura 2.10 Tipos de funo de ativao utilizadas numa RNA (HAYKIN, 1999).............. 39
Figura 2.11 Ilustrao das trs principais arquiteturas de RNAs: (a) feedforward de camada
nica, (b) feedforward de mltiplas camadas e (c) recorrente (HAYKIN, 1999). ........... 41
Figura 2.12 Ilustrao de (a) uma rede perceptron elementar e das fronteiras de deciso das
funes (b) OR e (c) XOR, sendo a primeira implementvel por tal arquitetura, mas no a
segunda. ............................................................................................................................ 42
Figura 2.13 Exemplos de imagens adquiridas pelo emprego de iluminao infra-vermelha.
.......................................................................................................................................... 45
Figura 2.14 Estrutura bsica de um SRPLV.......................................................................... 46
Figura 2.15 Regio candidata encontrada durante a etapa de Localizao da Placa............. 47
Figura 2.16 Ilustrao da imagem obtida pelo processo de binarizao da regio da placa de
licenciamento veicular. ..................................................................................................... 48
Figura 2.17 Ilustrao das regies encontradas a partir do processo de localizao de
caracteres. ......................................................................................................................... 48
Figura 2.18 Ilustrao do processo de enquadramento da placa, proposto por Dias (2007). 50
Figura 3.1 Fluxo tradicional de co-projeto de hardware e software. .................................... 60
Figura 3.2 Fluxo atual de co-projeto de hardware e software............................................... 62
Figura 3.3 Arquitetura co-processada com mltiplos aceleradores em hardware. ............... 64
Figura 4.1 Relao entre os principais mdulos de um SRPLV e a classificao de trs
nveis adotada na rea de viso computacional. ............................................................... 66
Figura 4.2 Digrama de blocos da proposta desenvolvida neste trabalho............................... 67

Figura 4.3 Diagrama de blocos do processo auxiliar utilizado na gerao das entradas do
sistema aqui proposto. ...................................................................................................... 68
Figura 4.4 Fluxograma referente ao bloco de extrao dos caracteres, anterior anlise dos
mtodos............................................................................................................................. 69
Figura 4.5 Ilustrao do processo de Etiquetao de Componentes Conectados. ................. 72
Figura 4.6 Janela de processamento proposta por Yang (2005)............................................ 73
Figura 4.7 Ilustrao das iteraes que ocorrem na matriz de classes. ................................. 73
Figura 4.8 Resultado obtido pelo mtodo de projees......................................................... 74
Figura 4.9 Ilustrao do funcionamento do algoritmo caixa limitante adaptativa. ............... 75
Figura 4.10 Tipos de sinais numa rede PMC. ....................................................................... 79
Figura 4.11 Grafo de fluxo de sinal ilustrando os detalhes de uma conexo entre os
neurnios j e k (HAYKIN, 1999). .................................................................................... 79
Figura 4.12 Ilustrao do procedimento de parada prematura do algoritmo de
retropropagao de erros. ................................................................................................. 83
Figura 5.1 Interface da opo que implementa o processo de extrao de caracteres, na
verso de avaliao do sistema construdo sobre plataforma x86. ................................... 85
Figura 5.2 Ilustrao do resultado do processo de localizao e normalizao de caracteres.
.......................................................................................................................................... 87
Figura 5.3 Ilustrao do contedo de um arquivo de coordenadas das regies candidatas,
fornecido pelo mdulo desenvolvido por Pacheco (2007). .............................................. 87
Figura 5.4 Interface de avaliao das tcnicas de limiarizao. ............................................ 88
Figura 5.5 Alguns dos resultados obtidos a partir das tcnicas de limiarizao avaliadas. As
imagens originais (256 tons de cinza) esto dispostas na primeira linha, enquantos as
obtidas pela tcnica de Otsu na segunda e por Niblack na terceira. ................................. 89
Figura 5.6 Ilustrao do fato que originou a criao da etapa de ordenao dos objetos...... 90
Figura 5.7 Exemplo de emprego do mtodo de localizao de caracteres por fora bruta. .. 90
Figura 5.8 Arquivos resultantes do processo de extrao de caracteres................................ 91
Figura 5.9 Ilustrao das dificuldades encontradas durante avaliao do mtodo de
projees horizontal e vertical. ......................................................................................... 92
Figura 5.10 Resultados parciais obtidos a partir dos mtodos (a) etiquetao de
componentes conectados e (b) caixa limitante adaptativa................................................ 93
Figura 5.11 Verso final do mdulo de extrao de caracteres sobre plataforma x86.......... 95
Figura 5.12 Interface de treinamento da RNA implementada sobre plataforma x86............ 96
Figura 5.13 Opo construda para avaliao da RNA. ........................................................ 97
Figura 5.14 Interface de configurao da RNA..................................................................... 99
Figura 5.15 Interface construda para permitir a gerao dos arquivos contendo os padres
de entrada para o treinamento da RNA. ........................................................................... 99
Figura 5.16 Ilustrao do processo de mapeamento da matriz de bits utilizada na
representao dos caracteres para o vetor de entrada da RNA....................................... 100
Figura 5.17 Ilustrao do contedo de um arquivo de padres utilizado no treinamento e
avaliao de RNAs de nmeros...................................................................................... 100
Figura 5.18 Resultados parciais apurados para RNAs de nmeros a partir do mdulo
construdo sobre plataforma x86. ................................................................................... 101
Figura 5.19 Percentuais (a)-(c) mximos e (d)-(f) mdios de reconhecimento apurados para
as RNAs de letras nas simulaes conduzidas no ambiente MATLAB, considerando a
utilizao (a),(d) 15 , (b),(e) 20 e (c),(f) 25 amostras por padro na etapa de treinamento.
........................................................................................................................................ 106
Figura 5.20 Percentuais (a)-(c) mximos e (d)-(f) mdios de reconhecimento apurados para
as RNAs de nmeros nas simulaes conduzidas no ambiente MATLAB, considerando a

utilizao (a),(d) 15 , (b),(e) 20 e (c),(f) 25 amostras por padro na etapa de treinamento.
........................................................................................................................................ 107
Figura 5.21 Percentuais mximos de reconhecimento apurados para redes de (a) letras e (b)
nmeros em funo do nmero de neurnios em cada uma das duas camadas escondidas,
a partir da utilizao do algoritmo de treinamento traingdx. ......................................... 108
Figura 5.22 Percentuais mximos de reconhecimento apurados para redes de (a) letras e (b)
nmeros em funo do nmero de neurnios em cada uma das duas camadas escondidas,
a partir da utilizao do algoritmo de treinamento traincgp. ......................................... 109
Figura 5.23 Diagrama de blocos do conjunto de mdulos bsicos. .................................... 112
Figura 5.24 Mquina de estados principal que constitui o mdulo SIRP_CP..................... 113
Figura 5.25 Ilustrao da (a) interface de software sobre plataforma x86 utilizada na
validao dos mdulos de harware. No detalhe (b) exibido um dos objetos
normalizados................................................................................................................... 116
Figura 5.26 Diagrama de blocos do mdulo FPLA............................................................. 117
Figura 5.27 Mquina de estados que constitui o sub-mdulo FPLA_CP............................ 118
Figura 5.28 Exemplo de processamento em modo (a) paisagem e (b) retrato. ................... 119
Figura 5.29 Diagrama de blocos referente ao contedo do sub-mdulo FPLA_DP. .......... 120
Figura 5.30 Diagrama esquemtico do bloco LBL_ASSIGN. ............................................ 120
Figura 5.31 Diagrama esquemtico do bloco COMB_CIRCUIT. ...................................... 122
Figura 5.32 Diagrama esquemtico do bloco CLASS_REG_ARRAY............................... 123
Figura 5.33 Diagrama de blocos do mdulo OCE............................................................... 125
Figura 5.34 Diagrama esquemtico de um elemento da matriz de coordenadas dos objetos.
........................................................................................................................................ 126
Figura 5.35 Diagrama de blocos do mdulo ON................................................................. 127
Figura 5.36 Mquina de estados que constitui o sub-mdulo ON_CP................................ 127
Figura 5.37 Diagrama de blocos referente ao contedo do sub-mdulo ON_DP. .............. 130
Figura 5.38 Diagrama de blocos referente ao bloco de hardware....................................... 131
Figura 5.39 Ilustrao das respostas geradas pela tangente hiperblica original e sua
aproximao (tanh_pw). ................................................................................................. 140
Figura 5.40 Diagrama ilustrativo da composio e forma de conexo do modelo IPIC. .... 142
Figura 6.1 Ilustrao de algumas das imagens que compem o conjunto de dados de
entradas. .......................................................................................................................... 145
Figura 6.2 Exemplos de entradas categorizadas a partir do emprego da classificao de dois
nveis............................................................................................................................... 146
Figura 6.3 Fluxograma dos processos empregados na apurao dos resultados dos sistemas.
........................................................................................................................................ 147
Figura 6.4 Interface da opo construda sobre plataforma x86 para a apurao de
desempenho de ambas as verses do sistema. ................................................................ 148
Figura 6.5 Capacidade de reconhecimento por caractere referente primeira entrada da
Tabela 6.1, apurada a partir de entradas no utilizadas no treinamento, por simulao
conduzida logo aps a realizao do mesmo.................................................................. 149
Figura 6.6 Taxa de erros e acertos por caractere para as RNAs de letras e nmeros de
topologias 225x40x40x26 e 225x20x20x10, respectivamente....................................... 152











LISTA DE TABELAS

Tabela 5.1 Novos valores atribudos aos algoritmos de treinamento no ambiente MATLAB.
........................................................................................................................................ 105
Tabela 5.2 Tabela de comandos implementados no bloco de hardware............................. 114
Tabela 5.3 Tabela-verdade referente aos codificadores de prioridade utilizados no bloco
LBL_ASSIGN. ............................................................................................................... 121
Tabela 5.4 Principais caractersticas arquiteturais do bloco de hardware. ......................... 133
Tabela 5.5 Resumo de utilizao de recursos do FPGA pelo bloco de hardware. ............. 133
Tabela 5.6 Relatrio de restries de tempo fornecido pela ferramenta ISE. ..................... 134
Tabela 5.7 Tempo de execuo inicialmente demandado pelo processo de reconhecimento
de caracteres sobre plataforma embarcada. .................................................................... 137
Tabela 5.8 Tempo de execuo demandado pelo processo de reconhecimento de caracteres
aps otimizaes na plataforma embarcada. .................................................................. 138
Tabela 5.9 Tempo de execuo demandado pelo processo de reconhecimento de caracteres
aps otimizaes no algoritmo de propagao das RNAs.............................................. 140
Tabela 6.1 Capacidade de reconhecimento de RNAs treinadas a partir dos algoritmos de
aprendizagem traincgp e traingdx, utilizando coeficientes em ponto flutuante............. 149
Tabela 6.2 Influncia do emprego da funo tangente hiperblica aproximada (tanh_pw) nos
resultados apresentados na Tabela 6.1............................................................................ 150
Tabela 6.3 Capacidade de reconhecimento de RNAs treinadas a partir dos algoritmos de
aprendizagem traincgp e traingdx, utilizando coeficientes em ponto fixo de 16 bits e a
funo de ativao tanh_pw. .......................................................................................... 150
Tabela 6.4 Influncia do emprego do critrio de parada prematura e do aumento do nmero
de neurnios na camada de entrada na taxa de reconhecimento da RNA, considerando o
uso de aritmtica de ponto fixo e funo de treinamento traingdx. ............................... 151
Tabela 6.5 Detalhamento dos erros e acertos por caractere para a RNA de letras de topologia
225x40x40x26. ............................................................................................................... 153
Tabela 6.6 Detalhamento dos erros e acertos por caractere para a RNA de nmeros de
topologia 225x20x20x10. ............................................................................................... 153
Quadro 5.1 Mapeamento realizado entre os registradores acessveis por software e as portas
do bloco de hardware. .................................................................................................... 143
Quadro 6.1 Classficaes apuradas para o conjunto original de entradas a partir do emprego
da classificao de dois nveis. ....................................................................................... 145
Quadro 6.2 Resultados finais apurados para ambas as verses dos sistemas, considerando
trs diferentes topologias de RNA e dois tipos de critrios de parada da etapa de
treinamento. .................................................................................................................... 151











LISTA DE ABREVIATURAS E SIGLAS

A/D Analgico para Digital
ANPR Automatic Number Plate Recognition
ASCII American Standard Code for Information Interchange
ASIC Application Specific Integrated Circuit
AVI Automatic Vehicle Identification
BS Barrel Shifter
BSB Base System Builder
BSP Board Support Package
CAD Computer Aided Design
CD Compact Disc
CISC Complex Instruction Set Computer
CMYK Cian, Magenta, Yellow, Key (black)
CPR Car Plate Recognition
CPR Car Plate Reader
D/A Digital para Analgico
DCM Digital Clock Manager
DDR Double Data Rate
DSP Digital Signal Processor/Processing
DVD Digital Vdeo Disc
E/S Entrada/Sada
EDK Embedded Development Kit
EQM Erro Quadrtico Mdio
FPGA Field Programmable Gate Array
GPS Global Positioning System
HDL Hardware Description Language
IPIC Intellectual Property Interconnect
IPIF Intellectual Property Interface
ISE Integrated Software Environment
LCD Liquid Crystal Display
LED Light Emission Diode
LMS Least Mean Square
LUT Look Up Table
MP3 MPEG-1 Audio Layer 3
OCR Optical Character Recognition
OPB On-chip Peripheral Bus
PC Personal Computer
PDA Personal Digital Assistant
PET Positron Emission Tomography
PLB Processor Local Bus

PMC Perceptron de Mltiplas Camadas
PP Parada Prematura
RAM Random Access Memory
RBF Radial Basis Function
RGB Red, Green, Blue
RISC Reduced Instruction Set Computer
RNA Rede Neural Artificial
ROM Read-Only Memory
RPLV Reconhecimento de Placas de Licenciamento Veicular
RS-232 Recommended Standard-232
RTOS Real-Time Operating System
SDK Software Development Kit
SDRAM Synchronous Dynamic Random Access Memory
SO Sistema Operacional
SoC System on Chip
SRPLV Sistema de Reconhecimento de Placas de Licenciamento Veicular
UART Universal Asynchronous Receiver-Transmitter
ULA Unidade Lgica e Aritmtica
UPF Unidade de Ponto Flutuante
XPS Xilinx Platform Studio
XST Xilinx Synthesis Tool











LISTA DE SMBOLOS

L Nmero de nveis de cinza de uma imagem
N Nmero total de pixels numa imagem/janela
n
i
Nmero de pixels que possuem o tom de cinza i
x
i
Tom de cinza do do pixel i
t
*
Valor timo para limiar de binarizao
2
B

Varincia inter-classes
2
T

Varincia total
0

Histograma Cumulativo
1
Complemento de
0

T

rea Total de Intensidade
t

rea Cumulativa de Intensidade
_
x
Mdia dos tons dos pixels contidos numa janela de processamento
Desvio padro dos tons dos pixels contidos numa janela de
processamento
N
4
(p) Os 4 vizinho de p
N
D
(p) Os 4 vizinhos diagonais de p
N
8
(p)
Os 8 vizinhos de p ( ) ( ) (
8 4
p N p N )
y
i
(n) Valor atribudo ao neurnio i (camada entrada) na iterao n
w
ji
(n) Peso da conexo entre os neurnios j e i na iterao n
) (n
j

Campo local induzido do neurnio j (camada escondida) na iterao n
) (
j

Valor do sinal de funo do neurnio j (camada entrada)
e
k
(n) Erro apurado para o neurnio k (camada de sada) na iterao n
) (n Valor instantneo da energia de erro para um neurnio da camada de
sada na iterao n
) (n
av

Energia de erro quadrtica mdia na iterao n
) (n w
kj

Valor da parcela de ajuste aplicada conexo entre os neurnios k e j
na iterao n
) (n
k

Gradiente local do neurnio k na iterao n
) (n
j

Gradiente local do neurnio j na iterao n

Taxa de aprendizado
Termo de momento











SUMRIO

1 INTRODUO..................................................................................................................... 17
1.1 Motivao....................................................................................................................... 18
1.2 Objetivos......................................................................................................................... 18
1.3 Metodologia.................................................................................................................... 19
1.4 Contribuies do Trabalho ............................................................................................. 21
1.5 Organizao do Trabalho................................................................................................ 22
2 VISO COMPUTACIONAL............................................................................................... 23
2.1 Introduo....................................................................................................................... 23
2.2 Definies....................................................................................................................... 23
2.2.1 Aplicaes ............................................................................................................... 25
2.3 Fundamentos relevantes sobre imagem digital............................................................... 26
2.3.1 Definio ................................................................................................................. 26
2.3.2 Amostragem e quantizao...................................................................................... 27
2.3.2.1 Tipos de imagens.............................................................................................. 28
2.3.2.2 Binarizao....................................................................................................... 29
2.3.2.3 Redimensionamento ......................................................................................... 30
2.3.3 Alguns relacionamentos bsicos entre os pixels...................................................... 31
2.3.3.1 Vizinhana........................................................................................................ 32
2.3.3.2 Conectividade ................................................................................................... 32
2.4 Redes Neurais Artificiais................................................................................................ 33
2.4.1 Introduo................................................................................................................ 33
2.4.2 Modelo de neurnio................................................................................................. 37
2.4.3 Arquiteturas de rede................................................................................................. 39
2.4.4 Perceptrons.............................................................................................................. 41
2.5 Sistemas de Reconhecimento de Placas de Licenciamento Veicular ............................. 42
2.5.1 Introduo................................................................................................................ 42
2.5.2 Histrico .................................................................................................................. 43
2.5.3 Principais elementos................................................................................................ 45
2.5.4 Funcionamento ........................................................................................................ 46
2.5.5 Localizao da placa................................................................................................ 47
2.5.6 Extrao dos caracteres ........................................................................................... 47
2.5.7 Reconhecimento dos caracteres............................................................................... 49
2.5.8 Aplicaes ............................................................................................................... 50
3 SISTEMAS EMBARCADOS............................................................................................... 52
3.1 Introduo....................................................................................................................... 52
3.2 Definies....................................................................................................................... 52
3.2.1 Componentes de um sistema embarcado................................................................. 55
3.2.1.1 Processador....................................................................................................... 56
3.2.1.2 Memria ........................................................................................................... 57

3.2.1.3 Perifricos......................................................................................................... 57
3.2.1.4 Software............................................................................................................ 58
3.2.1.5 Algoritmos........................................................................................................ 58
3.2.2 Aplicaes ............................................................................................................... 58
3.3 Co-projeto de hardware e software................................................................................ 59
3.3.1 Definies................................................................................................................ 59
3.3.2 Limitaes ............................................................................................................... 61
3.3.3 Evoluo.................................................................................................................. 61
3.3.4 Tendncias ............................................................................................................... 63
4 SISTEMA EMBARCADO PARA EXTRAO E RECONHECIMENTO DE
CARACTERES PTICOS ...................................................................................................... 65
4.1 Introduo....................................................................................................................... 65
4.2 A proposta ...................................................................................................................... 66
4.2.1 Extrao dos caracteres ........................................................................................... 69
4.2.1.1 Etiquetao de Componentes Conectados........................................................ 71
4.2.1.2 Projeo horizontal e vertical ........................................................................... 73
4.2.1.3 Caixa Limitante Adaptativa.............................................................................. 74
4.2.1.4 Interpolao Vizinho Mais Prximo............................................................. 75
4.2.2 Reconhecimento dos caracteres............................................................................... 76
4.2.2.1 RNAs Perceptron de Mltiplas Camadas ........................................................ 78
5 IMPLEMENTAO DO SISTEMA PROPOSTO.............................................................. 84
5.1 Introduo....................................................................................................................... 84
5.2 Sistema sobre plataforma x86......................................................................................... 84
5.2.1 Introduo................................................................................................................ 84
5.2.2 O mdulo de extrao dos caracteres ...................................................................... 85
5.2.2.1 Arquivos de entrada.......................................................................................... 87
5.2.2.2 Binarizao....................................................................................................... 88
5.2.2.3 Ordenao e localizao por fora bruta .......................................................... 89
5.2.2.4 Arquivos de sada ............................................................................................. 90
5.2.2.5 Identificao de regies.................................................................................... 91
5.2.2.6 Verso final ...................................................................................................... 94
5.2.3 O mdulo de reconhecimento de caracteres ............................................................ 95
5.2.3.1 Configurao .................................................................................................... 98
5.2.3.2 Gerao do arquivo de padres ........................................................................ 99
5.2.3.3 Resultados preliminares a partir do mdulo sobre plataforma x86................ 101
5.2.3.4 Processo de avaliao e resultados preliminares a partir do ambiente MATLAB
.................................................................................................................................... 102
5.3 Sistema sobre plataforma embarcada ........................................................................... 109
5.3.1 Introduo.............................................................................................................. 109
5.3.2 Bloco de hardware ................................................................................................ 111
5.3.2.1 Introduo....................................................................................................... 111
5.3.2.2 O conjunto de mdulos bsicos...................................................................... 111
5.3.2.3 Mdulo FPLA................................................................................................. 116
5.3.2.4 Mdulo OCE .................................................................................................. 124
5.3.2.5 Mdulo ON..................................................................................................... 126
5.3.2.6 Verso final .................................................................................................... 130
5.3.3 Bloco de software .................................................................................................. 134
5.3.3.1 Introduo....................................................................................................... 134
5.3.3.2 A RNA sobre plataforma embarcada.............................................................. 135
5.3.4 Consolidao do sistema ....................................................................................... 141

6 RESULTADOS ................................................................................................................... 144
6.1 Introduo..................................................................................................................... 144
6.2 Metodologia de apurao dos resultados...................................................................... 144
6.2.1 Introduo.............................................................................................................. 144
6.2.2 Os dados de entrada............................................................................................... 144
6.2.3 A interface de apurao de resultados ................................................................... 146
6.3 Resultados preliminares................................................................................................ 148
6.4 Resultados finais........................................................................................................... 151
7 CONCLUSES................................................................................................................... 155
BIBLIOGRAFIA.................................................................................................................... 160
ANEXO A Lista de publicaes.......................................................................................... 166


1 INTRODUO

Dentre os 5 sentidos que possumos, a viso o mais avanado e importante de todos
(GONZALES, 2002) (RUSS, 2007). por meio da viso que recebemos a maior parte das
informaes do ambiente que nos cerca. Esta maior tendncia de interao a partir de imagens
acaba por influenciar a forma como a informao representada e armazenada. Instrumentos
cientficos geralmente produzem imagens para apresentar seus resultados ao operador, ao
invs de gerar tons audveis ou emitir um odor. Da mesma maneira, o sucesso de misses
exploratrias de alta demanda cientfica e econmica, como as espaciais ou ao fundo do mar,
geralmente medido em funo da qualidade das imagens obtidas (RUSS, 2007).
Dada a importncia do assunto, no por acaso as pesquisas no intuito de executar
tarefas relacionadas viso de modo automtico iniciaram-se concomitantemente ao
surgimento dos primeiros computadores digitais, na dcada de 60. Neste contexto, tais tarefas
dividem-se nas reas de (a) melhoramento de imagens para interpretao humana e (b)
processamento de imagens para armazenamento, transmisso e percepo artificial
(GONZALEZ, 2002). Embora o interesse em ambas as reas continue elevado, no campo da
percepo artificial de imagens que atualmente se concentram os maiores esforos. A
principal razo para tal reside no fato do grande desafio que tarefas como essa representam de
um ponto de vista computacional. Enquanto a percepo visual consiste num processo trivial
quando realizado por um humano, o mesmo no se aplica em relao mquina, justamente
pela dificuldade de modelar os processos cognitivos empregados pelo humano na realizao
da tarefa. Neste sentido, mtodos baseados em inteligncia artificial, como classificadores
estatsticos, Redes Neurais Artificiais (RNAs), classificadores sintticos e sistemas nebulosos
(SONKA, 2007) tm sido usados na tentativa de modelagem dos processos biolgicos
envolvidos na viso.
Outra questo que tange complexidade dos processos de viso computacional diz
respeito elevada demanda de processamento exigida pelos mesmos. O fato das operaes
serem efetuadas em nvel de pixel e muitas vezes abrangerem a imagem como um todo,
consistem na principal razo dessa elevada demanda. Quando no possvel a substituio de
um dado mtodo por outro de menor demanda computacional, o desempenho de tempo real s
alcanado por intermdio de hardware dedicado realizao daquela tarefa (SONKA,
2007).

18
1.1 Motivao

A importncia e as implicaes computacionais da viso artificial, aliada evoluo
experimentada recentemente pela computao configurvel, criam um ambiente favorvel
para a pesquisa e desenvolvimento de sistemas heterogneos de viso artificial. No por
coincidncia, computadores embarcados e sistemas de viso computacional so dois dos
maiores mercados em expanso na indstria. Neste contexto, sistemas em chip (SoCs) tm
experimentado uma popularidade crescente, em vista da economia no consumo de potncia,
custos financeiros e rea proporcionada pelos mesmos. A partir da integrao de componentes
(inclusive analgicos) em um nico chip ocorre a viabilizao (e at a preferncia) da soluo
de novos e antigos problemas de cunho industrial, militar e do mercado de consumo por meio
de sistemas de viso computacional (KLSCH, 2007).
Embora um ambiente que enderece de forma eficiente todas as etapas envolvidas no
co-projeto de hardware e software ainda no seja uma realidade (OU, 2005) (HA, 2006), as
metodologias e ferramentas atuais j possibilitam o desenvolvimento de sistemas embarcados
de uma forma muito mais integrada. A abordagem de desenvolvimento original, baseada em
fluxos divergentes de hardware e software, tem dado cada vez mais espao a metodologias
que integram tais fluxos, o que aumenta a eficincia do processo.
Aliada ao avano das metodologias e ferramentas, tem ocorrido tambm a evoluo
dos dispositivos e das plataformas de implementao de sistemas embarcados. Neste contexto,
os Field Programmable Gate Arrays (FPGAs) foram promovidos de meros coadjuvantes a
atores principais. Historicamente, tais dispositivos tm sido utilizados na implementao de
lgica de ligao entre os demais dispositivos de um sistema. Entretanto, fatores como o
aumento da densidade lgica, a incorporao de elementos como memrias, multiplicadores e
principalmente microprocessadores (hard e/ou soft cores) elevaram o status dos FPGAs de
blocos construtores para plataforma de implementao (DAVIS, 2005) (FLETCHER, 2005).

1.2 Objetivos

A partir das consideraes efetuadas nas sees anteriores, nota-se a franca expanso
de ambas as reas de sistemas embarcados e viso computacional, bem como as timas
possibilidades que surgem pela convergncia das mesmas. A vasta gama de aplicaes onde
viso computacional pode ser utilizada, entretanto, impossibilita o emprego de uma nica
alternativa na soluo do problema como um todo.
19
Assim sendo, a proposta deste trabalho consiste no desenvolvimento de uma soluo
embarcada que abrange a rea de reconhecimento de caracteres pticos. Tal soluo
compreende uma arquitetura heterognea, desenvolvida a partir do particionamento das
tarefas em elementos de hardware e software, capaz de executar funes referentes extrao
e ao reconhecimento de caracteres pticos presentes em imagens digitais.
Dentre os sistemas que empregam tais funes, esto os Sistemas de Reconhecimento
de Placas de Licenciamento Veicular (SRPLVs), utilizados como estudo de caso neste
trabalho. SRPLVs so geralmente constitudos pelas etapas de localizao de placa,
localizao de caracteres e reconhecimento de caracteres. Neste sentido, o intuito deste
trabalho o de implementar funes referentes s duas ltimas etapas. No que diz respeito s
aplicaes de um SRPLV, a identificao da placa pode ser utilizada de vrias formas, como
controle de acesso, controle de trfego, fiscalizao, etc. Entretanto, a arquitetura aqui
proposta pode ser empregada em outras aplicaes que compartilhem da mesma problemtica,
como no caso de identificao do contedo de placas de trnsito (MOLZ, 2001) e
identificao de peas numa linha de montagem, a partir de alguma informao alfanumrica
presente na mesma, como um nmero de srie, por exemplo.
Desta maneira, alm do desenvolvimento da arquitetura em si, outros objetivos
pretendidos por este trabalho consistem na comparao de desempenho entre um modelo de
referncia puramente descrito em software e o sistema heterogneo, nas implicaes do
emprego de uma unidade de ponto flutuante integrada ao microprocessador, bem como no uso
de hard e soft processors, alm da anlise de mtodos de co-projeto de hardware e software.

1.3 Metodologia

Inicialmente, uma verso totalmente em software de um SRPLV foi construda sobre
uma plataforma x86 (Windows XP), com o auxlio da ferramenta C++ Builder, verso 6,
fornecida pela empresa Borland Software Corporation. O intuito da construo de tal verso
era tanto o de selecionar os algoritmos mais propcios para a implementao em hardware,
como de possuir um parmetro para a posterior comparao de desempenho com a verso
embarcada. Conforme mencionado na seo anterior, o escopo deste trabalho se restringe s
etapas de localizao e reconhecimento de caracteres de um SRPLV, tendo a etapa de
localizao da placa sido foco de outro trabalho correlacionado (PACHECO, 2007). Assim
sendo, os dados de entrada utilizados por este trabalho consistem na sada disponibilizada
pelo trabalho desenvolvido por Pacheco (2007). Tais dados consistem nas coordenadas de um
20
retngulo pertencente a uma imagem contendo um veculo em trnsito, retngulo este no qual
h uma grande probabilidade de estar situada a placa deste veculo.
Aps o trmino da implementao da verso de software sobre plataforma x86, a
validao preliminar da mesma deu-se a partir de uma base de 791 imagens. A partir dessa
validao, foram selecionados os mtodos propcios para implementao em hardware. No
que tange o algoritmo de treinamento da RNA utilizada na etapa de reconhecimento de
caracteres, o mesmo teve inicialmente uma implementao efetuada em software. Entretanto,
por conta da vasta disponibilidade de algoritmos de treinamento do pacote de RNAs que
compe o ambiente MATLAB, verso R2006a, fornecido pela empresa The MathWorks, Inc.,
o mesmo foi utilizado posteriormente nesta tarefa.
O prximo passo consistiu na implementao dos blocos hardware, tarefa esta
realizada com o auxlio de inmeras ferramentas fornecidas pelas empresas Mentor Graphics
e Xilinx, Inc., as quais so detalhadamente especificadas no Captulo 5. O desenvolvimento
dos blocos de hardware, bem como do sistema embarcado em si, foi baseado numa placa de
prototipao XUP V2-Pro. Esta placa composta por inmeros perifricos e um FPGA
XC2VP30-FF896, o qual possui dois hard cores PowerPC 405 embutidos, dentre outros
elementos. A validao fsica dos mdulos de hardware foi efetuada com auxlio de uma
opo especfica para este fim, desenvolvida no sistema sobre plataforma x86, sendo a
comunicao entre o Personal Computer (PC) e a placa efetuada por intermdio de uma
conexo Recommended Standard-232 (RS-232).
Aps a construo e validao dos mdulos de hardware, foi efetuada a elaborao do
sistema embarcado bsico. Neste momento foram especificados elementos como o sistema
operacional, o microprocessador, os perifricos e os respectivos drivers que formam a base do
sistema embarcado. Imediatamente aps a construo do sistema base, realizou-se o
mapeamento da RNA implementada sobre plataforma x86 para a plataforma embarcada.
Como os microprocessadores de ambas plataformas possuam compiladores para a linguagem
C++, a migrao foi efetuada sem a existncia de maiores problemas. Ainda durante esta
etapa foram efetuadas anlises sobre o impacto da utilizao de hard e soft cores, bem como
de unidade de ponto flutuante junto to microprocessador.
Finalmente os blocos de hardware foram consolidados junto ao sistema embarcado
base, agora composto tambm pelo software embarcado de RNA. A comunicao entre os
blocos de hardware e o software embarcado foi efetuada por intermdio da escrita de
registradores de acesso comum, mtodo este que consiste na maneira mais simples de
comunicao entre os elementos heterogneos. Algumas validaes pontuais, como a
21
referente transmisso de dados entre o PC e o FPGA, foram realizadas com auxlio de um
analisador lgico de 64 canais.
Para a comparao de desempenho entre o sistema sobre plataforma x86 e o sistema
embarcado, uma opo especfica para este fim foi incorporado ao sistema sobre plataforma
x68. Desta vez foi utilizada uma base de 3.000 imagens, sendo que a primeira providncia foi
a classificao manual das mesmas (com auxlio dos mtodos implementados no sistema
sobre plataforma x86), no intuito de apurar as respostas esperadas dos sistemas. Em seguida, o
processamento foi repetido, mas dessa vez de forma automtica, primeiramente pelo sistema
sobre plataforma x86 e aps, pelo sistema embarcado, via conexo RS-232. Posteriormente,
as respostas e os tempos de processamento fornecidos pelos dois sistemas para cada imagem
foram sintetizados e comparados.

1.4 Contribuies do Trabalho

A partir do estudo realizado neste trabalho acerca dos conceitos e mtodos relativos
principalmente s reas de viso computacional e sistemas embarcados, tm-se as seguintes
contribuies como as mais importantes:
A definio e implementao de uma arquitetura embarcada comum s
aplicaes que endeream a problemtica do reconhecimento de caracteres
pticos;
A criao de uma biblioteca de software composta por uma srie de mtodos
relativos rea de processamento digital de imagens, como binarizao global
e local, etiquetao de componentes conectados, projeo horizontal e vertical,
caixa limitante adaptativa e interpolao vizinho mais prximo;
A implementao da arquitetura de hardware equivalente para alguns dos
mtodos que compem a biblioteca de software, como o de etiquetao de
componentes conectados e o de interpolao vizinho mais prximo;
O mapeamento do algoritmo de propagao de uma RNA perceptron de
mltiplas camadas (PMC) que emprega aritmtica de ponto flutuante para a
sua verso equivalente em ponto fixo;
A definio de um mtodo eficaz para a realizao do particionamento dos
elementos de hardware e software num sistema embarcado, a partir de um
fluxo de desenvolvimento no integrado.
22

1.5 Organizao do Trabalho

Este trabalho est organizado em sete captulos. No captulo seguinte so abordados
conceitos referentes rea de viso computacional. Neste contexto, so considerados desde
definies sobre imagens digitais at tcnicas de inteligncia artificial para o reconhecimento
de padres, como o caso de RNAs. Ainda neste captulo so apresentados detalhes sobre um
SRPLV, o qual consiste no estudo de caso deste trabalho. Encerrando a parte do trabalho que
trata das definies tericas, o Captulo 3 discute os conceitos e evolues referentes a
sistemas embarcados, bem como a metodologia de desenvolvimento adotada para os mesmos,
denominada co-projeto de hardware e software. Em seguida, o Captulo 4 apresenta a
proposta de uma arquitetura heterognea voltada extrao e reconhecimento de caracteres
pticos, onde so discutidos os mtodos considerados e as escolhas realizadas. Na seqncia,
a implementao da arquitetura proposta discutida em detalhes no Captulo 5 pela
apresentao dos resultados parciais obtidos, das dificuldades encontradas e as solues
adotadas durante o processo de desenvolvimento. No Captulo 6 so ento apresentados os
resultados obtidos a partir da comparao efetuada entre os sistemas implementados sobre
plataforma x86 e embarcada, ressaltando as vantagens e desvantagens de cada uma delas.
Finalmente, as consideraes finais, bem como a definio de trabalhos futuros, so realizadas
no Captulo 7.

2 VISO COMPUTACIONAL

2.1 Introduo

Conforme mencionado no captulo introdutrio, o processamento digital de imagens,
no sentido mais amplo do termo, consiste numa rea vasta, que engloba tarefas de diferentes
complexidades. Neste sentido, convm inicialmente esclarecer pontos como as suas origens,
os conceitos envolvidos e algumas das tcnicas empregadas. Dentre tais tcnicas, uma seo
inteira foi dedicada reviso de RNAs, empregadas como mecanismo de reconhecimento
neste estudo. Aps tais consideraes, so apresentados os conceitos relativos a SRPLVs,
aplicao esta que foi objeto de estudo deste trabalho.

2.2 Definies

Segundo Gonzalez (2002), o campo denominado processamento digital de imagens diz
respeito ao processamento de imagens digitais por meio de computadores digitais. O interesse
por esse campo motivado por duas principais reas de aplicao: (a) o melhoramento de
informaes pictricas para a interpretao humana e (b) o processamento de dados visuais
para armazenamento, transmisso e representao voltada percepo artificial autnoma.
No tocante primeira rea de aplicao citada, o emprego de tal tecnologia d margem
extenso da faixa de viso natural. Enquanto os sistemas biolgicos esto restritos banda
visvel do espectro eletromagntico (ondas de comprimento entre 400 e 700 nanmetros), os
sistemas digitais so capazes de cobrir quase todo o espectro, abrangendo desde raios gama
at as ondas de rdio.
J em relao segunda rea de aplicao supracitada, um dos primeiros sistemas a
empregar imagens digitais foi o Bartlane, no incio da dcada de 20. Tal sistema permitia o
envio de fotos entre Londres e Nova Iorque por meio de um cabo submarino, sendo a
indstria jornalstica o principal usurio de tal sistema. Apesar da utilizao de imagens
digitais pelo sistema Bartlane, ele no de fato considerado como um sistema de
processamento digital de imagens, j que computadores digitais no eram utilizados pelo
mesmo (at porque, nem existiam naquela poca).
O surgimento do que conhecido hoje como processamento digital de imagens
ocorreu de fato em meados da dcada de 60, quando os primeiros computadores digitais com
24
poder de processamento de armazenamento suficiente para este fim se tornaram disponveis.
Um dos primeiros trabalhos realizados neste contexto foi o melhoramento de imagens obtidas
da superfcie lunar pela sonda espacial Ranger 7, em 1964, as quais apresentavam distores
causadas pelo tipo de cmeras utilizadas a bordo.
O desenvolvimento da rea de percepo artificial autnoma, atualmente denominada
viso computacional, ocorreu em concomitncia com os demais mtodos de aprimoramento
de imagens digitais. O progresso obtido no incio da dcada de 70 na rea de inteligncia
artificial foi utilizado como subsdio por Marr, que props o primeiro modelo de viso
computacional no incio da dcada de 80 (ALOIMONOS, 1991). Como principal objetivo, um
sistema de viso computacional visa emular eletronicamente as capacidades de percepo e
entendimento de imagens proporcionadas por um sistema de viso biolgico (SONKA, 2007).
Por conta de no haver um consenso na definio das fronteiras entre processamento
digital de imagens, viso computacional e outras reas correlatas, como anlise de imagens,
costuma-se adotar um paradigma que classifica os mtodos em nveis de processamento. Os
mtodos classificados no nvel inferior operam sobre uma imagem no seu formato mais
elementar (elementos pictricos), enquanto que os de nvel superior empregam modelos
formais para perceber elementos contidos nas representaes fornecidas pelo(s) nvel(is)
inferior(es). Conforme Gonzalez (2002), so trs esses nveis: baixo, intermedirio e alto. J
Sonka (2007) considera a existncia de apenas dois nveis de processamento, baixo e alto,
sendo que as tarefas de nvel intermedirio so tidas como de nvel baixo.
O processamento de baixo nvel diz respeito aquisio da imagem em si, bem como
s operaes primitivas de pr-processamento que so realizadas sobre essa imagem. Como
exemplos de mtodos de pr-processamento podem ser citados os melhoramentos (ajuste de
histograma, filtragem para remoo de rudos, etc.), as transformaes (translao, rotao,
escala), e a compresso (com ou sem perdas). Neste nvel de processamento, tanto a entrada,
quanto sada, consistem numa imagem (matriz de pixels).
J o processamento de nvel intermedirio envolve as tarefas de segmentao, bem
como representao e descrio. A segmentao consiste em separar a imagem em diferentes
regies, sendo que os mtodos comumente empregados so os baseados em contorno
(transformada de Hough, perseguio de bordas, etc.), baseados em regio (crescimento de
regies, separao de regies, juno de regies, etc.) e a binarizao (global, local, etc.).
Depois de segmentadas, as regies contidas na imagem so geralmente identificadas por um
processo denominado etiquetao de componentes conectados e aps descritas numa forma
mais apropriada para o seu processamento no prximo nvel. Como formas de representao
25
utilizadas na descrio das regies podem ser citadas as cadeias de cdigos, aproximaes
polinomiais, assinaturas, segmentos de contornos e os skeletons.
Finalmente, o processamento de nvel alto compreende as tarefas de reconhecimento e
interpretao. O reconhecimento consiste na classificao das regies apuradas nas etapas
anteriores, de acordo com caractersticas distintas de cada tipo de regio, bem como do grupo
de regies em questo. Neste processo de reconhecimento so empregados mtodos
estatsticos (classificadores de distncia mnima, etc.), sintticos (autmatos) e conexionistas
(RNAs). A interpretao, por sua vez, representa um desafio ainda maior que o
reconhecimento, pois visa entender o contexto geral apresentado numa imagem, a partir dos
elementos que a compem. Mtodos como lgica formal, redes semnticas e sistemas de
produo costumam ser empregados neste caso.

2.2.1 Aplicaes

Atualmente o processamento digital de imagens empregado numa vasta gama de
aplicaes. So poucas as reas tcnicas que ainda no lanam mo desta tcnica. Dentre as
inmeras reas e respectivas aplicaes, se pode citar as seguintes:
Medicina
o Deteco de patologias dos ossos e Tomografia por Emisso de
Psitrons (PET) imagens geradas por raios gama;
o Melhoramento do contraste de chapas de raios-X ou angiogramas
imagens geradas por raios-X;
o Construo de imagens em 2D a partir do emprego de ressonncia
magntica imagens geradas por ondas de rdio.
Astronomia
o Deteco de estrelas pela anlise da radiao gama gerada quando da
exploso de uma imagens geradas por raios gama;
o Identificao de estrelas pela anlise da radiao X, ultravioleta e das
ondas de rdio emitida pelas mesmas imagens geradas por raios-X,
ultravioletas e ondas de rdio, respectivamente;
Indstria
o Inspeo automtica no intuito de localizar falhas de processo, como a
falta de componentes, preenchimento insuficiente de embalagens,
26
anomalias de cor, etc. imagens geradas por raios-X, ondas visveis e
infravermelhas;
Microscopia
o Identificao de espcimes a partir da tcnica de fluorescncia
imagens geradas por raios ultravioletas;
o Micro-inspeo, caracterizao de materiais, etc. imagens geradas por
ondas visveis e infravermelhas;
Radar
o Permite a coleta de dados sobre virtualmente qualquer rea,
independente de horrio, condio do tempo ou iluminao imagens
geradas por microondas;
Outras aplicaes utilizando imagens geradas por ondas visveis ou
infravermelhas
o Reconhecimento automtico de impresses digitais, cdulas
monetrias, placas de licenciamento veicular, etc.;
o Sensoriamento remoto para mapeamento temtico da superfcie
terrestre e previso do tempo;

2.3 Fundamentos relevantes sobre imagem digital

2.3.1 Definio

Uma imagem pode ser definida como uma funo bi-dimensional contnua, f(x, y),
onde x e y so as coordenadas espaciais (num plano) e a amplitude de f em qualquer par (x, y)
chamada de intensidade ou nvel de cinza da imagem naquele ponto (GONZALEZ, 2002).
Uma imagem dita digital quando as coordenadas x e y, bem como a amplitude f, so todos
representados por quantidades discretas. Por sua vez, uma imagem digital composta por um
nmero finito de elementos, cada um com uma localizao distinta e valor. Tais elementos
so denominados elementos pictricos, elementos da imagem, pels ou pixels, sendo que a
ltima terminologia a mais comumente adotada.
Por conveno e conforme ilustrado na Figura 2.1, a referncia espacial (origem) deste
sistema de coordenadas se localiza no canto esquerdo superior da imagem, sendo que o valor
da coordenada x aumenta da esquerda para a direita, ao passo que o da coordenada y, de cima
para baixo (NI, 2007).
27


Figura 2.1 Ilustrao de uma imagem digital, composta por uma coleo de elementos discretos f(x,y) e
definida num plano cuja origem se situa no canto superior esquerdo.

2.3.2 Amostragem e quantizao

Por conta de uma imagem ser definida por uma funo contnua f(x, y), a mesma deve
ser mapeada para o formato digital antes que um computador possa realizar qualquer tipo de
processamento sobre ela. Tal processo de mapeamento denominado digitalizao, sendo
composto pelas etapas de amostragem e quantizao.
Considerando a utilizao de uma matriz de sensores no processo de digitalizao, a
Figura 2.2 ilustra a situao onde uma imagem contnua se encontra projetada nesta matriz.
Em seguida, a amplitude contnua de cada um dos elementos da matriz apurada
(amostragem) e transformada num valor discreto equivalente (quantizao), dando origem
imagem exibida na Figura 2.2 (b). Em outras palavras, quantizar um elemento significa apurar
um valor discreto para o mesmo, a partir do mapeamento entre o valor contnuo armazenado
nele e uma escala pr-definida de nveis, como a paleta de oito tons de cinza usada neste
exemplo (Figura 2.2 (c)).



(a) (b) (c)
Figura 2.2 Ilustrao de (a) uma imagem contnua projetada numa matriz de sensores e (b) sua verso
amostrada e quantizada, considerando (c) uma paleta de cores composta por oito tons de cinza.
28
Obviamente, a qualidade de uma imagem digital influenciada pela forma como ela
amostrada. Quanto maior a densidade de amostras digitais, maior o nvel de detalhamento que
essa imagem pode exibir. Da mesma maneira, a qualidade tambm afetada pelo nmero de
nveis de quantizao utilizado, que dado em funo do nmero de bits por pixel (SONKA,
2007).

2.3.2.1 Tipos de imagens

De um ponto de vista de nmero de bits por pixel, as imagens digitais costumam ser
classificadas em pelo menos dois tipos: nveis de cinza e colorida.
As imagens em nveis de cinza costumam utilizar um byte (ou oito bits) para
representar cada pixel. Assim sendo, empregam uma paleta de 256 nveis de cinza, como a
ilustrada na Figura 2.3 (a), onde o tom mais escuro atribudo ao ndice 0 e o tom mais claro,
ao ndice 255, dando origem imagens como a exibida na Figura 2.3 (b). A Figura 2.3 (c)
ilustra o que pode ser considerado como um caso particular de imagens em nveis de cinza:
uma imagem binria. Imagens binrias utilizam apenas um bit por pixel, sendo que deste
modo, somente duas cores (ou nveis de cinza) so adotadas: branca e preta (ou o nvel mais
claro e o nvel mais escuro). Entretanto, a classificao de imagens binrias como um caso
especfico das imagens em nveis de cinza no um consenso, podendo as mesmas designar
outra classe denominada bitmap.



(a) (b) (c)
Figura 2.3 Ilustrao de (a) uma paleta de cores composta por 256 tons de cinza, utilizada para
representar a imagem em (b). J em (c), a mesma imagem foi representada com apenas os dois tons desta
paleta (0 e 255).

J as imagens coloridas costumam empregar trs amostras para representar cada pixel.
Cada amostra diz respeito a um canal de cor distinto, sendo que os modelos de cores mais
29
utilizados so o Red, Green, Blue (RGB) e o Cian, Magenta, Yellow, Key (black) (CMYK).
Geralmente cada amostra (ou canal) representada por oito bits, totalizando assim 24 bits por
pixel, ou 16.777.216 diferentes tons. No h nenhum impedimento, entretanto, na utilizao
de mais de oito bits por canal, tampouco de mais canais por pixel. A Figura 2.4 ilustra uma
imagem RGB de 24 bits por pixel.


Figura 2.4 Exemplo de uma imagem colorida no formato RGB de 24 bits por pixel.

2.3.2.2 Binarizao

Dependendo do mtodo empregado no processamento de uma imagem digital,
necessita-se que a mesma esteja representada em um determinado formato (tipo). Enquanto a
converso de uma imagem colorida, no formato RGB de 24 bits, para a sua verso equivalente
em 256 tons de cinza pode ser efetuada pela apurao da mdia dos trs tons que compem
cada pixel, o mapeamento para o formato binrio no igualmente trivial.
O processo de binarizao geralmente composto por duas etapas e efetuado a partir
de uma imagem em 256 tons de cinza. A primeira etapa consiste na apurao de um valor
limiar, o qual utilizado na segunda etapa para definir o valor de cada pixel da imagem
resultante. Caso o valor do pixel da imagem original seja superior ao do limiar, ele
considerado como sendo da cor branca na imagem resultante, caso contrrio, a cor preta
atribuda ao mesmo. Neste sentido, dois mtodos populares na realizao deste processo so o
de Otsu e o de Niblack.
O mtodo de Otsu dito global por considerar todos os pixels da imagem na busca do
valor limiar. Segundo Tian (2003), um valor timo para tal limiar obtido a partir de

)
`

|
|

\
|

=
2
2
0
max
*
T
B
L i
Arg t

(2.1)
30
pela maximizao da relao entre a varincia inter-classes e a varincia total, sendo a
primeira definida por

( )
1 0
2
0 2

t T
B

= (2.2)
e a segunda definida por
( )

=
=
1
0
2 2
L
i
i
T T
N
n
i (2.3)
onde

=
=
t
i
i
N
n
0
0
,
0 1
1 = ,

=
=
t
i
i
t
N
n
i
0
,

=
=
1
0
L
i
i
T
N
n
i , n
i
o nmero de pixels que possuem
o nvel de cinza i, L o nmero de nveis de cinza e N o nmero total de pixels na imagem.
J o mtodo de Niblack tido como local, por basear o processamento no emprego de
uma janela deslizante. Neste caso o limiar calculado a partir dos pixels contidos nesta janela,
a qual deve ser pequena o suficiente para preservar os detalhes locais, mas ao mesmo tempo
grande o suficiente para suprimir eventuais rudos (LEEDHAM, 2003), sendo tal limiar
definido por

k x t + = *
(2.4)
onde

=
=
N
i
i
x
N
x
1
1
(mdia), ( )
2
1
1

=
=
N
i
i
x x
N
(desvio padro), k uma constante que define
o percentual de utilizao dos pixels nos limites da imagem e N o nmero total de pixels
contido na janela utilizada.

2.3.2.3 Redimensionamento

O redimensionamento de imagens um tpico relacionado ao processo de amostragem
e quantizao, pois a ampliao pode ser vista como sobre-amostragem e a reduo como sub-
amostragem. A principal diferena consiste no emprego de amostragem e quantizao no caso
de uma imagem original contnua, enquanto que ampliao e reduo so realizadas numa
imagem digital (GONZALEZ, 2002).
Quando uma imagem redimensionada, cada elemento da nova matriz de destino
acaba por ocupar um espao menor que ocupado por um elemento na matriz de origem, no
caso de uma ampliao, ou um espao maior que o original, no caso de reduo. Essa
diferena de escala acaba por gerar coordenadas no inteiras durante o processo de
mapeamento da imagem original para a nova imagem.
31
Vrios mtodos so empregados na soluo deste problema, sendo que o mais simples
consiste no descarte da parte fracionria do endereo calculado (truncagem), fazendo com que
o pixel mais prximo do endereo original, na direo da origem do sistema de coordenadas,
seja usado. Outro mtodo de complexidade semelhante, mas com resultado ligeiramente
superior o chamado interpolao nearest neighbor (vizinho mais prximo, em portugus).
Ao invs de truncar, este mtodo arredonda o valor do endereo calculado, procedimento este
que reduz o erro de aproximao ao endereo original, se comparado com o mtodo anterior
(RUSS, 2007) (PRATT, 2007a).
Outros dois mtodos populares de redimensionamento so a interpolao bilinear e a
interpolao bicbica. Enquanto o primeiro apura a mdia das intensidades dos quatro
vizinhos mais prximos ao endereo original, o segundo efetua uma interpolao ponderada,
utilizando coeficientes gerados a partir da parte real dos endereos calculados e levando em
considerao uma vizinhana de oito pixels.
A Figura 2.5 exibe uma comparao de resultados, obtidos a partir do emprego dos
trs mtodos supra-citados na ampliao em 32 vezes de uma imagem de 64 x 64 pixels. Na
Figura 2.5(a), notvel o serrilhamento causada pelo mtodo vizinho mais prximo,
enquanto que diferenas sutis podem ser notadas entre os mtodos bilinear e bicbico,
principalmente nas reas de maior diferena de contraste, conforme ilustrados na Figura
2.5(b) e na Figura 2.5(b), respectivamente.


(a) (b) (c)
Figura 2.5 Resultados obtidos a partir da ampliao em 32 vezes de uma imagem de 64x64 pixels pelos
mtodos de interpolao (a) vizinho mais prximo, (b) bilinear e (c) bicbico.

2.3.3 Alguns relacionamentos bsicos entre os pixels

Apesar do pixel ser a unidade elementar de uma imagem digital, existem vrias
situaes onde no apenas ele, mas tambm aqueles que o cercam devem ser levados em
32
considerao. Dentre as formas de relacionamento mais importantes entre os pixels, esto o
conceito de vizinhana e o de conectividade.

2.3.3.1 Vizinhana

Segundo Gonzalez (2002), um pixel p, situado na coordenada (x, y), possui quatro
vizinhos nas direes horizontal e vertical, cujas coordenadas so dadas por:
(x, y-1)
(x-1,y) p (x+1,y)
(x, y+1)
Este conjunto de pixels chamado de quatro vizinhos de p e denotado por N
4
(p). Cada
vizinho est situado a uma distncia unitria de p e alguns deles residem fora dos limites da
imagem digital, quando p est posicionado numa das bordas desta imagem.
Alm dos vizinhos ortogonais, tambm existem os quatro vizinhos diagonais de p,
cujas coordenadas so dadas por
(x-1, y-1) (x+1, y-1)
p
(x-1, y+1) (x+1, y+1)
e denotados por N
D
(p). A interseo entre N
4
(p) e N
D
(p) d origem ao conjunto chamado de
oito vizinhos de p, denotado por N
8
(p). Da mesma forma que anteriormente, alguns
elementos de N
D
(p) e N
8
(p) residem fora dos limites da imagem digital quando p est
posicionado nas bordas da mesma.

2.3.3.2 Conectividade

A conectividade entre pixels um conceito fundamental que simplifica demais
conceitos, como os de regio e fronteira. Para que exista conectividade entre dois ou mais
pixels, alm de serem vizinhos, tambm necessrio que seus nveis de brilho satisfaam um
critrio pr-definido. Tomando como exemplo uma imagem binria, como a ilustrada na
Figura 2.6, apesar dos pixels q, r, s, t, u, v, x e y estarem situados na vizinhana de p, apenas r,
t, v, e y possuem conectividade com p, pois satisfazem o critrio de possuir o mesmo nvel de
brilho de p.

33

Figura 2.6 Conectividade entre pixels numa imagem binria

Na seqncia so apresentados os conceitos relativos ao mtodo de reconhecimento
utilizado por este trabalho: Redes Neurais Artificiais.

2.4 Redes Neurais Artificiais

2.4.1 Introduo

Segundo Arbib (1987 apud HAYKIN, 1999), o sistema nervoso humano pode ser visto
como um sistema de trs estgios, conforme ilustrado pelo diagrama de blocos na Figura 2.7.
No centro deste sistema situa-se o crebro humano (Rede neural), o qual comunica-se de uma
forma interativa com os demais subsistemas. Neste contexto, o subsistema de receptores
converte os estmulos externos em sinais eltricos e os repassa adiante, enquanto o subsistema
de atuadores transforma os sinais eltricos gerados pelo crebro em respostas discernveis de
sada do sistema.


Figura 2.7 Representao em diagrama de blocos do sistema nervoso humano.

No processo de compreenso da estrutura e funcionamento do crebro humano, foi de
grande relevncia a pesquisa pioneira de Ramn e Cajl, publicada em 1910. Dentre os
conceitos estabelecidos pelos mesmos est a idia do neurnio como elemento estruturante do
crebro. Conforme a Figura 2.8, um neurnio composto por quarto principais elementos:
corpo celular, dendritos, axnio e terminais sinpticos. Os neurnios se comunicam por meio
de ligaes denominadas sinapses, onde os terminais sinpticos de um dado neurnio se
conectam (no h conexo fsica na juno sinptica) aos dendritos (zonas receptoras) de
34
um ou mais neurnios vizinhos. A comunicao entre os neurnios se d por meio de um
processo tanto eltrico, quanto qumico. De uma maneira simplificada, o processo de
comunicao se inicia pela gerao de um sinal eltrico no corpo celular (ou nas
proximidades dele). Este sinal eltrico percorre o axnio e, ao chegar nos terminais sinpticos,
causa a liberao de uma substncia qumica denominada neurotransmissor. Os
neurotransmissores repassam ento a informao aos dendritos dos neurnios conectados e
retornam, geralmente, aos terminais sinpticos de origem.


Figura 2.8 Ilustrao de um neurnio biolgico e seus quatro principais elementos: corpo celular,
dendritos, axnio e terminais sinpticos.

Segundo Shepherd e Kock (1990 apud HAYKIN, 1999), estima-se a existncia de
mais de 10 bilhes de neurnios no crtex humano, estando os mesmos interconectados por
mais 60 trilhes de sinapses. Tal organizao faz do crebro um computador altamente
complexo, no-linear e paralelo, possibilitando que o mesmo execute alguns tipos de tarefas
(como reconhecimento de padres, percepo, etc.) de uma forma muito mais eficiente do que
um computador eletrnico. Como exemplo desta eficincia pode-se citar a tarefa de
reconhecimento de uma face conhecida em um ambiente no-familiar, a qual executada pelo
crebro num tempo no superior a 200 milsimos de segundo (ms). Tarefas de complexidade
inferior podem tomar dias quando executadas num computador convencional (HAYKIN,
1999).
A cincia de que computadores eletrnicos possuem estrutura e funcionamento
totalmente distintos de um crebro humano foi justamente o que motivou o desenvolvimento
de pesquisas na rea de redes neurais artificiais. De uma forma geral, uma rede neural
artificial (comumente denominada por rede neural) uma mquina projetada para modelar a
35
maneira como o crebro humano realiza uma determinada tarefa ou funo de interesse. Este
tipo de abordagem possibilita a construo de sistemas cuja modelagem complexa do ponto
de vista de mtodos convencionais de engenharia. Dentre os elementos que viabilizam este
tipo de modelagem, os quais so caractersticas inerentes do crebro humano, pode-se citar os
seguintes:
No-linearidade: propriedade inerente a sistemas de comportamento
indeterminado, ou seja, cuja resposta no pode ser expressa na forma de uma
soma linear de componentes independentes que formam o mesmo;
Mapeamento de entrada/sada: a soluo para um problema determinada por
meio do treinamento da rede neural, o qual consiste na apresentao de um
conjunto de entradas e as respectivas sadas desejadas. O treinamento
interrompido quando o erro existente entre a sada desejada e a apurada pela
rede menor do que um limite estabelecido;
Generalizao: a capacidade de um sistema de determinar uma resposta
aceitvel para uma entrada que ainda no havia sido apresentada ao mesmo,
mas que possui semelhana com outras j apresentadas;
Resposta evidencial: no contexto de reconhecimento de padres, significa no
apenas prover uma resposta para uma determinada entrada, mas tambm
indicar o percentual de certeza sobre a mesma;
Tolerncia falhas: o fato da informao contida numa rede neural estar
dispersa nas inmeras interconexes existentes entre os neurnios torna
praticamente irrelevante o impacto da eventual perda de um deles em relao
ao funcionamento do sistema.
A pesquisa conduzida por Ramn e Cajl serviu como base na elaborao da teoria
sobre redes neurais artificiais, publicada em 1943 por McCulloch e Pitts. Neste trabalho foi
demonstrado que, uma rede neural formada por um nmero suficiente de elementos, com os
pesos das conexes ajustados adequadamente e operando de forma sncrona, em princpio, era
capaz de implementar qualquer funo computvel.
Durante a dcada de 50, a rea experimentou um considervel desenvolvimento, a
partir de contribuies de nomes como Minsky, Rochester, Holland, Haibt, Duda e Rosenblat.
Este ltimo foi responsvel pelo desenvolvimento de um novo mtodo de aprendizado
supervisionado aplicvel ao problema do reconhecimento de padres, denominado
perceptron, em 1958.
36
J na dcada de 60, o fato de maior impacto na rea foi a publicao do livro
Perceptrons (1969), por Minsky e Papert. Esta publicao desmentiu matematicamente a falsa
impresso que havia surgido no sentido de que as redes neurais eram a soluo para todos os
problemas. Alm disso, tambm sugeriu que as mesmas limitaes enfrentadas pelas redes
perceptron de camada nica se aplicavam s de mltiplas camadas, o que causou uma drstica
reduo no volume de pesquisas nesta rea. Tal suposio foi desmentida apenas em 1986,
pela publicao do algoritmo de retropropagao de erro (backpropagation), cujos maiores
crditos pelo desenvolvimento foram atribudos a Rumelhart, Hinton e Willians. Nesta mesma
dcada (80), Broomhead e Lowe (1988) propuseram um mtodo alternativo ao perceptron
multicamadas, denominado Radial Basis Function (RBF).
Mais recentemente, na dcada de 90, Vapnik e colegas desenvolveram uma poderosa
classe de redes de aprendizagem supervisionada, denominada support vector machines,
aplicada na soluo de problemas de reconhecimento de padres (1992), regresso (1995) e
estimativa de densidade (1998).
Alm dos modelos de redes neurais artificiais aqui mencionados, inmeros outros
existem. Apenas a ttulo de esclarecimento, haja vista que o foco deste trabalho outro, as
redes neurais artificiais existentes podem ser categorizadas da seguinte maneira (NN FAQ,
2008):
Aprendizado supervisionado
o Feedforward
Hebbian, Perceptron, Adaline, backpropagation, Orthogonal
Least Squares, etc.;
o Feedback
Bidimensional Associative Memory (BAM), Mquina de
Boltzman, Finite Impulse Response, Time Delay Neural
Network, etc.;
o Competitiva
ARTMAP, Counterpropagation, Neocognitron, etc.;
Aprendizado no-supervisionado
o Competitiva
Grossberg, Kohonen, ART1, ART2, Fuzzy ART, etc.;
o Reduo de dimenso
Hebbian, Oja, etc.;
o Auto-associativa
37
Hopfield, Brain State in a Box (BSB), Auto-associador Linear;
Sem aprendizado
o Hopfield, vrias redes neurais para otimizao.

2.4.2 Modelo de neurnio

Um neurnio consiste na unidade de processamento fundamental de uma rede neural.
A Figura 2.9 ilustra o modelo neuronal utilizado como base na construo de RNAs, sendo o
mesmo constitudo por trs elementos principais:
Um conjunto de sinapses (ou conexes), cada uma delas caracterizada por uma
entrada x
j
que multiplicada pelo respectivo peso w
k
, atribudo mesma
durante o treinamento da rede;
Um somador que efetua a adio das entradas ponderadas oriundas de cada
sinapse, o qual se constitui num combinador linear;
Uma funo de ativao, que limita a faixa de excurso da sada do neurnio,
dada pelo somador. Geralmente a sada normalizada fornecida pela funo de
ativao situa-se no intervalo fechado [0,1] ou [-1,1].


Figura 2.9 Modelo no-linear de um neurnio.

Alm dos trs elementos principais, o modelo neuronal inclui tambm uma conexo
externa de bias. Tal conexo composta por uma entrada x
0
de valor fixo +1 (um positivo),
bem como um peso w
k0
dado por b
k
. O emprego da conexo de bias causa o deslocamento da
sada do combinador linear para a banda positiva ou negativa, conforme o valor de b
k
.
38
Assim sendo, o modelo neuronal pode ser expresso matematicamente pelas seguintes
equaes

=
=
m
j
j kj k
x w
0

(2.5)

) (
k k
y =
(2.6)
onde x
0
a entrada fixa +1 da conexo de bias; x
1
,x
2
,...,x
m
so os sinais de entrada do sistema;
w
k0
o peso b
k
da conexo de bias do neurnio k; w
k1
, w
k2
, ..., w
km
so os pesos das demais
sinapses com o neurnio k;
k
a sada do combinador linear do neurnio k acrescida do
termo referente sinapse de bias (geralmente denominada campo local induzido); () a
funo de ativao; e y
k
o sinal de sada do neurnio k.
No que diz respeito funo de ativao, a qual denotada por () e define a sada
do neurnio em funo do campo local induzido , os tipos mais comumente utilizados so os
seguintes:
Funo Limiar: fornece uma sada correspondente de um neurnio do modelo
McCulloch-Pitts, onde a sada assume o valor 1 (um) quando o campo local
induzido no-negativo, ou 0 (zero), caso contrrio. Tal funo encontra-se
ilustrada graficamente na Figura 2.10(a), sendo matematicamente descrita pela
seguinte equao

( )

<

=
0 , 0
0 , 1

(2.7)
Funo Piecewise-linear: este tipo de funo pode ser visto como uma
aproximao de um amplificador no-linear. A funo se comporta como um
combinador linear enquanto a regio de operao no alcana a saturao.
Quando em saturao, a funo responde como uma funo limiar. Tal funo
encontra-se ilustrada graficamente na Figura 2.10(b), sendo matematicamente
descrita pela seguinte equao

( )

<

> >
+
+

=
2
1
, 0
2
1
2
1
,
2
1
, 1

(2.8)
Funo Sigmoidal: por conta do balano exibido entre seus comportamentos
linear e no-linear, consiste na mais popular funo de ativao utilizada na
construo de redes neurais. Um exemplo de funo sigmoidal a funo
logstica, ilustrada na Figura 2.10(c) e definida por
39
onde a o parmetro de inclinao. Desta forma, quanto maior o valor de a ,
mais similar uma funo limiar a funo sigmoidal se torna. Entretanto, a
segunda assume valores contnuos no intervalo [0,1], sendo portanto
classificada como no-simtrica, enquanto a primeira capaz de assumir
apenas valores discretos.
Outro exemplo de funo sigmoidal a tangente hiperblica, definida
por
a qual assume valores na faixa [-1,1], sendo classificada, portanto, como
funo anti-simtrica.



(a) (b)

(c)
Figura 2.10 Tipos de funo de ativao utilizadas numa RNA (HAYKIN, 1999).

2.4.3 Arquiteturas de rede

A maneira como uma rede neural estruturada est intimamente ligada com o
algoritmo de treinamento usado pela mesma. Em geral, so trs os tipos distintos de
arquiteturas existentes:
Redes feedforward de camada nica: consistem na forma mais elementar de
redes feedforward, onde a camada de entrada conecta-se diretamente camada

( )
) exp( 1
1


a +
= (2.9)

( ) ) tanh( = (2.10)
40
de sada. Conforme o prprio nome indica, redes feedforward so acclicas, ou
seja, as conexes se do apenas num sentido (da entrada para a sada). Como a
camada de entrada no levada em considerao na contagem do nmero de
camadas, pois nenhum processamento efetuado na mesma, a Figura 2.11(a)
ilustra o caso de uma rede feedforward de camada nica com quatro neurnios
em ambas as camadas de entrada e sada.
Redes feedforward de mltiplas camadas: as redes feedforward de mltiplas
camadas caracterizam-se pela existncia de uma ou mais camadas
intermedirias s de entrada e sada. Tais camadas intermedirias so
denominadas camadas escondidas, sendo seus elementos constituintes
denominados neurnios escondidos. A insero de camadas escondidas
possibilita que a rede seja capaz de extrair estatsticas de ordem mais elevada,
ou seja, permite que a rede adquira uma perspectiva global apesar de sua
conectividade local (Churchland e Sejnowski, 1992 apud Haykin, 1999). Numa
rede feedforward de mltiplas camadas, as entradas de uma camada so sempre
dadas pelas sadas da camada anterior, ou seja, o conjunto de sadas dadas
pelos neurnios da ltima camada constitui a resposta geral da rede ao padro
de ativao fornecido pelos nodos fonte na camada de entrada. Um exemplo de
uma rede feedforward de mltiplas camadas dado pela Figura 2.11(b), a qual
se constitui numa rede de topologia 10x4x2, ou seja, dez nodos de entrada,
quatro neurnios escondidos e dois neurnios de sada. No tocante
conectividade desta rede, ela do tipo totalmente conectada, pois cada nodo de
uma camada se conecta a todos os nodos da camada seguinte. A rede seria dita
parcialmente conectada no caso da falta de pelo menos uma sinapse.
Redes recorrentes: as redes recorrentes diferenciam-se das feedforward por
conta da existncia de pelo menos um lao de realimentao. Tal lao de
realimentao conduz as sadas da rede novamente sua camada de entrada. O
lao dito de auto-realimentao quando a sada de um neurnio alimenta a
sua prpria entrada. Quanto existncia de camadas escondidas, as redes
recorrentes so semelhantes as feedforward, podendo ou no t-las. Assim
sendo, a rede ilustrada na Figura 2.11(c) consiste numa rede recorrente de
camada nica, que no exibe auto-realimentao. A existncia de conexes de
realimentao melhora a capacidade de aprendizagem e o desempenho da rede,
41
ao passo que introduz um comportamento dinmico no-linear, por conta dos
operadores de atraso unitrio (blocos z
-1
) utilizados em tais conexes.




(a) (b) (c)
Figura 2.11 Ilustrao das trs principais arquiteturas de RNAs: (a) feedforward de camada nica, (b)
feedforward de mltiplas camadas e (c) recorrente (HAYKIN, 1999).

2.4.4 Perceptrons

O perceptron consiste na forma mais elementar de uma rede neural para classificao
de padres ditos linearmente separveis. Entretanto, justamente no fato do algoritmo
convergir apenas no caso de classes linearmente separveis que reside a maior limitao do
mesmo, pois comum a existncia de padres no linearmente separveis.
Considerando a hiptese de uma rede perceptron (de camada nica) composta por
apenas um neurnio, como a ilustrada na Figura 2.12(a), a mesma capaz de separar os
padres em duas classes distintas. Um exemplo de problema tratvel por uma rede neural
como esta a funo lgica OR de duas entradas, a qual resulta num conjunto de sadas
separveis por meio de uma linha de fronteira nica, conforme a ilustrao grfica exibida na
Figura 2.12(b).
Conforme o nmero de neurnios aumenta, da mesma forma aumenta o nmero de
classes que a rede capaz de identificar. Entretanto, caso as classes no forem linearmente
separveis na sua totalidade, a rede no ser capaz de identific-las de maneira distinta. O
exemplo clssico desta situao consiste na funo lgica XOR, conforme a ilustrao grfica
exibida na Figura 2.12(c). Neste caso, como as entradas que resultam em 0 (zero) (ou seja,
(0,0) e (1,1)) residem em cantos opostos do quadrado unitrio, so necessrias duas linhas de
42
fronteira para a correta separao dos padres de sada. Desta maneira, no h como resolver
o problema por meio de uma rede perceptron elementar.



(a) (b) (c)
Figura 2.12 Ilustrao de (a) uma rede perceptron elementar e das fronteiras de deciso das funes (b)
OR e (c) XOR, sendo a primeira implementvel por tal arquitetura, mas no a segunda.

A soluo para este problema consiste em tornar a rede neural robusta no que tange a
questo da separabilidade dos padres, ou seja, a rede deve ser capaz de classificar de forma
distinta classes no linearmente separveis. Neste sentido, uma das formas de soluo diz
respeito insero de camadas escondidas na rede, dando origem, assim, a uma rede do tipo
feedforward de mltiplas camadas. Tais redes so comumente denominadas perceptron de
mltiplas camadas (PMC).
As redes PMCs tem sido empregadas com sucesso na soluo de problemas de
resoluo complexa. O treinamento de tais redes realizado de forma supervisionada por
meio do algoritmo de retropropagao de erro, o qual explicado de forma detalhada no
Captulo 4.
Finalizando este captulo, na prxima seo so apresentados os conceitos relativos a
uma das aplicaes baseadas em viso computacional: Sistemas de Reconhecimento de Placas
de Licenciamento Veicular.

2.5 Sistemas de Reconhecimento de Placas de Licenciamento Veicular

2.5.1 Introduo

Sistemas de Reconhecimento de Placas de Licenciamento Veicular so aqueles que
automaticamente identificam um veculo a partir de uma imagem contendo a placa do mesmo
(DIAS, 2007). Outras denominaes normalmente usadas so as seguintes (HI-TECH, 2007):
Automatic Vehicle Identification (AVI);
43
Car Plate Recognition (CPR);
Automatic Number Plate Recognition (ANPR);
Car Plate Reader (CPR);
Optical Character Recognition (OCR) for Cars.
Os SRPLVs atuais costumam adotar uma estrutura bsica comum, diferindo uns dos
outros no que diz respeito s tcnicas utilizadas na execuo das tarefas componentes da
mesma. Entretanto, essa maturidade estrutural s foi adquirida cerca de duas dcadas aps o
incio das pesquisas, conforme ilustrado na prxima seo.

2.5.2 Histrico

De acordo com Turner (1995), o conceito de SRPLV j era empregado desde o incio
dos anos 50 para fins de medio de tempo de durao de viagens. Naquela poca os registros
eram efetuados de forma manual, em um gravador de fita ou mesmo papel, sendo a apurao
dos tempos feita posteriormente, com base nestes registros.
Entretanto, como ocorre em toda tarefa manual e repetitiva, no tardou muito para
surgir uma soluo automtica. Os primeiros SRPLVs automticos datam dos anos 60
(AYLAND,1989), sob a denominao de sistemas AVI. Tais sistemas se baseavam no uso de
leitores pticos e etiquetas de identificao fixadas na rea externa dos veculos. Desta forma,
o desempenho do sistema era sensvel a elementos como neve, chuva, gelo, neblina, sujeita ou
mesmo algum problema de alinhamento entre o leitor e a etiqueta.
Leitores infravermelhos foram utilizados na dcada de 70 numa tentativa de melhorar
o desempenho dos sistemas baseados em leitores pticos. Apesar de apresentarem alguma
melhora de desempenho em relao aos seus predecessores, igualmente eram sensveis s
condies climticas.
Ainda segundo Ayland (1989), o prximo passo na evoluo de tais sistemas foi a
utilizao de tecnologias como laos indutivos, rdio-freqncia e microondas, visando
resolver o problema de susceptibilidade ao clima. Dois eram os aspectos em comum destas
tecnologias: a utilizao de transponders afixados no veculo e a forma de classific-los.
Um transponder um dispositivo eletrnico que emite um sinal de resposta quando
solicitado. Este sinal de resposta, neste caso, continha o nmero de identificao do veculo.
Quanto forma de classificao, podiam ser divididos em ativos, semi-ativos ou passivos, de
acordo com a forma como o transponder era alimentado.
44
Nos sistemas do tipo ativo, o transponder recebia energia do prprio veculo sob o
qual encontrava-se afixado. O sinal de identificao podia ser transmitido continuamente (j
que a disponibilidade de energia no era uma questo relevante neste caso), ou ento apenas
quando solicitado por um receptor.
J em sistemas passivos, a energia necessria para a transmisso do cdigo de
identificao era fornecida pelo prprio lao indutivo, j que os transponders no dispunham
de fonte de alimentao. Quando fora do campo de alcance do lao indutivo, tais dispositivos
encontravam-se totalmente inativos.
Finalmente, sistemas semi-ativos eram aqueles onde os transponders dispunham de
uma bateria interna prpria, transmitindo o cdigo de identificao apenas quando solicitado.
A independncia de fonte de alimentao externa resolvia os problemas apresentados por um
sistema totalmente ativo.
Apesar das primeiras pesquisas sobre o emprego de tcnicas de processamento de
imagens em sistemas de monitoramento e controle de trfego datarem do final dos anos 70
(INIGO, 1985), sistemas baseados em laos indutivos continuaram sendo largamente
utilizados durante os anos 80 (INIGO, 1989). Entretanto, apesar da desvantagem do ponto de
vista econmico poca, o interesse pelo uso de tcnicas de processamento de imagens se deu
pelo fato destas serem potencialmente mais poderosas e flexveis que as correntes. Tal
colocao pode ser exemplificada por fatos como a necessidade de intervenes no pavimento
de uma via para a instalao do sistema ou a impossibilidade de realizao de tarefas como
deteco de acidentes e rastreamento de veculos, no caso da tecnologia de laos indutivos.
Sistemas de reconhecimento automtico de veculos similares aos atuais comearam a
surgir no incio da dcada de 90 (LOTUFO, 1990). Os avanos que ocorreram no campo de
viso computacional, bem como a queda nos preos dos dispositivos de aquisio de imagens,
tiveram forte influncia neste contexto. A utilizao de tcnicas de OCR em substituio aos
transponders foi favorecida pela disseminao deste tipo de sistemas, haja vista que cada
veculo passvel de monitoramento necessitava, obrigatoriamente, de um destes dispositivos.
Do incio da dcada passada para c a estrutura bsica dos SRPLVs se manteve
praticamente a mesma. As diferenas entre as diversas propostas se situam basicamente nas
tcnicas empregadas na realizao de cada etapa. Deste modo, por exemplo, Nijhuis (1995)
melhorou a proposta apresentada por Lotufo (1990) pela reduo do tamanho mnimo exigido
para a placa do veculo na imagem. Da mesma forma, Barroso (1997) melhorou a proposta de
Nijhuis (1995) tornando a etapa de localizao da placa independente da cor do fundo da
45
mesma. Os principais elementos, funcionamento e aplicaes de um SRPLV constituem o
tema das prximas sees.

2.5.3 Principais elementos

Um SRPLV tpico tem como principais elementos os seguintes (DIAS, 2007) (HI-
TECH, 2007) (QUERCUS, 2007):
Sensor de presena: geralmente do tipo indutivo ou capacitivo. utilizado para
ativar o sistema quando da presena de um veculo na rea de atuao do
mesmo. No um item essencial, haja vista que a deteco de presena do
veculo pode ser realizada pelo prprio SRLPV;
Iluminao: utilizada para permitir que o sistema se mantenha operacional na
falta ou reduo de luz natural. Geralmente empregada iluminao do tipo
infra-vermelha (Figura 2.13), que imperceptvel ao olho humano e permite o
realce da zona que contm a placa, a partir de um filtro instalado na cmera;


Figura 2.13 Exemplos de imagens adquiridas pelo emprego de iluminao infra-vermelha.

Cmera de vdeo: analgica ou digital. Utilizada para capturar a imagem do
veculo e disponibiliz-la ao sistema. No caso de uma cmera analgica, faz-se
necessrio o uso de uma placa digitalizadora denominada frame grabber;
Computador: um PC convencional, no qual geralmente est conectada a
cmera de vdeo e onde reside a aplicao de Reconhecimento de Placas de
Licenciamento Veicular (RPLV). Tal aplicao responsvel pelo controle do
sistema, leitura das imagens, identificao da placa, bem como pela
comunicao com outras aplicaes e sistemas;
Software: consiste na aplicao e no pacote de RPLV. Geralmente o pacote
disponibilizado por terceiros como uma biblioteca de software, que agregada
a uma aplicao personalizada.
46
2.5.4 Funcionamento

Conforme mencionado anteriormente, os atuais sistemas de reconhecimento
automtico de veculos so baseados em viso computacional. Desta forma, no se faz mais
necessrio o uso de transponders, j que o veculo pode ser identificado pela prpria placa,
por meio do processamento de uma imagem contendo a mesma.
O processo de reconhecimento da placa de licena inicia quando um veculo se
aproxima de um ponto de verificao, como, por exemplo, uma cancela, na entrada de um
estacionamento pblico. Assim que a presena do veculo detectada, seja por um sensor de
presena, seja por tcnicas de processamento de imagem embutidas no prprio sistema, um
sinal de ativao gerado. Neste momento a cmera adquire uma imagem da parte dianteira
ou traseira do veculo e a disponibiliza ao SRPLV, que, por sua vez, localiza a regio
contendo a placa, separa os caracteres contidos na mesma e os reconhece. Como sada, o
software de RPLV disponibiliza os caracteres que compem a placa no formato ASCII. Assim
sendo, possibilita a utilizao deste dado por qualquer outro processo computacional, desde a
simples criao de um registro de entrada, at uma busca em um banco de dados de veculos
com infraes pendentes ou roubados.
A Figura 2.14 ilustra o diagrama de blocos bsico de um SRPLV. Cada um dos blocos
composto por uma srie de tcnicas de processamento de imagem, as quais so combinadas
de uma forma especfica para a resoluo da tarefa executada pelo bloco. A mesma tcnica
pode ser utilizada em mais de um bloco, mas em arranjos distintos para cada bloco. Segue
uma descrio detalhada de cada um dos blocos principais.


Figura 2.14 Estrutura bsica de um SRPLV.

47
2.5.5 Localizao da placa

Nesta etapa realizada uma busca por regies da imagem onde haja uma alta
probabilidade de existncia de uma placa de licenciamento veicular, como a delimitada pelo
retngulo na Figura 2.15. Para tanto, so levadas em considerao caractersticas inerentes
mesma, como contraste, textura e geometria.


Figura 2.15 Regio candidata encontrada durante a etapa de Localizao da Placa.

Segundo Dias (2005), dentre os mtodos empregados para esta tarefa podem ser
citados o Mtodo da Morfologia dos Caracteres, o qual se baseia na geometria dos mesmos; o
Mtodo da Variao Tonal, que vasculha as linhas em busca de um padro de freqncia e
amplitude (assinatura); o Mtodo da Correlao, que busca correlacionar a sub-imagem do
objeto procurado na imagem pesquisada; o Mtodo da Deteco das Arestas, que emprega
detectores de contorno para localizar as quatro arestas da placa; o Mtodo Conexionista,
emprega tcnicas conexionistas na busca por regies cuja cor e textura sejam similares ao de
uma placa de licenciamento veicular; e o Mtodo Hbrido, que emprega uma combinao de
dois ou mais mtodos distintos, visando aumentar a eficincia do processo.
Esta etapa consiste num ponto crtico do processo de RPLV, pois a no localizao de
pelo menos uma regio contendo a placa de licenciamento veicular implica na falha do
processo como um todo.

2.5.6 Extrao dos caracteres

48
Uma por vez, cada regio candidata encontrada na etapa anterior ento vasculhada
em busca de caracteres componentes de uma possvel placa contida na mesma. Dependendo
do mtodo empregado no processo de separao dos caracteres, a imagem deve ser
previamente binarizada (representada em apenas dois tons de cinza), conforme ilustrado na
Figura 2.16. Os caracteres so ento separados em funo da sua extenso horizontal e
vertical, sendo que caractersticas geomtricas podem ser consideradas para decidir se o
objeto em questo um caractere ou no. Na Figura 2.17, os retngulos vermelhos
representam as separaes resultantes de um processo de separao.


Figura 2.16 Ilustrao da imagem obtida pelo processo de binarizao da regio da placa de
licenciamento veicular.


Figura 2.17 Ilustrao das regies encontradas a partir do processo de localizao de caracteres.

Dentre os principais mtodos usados nesta etapa, podem ser citados o Mtodo das
Projees (BARROSO, 1997) (MARTN, 2002) (DIAS, 2005) , que define os limites de cada
caractere por meio de projees horizontais e verticais; o Mtodo da Morfologia (COWELL,
1995) (COETZEE, 1998) (DIAS, 2005), o qual separa os caracteres com base em seus
componentes conexos; o Mtodo da Caixa Limitante Adaptativa (COETZEE, 1998) (SOUZA,
2000) (CAMPOS, 2001), que emprega uma construo no formato de L invertido para, num
primeiro momento encontrar os limites esquerdo e superior do caractere e aps, os demais
limites; e o Mtodo da Etiquetao dos Componentes Conectados (NIJHUIS, 1995)
(KWASNICKA, 2002) (BREMANANTH, 2005), que atribui uma etiqueta nica aos pixels
que compem um mesmo objeto.
Ao final do processo, geralmente os caracteres encontrados so mapeados para uma
forma de representao mais apropriada ao mtodo de reconhecimento empregado antes de
serem repassados para a prxima etapa.

49
2.5.7 Reconhecimento dos caracteres

Finalmente, cada um dos caracteres extrados na etapa anterior enviado para o
mdulo de reconhecimento, que disponibiliza como sada o cdigo American Standard Code
for Information Interchange (ASCII) do conjunto de dados recebido como entrada.
Segundo Polidrio (2007) e Dias (2005), os principais mtodos empregados no
reconhecimento de caracteres so o Mtodo Estatstico, que emprega uma medida de distncia
na procura da amostra de maior similaridade em um conjunto de amostras rotuladas; o
Mtodo Conexionista, o qual utiliza um conjunto de amostras rotuladas para treinar uma rede
de elementos, tendo fronteiras de deciso no-lineares definidas iterativamente pelo mtodo
de treinamento e pelo conjunto de amostras; e o Mtodo Sinttico, que se baseia na estrutura
dos padres de entrada, onde uma gramtica empregada na definio das regras de formao
de tais estruturas e um autmato utilizado na operacionalizao da tarefa.
Questes como o reconhecimento parcial ou falso reconhecimento da placa de
licenciamento veicular podem ou no ser aceitas, de acordo com a taxa de erro permitida pela
aplicao (HI-TECH, 2007) (PHOTOCOP, 2007). No caso de controle de acesso, por
exemplo, nenhuma falha do sistema aceitvel, pois isso pode acarretar na liberao do
acesso a pessoas no autorizadas (falso positivo) ou negao ou acesso quelas autorizadas
(falso negativo). J no caso de um sistema de estacionamento, o no reconhecimento de um
caractere pode ser compensado pela anlise de outras informaes, como a existncia de um
registro de entrada cuja placa similar analisada no momento da sada.
Dependendo da forma como o sistema implementado, outros blocos podem ser
agregados. Muitas vezes utilizada uma etapa de pr-processamento, que visa efetuar tarefas
como converso de sistema de cores ou algum aprimoramento na qualidade da imagem que
melhore o desempenho nas etapas posteriores. Entretanto, tal procedimento pode ser
executado em mais de um momento.
Outro exemplo que merece destaque um bloco de Enquadramento da placa, citado
por Dias (2007). Tal procedimento executado aps a etapa de localizao da placa, visando
limitar a regio da mesma s suas bordas, bem como corrigir a distoro de perspectiva
introduzida pela forma como a cmera posicionada, conforme ilustrado na Figura 2.18,
subitens (a),(b) e (c), respectivamente. O correto enquadramento da placa e a correo da
distoro de perspectiva implicam diretamente em melhorias fundamentais na eficincia dos
demais mdulos. Obviamente o tempo de processamento diretamente proporcional ao
nmero de etapas executadas, bem como ao tipo de tcnicas empregadas. Neste contexto o
50
desafio justamente aumentar o percentual de reconhecimento do sistema sem que isso
implique num aumento significativo no tempo de resposta do mesmo.



(a) (b) (c)
Figura 2.18 Ilustrao do processo de enquadramento da placa, proposto por Dias (2007).

2.5.8 Aplicaes

Um SRPLV pode ser utilizado em toda e qualquer situao em que haja necessidade
de identificao automtica de veculos. Tal necessidade se aplica a uma gama enorme de
aplicaes, cuja tendncia de aumentar ainda mais. Dentre as j existentes, podem ser
citadas (DIAS, 2007) (HI-TECH, 2007) (QUERCUS, 2007):
Estacionamento: a placa do veculo verificada tanto na entrada, quanto na
sada do estabelecimento, permitindo o clculo da taxa de servio em funo
do tempo de permanncia. Alm da placa, o sistema tambm pode obter
imagens dos ocupantes do veculo, visando inibir situaes de roubo ou
seqestro;
Controle de Acesso: similar ao controle exercido num estacionamento, mas o
foco neste caso permitir o acesso a reas restritas apenas a membros
autorizados, como no caso de uma rea segura;
Pedgio: a placa do veculo identificada quando o veculo adentra a pista de
pedgio, liberando imediatamente a cancela no caso de cobrana posterior ou
agilizando o processo no caso de cobrana no ato;
Controle de Fronteira: permite o automatizar o controle de entradas e sadas de
um pas, bem como agilizar tais procedimentos e verificar eventuais
impedimentos;
Identificao de veculo roubado: assim que ocorre o roubo ou furto de um
veculo, a placa do mesmo pode ser includa numa lista centralizada de
51
veculos nesta situao. A partir da, o veculo pode ser localizado no momento
em que for parado em um ponto de fiscalizao ou for flagrado por alguma
cmera de vigilncia instalada em pontos estratgicos de uma cidade;
Fiscalizao: no caso do condutor do veculo cometer alguma infrao de
trnsito, como exceder o limite de velocidade ou avanar o sinal vermelho, a
multa pode ser automaticamente apurada e enviada ao mesmo, a partir da placa
do veculo conduzido por ele;
Controle de trfego: permite efetuar a triagem automtica dos veculos, de
acordo com suas permisses de entrada e direcion-los, ento, para vias
distintas, reduzindo o congestionamento do trfego;
Ferramenta de marketing: as placas dos veculos podem ser utilizadas na
criao de uma lista de visitantes freqentes para propsitos de marketing, bem
como na construo de perfis de trfego (entradas por dia/hora, etc.);
Controle de durao de viagem: a identificao de um veculo ao longo de um
percurso permite apurar uma srie de informaes sobre o trajeto, como local e
hora de origem e destino, velocidade mdia (que permite apurar tambm se a
velocidade limite foi ultrapassada), acionamento imediato de uma equipe de
socorro aps um acidente ou parada no prevista, etc.

3 SISTEMAS EMBARCADOS

3.1 Introduo

Apesar do termo microprocessador estar intimamente ligado figura do computador
pessoal convencional, esta no constitui a nica tampouco a de maior demanda rea de
aplicao do mesmo (HEATH, 2003). O surgimento do microprocessador ocorreu na dcada
de 70, por conta da necessidade de flexibilizao dos circuitos dedicados utilizados nas
calculadoras da poca. As primeiras calculadoras eletrnicas empregavam centenas de
circuitos discretos e possibilitavam a execuo das 4 operaes bsicas, apenas. A evoluo
da indstria de semicondutores permitiu que essa massa de circuitos fosse integrada em um
nico circuito dedicado. Essa integrao permitiu a reduo do custo de produo, mas ao
mesmo tempo demandava o desenvolvimento de um novo circuito dedicado conforme novas
funcionalidades fossem agregadas. A soluo para este problema foi a criao de um circuito
que permitisse alguma forma de programao, possibilitando a adio de novas funes sem
que tais mudanas implicassem obrigatoriamente na alterao do mesmo. Nascia assim o
microprocessador.
Atualmente, microprocessadores esto amplamente disseminados, embarcados em
equipamentos dos mais diversos tipos, desde brinquedos infantis at aeronaves de combate.
Nestes equipamentos, por sua vez, cada funo que necessita de uma forma de controle
eletrnico emprega um microprocessador, o qual se encontra inserido em um sistema
embarcado. Desta forma, o propsito de um sistema embarcado o de controlar algum
aspecto de um sistema fsico, como temperatura, movimento, etc., a partir de uma srie de
entradas. Com o advento da era digital e da conseqente substituio das tecnologias
analgicas no segmento dos equipamentos de consumo, a utilizao de sistemas embarcados
cada vez maior.

3.2 Definies

Embora a literatura costume definir o termo sistema embarcado no pelo que ele
significa, mas pelas diferenas em relao a um computador pessoal convencional, uma
definio razovel para o mesmo a de que se constitui num sistema micro-processado, de
propsito especfico, cuja interface com o usurio final se d de forma indireta (HEATH,
53
2003) (COELHO, 1998) (BERGER, 2001). Apesar de consistir numa simplificao, tal
definio satisfatria, pois ilustra as principais caractersticas de um sistema embarcado.
Dentre tais caractersticas, talvez a de maior relevncia seja o fato de tais sistemas
apresentarem uma funcionalidade restrita. Num sistema convencional (leia-se computador
pessoal), o usurio final quem define a funcionalidade de mesmo a partir da seleo do
pacote de software adequado. Desta forma, hora o sistema pode se comportar como um editor
de texto, hora como planilha eletrnica, e assim por diante. Em outras palavras, a
funcionalidade do sistema pode ser re-programada pelo usurio final. J num sistema
embarcado, o usurio final pode at efetuar escolhas em relao funcionalidade original,
entretanto no tem a possibilidade de alterar a mesma.
No que tange a questo da interface com o usurio final, enquanto a mesma ocorre de
forma direta no caso de um computador pessoal, o mesmo no acontece num sistema
embarcado, onde a interface direta se d com o ambiente ou com outro equipamento. Isto
ocorre porque enquanto o computador pessoal consiste no sistema em si, um sistema
embarcado apenas um elemento de um sistema mais complexo, que, por sua vez, faz
interface direta com o usurio final. Como exemplo claro de um sistema deste tipo, pode-se
citar um automvel. Dentre os vrios sistemas embarcados existentes neste sistema, toma-se
como exemplo o encarregado pelo sistema de frenagem anti-blocante. Neste caso, no
momento da frenagem, a interface do usurio final ocorre com o veculo, que, por intermdio
do pedal de freio, interage com o sistema embarcado responsvel pelo controle de frenagem.
Alm das questes que dizem respeito funcionalidade e forma de interface com o
usurio final, outras diferenas entre sistemas convencionais e embarcados que se pode citar
so as seguintes (BERGER, 2001):
Sistemas embarcados so suportados por uma vasta gama de processadores e
arquiteturas de processadores: diferentemente dos computadores pessoais
convencionais, que na sua grande maioria so baseados num nmero restrito de
plataformas (como a x86, da Intel, ou a SPARC, da Sun), sistemas embarcados
empregam um nmero muito maior de plataformas em sua construo. J no
ano de 2000, havia mais de 140 tipos diferentes de processadores disponveis
no mercado, fabricados por cerca de 40 empresas distintas. Atualmente o
nmero de fornecedores cresceu para algo em torno de 70, enquanto que a
diversidade de dispositivos/ncleos gira em torno de 1000 itens (CRAVOTA,
2007);
54
Sistemas embarcados so geralmente sensveis ao custo: existem sistemas
embarcados, como os utilizados em projetos espaciais, onde a rea ocupada e a
potncia dissipada so fatores mais crticos do que o custo financeiro.
Entretanto, em produtos de massa, como aqueles projetados para o mercado de
consumo, o custo financeiro to ou mais importante quanto rea e/ou
potncia dissipada. O custo do microprocessador em si um fator, mas
geralmente o que se visa uma reduo de custo no sistema como um todo;
Sistemas embarcados tm restries de tempo-real: o fato da operao de
abertura de um documento demorar segundos num computador pessoal, por
ocasio da carga inicial do software de processamento de texto, no tem
influncia alguma no resultado da operao. Entretanto, se tal atraso ocorrer no
sistema embarcado de alerta de coliso de uma aeronave, as conseqncias
podem ser catastrficas. Tal exemplo ilustra um sistema embarcado com
restries crticas de tempo, onde a tarefa tida como falha se no executada
dentro de uma janela de tempo. J sistemas com restries sensveis de tempo
so aqueles onde a violao da janela de tempo compromete, mas no invalida
a funo. Como exemplo, cita-se o controle de impresso de uma impressora
jato de tinta, onde a violao da janela de tempo reduz o nmero de pginas
impressas por minuto, sem que haja falha na impresso em si;
Caso um sistema embarcado use um Sistema Operacional (SO), provavelmente
do tipo de tempo-real: Real-Time Operating Systems (RTOSs) permitem que
as tarefas crticas sejam executadas dentro da janela de tempo necessria,
independente do nmero de processos que esto rodando em um dado
momento. Caso uma tarefa no seja concluda dentro da sua janela de tempo, a
responsabilidade do programador, no de outros fatores. Por conta desta
disciplina rgida, RTOSs geralmente no apresentam as mesmas falhas
apresentadas por SOs utilizados em computadores pessoais convencionais;
As implicaes das falhas de software so muito mais severas em sistemas
embarcados do que em sistemas convencionais: muitos dos sistemas dos quais
dependem vidas humanas, como os j citados sistema de frenagem de um
veculo, sistema anti-coliso de uma aeronave, consistem em sistemas
embarcados. Eventuais falhas de software em sistemas deste tipo podem
comprometer tais vidas. Por conta desses aspectos, sistemas embarcados
55
tipicamente possuem mecanismos de auto-recuperao, como um watchdog
timer, que restabelece o controle do dispositivo, no caso de haver a perda do
mesmo por parte do software;
Sistemas embarcados tm restries de consumo de potncia: muitos dos
sistemas embarcados existentes, como os utilizados em sistemas de
monitoramento de espcies selvagens, ou mesmo aqueles utilizados num
automvel, possuem como fonte de alimentao uma bateria. Deste modo, no
apenas o microprocessador (que num sistema convencional pode consumir
mais de 100 Watts de potncia), mas o sistema como um todo deve ser
projetado de modo a respeitar tais restries de consumo;
Sistemas embarcados devem operar sobre condies ambientais extremas:
conforme mencionado no incio deste captulo, microprocessadores e, por
conseqncia, sistemas embarcados esto amplamente disseminados. Seja
sob temperaturas extremamente altas ou baixas, umidade abundante ou escassa,
um sistema embarcado deve estar preparado para todas estas adversidades
ambientais. Entretanto, a soluo de um aspecto pode levar a implicaes em
outro, como no caso da proteo microprocessador mediante selagem,
dificultando assim a dissipao de calor produzido pelo mesmo;
Sistemas embarcados utilizam um conjunto restrito de recursos: enquanto
sistemas convencionais dispem de inmeras interfaces de entrada e sada, bem
como barramentos de diversos tipos, o conjunto de recursos disponveis num
sistema embarcado muito mais restrito. Ao passo que este fato contribui para
a reduo de rea, consumo de potncia e custo financeiro do mesmo, tambm
cria srias limitaes no tocante ao desenvolvimento deste;

3.2.1 Componentes de um sistema embarcado

Por conta da sua natureza restrita em vrios aspectos, um sistema embarcado costuma
ser composto pelo mnimo nmero possvel de componentes. Mais do que isso, a capacidade
de armazenamento/processamento e complexidade de tais componentes geralmente a
mnima necessria para satisfazer as especificaes do sistema. Na seqncia so discutidos
os principais elementos de um sistema embarcado citados por Heath (2003).

56
3.2.1.1 Processador

Assim como num sistema convencional, o microprocessador o elemento principal de
um sistema embarcado. justamente pelo emprego deste elemento que se torna possvel a
agregao de novas funcionalidades num produto, de uma forma rpida e de baixo custo
financeiro, considerando a implementao de tais funes em software.
O principal critrio utilizado na seleo de um processador a capacidade de
processamento do mesmo. Entretanto, um dos aspectos que contribui para um desempenho
final insatisfatrio do sistema o fato das tarefas executadas pelo processador selecionado
serem freqentemente sub-estimadas em relao ao seu tamanho e complexidade. A seleo
do processador a partir de resultados obtidos pelo mesmo em benchmarks outro fator que
pode contribuir negativamente neste sentido, pois tais resultados podem no ser
representativos em relao ao tipo de processamento exigido pelo sistema embarcado. Outros
critrios utilizados na seleo do processador, os quais podem ser mais relevantes que o
prprio poder de processamento, dependendo das restries de projeto, so o custo financeiro,
o consumo de potncia, as ferramentas de software disponveis para o mesmo, bem como a
sua disponibilidade.
Dentre os tipos mais comuns de processadores, pode-se citar os seguintes:
Microprocessador: processadores de propsito geral, cujo tamanho da palavra
de dados pode variar de 8 a 64 bits e o conjunto de instrues ser complexo
(CISC) ou reduzido (RISC). Podem ser compostos por um ou mais ncleos e
apresentar verses prprias para implementao em dispositivos re-
configurveis (soft processors);
Microcontrolador: so na verdade sistemas autocontidos, compostos no
apenas por um microprocessador, mas tambm por mdulos Random Access
Memory (RAM) e Read-Only Memory (ROM), gerador de clock, perifricos
(timer, watchdog, conversor Analgico para Digital (A/D) e Digital para
Analgico (D/A)) e dispositivos de entrada/sada (E/S) (geralmente interfaces
de comunicao serial);
Digital Signal Processors (DSPs): processadores otimizados para o
processamento digital de sinais. Empregam recursos que maximizam o poder
de processamento em aplicaes deste tipo, como blocos multiplicador-
acumulador (prprios para implementao de filtros digitais), deslocadores de
barril e geralmente a arquitetura Harvard (que, em contraste com a
57
VonNeumann, possui memrias e caminhos distintos para programa e dados, o
que permite acelerar a execuo das instrues).

3.2.1.2 Memria

Os critrios de seleo do tipo e quantidade de memria so fortemente influenciados
pelo projeto de software. Em contrapartida, a configurao de memria selecionada implica
na forma como o software projetado, escrito e desenvolvido.
Geralmente um sistema embarcado composto tanto por mdulos ROM, quanto por
mdulos RAM. Os mdulos ROM, por serem no-volteis, armazenam o cdigo do programa
executado pelo sistema. Quando no possvel o armazenamento do cdigo completo, apenas
uma rotina de inicializao (bootstrap) armazenada no bloco ROM. Tal rotina encarregada
da carga do cdigo completo, a partir de uma fonte externa, no momento da inicializao do
sistema. J os mdulos RAM, os quais so do tipo voltil, possibilitam a execuo do
software disponibilizando armazenamento temporrio para variveis e estruturas utilizadas na
execuo das tarefas. Em funo do maior custo financeiro de um mdulo RAM em relao
ao ROM, geralmente a disponibilidade do primeiro reduzida, o que implica na escrita de um
software que minimize a utilizao deste recurso.

3.2.1.3 Perifricos

Um sistema embarcado utiliza perifricos para se comunicar com o mundo externo. Os
perifricos de entrada geralmente consistem em sensores que medem algum aspecto do
ambiente externo (como temperatura, presso, altitude, etc.) e assim determinam de forma
efetiva as sadas disponibilizadas pelo sistema embarcado. Dentre os principais tipos de
perifricos, se pode citar os seguintes:
Binrios: pinos externos simples, cujo estado lgico pode ser 1 ou 0. Podem
ser utilizados individualmente ou agrupados, formando interfaces paralelas;
Seriais: interface composta de um ou dois pinos, que emprega o modo serial de
comunicao. Facilita a conexo ao passo que dificulta a programao;
Analgicos: quando a interface realizada diretamente com o mundo externo,
faz-se necessrio o uso de conversores A/D e D/A, j que o sistema em si
opera apenas no domnio digital;
58
Displays: constituem uma forma de externalizar informaes geradas pelo
sistema. Como exemplos se pode citar Ligth Emission Diodes (LEDs), displays
de sete segmentos e painis Liquid Crystal Display (LCD);
Sadas derivadas de tempo: temporizadores e contadores so provavelmente as
funes mais utilizadas num sistema embarcado.

3.2.1.4 Software

Mais do que apenas o programa que executado pelo sistema, o elemento software
tambm abrange a tecnologia que agrega valor ao sistema e define o desempenho que o
mesmo capaz de obter. Neste contexto, outros componentes que se pode citar so:
Inicializao e configurao;
Sistema Operacional ou ambiente de execuo;
Tratamento de excees;
Suporte a depurao de cdigo e manuteno.

3.2.1.5 Algoritmos

Os algoritmos se constituem no componente principal do elemento de software e
definem as funcionalidades disponibilizadas por um sistema embarcado, bem como a forma
que elas so implementadas. A escolha dos algoritmos constitui um ponto crtico, pois
conforme j mencionado, a idia de satisfazer os requisitos do sistema, empregando para isso
o mnimo de recursos necessrios, geralmente premissa de um sistema embarcado. A
utilizao de algoritmos otimizados permite a execuo de uma mesma tarefa numa
plataforma mais enxuta, o que permite a reduo no apenas do custo financeiro, mas tambm
da rea e consumo de potncia do mesmo.

3.2.2 Aplicaes

Alm das aplicaes j citadas nas sees anteriores, sistemas embarcados tambm
podem ser empregados em inmeras outras reas, como (EMBEDDED, 2007) (DE
MICHELI, 1994) (CHIODO, 1994) (KUTTNER, 1996) (FONS, 2006):
59
Telecomunicaes: de centrais telefnicas a telefones mveis, incluindo
tambm equipamentos de rede computacional, como roteadores e bridges;
Eletrnica de consumo: Personal Digital Assistants (PDAs), aparelhos de
MPEG-1 Audio Layer 3 (MP3), Compact Disc (CD) e Digital Vdeo Disc
(DVD), consoles de vdeo-game, receptores de Global Positioning System
(GPS), etc.;
Eletrodomsticos: fornos de microondas, lavadoras de loua e de roupas,
refrigeradores, televisores, condicionadores de ar, etc.;
Transportes: desde sistemas terrestres (controle de estabilidade, trao,
combusto, etc.) at areos (sistema de direo inercial, comunicao,
navegao, metereolgico, etc.);
Medicina: monitoramento de sinais vitais, estetoscpios eletrnicos,
diagnstico por imagens (tomografia, ressonncia magntica), etc.;
Militar: radar, sonar, reconhecimento automtico de alvo, guerra eletrnica
(manipulao do espectro eletromagntico, impossibilitando o uso do mesmo
pelos inimigos e otimizando para os aliados), inteligncia de sinais
(interceptao e decodificao de mensagens), etc.;
Outros usos: reconhecimento de impresses digitais, inspeo de colheita,
monitoramento marinho (rastreamento de cardumes e mamferos marinhos,
identificao de derramamento de leo), etc..

3.3 Co-projeto de hardware e software

3.3.1 Definies

De uma maneira simplificada, o co-projeto de hardware e software pode ser definido
como o desenvolvimento concorrente de hardware e software, a partir de uma metodologia
comum (ADAMS, 1996). Tal metodologia empregada no desenvolvimento de sistemas
heterogneos, dentre os quais se pode citar (NIEMANN, 2007) (ADAMS, 1996):
Sistemas embarcados;
Sistemas multiprocessados heterogneos;
Processadores de conjunto de instrues de aplicao especfica;
Unidades funcionais de propsito especfico;
60
Co-processadores de aplicao especfica.
Tradicionalmente, o fluxo de projeto baseado na metodologia de co-projeto de
hardware e software dividido, basicamente, em trs etapas, conforme ilustrado na Figura
3.1. A primeira etapa se constitui no levantamento dos requisitos do sistema, tanto os
funcionais, ou seja, o que exatamente o sistema deve fazer, quanto os no-funcionais, como
velocidade, atraso, custo e consumo de potncia (COELHO, 1998). Inicialmente tais
requisitos so apurados informalmente, com o uso de linguagem natural Em seguida, so
organizados de uma forma mais estruturada, de uma maneira que consideraes tcnicas
possam ser efetuadas sobre os mesmo. Com base nestas consideraes que se d o
particionamento dos recursos, o qual consiste na especificao de quais partes do sistema
sero implementadas em software, e quais sero compostas por hardware. Neste contexto, os
requisitos no-funcionais exercem uma grande influncia, pois a reduo no custo final do
produto geralmente est associada ao mapeamento do maior nmero possvel de funes para
software, enquanto que a implementao de tarefas em hardware propicia uma acelerao na
execuo e reduo no consumo de potncia das mesmas. Ainda nesta etapa so definidos
aspectos que devem ser comuns s partes de hardware e de software, como a forma de
representao dos dados (big-endian ou little-endian), protocolos de comunicao, etc.


Figura 3.1 Fluxo tradicional de co-projeto de hardware e software.

Na segunda etapa o fluxo se divide em dois caminhos distintos, mas que seguem de
forma paralela: especificao e construo de hardware e especificao e construo de
software. Aps o desenvolvimento da infra-estrutura de hardware, a mesma validada de
forma individual pela escrita de software bsico de teste, que verifica, por exemplo, as
interfaces com a memria, entre os chips e com processador. Enquanto isso, o software que
61
ir ser executado sobre essa plataforma de hardware implementado. Na falta da plataforma
real para a execuo dos testes, geralmente um emulador construdo, permitindo assim que
testes bsicos de interface com o Sistema Operacional sejam efetuados, bem como
possibilitando a otimizao e validao dos algoritmos (TOWNSEND, 2005).
Finalmente, na terceira fase ocorre a integrao dos caminhos que haviam se dividido
logo aps a especificao inicial. O software ento integrado ao hardware e os testes de
integrao so executados. Os requisitos iniciais so ento verificados e o projeto tido como
finalizado caso os mesmos tiverem sido satisfeitos. Caso contrrio, o processo entra num lao
iterativo de ajustes de integrao seguidos por verificao de requisitos at que os mesmos
sejam satisfeitos. Nesta etapa, os ajuste dizem respeito principalmente, seno totalmente, s
partes de software, j que o re-projeto das partes de hardware demorado e custoso, de um
ponto de vista financeiro.

3.3.2 Limitaes

A partir da descrio do fluxo tradicional dada na seo anterior, possvel antever
uma srie de dificuldades, sendo que as principais se originam nas desconexes no
particionamento de hardware e software que so detectadas apenas durante a etapa de
integrao. Tais incompatibilidades descobertas de forma tardia incorrem no apenas na
extrapolao do oramento e do prazo do projeto, mas tambm na possibilidade do sistema
no satisfazer os requisitos iniciais, no pior dos casos (KUTTNER, 1996).
A causa de tais problemas est relacionada utilizao do modelo de desenvolvimento
em cascata, onde as tarefas so executadas de forma isolada e desconexa, tornando assim o
processo difcil, custoso e altamente susceptvel a erros. A maior prova desta ineficincia do
modelo reside justamente no fato das incompatibilidades entre software e hardware serem
endereadas apenas no final do processo (KUTTNER, 1996).

3.3.3 Evoluo

Diante das incontveis dificuldades apresentadas pelo modelo tradicional de co-projeto
de hardware e software, novas metodologias, cujo principal intuito era o de explorar a
heterogeneidade deste tipo de sistemas, comearam a ser propostas. Durante a dcada de 90
os esforos se concentraram na tentativa do desenvolvimento de um ambiente que favorecesse
62
o aspecto cooperativo do processo e que possibilitasse a modelagem e simulao do sistema
como um todo.
Segundo De Micheli (1994) e Chiodo (1994), o suporte das ferramentas de Computer
Aided Design (CAD) da poca ao co-projeto de hardware e software era ainda primitivo, pois
os modelos no eram abstratos o suficiente para permitir uma modelagem em nvel de
sistema. Em contrapartida, tais modelos tambm no possuam detalhamento suficiente que
possibilitasse um particionamento eficiente de recursos a partir de uma estimativa de custos
(neste caso, rea, consumo de potncia, velocidade, etc.) em nvel fsico.
Entretanto, a percepo de tais carncias abriu espao para a pesquisa e
desenvolvimento destas reas, dando origem a um modelo mais robusto, capaz de enderear
as fraquezas do anterior, como o ilustrado na Figura 3.2. Num ambiente baseado neste


Figura 3.2 Fluxo atual de co-projeto de hardware e software.

modelo, as especificaes em nvel de sistemas so inicialmente fragmentadas em blocos
bsicos, denominados grnulos. O particionamento efetuado a partir de um mapeamento
timo dos grnulos, o qual utiliza como parmetro uma estimativa de custo gerada a partir das
mtricas de custo determinadas para cada um dos grnulos. Como mtricas de custo entende-
se rea, tempo de execuo, consumo de potncia, etc. no caso de hardware e tempo de
execuo e consumo de memria (de programa e dados) no caso de software. Em seguida
63
ocorre a co-sntese das especificaes, pelo mapeamento dos grnulos para suas respectivas
implementaes lgicas de hardware e software e posterior sntese dos elementos de
hardware e compilao dos elementos de software. O desempenho final do sistema ento
obtido a partir da co-simulao do conjunto de Application Specific Integrated Circuits
(ASICs) e programas assembler resultante da etapa anterior. Neste momento, caso as
restries de desempenho e custo forem satisfatrias, o processo encerrado. Caso contrrio,
o ciclo e reiniciado a partir da etapa de particionamento e repetido at que restries
aceitveis sejam obtidas.
Como exemplo de sistemas que disponibilizam conjuntos de ferramentas integradas
para o projeto automatizado de sistemas podem ser citados os ambientes METROPOLIS e
SONORA (GUPTA, 2002). METROPOLIS um ambiente de desenvolvimento para sistemas
de tempo-real, que decompe uma especificao num conjunto de processos concorrentes e
intercomunicantes. O particionamento feito de forma manual. J o ambiente SONORA tem
como objetivo o desenvolvimento de sistemas embarcados, utilizando para isto uma
combinao de ferramentas comerciais e acadmicas.

3.3.4 Tendncias

Uma das tecnologias que tem contribudo para avanos significativos na rea de co-
projeto de hardware e software a computao re-configurvel (WOLF, 2003).
Historicamente, FPGAs tm sido usados como forma de conectar os vrios elementos de um
sistema (DAVIS, 2005), como sistemas de emulao para ASICs (NIEMANN, 2007), ou
como co-processadores re-configurveis (NARASIMHAN, 1996).
Entretanto, as geraes mais recentes de FPGAs tem disponibilizado no apenas cada
vez mais rea, como tambm mais recursos embutidos no prprio dispositivo, fazendo com
que o mesmo deixe de ser apenas um elemento e adquira o status de plataforma de
desenvolvimento. Como exemplos de recursos dedicados que tm sido acrescentados nos
FPGAs podem ser citados blocos multiplicadores-acumuladores, blocos RAM, manipuladores
de clock, transceivers e inclusive microprocessadores (XILINX, 2007).
Concomitantemente com a evoluo dos FPGAs foram desenvolvidos mtodos de
desenvolvimento de sistemas embarcados baseados em plataforma FPGA, como o proposto
por Davis (2005). Tal mtodo consiste num fluxo centrado em software, ou seja, que utiliza
uma linguagem de alto nvel, como C/C++, para a concepo do sistema. O particionamento
efetuado automaticamente com o uso de compiladores C-to-hardware, a partir das mtricas de
64
desempenho obtidas pelo perfilamento da aplicao. A Figura 3.3 ilustra uma arquitetura
projetada com base neste fluxo, onde o microprocessador utilizado pode ser tanto um hard
processor (mdulo fsico, embutido no FPGA) ou soft processor (mdulo lgico,
implementado na rea programvel do FPGA).


Figura 3.3 Arquitetura co-processada com mltiplos aceleradores em hardware.

4 SISTEMA EMBARCADO PARA EXTRAO E RECONHECIMENTO
DE CARACTERES PTICOS

4.1 Introduo

Conforme discutido brevemente no captulo introdutrio, a proposta deste trabalho
consiste no desenvolvimento de uma soluo embarcada capaz de resolver a problemtica da
extrao e reconhecimento de caracteres pticos presentes em imagens digitais binrias. A
partir das consideraes realizadas no Captulo 3, a plataforma adotada na construo de tal
sistema embarcado consiste num dispositivo FPGA. O dispositivo utilizado neste trabalho
(Xilinx XC2VP30-FF896) possui dois microprocessadores PowerPC 405 fisicamente
implementados (hard cores) no seu interior, permitindo assim que se possa optar pelo
emprego de hard ou soft cores.
A escolha de um modelo heterogneo para a construo do sistema se justifica pelas
vantagens apresentadas pelo mesmo em relao a modelos homogneos. Num modelo
heterogneo, os blocos construtores do sistema podem ser implementados tanto em hardware,
como em software, de acordo com as restries existentes, enquanto no modelo homogneo
os blocos so implementados por um elemento apenas (hardware ou software). Desta
maneira, o emprego de um modelo heterogneo possibilita estabelecer um compromisso entre
a flexibilidade de um sistema totalmente em software (aplicativo) e o alto desempenho de um
sistema totalmente em hardware (ASIC). Em outras palavras, para um dado sistema, a verso
embarcada possui um maior desempenho, menor rea e consumo de potncia que a verso
totalmente em software, ao mesmo tempo em que apresenta uma reduo de custos
financeiros, complexidade e time to market em relao verso exclusivamente em hardware.
No que diz respeito escolha da plataforma FPGA, vale ressaltar que a mesma se deu
principalmente em funo de duas caractersticas apresentadas pelo dispositivo: flexibilidade
e praticidade. Enquanto sistemas embarcados baseados em micro-controladores so prticos
no sentido de permitir a implementao do sistema em um chip nico, no so flexveis no
que diz respeito possibilidade de aumentar o desempenho a partir do uso de hardware
dedicado. J no caso de DSPs, ocorre o inverso. Com o advento de microprocessadores
embarcados, FPGAs permitem tanto a acelerao de funes via hardware dedicado, como a
implementao do sistema em um chip nico (salvo o caso de interface direta com o mundo
externo, onde conversores A/D e D/A so necessrios). No caso desta proposta, o sistema
66
embarcado composto pelo FPGA e um chip de memria voltil externa, este ltimo
utilizado na execuo do software embarcado.
De acordo com a informao tambm j mencionada no captulo inicial, o sistema
implementado neste trabalho utilizou um SRPLV como estudo de caso. No intuito de
contextualizar SRPLVs em relao classificao de trs nveis discutida no Captulo 2, tem-
se a Figura 4.1. Nesta figura se verifica que dois dos trs principais mdulos componentes de
um SRPLV so classificados como de nvel intermedirio no contexto de viso
computacional, pois utilizam mtodos de segmentao (binarizao, geralmente), bem como
de representao e descrio (etiquetao de componentes conectados, cdigos de cadeia,
skeletons, etc.). J o outro mdulo principal (reconhecimento de caracteres) realiza
processamento de alto nvel, haja vista que emprega mtodos de reconhecimento de padres,
como casamento de padres e RNAs. Eventualmente, uma mesma tcnica pode ser utilizada
em nveis diferentes, como no caso da binarizao, que pode ser empregada tanto como
tcnica de pr-processamento, quanto como tcnica de segmentao.


Figura 4.1 Relao entre os principais mdulos de um SRPLV e a classificao de trs nveis adotada na
rea de viso computacional.

Na prxima seo a proposta discutida de forma detalhada, sem no entanto
mencionar as questes referentes implementao da mesma. Tais questes sero abordadas
no captulo seguinte.

4.2 A proposta

No por acaso os blocos referentes extrao e reconhecimento de caracteres foram
destacados na Figura 4.1. Esse artifcio foi propositalmente empregado no intuito de frisar que
67
o foco desta proposta se concentra em tais blocos, enquanto a localizao da placa foi alvo de
pesquisa de Pacheco (2007), num trabalho conduzido praticamente em paralelo a este.
Assim sendo, a Figura 4.2 apresenta o diagrama de blocos do sistema proposto. A
entrada dada por uma imagem binria na qual espera-se estar contida a placa de
licenciamento de um veculo. J a sada consiste nos caracteres que formam a mesma,
representados no formato ASCII, caso haja realmente alguma placa na imagem. Essa imagem
de entrada obtida a partir das coordenadas fornecidas pelo mdulo implementado por
Pacheco (2007). Tais coordenadas identificam uma regio retangular na imagem de um
veculo em trnsito, onde existe uma alta probabilidade de estar situada a placa de
licenciamento do mesmo. J em relao sada do sistema, a mesma composta por sete
caracteres alfanumricos, sendo os trs primeiros constitudos por letras e os quatro ltimos
por nmeros, haja vista que esta proposta aborda placas de licenciamento veicular no padro
brasileiro.


Figura 4.2 Digrama de blocos da proposta desenvolvida neste trabalho.

Geralmente, como o caso de Pacheco (2007), a etapa de localizao da placa de
licenciamento veicular efetuada a partir de uma imagem em 256 tons de cinza, sendo a
mesma convertida para dois tons de cinza na etapa de extrao dos caracteres. Entretanto,
como esta proposta leva em considerao uma imagem de entrada em dois tons de cinza, ser
necessria a implementao de um processo de converso no intuito de contornar essa
questo. Tal processo, denominado segmentao, ser implementado como parte do sistema
sobre plataforma x86, mas no compor, entretanto, o sistema de extrao e reconhecimento
aqui proposto. Dentre as tcnicas de segmentao, a mais comum a denominada
limiarizao de nveis de cinza (ou apenas limiarizao, ou tambm binarizao) (SONKA,
2007). Tal tcnica extensivamente utilizada em SRPLVs, tanto pelo emprego do mtodo de
limiar global, quanto pelo de limiar local (LOTUFO, 1990) (NIJHUIS, 1995) (BARROSO,
68
1997) (SOUZA, 2000) (DIAS, 2005). A Figura 4.3 ilustra o diagrama do processo auxiliar de
gerao da imagem de entrada para o sistema de extrao e reconhecimento de caracteres.
Como entrada deste processo, tm-se as coordenadas da regio candidata, dadas pelo
mdulo desenvolvido por Pacheco (2007), bem como a imagem original em 256 tons de cinza
utilizada na obteno das mesmas. A regio candidata ento extrada da imagem original e
em seguida segmentada pela aplicao do processo de limiarizao, dando origem, assim,
imagem em dois tons de cinza. No intuito de selecionar o mtodo de limiarizao capaz de
gerar as entradas que melhor se adequam ao sistema proposto, tanto um mtodo de limiar
global (Otsu), quanto um de limiar local (Niblack) sero avaliados.


Figura 4.3 Diagrama de blocos do processo auxiliar utilizado na gerao das entradas do sistema aqui
proposto.

Conforme j mencionado na Seo 1.3, uma verso em software do sistema foi
inicialmente construda sobre plataforma x86, no intuito tanto de avaliar uma srie de
mtodos selecionados, quanto de elaborar um parmetro de comparao para a verso
heterognea do sistema construda na seqncia. No tocante natureza dos mtodos
selecionados para avaliao, todos eles esto relacionados etapa de extrao de caracteres,
haja vista que o emprego de RNAs na etapa de reconhecimento j havia sido definido desde o
primeiro esboo da proposta. Os motivos que conduziram a esta deciso so discutidos mais
adiante, na Seo 4.2.2.
Outra definio tomada a priori diz respeito ao particionamento dos elementos de
hardware e software do sistema embarcado. Conforme ilustrado na Figura 4.2, definiu-se que
as tarefas relacionadas ao mdulo de extrao de caracteres teriam uma implementao
dedicada em hardware, enquanto o processo de reconhecimento dos caracteres seria efetuado
em software, com o auxlio de um microprocessador (hard ou soft) embarcado no FPGA. Essa
deciso foi baseada nas seguintes heursticas:
muitas das tarefas executadas no mdulo de extrao de caracteres basicamente
se resumem no processamento seqencial de uma matriz de pixels, adotando
69
operaes de baixo custo de hardware, como comparaes ou acumulaes.
Assim sendo, o desempenho das mesmas pode ser significativamente
aumentado pela paralelizao de tais operaes, ao mesmo tempo em que os
requisitos de rea e de complexidade so mantidos em nveis aceitveis;
apesar de RNAs apresentarem uma estruturao propcia para implementao
em hardware, o custo de rea de uma rede totalmente conectada tende a ser
elevado, j que normalmente cada neurnio requer um multiplicador distinto
(levando em considerao que a fase de treinamento no necessita ser efetuada
no sistema).
A seguir, cada um dos blocos componentes do sistema discutido de uma forma mais
detalhada.

4.2.1 Extrao dos caracteres

A primeira etapa executada pelo sistema a extrao dos caracteres contidos na
imagem de entrada, etapa esta por vezes denominada segmentao dos caracteres. Conforme
ilustrado no diagrama de blocos da Figura 4.4, o mdulo composto por duas tarefas
principais: a localizao e a normalizao de objetos. A idia geral a de identificar e separar
os objetos presentes em uma imagem, redimensionando posteriormente aqueles cujas
dimenses estejam dentro de uma faixa pr-estabelecida.


Figura 4.4 Fluxograma referente ao bloco de extrao dos caracteres, anterior anlise dos mtodos.

Tendo como entrada uma imagem binria, onde os pixels de cor preta identificam os
objetos e os de cor branca, o fundo, a tarefa de localizao de objetos responsvel pela
gerao de uma tabela de coordenadas dos objetos. Cada registro existente nesta tabela
70
identifica um objeto distinto e fornece as coordenadas superior esquerda e inferior direita do
retngulo virtual que define os limites do objeto.
Dentre os mtodos mais comumente utilizados na realizao da tarefa de localizao
dos caracteres encontram-se a etiquetao de componentes conectados, a projeo horizontal
e vertical e a caixa limitante adaptativa. No caso dos dois primeiros mtodos, as coordenadas
das regies encontradas devem ser apuradas por intermdio de um processo adicional, haja
vista que a localizao das mesmas dada de forma indireta, diferentemente do ltimo
mtodo. No intuito de avaliar os prs e contras da utilizao, bem como o desempenho de
cada um deles, todos foram selecionados para a implementao inicial em software.
Na seqncia do processo de extrao dos caracteres executada a tarefa de
normalizao dos mesmos, a partir da tabela que contm as coordenadas dos objetos
localizados na imagem. Essa tabela processada de forma seqencial, no intuito de executar a
normalizao apenas dos objetos classificados como caracteres. Essa classificao se faz
necessria para evitar que outros elementos no-alfanumricos que porventura venham a
compor a imagem (bordas da placa, parafusos de fixao, sujeira, etc.) sejam disponibilizados
como sada do mdulo.
Uma das formas utilizadas para classificar os objetos consiste na verificao
empregada ao final do mtodo da caixa limitante adaptativa, que se baseia nas dimenses do
objeto em questo. Caso as dimenses do objeto estejam dentro de uma faixa pr-
estabelecida, o mesmo considerado um caractere, caso contrrio, no. Neste sentido, os
parmetros utilizados pelo critrio (altura e largura) so definidos a partir da distncia entre a
regio de interesse (a placa, neste caso) e a cmera no momento da aquisio da imagem.
Desta forma, quanto maior a distncia, menor a regio e vice-versa.
Cada objeto classificado como caractere ento normalizado, no intuito de descrever a
regio em questo de uma forma apropriada para a prxima etapa de reconhecimento,
conforme descrito anteriormente na Seo 2.2. Neste sentido, a normalizao consiste no
redimensionamento do caractere para uma matriz de tamanho fixo, cujas dimenses so
definidas e justificadas em seguida, na seo referente ao mdulo de reconhecimento de
caracteres. Como premissa, o mtodo a ser utilizado no processo de redimensionamento deve
permitir ambas as operaes de ampliao e reduo.
Aps uma reviso bibliogrfica sobre redimensionamento de imagens, que incluiu
referncias como (GONZALES, 2002) (KIM, 2003) (ANDREADIS, 2005) e (HWANG,
1997), optou-se pelo emprego da variante mais simples deste mtodo: a interpolao vizinho
mais prximo. A justificativa para tal escolha reside no fato de que a imagem produzida
71
como sada deste mdulo no se destina audincia humana, mas sim a um processo
computacional de reconhecimento de padres. Neste caso, mais importante que a fidelidade
visual entre a imagem original e a redimensionada a similaridade entre a segunda e a sua
respectiva classe. Uma vez que um mesmo mtodo de redimensionamento utilizado para
gerar o conjunto de entradas utilizadas no treinamento do classificador e as entradas do
sistema em produo, a fidelidade visual uma caracterstica irrelevante.
Na seqncia, dada a teoria sobre os mtodos discutidos nesta seo.

4.2.1.1 Etiquetao de Componentes Conectados

Conforme mencionado na Seo 2.2, ao trmino do processo de segmentao de uma
imagem, as regies encontradas necessitam ser identificadas para que a descrio das mesmas
seja possvel. Tal processo denominado identificao de regies e uma das formas de
realizao do mesmo consiste no emprego da tcnica de etiquetao de componentes
conectados, tambm chamada colorao ou etiquetao, apenas (SONKA, 2007). Essa
tcnica se baseia nos conceitos de vizinhana (Seo 2.3.3.1) e conectividade (Seo 2.3.3.2)
dos pixels para atribuir uma etiqueta nica para cada regio distinta existente numa imagem.
Assumindo que uma imagem segmentada R composta por m regies distintas R
i
, as quais
englobam o fundo da imagem e os objetos encontrados na mesma, o conjunto que identifica
estes ltimos dado por

m
b i i
i
C
b
R R
=
=
, 1

onde R
C
o complemento do conjunto, R
b
o fundo da imagem e as demais regies so
consideradas como objetos.
A entrada de um algoritmo de etiquetao consiste numa imagem mono- (binria) ou
multi-nveis . J a sada se constitui numa imagem por vezes denominada simblica, onde o
fundo identificado por etiquetas de valor zero, enquanto os objetos por etiquetas de valor
maior que zero. No caso de uma imagem de entrada binria, os pixels brancos denotam o
fundo, enquanto os pretos, os objetos. Entretanto, nada impede que seja usada a lgica
inversa, conforme ilustrado na Figura 4.5(a).
O processo de etiquetao composto por duas etapas: atribuio de etiquetas e fuso
de etiquetas. A primeira etapa consiste na atribuio de uma etiqueta inicial a cada pixel que
compe um objeto. Entretanto, durante este processo, etiquetas de valor diferente podem ser
atribudas pixels que pertencem a um mesmo objeto, conforme ilustrado na Figura 4.5(b).
72
Desta forma, cada vez que uma situao destas ocorre, um par equivalente gerado e
armazenado para posterior processamento. Tal processamento, ilustrado na Figura 4.5(c),
ocorre justamente na segunda etapa, onde a etiqueta previamente atribuda a cada pixel
verificada na tabela de equivalncias e substituda, caso necessrio (leia-se: caso divergirem).


(a) (b) (c)
Figura 4.5 Ilustrao do processo de Etiquetao de Componentes Conectados.

Diversos mtodos seqenciais (ROSENFELD, 1966) (JEAN, 1994) (NICOL, 1995) e
paralelos (RASQUINHA, 1997) (WANG, 2003) (YANG, 2005) foram propostos para
resolver o problema de componentes conectados. Dentre os mtodos seqncias, Rosenfeld
(1966) props o algoritmo clssico, o qual efetua uma varredura dupla na imagem de entrada,
da direita para a esquerda, de cima para baixo, armazenando os pares equivalentes numa
ampla tabela. J dentre os mtodos pararelos, Yang (2005) props aquele considerado aqui
como estado da arte, o qual emprega dois elementos de processamento e armazena os pares
equivalentes numa matriz de classes. Como resultado, o mtodo proposto por Yang (2005)
obtm uma reduo tanto de espao para a alocao dos pares equivalentes, como no tempo
de processamento da imagem.
No tocante ao funcionamento do algoritmo proposto por Yang (2005), o mesmo utiliza
uma janela de trs linhas por quatro colunas, como a ilustrada na Figura 4.6, que deslocada
sobre a imagem de entrada, da esquerda para a direita, de cima para baixo, processando os
pixels P1 e P2 simultaneamente. Considerando os pixels L1~L6 como previamente
processados, inicialmente o valor de P1 verificado. Caso seja igual a zero (fundo), nenhum
par equivalente gerado, caso contrrio o valor da etiqueta do mesmo apurado a partir da
sua vizinhana, pela seguinte ordem de prioridade: L3, L5, L1, L2. Quando nenhum dos
vizinhos possuir uma etiqueta maior que zero, uma nova gerada. Neste momento, um par
equivalente gerado caso as etiquetas de (L3,L5) ou (L3,L1) sejam diferentes, desde que
tambm maiores que zero. Cada par equivalente enderea duas posies na matriz de classes.
Quando um par gerado, os contedos das posies endereadas so comparados e o maior
73
valor substitudo pelo menor. Um exemplo deste processo exibido na Figura 4.7, onde
inicialmente cada elemento possui um contedo distinto (Figura 4.7(a)). A matriz de classes
vai ento se transformando, conforme os pares so adicionados: primeiramente o par (1,3)
(Figura 4.7(b)), ento o par (2,4) (Figura 4.7(c)) e finalmente o par (1,4) (Figura 4.7(d)).
Concomitantemente, o mesmo processamento aplicado P1, aplicado P2, mas neste caso
considerando a vizinhana P1,L6,L4,L5. Na segunda etapa, conforme mencionado
anteriormente, a imagem simblica resultante percorrida por P1 e P2, sendo os valores das
etiquetas alterados conforme o contedo da matriz de classes.


Figura 4.6 Janela de processamento proposta por Yang (2005).



(a) (c)


(b) (d)
Figura 4.7 Ilustrao das iteraes que ocorrem na matriz de classes.

4.2.1.2 Projeo horizontal e vertical

A projeo, ou projeo de amplitude, um mtodo que basicamente consiste no
somatrio unidimensional do nmero de pixels que possui um determinado nvel de cinza.
Neste sentido, os dois tipos mais comuns de projeo so o horizontal e o vertical, dados,
respectivamente, pelas seguintes equaes

=
=
X
x
y x f y H
1
) , ( ) (
(4.1)

=
=
Y
y
y x f x V
1
) , ( ) (
(4.2)
onde f(x,y) uma imagem digital, X o nmero de colunas desta imagem e Y o nmero de
linhas.
74
Tomando como exemplo uma imagem representada em dois nveis de cinza (binria),
onde o somatrio considera o nmero de pixels pretos em uma mesma direo, o resultado das
projees horizontal e vertical ilustrado na Figura 4.8. A partir dos resultados das projees
possvel extrair os caracteres com base na tcnica inicialmente proposta por Lu (1980 apud
BARROSO, 1997), denominada picos e vales, que define as fronteiras dos objetos a partir dos
vales existentes nas projees.




Figura 4.8 Resultado obtido pelo mtodo de projees.

4.2.1.3 Caixa Limitante Adaptativa

Outro mtodo tambm utilizado na identificao das regies existentes numa imagem
segmentada o citado por Souza (2000), proposto originalmente por Coetzee (1998). Tal
mtodo, denominado caixa limitante adaptativa, emprega uma estrutura de busca no formato
de um L invertido.
O funcionamento do algoritmo de busca dividido em trs etapas:
A estrutura no formato de L invertido, que possui um tamanho inicial
definido, deslocada pela imagem de entrada, da esquerda para a direita, de
cima para baixo. A cada nova posio, as seguintes condies so verificadas:
o Todos os pixels sobre os quais a estrutura de busca est atualmente
posicionada constituem o fundo da imagem?
o Existe um ou mais pixels pertencentes a objetos, tanto na adjacncia
direita, quanto na adjacncia inferior das barras vertical e horizontal,
respectivamente, as quais compem a estrutura de busca?
Caso a resposta para ambas condies for verdadeira, a atual posio
provavelmente consiste na borda esquerda superior de um caractere, conforme
ilustrado na Figura 4.9(a);
Uma segunda barra vertical ento deslocada para a direita, pixel a pixel, a
partir da coluna que integra a estrutura de busca. Esta segunda barra vertical
75
segue sendo deslocada enquanto pelo menos um dos pixels que a constitui
pertena a um objeto. Desta maneira determinada a largura do possvel
caractere, conforme ilustrado na Figura 4.9(b);
Finalmente, uma segunda barra horizontal, cuja largura igual quela apurada
na etapa anterior, deslocada para baixo, pixel a pixel, a partir da linha que
integra a estrutura de busca. Esta segunda barra horizontal segue sendo
deslocada enquanto pelo menos um dos pixels que a constitui pertena a um
objeto. Claramente, desta maneira determinada a altura do possvel caractere,
conforme ilustrado na Figura 4.9(c).
Aps a determinao da posio e das dimenses do objeto, uma verificao
realizada no intuito de classificar o mesmo. Para que o objeto seja classificado como
caractere, esse deve possuir um preenchimento igual ou superior a 15% da sua rea, conforme
ilustrado na Figura 4.9(d). Caso este critrio no seja satisfeito, o objeto no considerado
como caractere e descartado.


(a) (b) (c) (d)
Figura 4.9 Ilustrao do funcionamento do algoritmo caixa limitante adaptativa.

4.2.1.4 Interpolao Vizinho Mais Prximo

O redimensionamento de uma imagem, tpico este abordado Seo 2.3.2.3, se d por
meio de uma transformao geomtrica de escala na imagem original. Segundo Sonka (2007),
uma transformao geomtrica consiste numa funo-vetor T que mapeia o pixel (x,y) para
uma nova posio (x',y'), sendo a mesma definida pelas equaes componentes
x' = T
x
(x,y), y' = T
y
(x,y)
(4.3)
e composta por duas etapas:
Transformao de coordenada de pixel, que mapeia as coordenadas dos pixels
da imagem de entrada para os pontos na imagem de sada;
76
Localizao do ponto na matriz digital de entrada que corresponde ao ponto
transformado para a determinao do nvel de brilho do mesmo, o que
geralmente realizado por meio da tcnica de interpolao.
No que diz respeito etapa de transformao de coordenada de pixel, no caso de uma
transformao geomtrica de escala, a funo-vetor T dada por
x = ax
y = by
(4.4)
Como resultado da primeira etapa tem-se um conjunto de pontos transformados, definidos por
coordenadas (x',y') no-inteiras. O maior problema, neste caso, reside no fato da apurao do
valor de um dado pixel (x'',y'') (pertencente matriz discreta de sada) no ser possvel pelo
simples arredondamento das coordenadas no-inteiras (x',y'). Tal procedimento poderia causar
tanto a atribuio de mais de um nvel de brilho a um mesmo pixel, quanto a no-atribuio de
valor a alguns deles (OWENS, 2007).
A soluo consiste na apurao dos nveis de brilho a partir das coordenadas inteiras
definidas na prpria imagem de sada. Assim sendo, faz-se necessria a definio das
coordenadas (x,y) correspondentes a cada um dos pontos na imagem de sada. Tais
coordenadas de origem so computadas a partir da inverso da transformao dada pela
Equao (4.3), resultando em

(x,y) = T
-1
(x'',y'') (4.5)
Em geral, as coordenadas (x,y) apuradas pela transformao inversa tambm no constituem
pontos discretos na matriz de origem. Entretanto, dadas as matrizes discretas de origem f
o
(x,y)
e de destino f
d
(x'',y''), os nveis de brilho f
d
(x'',y'') podem ser obtidos a partir da tcnica de
interpolao vizinho mais prximo. Para tanto, essa tcnica atribui ao ponto (x'',y'') o nvel
de brilho do ponto discreto mais prximo a (x,y). Desta forma, a interpolao vizinho mais
prximo dada por

f
d
(x'',y'') = f
d
(arredonda(x),arredonda(y)) (4.6)

4.2.2 Reconhecimento dos caracteres

A segunda e ltima etapa do sistema aqui proposto consiste no reconhecimento dos
objetos apurados na etapa anterior. Conforme ilustrado na Figura 4.4, tais objetos j se
encontram descritos num formato prprio para utilizao como entrada do processo de
reconhecimento, ou seja, normalizados numa matriz de tamanho padro.
77
De acordo com o disposto na Seo 2.5.7, os principais mtodos empregados na tarefa
de reconhecimento so o Estatstico (mquinas de suporte vetorial, anlise de agrupamentos),
o Conexionista (RNAs) e o Sinttico (anlise baseada em gramtica).
Neste trabalho ser empregado o mtodo Conexionista na execuo da tarefa de
reconhecimento de caracteres. A escolha de RNAs para a execuo desta tarefa pode ser
justificada por uma srie de razes, dentre as quais:
RNAs tm sido utilizadas com sucesso na soluo dos mais diversos problemas
cientficos e industriais relacionados rea da viso computacional (MOLZ,
2001) (JHNE, 2000);
RNAs so capazes de solucionar problemas que por meio de mtodos
tradicionais so de difcil modelagem (MOLZ, 2001). Neste caso a soluo
construda de forma iterativa a partir do treinamento da rede;
A capacidade de generalizao das RNAs permite que os padres sejam
corretamente identificados mesmo na presena de um certo nvel de rudo.
Entenda-se por rudo, neste caso, a m formao ou certa distoro no ngulo
dos caracteres, por exemplo;
Vrios SRPLVs tm empregado RNAs como mtodo de reconhecimento de
caracteres, dentre os quais aqueles citados por Anagnostopoulos (2006),
Bremananth (2005), Gesualdi (2002), Campos (2001), Yap (1999), Coetzee
(1998), Draghici (1997) e Nijhuis (1995).
Conforme mencionado por Dias (2005), um dos problemas existentes em relao ao
processo de reconhecimento de caracteres alfanumricos diz respeito semelhana na
tipografia de caracteres diferentes. Como exemplo, pode-se citar o caso dos caracteres {0,
O, Q, D}, {2, 7, Z}, {4, A}, {5, S}, etc. No intuito de resolver os conflitos
entre letras e nmeros semelhantes, esta proposta emprega dois artifcios:
A sintaxe da placa de licenciamento veicular brasileira (trs letras seguidas por
quatro nmeros);
RNAs distintas para letras e nmeros, onde a seleo da rede utilizada feita a
partir da regra definida no item anterior (sintaxe da placa).
A partir da definio da existncia de redes distintas para letras e nmeros, j
possvel esboar a topologia para cada uma delas. Como neste caso optou-se pela utilizao
da codificao 1-de-C, onde cada classe representada por um neurnio distinto, ento a rede
das letras ter 26 neurnios na camada de sada, enquanto a de nmeros, 10. A camada de
78
entrada ser idntica para ambas as redes, possuindo, num primeiro momento, 225 neurnios
(matriz de 15x15), conforme sugerido por (DRAGHICI, 1997) (COETZEE, 1998) (NI, 2007).
J o nmero de camadas escondidas, bem como o nmero de neurnios em cada uma delas
ser determinado a partir de simulaes.
Em relao s etapas de treinamento e propagao, apenas a segunda necessita fazer
parte do sistema em si. A justificativa para tal reside no fato de que uma vez definidos os
pesos para cada sinapse, eles geralmente no so mais alterados, haja vista a capacidade de
generalizao de uma rede adequadamente treinada. Desta maneira, a etapa de treinamento
ser implementada como uma opo do software sobre plataforma x86, mas no constituir o
sistema de extrao e reconhecimento de caracteres pticos.
Dentre os diferentes tipos de RNAs, a do tipo PMC foi a selecionada para constituir o
classificador alfanumrico do sistema. O aprendizado nas redes PMC efetuado de modo
supervisionado a partir do algoritmo de treinamento denominado retropropagao de erro. No
que diz respeito funo de ativao dos neurnios, ser utilizada a tangente hiperblica, haja
vista que funes anti-simtricas geralmente implicam num tempo de treinamento (nmero de
iteraes) menor do que as no simtricas, como a funo logstica (HAYKIN, 2002). A
seguir discutida a estrutura, bem como, principalmente, o algoritmo de treinamento de uma
rede PMC.

4.2.2.1 RNAs Perceptron de Mltiplas Camadas

Conforme j mencionado na Seo 2.4.4, redes PMC so derivadas das redes
feedforward de mltiplas camadas. Entretanto, por conta do aprendizado se dar por meio do
algoritmo de retropropagao de erro, o fluxo de sinais nas redes PMC se d em ambas as
direes, conforme ilustrado na Figura 4.10. Desta maneira, os tipos de sinais existentes em
tais redes so os seguintes:
Sinais de Funo: um sinal de funo consiste num estmulo que, a partir da
camada de entrada, propagado para adiante, neurnio por neurnio, at a
ltima camada, onde tido como um sinal de sada. Um sinal de funo assim
se denomina pois (a) presume-se que realize alguma funo significativa e (b)
porque em cada neurnio que passa, o mesmo calculado em funo das
entradas e pesos relativos quele neurnio.
Sinais de Erro: um sinal de erro se origina num neurnio da ltima camada e
propagado no sentido inverso ao do sinal de funo, camada por camada, at a
79
primeira camada escondida. Um sinal de erro assim denominado porque o
clculo do mesmo envolve uma funo de erro dependente, de uma forma ou
de outra.


Figura 4.10 Tipos de sinais numa rede PMC.

A existncia de tais tipos de sinais em uma rede PMC se deve ao fato do treinamento
da mesma ser realizado por intermdio do algoritmo de retropropagao de erro. Basicamente,
tal algoritmo consiste em duas etapas. Na primeira delas so calculados os sinais de funo
dos neurnios da rede, processo este que ocorre na direo da entrada para a sada. J na
segunda etapa, a qual ocorre no sentido da sada para a entrada (da o nome do algoritmo), so
computados os sinais de erro. Tais sinais de erro so dados em funo da diferena entre a
sada atual e esperada de cada neurnio, sendo tais sinais utilizados no ajuste dos pesos das
conexes, no intuito de reduzir o erro apurado.
De um modo formal, o aprendizado por retropropagao de erro pode ser explicado a
partir do grafo ilustrado na Figura 4.11, onde o ndice i diz respeito camada de entrada, o
ndice j camada escondida e o ndice k, camada de sada.


Figura 4.11 Grafo de fluxo de sinal ilustrando os detalhes de uma conexo entre os neurnios j e k
(HAYKIN, 1999).
80
Na primeira etapa do processo de aprendizado por retropropagao de erro, a
computao do sinal de funo de um dado neurnio j inicia pela apurao do campo local
induzido do mesmo
onde m o nmero total de entradas (excluindo o bias) conectadas ao neurnio j. Desta
forma, o valor do sinal de funo deste neurnio para a iterao n (apresentao do n-simo
padro de treinamento) dado por
O mesmo processo de propagao em direo camada de sada realizada para o neurnio
k, entretanto utilizando agora a sada y
j
(n) como entrada.
Aps a propagao dos sinais de funo por todos os neurnios da rede, ocorre a
apurao do sinal de erro, a partir dos nodos de sada da mesma. Assim sendo, o sinal de erro
para um neurnio de sada k dado por
onde d
k
(n) o valor desejado para o neurnio k. A partir de e
k
(n) torna-se possvel a apurao
do valor instantneo da energia de erro para o neurnio k, dado por ) ( 2 1
2
n e
k
. Em
conseqncia, obtm-se o valor instantneo da energia de erro total, o qual consiste no
somatrio dos valores instantneos da energia de erro de todos os neurnios da camada de
sada, expresso por

onde C corresponde ao conjunto de neurnios na camada de sada. Finalmente, a energia de
erro quadrtica mdia, obtida pelo somatrio dos (n) de todas as iteraes n e normalizada
em relao a N dada por
onde N o tamanho do conjunto de amostras utilizado no processo de aprendizado. Para um
dado conjunto de treinamento, a energia de erro mdio
av
representa a funo de custo como
uma medida de desempenho de aprendizado.
Durante o processo de aprendizado busca-se reduzir o valor de tal funo de custo pelo
ajuste gradual dos parmetros livres da rede (pesos de sinapse e nveis de bias). Tais ajustes
podem ser realizados aps a apresentao de cada padro de treinamento n (treinamento
seqencial), bem como somente aps uma poca, ou seja, aps a apresentao de todo o

( )

=
=
m
i
i ji j
n y n w n
0
) ( ) ( (4.7)
( ) ) ( ) ( n n y
j j j
= (4.8)

) ( ) ( ) ( n y n d n e
k k k
= (4.9)

) (
2
1
) (
2
n e n
C k
k

= (4.10)

) (
1
1
n
N
N
n
av
=
= (4.11)
81
conjunto de treinamento (treinamento em lote). Independente do momento do ajuste, o mesmo
ocorre no sentido inverso do utilizado na apurao do sinal de funo e consiste na adio de
uma parcela de ajuste ao peso de cada sinapse, parcela essa dada por
onde consiste na taxa de aprendizado e
k
(n) no gradiente local. No caso de um nodo de
sada, o gradiente local dado por
onde )) ( ( ' n
k k
consiste na primeira derivada da funo de ativao utilizada pelo neurnio.
J no caso de um neurnio j, situado numa camada escondida, o clculo do gradiente local do
mesmo no pode ser efetuado de forma direta, pois no h um valor de sada desejado para o
mesmo, como ocorre no caso de um nodo de sada. Neste caso, o sinal de erro deste neurnio j
deve ser apurado de forma recursiva em termos dos sinais de erro de todos os neurnios aos
quais este neurnio escondido est diretamente conectado. Desta maneira, o gradiente local de
um neurnio escondido j dado por
onde o sinal de erro do neurnio escondido j constitui-se no somatrio dos produtos entre os
gradientes locais e pesos das conexes de todos os neurnios conectados a j na direo da
sada.
No que diz respeito taxa de aprendizado, quanto menor o valor deste parmetro, mais
suave a trajetria descrita no espao de pesos durante o aprendizado e, conseqentemente,
maior o tempo de convergncia do processo. Por outro lado, o aumento do valor deste
parmetro se traduz numa convergncia mais rpida, ao passo que pode inserir instabilidade
no processo. Uma maneira de acelerar o processo e ao mesmo tempo minimizar o risco de
instabilidades consiste na insero do termo de momento parcela de ajuste de erro
onde consiste num valor situado no intervalo ]0,1], denominado constante de momento. A
incluso do termo de momento tende a acelerar a minimizao da funo de custo quando a
parcela de ajuste possuir o mesmo sinal por diversas iteraes, bem como a estabilizar
possveis oscilaes causadas por consecutivas parcelas de ajuste com sinais contrrios.
Como, em geral, a convergncia do algoritmo de retropropagao de erro no pode ser
demonstrada, no h um critrio bem definido para determinar a interrupo do mesmo. Neste
sentido, como o processo de atualizao dos pesos tem de ser interrompido em algum

) ( ) ( ) ( n y n n w
j k kj
= (4.12)

)) ( ( ' ) ( ) ( n n e n
k k k k
= (4.13)

=
k
kj k j j j
n w n n n ) ( ) ( )) ( ( ' ) (
(4.14)

) ( ) ( ) 1 ( ) ( n y n n w n w
j k kj kj
+ = (4.15)
82
momento, existem alguns critrios lgicos que podem ser empregados na determinao do
momento da interrupo, dentre os quais:
Norma Euclidiana: segundo Kramer e Sangiovanni-Vincentelli (1989 apud
HAYKIN, 1999), considera-se que o algoritmo de retropropagao de erro
convergiu quando a norma Euclidiana do vetor de gradiente ( ) ( ) ( n w n
kj
)
alcana um limite de gradiente suficientemente pequeno. O principal
empecilho deste critrio consiste na possibilidade de um tempo longo de
aprendizado.
Erro quadrtico mdio (EQM): considera-se que o algoritmo de
retropropagao de erro convergiu quando a taxa absoluta de alteraes no erro
quadrtico mdio (
av
) por poca suficientemente pequena. Por
suficientemente pequena entende-se uma taxa de variao entre 0,1% e 1% por
poca, embora taxas to pequenas quanto 0,01% possam ser utilizadas. O
empecilho deste critrio consiste na possibilidade de trmino prematuro do
processo de aprendizado.
Parada prematura: outro critrio empregado consiste na verificao do
desempenho de generalizao alcanado no processo de aprendizado a cada
iterao. Durante o treinamento de uma rede neural, o erro gerado pela mesma
tende a iniciar em um valor alto, baixar rapidamente e ento continuar
diminuindo de uma forma mais lenta conforme as iteraes ocorrem.
Entretanto, a partir de um certo nmero de iteraes a rede comea a se tornar
viciada (overfitted/overtrained) em relao ao conjunto de treinamento, o que
diminui a capacidade de generalizao da mesma. Uma soluo simples, porm
eficaz, consiste no emprego do mtodo de parada prematura. Inicialmente, o
conjunto de treinamento dividido em dois subconjuntos distintos: estimativa
e validao. A rede treinada normalmente a partir do subconjunto de
estimativa, sendo o erro apurado para ambos os subconjuntos. Conforme as
iteraes vo se sucedendo, os erros apurados para ambos os subconjuntos so
minimizados, sendo a curva referente ao subconjunto de estimativa a mais
acentuada. No momento em que a rede comea a se tornar viciada, o erro
referente ao subconjunto de estimativa continua a diminuir, enquanto que o
apurado para o subconjunto de validao tende a aumentar, conforme ilustrado
na Figura 4.12. Quando esta condio detectada, o treinamento
83
interrompido e os pesos referentes ao momento de erro mnimo para o
subconjunto de validao so recuperados.


Figura 4.12 Ilustrao do procedimento de parada prematura do algoritmo de retropropagao de
erros.

No prximo captulo so discutidos os detalhes referentes implementao do sistema
descrito neste.

5 IMPLEMENTAO DO SISTEMA PROPOSTO

5.1 Introduo

A partir da teoria e da proposta discutidas nos captulos anteriores, ocorreu a
implementao dos sistemas. Inicialmente foi construda uma verso totalmente em software
sobre plataforma x86, no intuito de avaliar, naquele momento, quais os mtodos mais
adequados para compor o sistema embarcado. A partir dos resultados obtidos pela
implementao em software foi ento projetada e implementada a verso embarcada do
sistema.
Assim sendo, neste captulo so discutidos os detalhes referentes s implementaes, a
partir da seqncia mencionada no pargrafo anterior. Resultados parciais so apresentados
conforme as etapas se sucedem, no intuito de ilustrar as dificuldades e justificar as escolhas
efetuadas. Os resultados finais, entretanto, so apresentados no prximo captulo, limitando-se
este na implementao em si.

5.2 Sistema sobre plataforma x86

5.2.1 Introduo

A verso de avaliao do sistema desenvolvido sobre plataforma x86 composta por
duas opes principais, alm de algumas outras secundrias. Dentre as opes principais, a
primeira implementa as tarefas relativas extrao de caracteres, enquanto a outra possibilita
o reconhecimento dos mesmos, a partir dos resultados gerados pela primeira. J em relao s
opes secundrias, as mesmas foram criadas no intuito de possibilitar a execuo de tarefas
auxiliares, como as de configurao, gerao de dados e apurao de resultados. Inicialmente,
as duas tarefas principais, embora complementares, foram implementadas como opes
distintas, no intuito de facilitar o processo de avaliao e a prpria construo das mesmas.
Neste sentido, efetuou-se a comunicao entre as duas tarefas por intermdio de arquivos de
texto, at porque a etapa de localizao de placas j fornecia sadas neste formato.
Na seqncia, cada uma das duas opes principais discutida em detalhes,
culminando a seo referente verso do sistema sobre plataforma x86 na apresentao da
configurao final do mesmo.


85

5.2.2 O mdulo de extrao dos caracteres

A opo de extrao de caracteres foi construda de modo a permitir a avaliao dos
diferentes mtodos mencionados na Seo 4.2.1, bem como possibilitar a atribuio do
respectivo cdigo ASCII a cada um dos caracteres pticos localizados. Apesar do processo de
atribuio dos cdigos ASCII estar relacionado tarefa de reconhecimento de caracteres,
inicialmente foi necessria a realizao da mesma por meio de interveno humana. A
justificativa para tal reside no fato da necessidade de entradas consistentes para a posterior
construo da verso automatizada deste processo.
Ambas as tarefas de avaliao e atribuio de cdigos ASCII foram realizadas a partir
da interface ilustrada na Figura 5.1, estando os parmetros de entrada do processo situados na
regio A. Dentre tais parmetros, destacam-se os algoritmos de binarizao e de
identificao de objetos e a opo de ajuste dos objetos encontrados

Figura 5.1 Interface da opo que implementa o processo de extrao de caracteres, na verso de
avaliao do sistema construdo sobre plataforma x86.

No que diz respeito aos algoritmos de binarizao, foram avaliados ambos os mtodos
discutidos previamente na Seo 4.2: Otsu e Niblack. O mesmo no ocorreu em relao aos
algoritmos de identificao de objetos, haja vista que dos trs mtodos previamente
selecionados e discutidos na Seo 4.2.1, apenas dois foram de fato implementados, conforme


86
detalhado na Seo 5.2.2.5. J a possibilidade de no realizar o ajuste dos objetos foi
disponibilizada apenas no intuito de permitir a eventual visualizao de todos os objetos
localizados. Na prtica, tal ajuste sempre deve ser feito, pois o mesmo envolve o processo de
classificao dos objetos, imprescindvel para o correto funcionamento do processo.
Juntamente classificao foram implementados os mtodos de ordenao e localizao
forada de objetos, os quais no haviam sido previstos anteriormente e so detalhados na
Seo 5.2.2.3.
O processamento realizado por intermdio da opo inicia pela carga da primeira
entrada contida no diretrio de origem. Cada entrada consiste num par de arquivos, sendo tal
par composto pela imagem do veculo em trnsito e as coordenadas da regio que contm a
placa do mesmo.A partir do contedo destes dois arquivos se obtm uma nova imagem em
256 tons de cinza, contendo apenas a regio da placa, a qual binarizada a com base no
algoritmo atualmente selecionado. A imagem binarizada ento utilizada como entrada no
processo de identificao de objetos, igualmente realizado pelo respectivo algoritmo
atualmente selecionado. Como resultado, tem-se um conjunto de coordenadas referentes a
todos os objetos encontrados. Cada elemento deste conjunto classificado de acordo com os
critrios dimensionais previamente especificados, permanecendo no conjunto apenas aqueles
que satisfaam tais critrios.
A partir deste conjunto de coordenadas de caracteres que se d a interveno
humana. Para tanto, uma cpia da imagem original da regio da placa utilizada como base
na projeo dos retngulos que delimitam cada caractere encontrado, conforme ilustrado na
regio B da Figura 5.1 Conforme os objetos so selecionados, a respectiva sada
normalizada gerada e exibida logo acima da imagem da placa. Ao operador humano, cabe a
tarefa de informar o cdigo ASCII da placa identificada pelo mesmo no campo
correspondente e certificar-se de que a seqncia dos objetos no conjunto e a localizao dos
retngulos na imagem da placa identificam corretamente o respectivo cdigo ASCII. Tal
processo ilustrado na Figura 5.2, onde cada item obtido a partir de uma interao do
operador humano.
Ao trmino do processamento, tm-se dois arquivos de resultado para cada entrada. O
primeiro consiste no arquivo original de coordenadas da regio da placa, acrescido das
coordenadas de cada objeto localizado em tal regio. J o segundo arquivo contm as verses
normalizadas de cada objeto, as quais so utilizadas posteriormente no processo de
treinamento da RNA.



87



(a) (b) (c) (d) (e) (f) (g)
Figura 5.2 Ilustrao do resultado do processo de localizao e normalizao de caracteres.

5.2.2.1 Arquivos de entrada

Conforme comentado na seo anterior, cada entrada composta por um par de
arquivos, sendo o primeiro deles a imagem do veculo em trnsito e o segundo um conjunto
de coordenadas que definem uma ou mais regies retangulares no primeiro arquivo.
No que diz respeito ao arquivo de imagem, as caractersticas do mesmo so as
seguintes:
Dimenses: 800x600 pixels;
Formato: BMP;
Modelo de cores: RGB (embora utilize apenas 256 tons de cinza) ;
Intensidade de bits: 24 bits/pixel (embora oito bits/pixel seja suficiente).
J em relao ao arquivo de coordenadas, o mesmo consiste num arquivo de texto
comum, onde cada entrada composta por um identificador numrico distinto, bem como as
quatro coordenadas que definem a regio retangular, conforme ilustrados na Figura 5.3.


Figura 5.3 Ilustrao do contedo de um arquivo de coordenadas das regies candidatas, fornecido pelo
mdulo desenvolvido por Pacheco (2007).

O arquivo de coordenadas acima se refere ao processamento ilustrado na Figura 5.1,
onde a primeira regio candidata diz respeito placa processada naquela mesma figura.
Diferentemente deste trabalho, a origem do sistema de coordenadas utilizado na gerao do
arquivo acima est situada no canto direito inferior, conforme indicado pelo valor das


88
coordenadas inicial e final do eixo y. Entretanto, tal questo de trivial soluo, bastando
subtrair o valor das mesmas da altura da imagem para que se tenha o valor correto em relao
uma origem situada no canto esquerdo superior. Em relao ao eixo x, tambm necessria
uma adequao das coordenadas, haja vista que as mesmas levam em considerao pixels de
trs bytes (24 bits). Neste caso, uma simples diviso por trs soluciona a questo.

5.2.2.2 Binarizao

Conforme discutido na Seo 4.2, por conta da diferena de representao entre as
imagens fornecidas e as aceitas como entradas do sistema, fez-se necessria a implementao
de um processo inicial de converso. Neste sentido, as tcnicas de limiarizao de Otsu e de
Niblack foram previamente selecionadas e posteriormente avaliadas.
Inicialmente ocorreu a implementao de ambos os algoritmos. O algoritmo que
implementa a limiarizao global de Otsu foi adaptado a partir do cdigo fonte
disponibilizado pela verso 3.45 do software XITE (XITE, 2005). J o algoritmo de
limiarizao local de Niblack foi implementado a partir da equao citada por Leedham
(2003). Em seguida foi criada uma opo especfica no software implementado sobre
plataforma x86, ilustrada na Figura 5.4, no intuito de permitir a comparao simultnea dos
resultados obtidos pela execuo dos algoritmos. Dentre os critrios levados em considerao
na avaliao podem ser citados a boa formao dos objetos, o nmero de objetos resultantes e
a ausncia de conexes indevidas entre os objetos.


Figura 5.4 Interface de avaliao das tcnicas de limiarizao.

Aps o trmino da avaliao, a qual utilizou como base todas as 791 imagens
disponveis inicialmente, constatou-se que:


89
na maioria dos casos o mtodo de Otsu gera um nmero menor de objetos
(Figura 5.5(a)-(b)), evitando assim a conexo indevida entre as bordas da placa
e os caracteres (Figura 5.5(c));
em alguns casos, como o ilustrado na Figura 5.5(d), o mtodo de Niblack
consegue desfazer conexes indevidas j presentes na imagem original;
no restante dos casos os resultados obtidos por ambos os mtodos se equivalem
(Figura 5.5(e)).
Com base nestas consideraes, a tcnica de Otsu foi escolhida, haja vista que na
maioria dos casos gera um resultado superior ou igual ao obtido por Niblack, com a vantagem
de ser mais simples, rpida e gerar um nmero inferior de regies.










(a) (b) (c) (d) (e)
Figura 5.5 Alguns dos resultados obtidos a partir das tcnicas de limiarizao avaliadas. As imagens
originais (256 tons de cinza) esto dispostas na primeira linha, enquantos as obtidas pela tcnica de Otsu
na segunda e por Niblack na terceira.

5.2.2.3 Ordenao e localizao por fora bruta

Durante a implementao do processo de extrao de caracteres, notou-se a
necessidade da criao de uma etapa intermediria de ordenao dos objetos localizados. Tal
etapa demonstrou-se necessria por conta da ordenao inicial dos objetos, gerada durante o
processo de localizao, que nem sempre respeitava a ordem na qual eles se encontravam
dispostos na placa, comprometendo assim o reconhecimento da mesma. A causa desta
possvel ordenao inicial incorreta reside no fato ilustrado na Figura 5.6. Aps a limiarizao
de uma placa, pode ocorrer da linha inicial de um determinado objeto ser inferior de um
objeto anterior, conforme ilustra a Figura 5.6(b), que consiste no detalhe ampliado da regio
contida no retngulo na Figura 5.6(a). Como os mtodos etiquetao de componentes
conectados e caixa limitante adaptativa processam a imagem da esquerda para a direita, de
cima para baixo, ento a ordem inicial do terceiro caractere inferior do segundo. A soluo
consiste na simples ordenao dos objetos, aps o trmino do processo de localizao dos
mesmos, a partir da coordenada inicial no eixo x de cada um deles.


90




(a) (b)
Figura 5.6 Ilustrao do fato que originou a criao da etapa de ordenao dos objetos.

O outro mtodo implementado durante a construo do mdulo de extrao de
caracteres foi o de localizao de caractere por fora bruta, inspirado no citado por Souza
(2000). Tal mtodo pode ser utilizado no caso de um nmero inferior a sete caracteres serem
localizados numa placa, conforme ilustrado na Figura 5.7(a), cujo motivo causador desta
circunstncia, por exemplo, a conexo indevida de um objeto, conforme a Figura 5.7(b).
A implementao realizada neste trabalho difere da original, haja vista que a ltima se
baseia na idia de que o espao que separa as letras dos nmeros maior do que aqueles que
separam os caracteres em si, suposio esta que em muitas situaes se demonstrou falsa.
Assim sendo, o mtodo aqui implementado inicialmente apura a altura e a largura mdia dos
caracteres encontrados, para depois localizar a regio de maior distncia entre dois caracteres
e ento delimit-la pela dimenso mdia apurada anteriormente. No caso da Figura 5.7(a), tal
regio se situa entre os caracteres 6 e 9, onde est localizado o caractere 3.


(a) (b)
Figura 5.7 Exemplo de emprego do mtodo de localizao de caracteres por fora bruta.

5.2.2.4 Arquivos de sada

Como resultado do processo de extrao dos caracteres de uma imagem, discutido na
Seo 5.2.2, tm-se o par de arquivos ilustrados na Figura 5.8. O arquivo exibido na Figura
5.8(a) consiste no arquivo de entrada do processo (Figura 5.3), acrescido de informaes
referentes aos objetos localizados. Estas informaes dizem respeito ao nmero de objetos
encontrados (item A), de caracteres encontrados (item B), de caracteres vlidos (item
C), bem como o algoritmo de localizao de objetos utilizado (item D). Alm disso,
tambm so armazenadas as coordenadas de cada caractere vlido encontrado (item E).


91
A questo da validade do caractere est relacionada ao algoritmo de localizao de
caracteres por fora bruta. No intuito de avaliar o desempenho do mesmo, um segundo
julgamento foi realizado por meio de interveno humana a partir dos objetos classificados
como caracteres pelo sistema. O nmero de objetos que eram de fato caracteres, proveniente
do segundo julgamento, foi ento armazenado junto ao arquivo de resultados para posterior
anlise.
J no que diz respeito ao arquivo ilustrado na Figura 5.8(b), o mesmo constitudo
pelas verses normalizadas dos caracteres localizados. Cada entrada do arquivo composta
por um cabealho e um respectivo conjunto de dados. No cabealho esto armazenados o
cdigo ASCII do caractere, a posio que ele ocupa na placa, bem a altura e a largura da
matriz utilizada na normalizao do mesmo. Na seqncia encontra-se armazenado o
contedo da matriz de normalizao. Tal arquivo serve como entrada no processo de gerao
de dados para o treinamento da RNA, o qual discutido na Seo 5.2.3. Para constar, a
primeira entrada do arquivo ilustrado na Figura 5.8(b) se refere Figura 5.2(a).


(a) (b)
Figura 5.8 Arquivos resultantes do processo de extrao de caracteres.

5.2.2.5 Identificao de regies

A implementao e posterior avaliao dos mtodos de identificao de regies
constituiu a principal tarefa executada durante o processo de construo da opo de extrao
de caracteres sobre a plataforma x86. Como o intuito era o de construir a verso em hardware
do mtodo selecionado, considervel ateno foi dedicada escolha do mesmo, haja vista que
o mtodo a ser empregado na construo do outro principal bloco de hardware
(normalizao) j estava definido.


92
O processo de seleo iniciou-se ento pela implementao dos mtodos de
etiquetao de componentes conectados e caixa limitante adaptativa, a partir das propostas de
Yang (2005) e Souza (2000), respectivamente. J o mtodo das projees horizontal e
vertical, apesar de inicialmente considerado, teve sua implementao cancelada aps testes
iniciais de viabilidade.
O motivo do descarte do mtodo das projees diz respeito existncia de rudo nas
extremidades das regies utilizadas como entrada do sistema, situao esta distinta da
considerada inicialmente (Figura 4.8). Este rudo surge durante o processo de limiarizao,
quando um nmero considervel de pixels, cujo nvel de cinza igual ou prximo ao daqueles
que formam os caracteres, existe nas extremidades da regio retangular. Desta maneira, tais
pixels marginais acabam por compor objetos que formam uma espcie de moldura ao redor
dos caracteres, interferindo no resultado das projees, conforme ilustrado na Figura 5.9. Na
Figura 5.9(a) nota-se o erro de enquadramento vertical introduzido pelas reas de rudo
lateral, enquanto na Figura 5.9(b) visvel a dificuldade de determinao da largura dos
caracteres, como exemplificado pela linhas horizontais tracejadas.







(a) (b)
Figura 5.9 Ilustrao das dificuldades encontradas durante avaliao do mtodo de projees horizontal
e vertical.

No que se refere relao entre a tcnica de limiarizao utilizada e a existncia do
rudo de limiarizao, a mesma demonstrou-se de mdia significncia neste caso. Ao mesmo
tempo que o mtodo de Otsu costuma gerar menos objetos (vide Figura 5.5), existem
inmeras situaes onde o nvel de rudo gerado por ambos os mtodos similar. Uma desta
situaes o caso dos resultados ilustrados na Figura 5.9(a) e na Figura 5.9(b), gerados por
Niblack e Otsu, respectivamente. Dentre as solues que poderiam ser adotadas no intuito de
reduzir o nvel de rudo e possibilitar o uso do mtodo das projees, uma delas consiste no
uso da etapa de enquadramento, discutida na Seo 2.5.7. Entretanto, tal soluo alm de
complexa, situa-se alm do escopo deste trabalho.


93
Seguindo com o processo de seleo do mtodo de localizao de caracteres, aps a
implementao dos dois que ainda se mantinham candidatos, cada um deles foi utilizado no
processamento do conjunto de imagens inicial. O fluxo de execuo se deu conforme descrito
nas sees anteriores, imagem a imagem, havendo interveno humana no julgamento do
nmero efetivo de caracteres localizados pelo sistema e na atribuio dos respectivos cdigos
ASCII aos caracteres vlidos.
Os resultados referentes ao desempenho de cada um dos mtodos foram a apurados a
partir da opo existente na interface ilustrada na Figura 5.1 (Exibir resultados apurados).
Tal opo processa os arquivos de extenso coo gerados como sada do processo de
localizao, extraindo de cada um deles o nmero de objetos localizados (considerando o uso
do mtodo de localizao por fora bruta) e o nmero de caracteres vlidos (itens B e C
na Figura 5.8(a), respectivamente). Estes dados so ento sintetizados, dando origem a duas
listas distintas (caracteres encontrados e vlidos), cujo contedo consiste na contagem de
placas em funo do nmero de caracteres encontrados.
Com base nestas listas foram gerados os grficos de desempenho ilustrados na Figura
5.10(a) e na Figura 5.10(b), os quais se referem aos resultados apurados para o mtodo de
etiquetao de componentes conectados e para o mtodo caixa limitante adaptativa,
respectivamente. Os resultados obtidos so praticamente os mesmos para ambos os casos,
existindo uma pequena vantagem no caso do mtodo de etiquetao de componentes
conectados. Um ponto negativo, tambm em ambos os casos, diz respeito ao nmero de
caracteres invlidos encontrados, cuja principal causa diz respeito ao desempenho da
implementao do mtodo de localizao por fora bruta.


(a) (b)
Figura 5.10 Resultados parciais obtidos a partir dos mtodos (a) etiquetao de componentes conectados
e (b) caixa limitante adaptativa.



94
5.2.2.6 Verso final

A partir dos resultados discutidos nas sees anteriores, a verso final do mdulo de
extrao de caracteres sobre plataforma x86 foi definida conforme ilustrao na Figura 5.11.
No tocante ao mtodo de localizao de caracteres, apesar da necessidade de implementao
de um processo adicional para a extrao das coordenadas dos objetos localizados pelo
mesmo, a etiquetao de componentes conectados foi o escolhido. Dentre os critrios
utilizados na seleo do mtodo pode-se citar os seguintes:
Desempenho ligeiramente superior do mtodo selecionado em relao ao outro
avaliado;
O fato do mtodo caixa limitante adaptativa por si s no ser capaz de
determinar os pixels que constituem o caractere no interior do retngulo que o
delimita. Considerando o caso de existncia de pequenos objetos nos limites de
tal retngulo, necessria a utilizao de um mtodo auxiliar, conforme
indicado por Souza (2000), no intuito de recuperar apenas os pixels que
compem o objeto. J no caso da etiquetao de componentes conectados essa
possibilidade de distino inerente ao mtodo, haja vista que cada objeto
identificado por um nmero distinto;
O fato da existncia de uma arquitetura de hardware razoavelmente
documentada que implementa o mtodo de etiquetao de componentes
conectados de forma otimizada (YANG, 2005).
Em relao tentativa de utilizao do mtodo de localizao de caracteres por fora
bruta, preferiu-se abrir mo do mesmo em vista do elevado nmero de casos de falso positivo
encontrados, onde uma possibilidade dada como verdadeira, quando na verdade no o .
Provavelmente o desempenho insatisfatrio est relacionado com a implementao aqui
realizada do mtodo, onde se tentou evitar um nmero elevado de consistncias, no intuito de
simplificar uma futura implementao em hardware.
Como a ltima das modificaes realizadas configurao inicial do mdulo, tm-se a
incluso do mdulo de ordenao dos caracteres encontrados, conforme discutido
anteriormente, na Seo 5.2.2.3.
Na seqncia discutida a implementao realizada no intuito de possibilitar o
reconhecimento dos caracteres localizados pelo mdulo recm descrito.



95

Figura 5.11 Verso final do mdulo de extrao de caracteres sobre plataforma x86.

5.2.3 O mdulo de reconhecimento de caracteres

De maneira similar realizada na etapa de extrao de caracteres, o mdulo de
reconhecimento foi construdo no intuito de permitir a determinao da topologia de rede que
possibilita o melhor desempenho para cada um dos casos (letras e nmeros). Por conta da
inexistncia de uma equao que defina a topologia tima da rede para um dado problema, a
determinao da mesma feita por intermdio de heursticas e sucessivas tentativas a partir de
diferentes configuraes (nmero de neurnios escondidos). Dentre as heursticas utilizadas
podem ser citadas a experincia prvia em problemas similares e o nmero de classes que a
rede deve ser capaz de distinguir. Geralmente quanto maior o nmero de classes que a rede
distingue, maior o nmero de neurnios escondidos necessrios para possibilitar a
convergncia da mesma. No que diz respeito avaliao do desempenho da topologia, a
mesma pode ser realizada a partir do percentual de reconhecimento alcanado pela rede, haja
vista que este o objetivo de uma RNA utilizada como um classificador de padres
(HAYKIN, 1999).
Com base nestas consideraes, a opo de reconhecimento foi implementada de
modo a permitir o treinamento e a avaliao de desempenho de um RNA a partir de uma
topologia selecionada. Inicialmente a interface ilustrada na Figura 5.12 utilizada na
realizao do treinamento da rede, onde o algoritmo de aprendizado utilizado o de
retropropagao de erro, discutido na Seo 4.2.2.1. Tal algoritmo foi implementado a partir
do cdigo fonte utilizado por Molz (2001), o qual emprega o EQM como critrio de parada,
no utiliza o termo de momento e possibilita o ajuste da taxa de aprendizado de forma
manual. A funo de ativao utilizada foi a tangente hiperblica, enquanto os pesos das
sinapses utilizam representao numrica de ponto flutuante.


96


Figura 5.12 Interface de treinamento da RNA implementada sobre plataforma x86.

Para a realizao do treinamento, primeiramente faz-se necessrio o ajuste dos
parmetros do processo. Dentre os parmetros mais relevantes esto o nmero mximo de
iteraes, utilizado em conjunto com o EQM como critrio de parada, a taxa de aprendizado e
o valor do prprio EQM. Aps o ajuste dos parmetros, o prximo passo consiste na
atribuio de pesos iniciais aleatrios para cada sinapse existente na rede (boto Inicializar
RNA na Figura 5.12). Estando os parmetros ajustados e os pesos iniciais atribudos s
sinapses, o processo de treinamento ento iniciado. Neste momento, a primeira ao
executada a leitura do arquivo de padres de treinamento, cujo contedo discutido na
Seo 5.2.3.2.
Cada iterao do treinamento corresponde apresentao de um padro rede,
seguida pelo ajuste dos pesos das conexes em funo do erro encontrado na camada de sada.
Tal modo de treinamento denominado seqencial, em contraste ao modo em lote, onde o
ajuste dos pesos efetuado apenas ao final de uma poca (o conjunto de todos os padres
utilizados no treinamento). Durante a execuo do processo, informaes a respeito do EQM
e da taxa de aprendizado atuais so exibidas na tela, no intuito de permitir o ajuste manual da
ltima.
O ajuste manual da taxa de aprendizado realizado com o objetivo de acelerar o
processo de convergncia da rede, tendo como critrio para o ajuste o valor do EQM. Caso tal
valor permanea constante durante sucessivas iteraes, significa que o valor da taxa de
aprendizado deve ser aumentado, possibilitando assim a variao do EQM. J quando o valor
do EQM varia durante as iteraes, o valor da taxa de aprendizado deve ser mantido baixo


97
(geralmente menor que 1), no intuito de manter a curva do EQM na direo descendente. O
inconveniente da realizao do processo de forma manual a constante ateno dispendida,
bem como a possibilidade de conduzir a rede a uma situao em que no convirja nunca.
As iteraes de treinamento se sucedem at o momento em que um dos critrios de
parada alcanado: nmero de iteraes ou EQM. desejado que o treinamento encerre a
partir do segundo critrio, haja vista que um valor de EQM superior ao especificado aps o
nmero mximo de iteraes ter sido alcanado geralmente indica que o desempenho da rede
baixo. Levando em considerao o trmino do treinamento pela obteno de um EQM
inferior ao especificado, um arquivo contendo os atuais pesos das sinapses criado e a etapa
de avaliao do desempenho da rede habilitada.
A etapa de avaliao de desempenho foi implementada junto opo utilizada
inicialmente para o treinamento da rede, conforme ilustrado na Figura 5.13, haja vista que os
processos so de natureza complementar. Como primeiro passo na execuo de uma avaliao
ocorre a carga de um arquivo de padres para a grade existente na interface. Tal arquivo
similar ao utilizado no treinamento no que diz respeito ao formato e nmero de entradas, mas
difere em relao ao contedo, pois no possui nenhuma das entradas utilizadas no processo
anterior. A utilizao de um arquivo contendo entradas no utilizadas anteriormente visa
apurar a capacidade de generalizao da rede recm treinada.


Figura 5.13 Opo construda para avaliao da RNA.

Aps a carga do arquivo de padres para a grade, cada linha da mesma contm uma
entrada a ser avaliada. Cada entrada, por sua vez, composta pelo padro de entrada, indicado
parcialmente pelo item B Figura 5.13, bem como a respectiva sada esperada, indicada pelo
item C. O processo de reconhecimento se d pela propagao de cada padro de entrada
contido na grade pela RNA, seguido da comparao do resultado existente na camada de sada
da rede (item E) com o padro de sada esperado. As situaes onde o resultado esperado


98
no condiz com o obtido so destacadas na grade por intermdio de clulas de fundo
vermelho, no intuito de possibilitar a identificao das mesmas. O desempenho da RNA
expresso nas formas ordinal e percentual, tanto para o casos positivos, quanto para os
negativos.
Posteriormente implementao da interface de treinamento e reconhecimento,
tomou-se conhecimento da existncia do suporte ao projeto de RNAs disponibilizado pelo
ambiente MATLAB. Apesar do esforo j empregado na construo da opo sobre
plataforma x86, optou-se pelo uso do ambiente MATLAB a partir de ento na realizao das
tarefas de treinamento e avaliao. Desta forma, da implementao original foram mantidas as
opes de configurao, gerao do arquivo de padres, formato do arquivo de pesos das
sinapses, bem como a implementao da RNA em si.
Dentre os motivos que levaram opo pelo ambiente MATLAB na definio das
duas topologias timas, encontram-se o amplo suporte fornecido ao projeto de RNAs, bem
como o fato do ambiente ser prprio para a realizao de simulaes. No que diz respeito ao
amplo suporte, destaca-se a existncia de variantes do algoritmo de retropropagao de erro
(ajuste automtico da taxa de aprendizado, termo de momento, etc.). J em relao ao fato do
ambiente ser prprio para simulao, destacam-se a agilidade na construo e o reduzido
tempo de validao de um prottipo. Tais tarefas demandam um maior esforo quando
realizadas a partir de um ambiente convencional de desenvolvimento de software, como o
C++ Builder.
Na seqncia so apresentadas as demais opes construdas durante a implementao
do mdulo de reconhecimento sobre plataforma x86, bem como alguns resultados apurados a
partir do mesmo. Por conta da posterior realizao do treinamento a partir do ambiente
MATLAB, tambm so alvo de discusso a forma como a mesma foi realizada e os resultados
obtidos a partir da.
5.2.3.1 Configurao

A opo de configurao da RNA, ilustrada na Figura 5.14, foi construda com o
intuito principal de possibilitar a atribuio de padres de sada distintos para cada uma das
classes existentes nas redes de letras e nmeros.
Uma das possveis formas de codificar os padres de sada (classes) consiste na
utilizao do esquema um-para-M (HAYKIN, 1999), onde apenas um dos m elementos que
constituem o vetor que identifica cada classe igual a 1. Assim sendo, conforme ilustrado
pelo item B na Figura 5.14, a RNA de letras capaz de identificar 26 classes distintas


99
(A..Z), onde cada classe definida por um vetor de 26 elementos. Cada um destes vetores
contm o valor 1 em uma posio distinta dos demais, sendo o contedo dos demais
elementos igual a -1 (por conta do uso da funo de ativao tangente hiperblica). A
mesma idia se estende ao caso da RNA dos nmeros, cuja codificao dos padres de sada
ilustrada pelo item C na Figura 5.14. A nica diferena diz respeito ao nmero de classes e
o tamanho do vetor que as identifica, ambos igual a dez (0..9).


Figura 5.14 Interface de configurao da RNA.

5.2.3.2 Gerao do arquivo de padres

A opo de gerao do arquivo de padres, ilustrada na Figura 5.15, foi implementada
no intuito de automatizar o processo de gerao de conjuntos de entradas utilizados no
treinamento e na avaliao de desempenho das RNAs. A partir da especificao dos padres
de entrada desejados e do nmero de amostras por padro, uma busca realizada nos arquivos
de origem (Figura 5.8(b)) com a inteno inicial de verificar a existncia de amostras
suficientes para cada padro solicitado. Quando o resultado da busca positivo, o arquivo de
padres ento gerado.


Figura 5.15 Interface construda para permitir a gerao dos arquivos contendo os padres de entrada
para o treinamento da RNA.



100
Durante a gerao do arquivo, cada um dos padres previamente selecionados
inicialmente organizado de uma forma a possibilitar a sua atribuio camada de entrada da
RNA. Como no arquivo de origem o padro encontra-se armazenado na forma de uma matriz
de m linhas e n colunas, o mesmo mapeado para um vetor de m elementos pela
concatenao de suas linhas, conforme ilustrado na Figura 5.16. Na seqncia, o padro de
sada relativo ao caractere representado pelo contedo do vetor agregado ao mesmo,
originando assim um registro no arquivo de padres.


Figura 5.16 Ilustrao do processo de mapeamento da matriz de bits utilizada na representao dos
caracteres para o vetor de entrada da RNA.

Ao trmino do processo tem-se um arquivo como o ilustrado pela Figura 5.17, onde
cada linha representa um registro composto pelo padro de entrada (item A) e seu
respectivo padro de sada (item B). No que diz respeito ordenao dos registros, a mesma
se d primeiramente em funo do nmero da amostra e em seguida pelo padro. Neste
sentido, os registros indicados pelo item C constituem a primeira amostra de cada um dos
padres.


Figura 5.17 Ilustrao do contedo de um arquivo de padres utilizado no treinamento e avaliao de
RNAs de nmeros.



101
5.2.3.3 Resultados preliminares a partir do mdulo sobre plataforma x86

A partir do processo de treinamento e avaliao do desempenho de RNAs discutido
em detalhes na Seo 5.2.3, deu-se a apurao dos resultados parciais ilustrados na Figura
5.18 para uma srie de topologias de RNAs de nmeros.
Em todos os casos, o nmero mximo de iteraes utilizado foi igual a 300.000, sendo
que na maioria das vezes o treinamento foi encerrado por conta do nmero mximo de
iteraes ter sido atingido. Entretanto, tambm na maioria das vezes, o EQM era praticamente
igual ao especificado (0,03). Conforme mencionado na Seo 5.2.3, o modo de treinamento
utilizado foi o seqencial. A ordem de apresentao dos padres foi a mesma utilizada pelo
arquivo de padres (Figura 5.17) para o caso ilustrado pela Figura 5.18(a), enquanto que para
os demais casos os padres foram apresentados de forma randmica.


(a) (b)

(c) (d)
Figura 5.18 Resultados parciais apurados para RNAs de nmeros a partir do mdulo construdo sobre
plataforma x86.

No que diz respeito s topologias utilizadas, em todas as situaes foi utilizada uma
camada escondida, exceto no caso ilustrado na Figura 5.18(d), onde foram utilizadas duas. Em
relao ao nmero de neurnios nas camadas escondidas, o mesmo ilustrado no eixo x de
cada grfico.


102
Cada par de resultados (Conjunto1, Conjunto 2) representa o maior percentual de
reconhecimento obtido a partir de cinco treinamentos distintos para uma dada topologia.
Neste sentido, as entradas que compem o Conjunto 1 so as mesmas utilizadas para o
treinamento da rede, enquanto os dados contidos no Conjunto 2 representam entradas no
apresentadas anteriormente mesma. Desta forma, era esperado que o desempenho do
Conjunto 1 fosse sempre superior ao obtido pelo Conjunto 2. Mais do que isto, o percentual
de reconhecimento do primeiro conjunto deveria ser igual ou ao menos prximo de 100%,
haja vista que as redes foram treinadas a partir do mesmo. Nos casos onde este desempenho
no foi alcanado, o resultado igualmente se refletiu no outro conjunto.
A partir da anlise conjunta dos resultados, nota-se um melhor desempenho das redes
onde foi utilizado um nmero menor de neurnios escondidos (Figura 5.18(c) e (d)), resultado
este talvez relacionado ao nmero limitado de iteraes. J o fato das entradas terem sido
apresentadas de forma randmica parece ter contribudo para o aumento do percentual de
reconhecimento, se comparados o grfico da Figura 5.18(a) e da Figura 5.18(b). Da mesma
maneira, a utilizao de duas camadas escondidas parece ter contribudo para uma ligeira
melhora dos resultados (Figura 5.18(d) em relao (c)).

5.2.3.4 Processo de avaliao e resultados preliminares a partir do ambiente MATLAB

Conforme mencionado no final da Seo 5.2.3, decorrido algum tempo aps a
construo da opo de treinamento/avaliao de RNAs sobre plataforma x86, tomou-se
conhecimento e optou-se pela utilizao do MATLAB para a realizao desta tarefa. O
MATLAB um ambiente prprio realizao de simulaes, fornecendo suporte a uma vasta
gama de reas, dentre as quais, redes neurais artificiais. A construo dos prottipos pode ser
efetuada tanto de modo grfico, como textual. Optou-se pela utilizao do modo textual por
conta da maior flexibilidade fornecida pelo mesmo. A construo de um prottipo a partir do
modo textual efetuada por intermdio de uma linguagem de programao proprietria,
similar Pascal. Neste sentido, geralmente o maior esforo se concentra na estruturao de
rotinas pr-existentes no intuito de obter o resultado desejado. A agilidade na construo e
validao de prottipos reside justamente no fato da existncia deste vasto conjunto de
algoritmos previamente validados.
No que diz respeito ao processo de treinamento e avaliao de desempenho de RNAs
desenvolvido no ambiente MATLAB, o mesmo pode ser ilustrado pelo pseudocdigo abaixo.
As instrues em itlico consistem em rotinas disponibilizadas pelo ambiente.


103

Crie lista de funes de treinamento;
Crie lista de n de amostras por padro;
Crie lista de topologias;

Para cada item na lista de funes de treinamento faa
Para cada item na lista de n de amostras por padro faa
Para cada item na lista de topologias faa
Leia arquivo de padres de entrada(n de amostras por padro);
Crie rede neural artificial(funo de treinamento);
Ajuste parmetros de treinamento;
Para x de 1 at 10
Execute treinamento(conjunto padres 1);
Execute simulao(conjunto padres 1, conjunto padres 2);
Apure desempenho da rede(conjunto padres 1, conjunto padres 2);
Armazene dados de treinamento e simulao em formato proprietrio;
Armazene resultados de desempenho em arquivo Excel;
Fim Para;
Fim Para;
Fim Para;
Fim Para;

Inicialmente so criadas listas contendo diversas opes de funes de treinamento,
nmero de amostras por padro e topologias de rede, possibilitando assim a avaliao de
diversas combinaes das mesmas. No que diz respeito ao contedo de tais listas, a referente
s funes de treinamento contm os seguintes algoritmos:
Retropropagao de erro por descida do gradiente com taxa de aprendizado
adaptativa (traingda): consiste no mesmo algoritmo discutido na Seo
5.2.3, com exceo do controle da variao da taxa de aprendizado, que
feito de forma automtica neste caso;
Retropropagao de erro por descida do gradiente com termo de momento
(traingdm): consiste na verso do algoritmo de retropropagao que
considera o termo de momento, mas que utiliza uma taxa de aprendizado
fixa;
Retropropagao de erro por descida do gradiente com taxa de aprendizado
adaptativa e termo de momento (traingdx): consiste na consolidao dos
algoritmos citados nos dois itens anteriores;
Retropropagao de erro resiliente (trainrp): consiste num algoritmo que
elimina o problema gerado pelo uso de entradas no normalizadas e
funes sigmoidais, levando em considerao apenas o sinal da derivada
parcial no clculo do valor utilizado na atualizao dos pesos;


104
Retropropagao de erro por gradiente conjugado com atualizaes Polak-
Ribire (traincgp): algoritmos de gradiente conjugado procuram acelerar o
processo de convergncia pela realizao de uma busca ao longo de
direes conjugadas , ao invs de apenas na direo da descida mais
ngreme (mtodo padro);
Retropropagao de erro por Levenberg-Marquardt (trainlm): consiste
numa alternativa aos mtodos de gradiente conjugado, baseada no emprego
de um mtodo quasi-Newton, onde a matriz de Hessian aproximada por
meio da matriz Jacobiana;
Retropropagao de erro por gradiente conjugado escalado (trainscg):
consiste num algoritmo que combina as caractersticas de traincgp e
trainlm, no intuito de acelerar ainda mais o processo de convergncia;
Retropropagao de erro por regularizao Bayesiana (trainbr): consiste
num algoritmo que procura melhorar a capacidade de generalizao da
RNA a partir do emprego do mtodo de regularizao, o qual emprega uma
funo de custo modificada.
J no tocante lista de nmero de amostras por padro, foram efetuados treinamentos
utilizando 15, 20 e 25 amostras por padro, cujo objetivo foi o de descobrir a influncia deste
parmetro no aprendizado da rede. Finalmente, em relao lista de topologias, foram
avaliadas redes com duas, trs e quatro camadas (uma, duas e trs camadas escondidas,
respectivamente), onde o nmero de neurnios escondidos em cada camada variou de 20 a
100, em intervalos de 20 unidades.
Na seqncia, 10 rodadas do processo de treinamento e avaliao so executadas para
cada uma das combinaes possveis dos elementos contidos na listas. Neste sentido, o
primeiro passo consiste na leitura do arquivo de padres idntico ao utilizado no processo
construdo sobre plataforma x86. No passo seguinte criada a rede neural PMC levando em
considerao o algoritmo de treinamento atualmente selecionado, sendo em seguida efetuado
o ajuste dos parmetros de treinamento da mesma. Num primeiro momento foram mantidos
os valores padro dos parmetros, sendo alguns deles alterados posteriormente, conforme
ilustrado na Tabela 5.1, em funo dos resultados obtidos a partir de testes iniciais.
Da mesma forma que anteriormente discutido, o treinamento se estende at o momento
que um dos critrios de parada alcanado, sendo que neste caso os critrios consistem nas
trs primeiras entradas da Tabela 5.1. No que diz respeito ao modo de treinamento, a


105
atualizao dos pesos foi realizada em lote, haja vista que este o modo padro neste caso.
Findada a etapa de treinamento, os mesmos procedimentos necessrios apurao do
desempenho da rede previamente mencionados so executados. Neste sentido, a principal
diferena entre o processo anterior (plataforma x86) e o atual (ambiente MATLAB) reside
tanto na quantidade, quanto no modo de armazenamento dos resultados apurados. Enquanto
anteriormente, no que se refere simulao em si, apenas os pesos das sinapses eram
armazenados, neste caso foi possvel o armazenamento de estruturas completas contendo
dados da rede, do treinamento e das simulaes a partir da chamada de uma nica rotina. J
em relao aos resultados da simulao, que anteriormente se resumiam a trs informaes,
agora contemplam dados como topologia, nmero de iteraes, desempenho e erros por
classe. Tais dados foram armazenados no formato de planilha eletrnica, o que facilitou a
posterior avaliao da massa de resultados apurados.

Tabela 5.1 Novos valores atribudos aos algoritmos de treinamento no ambiente MATLAB.
Parmetro Algoritmo Valor
Nmero mximo de pocas para treinamento Todos 10.000
Tempo mximo de treinamento Todos 120 (s)
Meta de desempenho Todos 1x10
-9

Taxa de aprendizado traingda, traingdm, traingdx, trainrp 0,025
Razo de incremento da taxa de aprendizado traingda, traingdx 1,15
Constante de momento traingdm, traingdx 0,8

A nova rodada de avaliaes foi realizada a partir de um segundo conjunto de
imagens, composto por 3.000 exemplares. J que o processo discutido na Seo 5.2.2, teve de
ser executado novamente, uma nova implementao que permitiu a classificao da qualidade
da placa na imagem foi realizada no intuito de permitir uma correta apurao do resultado
final. Tal classificao discutida no captulo referente aos resultados do trabalho.
Dos oito algoritmos de treinamento inicialmente selecionados, trs foram descartados
(traingdm, trainbr, trainlm) por conta da demora excessiva do processo de treinamento de
avaliao. Considerando uma RNA de nmeros de topologia 225x20x10 e a utilizao de 15
amostras por padro, uma nica rodada do processo levava pelo menos 80 segundos para ser
executada quando do uso dos trs algoritmos descartados. J no caso da utilizao dos demais
algoritmos, a mesma rodada demorava em mdia trs segundos. Como o nmero de
combinaes possvel para cada algoritmo era de 4650 (trs opes de nmero de amostras
por padro x 155 opes de topologia x 10 rodadas), decidiu-se no utilizar algoritmos onde a
mais simples topologia avaliada j consumisse tanto tempo.


106
Com base nas consideraes discutidas nos pargrafos anteriores, foi ento realizado o
processo de treinamento e avaliao a partir do ambiente MATLAB, sendo os resultados
iniciais ilustrados na Figura 5.19 e na Figura 5.20. Tais resultados foram apurados
considerando o emprego de padres de entrada no utilizados em nenhum momento durante o
treinamento.
Os resultados exibidos na Figura 5.19 referem-se RNA de letras, onde os grficos
(a), (b) e (c) ilustram os mximos percentuais de reconhecimento obtidos para todas as



(a) (d)

(b) (e)

(c) (f)
Figura 5.19 Percentuais (a)-(c) mximos e (d)-(f) mdios de reconhecimento apurados para as RNAs de
letras nas simulaes conduzidas no ambiente MATLAB, considerando a utilizao (a),(d) 15 , (b),(e) 20 e
(c),(f) 25 amostras por padro na etapa de treinamento.


107
topologias avaliadas, considerando a utilizao de 15, 20 e 25 amostras por padro
durante o treinamento, respectivamente. A partir da anlise de tais grficos, nota-se um
melhor desempenho por parte dos algoritmos traincgp e trainscg na maior parte dos casos.
Entretanto, quando a mesma anlise realizada levando em considerao o percentual de
reconhecimento mdio (das 10 rodadas realizadas para cada algoritmo), os resultados so
diferentes, conforme ilustrado pelos grficos (d), (e) e (f) na mesma figura. Neste caso os



(a) (d)

(b) (e)

(c) (f)
Figura 5.20 Percentuais (a)-(c) mximos e (d)-(f) mdios de reconhecimento apurados para as RNAs de
nmeros nas simulaes conduzidas no ambiente MATLAB, considerando a utilizao (a),(d) 15 , (b),(e)
20 e (c),(f) 25 amostras por padro na etapa de treinamento.



108
algoritmos traingdx e traingda se sobressaem, fato este que pode indicar uma falta de
consistncia dos resultados exibidos em (a), (b) e (c).
O mesmo comportamento apresentado pela RNA de letras torna a ocorrer no caso da
RNA de nmeros, conforme ilustram os resultados na Figura 5.20. Desta maneira, decidiu-se
selecionar ambas as funes de treinamento traingdx e traincgp para uma posterior avaliao
de desempenho em nvel de placa (os sete caracteres), haja vista que os percentuais aqui
apresentados se referem ao reconhecimento dos caracteres de forma isolada.
Entretanto, como tal avaliao em nvel de placa ser realizada a partir do sistema
sobre plataforma x86, faz-se necessria a especificao no apenas da funo de treinamento,
mas tambm da topologia de rede a ser utilizada. Levando em considerao os resultados
exibidos na Figura 5.19 e na Figura 5.20, nota-se que em ambos os casos o uso de duas
camadas escondidas proporcionou o melhor custo-benefcio. A partir de tal constatao,
foram recuperados os resultados apurados para as funes traingdx e traincgp, onde o nmero
de camadas escondidas era igual a duas, estando tais resultados ilustrados na Figura 5.21 e na
Figura 5.22, respectivamente. Considerando tais resultados, a escolha inicial de cada


(a)

(b)
Figura 5.21 Percentuais mximos de reconhecimento apurados para redes de (a) letras e (b) nmeros em
funo do nmero de neurnios em cada uma das duas camadas escondidas, a partir da utilizao do
algoritmo de treinamento traingdx.


109

topologia foi baseada no critrio de que a mesma deveria ser idntica para ambas funes de
treinamento e ao mesmo tempo apresentar um elevado custo-benefcio. Assim sendo, para o
caso da RNA de letras (Figura 5.21(a) para a funo traingdx e Figura 5.22(a) para traincgp),
a topologia inicialmente selecionada foi a 40x40. J no caso da RNA de nmeros (Figura
5.21(b) para a funo traingdx e Figura 5.22(b) para traincgp), a topologia inicialmente
selecionada foi a 20x20.


(a)

(b)
Figura 5.22 Percentuais mximos de reconhecimento apurados para redes de (a) letras e (b) nmeros em
funo do nmero de neurnios em cada uma das duas camadas escondidas, a partir da utilizao do
algoritmo de treinamento traincgp.

Na seqncia, descrita a implementao do sistema sobre plataforma embarcada.

5.3 Sistema sobre plataforma embarcada

5.3.1 Introduo



110
Ao trmino da implementao da verso em software sobre plataforma x86 do
sistema, processo este que serviu tambm seleo dos mdulos a serem utilizados na
construo da verso embarcada, deu-se incio a implementao desta ltima.
Inicialmente foi realizada a construo do bloco de hardware, tendo sido o mesmo
primeiramente validado em nvel de transferncia de registradores, posteriormente em nvel
de portas lgicas e finalmente em nvel fsico. Tal processo de implementao e validao foi
executado de forma distinta para cada um dos mdulos que compem o bloco, haja vista que
uma abordagem hierrquica facilita o processo como um todo.
No que diz respeito s ferramentas utilizadas durante o processo, foram empregados
tanto softwares comerciais, quanto um desenvolvido pelo autor, bem como um analisador
lgico no caso da depurao de casos pontuais. Na etapa de projeto foi empregada a
ferramenta HDL Designer, verso 2006.1, da empresa Mentor Graphics. J nas etapas de
sntese e validao em nveis de transferncia de registradores e portas lgicas, foi empregada
a ferramenta Integrated Software Environment (ISE), verso 8.2.03i, fornecida pela Xilinx
Incorporated. A partir do ambiente ISE, optou-se pela utilizao do sintetizador padro
(Xilinx Synthesis Tool (XST)) e pelo emprego do simulador ModelSim, verso 6.2d, este
ltimo tambm fornecido pela Mentor Graphics, mas com integrao ao ambiente ISE.
Finalmente, a validao fsica foi realizada a partir de um software construdo pelo autor
sobre plataforma x86, o qual discutido na Seo 6.2.3. Tambm nesta etapa foi empregado o
analisador lgico de 64 canais, modelo 1682AD, fabricado pela Agilent Technologies, em
situaes especficas de depurao do circuito implementado sobre o FPGA. A no utilizao
do recurso de co-simulao justifica-se tanto pela complexidade da operao, quanto por uma
das razes j descrita em Ou (2005): o longo tempo consumido pela mesma.
Finalizada a construo do bloco de hardware, partiu-se ento para a implementao
do sistema embarcado em si, processo esse realizado a partir da ferramenta Embedded
Development Kit (EDK), verso 8.2.02i, fornecido pela empresa Xilinx Incorporated. Neste
sentido, o primeiro passo consistiu na definio da plataforma bsica de hardware e software
sobre a qual o sistema seria implementado. Estando o sistema base disponvel, o prximo
passo consistiu na implementao da RNA sobre a plataforma embarcada. O mdulo de
reconhecimento foi ento implementado e posteriormente validado diretamente sobre a
plataforma embarcada.
Finalmente, a ltima etapa da implementao consistiu na consolidao dos blocos e
hardware e software sobre a plataforma embarcada, onde o bloco de hardware foi empregado
como um acelerador de aplicao, conforme previamente ilustrada na Figura 3.3.


111
Nas prximas sees deste captulo so discutidos em detalhes aspectos como o
contedo do bloco de hardware, a implementao do bloco de software, bem como a conexo
dos dois sobre a plataforma embarcada.

5.3.2 Bloco de hardware

5.3.2.1 Introduo

O bloco de hardware composto por um conjunto de mdulos bsicos, trs mdulos
principais (FPLA, OCE e ON), alm de outros mdulos secundrios de comunicao,
armazenamento e gerao de clocks. Dentre as tarefas executadas pelo conjunto de mdulos
bsicos, a principal consiste em coordenar a interao entre os demais mdulos, bem como
interpretar, executar e retornar respostas aos comandos enviados pela interface de software
sobre plataforma x86. J o mdulo FPLA responsvel pela tarefa de etiquetao de
componentes conectados, enquanto o mdulo OCE executa a extrao das coordenadas dos
objetos detectados pelo mdulo FPLA. Finalmente, o mdulo ON realiza a normalizao dos
objetos classificados como caracteres.
A seguir, cada um dos mdulos discutido em detalhes.

5.3.2.2 O conjunto de mdulos bsicos

No intuito de prover funes de controle, comunicao e armazenamento ao bloco de
hardware, bem como possibilitar a validao em nvel fsico dos demais mdulos,
inicialmente o conjunto de blocos ilustrado na Figura 5.23 foi construdo e validado. Tal
conjunto composto pela unidade de controle central (SIRP_CP), a de comunicao serial
(Universal Asynchronous Receiver-Transmitter UART), bem como as duas de
armazenamento (RAM_BIN e RAM_SYM) e seus respectivos multiplexadores
(RAM_BIN_MUX e RAM_SYM_MUX). Alm disso, tambm conta com um circuito de
gerao de clock, que deriva freqncias intermedirias a partir de um clock principal (clk) de
100 MHz. J a inverso do sinal rst se deve ao fato da placa de prototipao utilizada (XUP-
V2Pro) fornecer um sinal ativo em baixo para os botes de contato momentneo.



112

Figura 5.23 Diagrama de blocos do conjunto de mdulos bsicos.

O mdulo SIRP_CP encarregado pelo controle central do bloco de hardware, sendo
composto por uma mquina de estados principal e outra auxiliar, esta ltima responsvel
apenas pela simplificao do processo de envio de dados. J a mquina principal, ilustrada na
Figura 5.24, encarregada de receber instrues da interface de software rodando sobre
plataforma x86, providenciar sua execuo, bem como retornar dados e o status de execuo
da mesma. Neste sentido, resm_reset constitui o estado inicial da mquina, executado apenas
quando o sistema posto em funcionamento, com a inteno de atribuir valores iniciais aos
sinais envolvidos. No segundo ciclo de clock a mquina se encontra no estado resm_idle,
onde permanece at que o sub-mdulo UART sinalize a chegada de um byte (uart_rda = 1).
Quando tal evento ocorre, a mquina solicita a leitura do dado (uart_rd = 1) e avana para o
estado resm_read_uart, onde realizada a carga do mesmo para um registrador interno
(rcvd_data <= uart_dbin). Assim que o mdulo UART indica a leitura com sucesso do dado
(uart_rda = 0), a mquina desfaz a solicitao de leitura (uart_rd = 0) e avana para o


113
estado resm_decode. Neste momento o dado recebido interpretado e mquina direciona o
fluxo de execuo de acordo com o contedo do registrador cmd_code. Caso o dado recm
recebido consista no primeiro da seqncia que compe um comando (cmd_code =
CMD_NONE), a mquina retorna ao estado resm_idle para aguardar os demais bytes, caso
contrrio, segue para o estado referente ao comando.


Figura 5.24 Mquina de estados principal que constitui o mdulo SIRP_CP.

Cada comando composto por um ou mais bytes, sendo que o primeiro identifica o
cdigo do comando a ser executado, enquanto que os demais constituem parmetros do
mesmo. Entretanto, por conta da estrutura da mquina de estados, necessrio o envio de pelo
menos dois bytes para que a o comando seja processado. Isto ocorre porque aps o
recebimento do byte de cdigo, a mquina volta para o estado inicial espera de parmetros.
Outro detalhe consiste na utilizao do prprio byte de cdigo na determinao da RAM de
origem, no caso do comando CMD_READ. Como tal sinalizao pode ser feita por meio de
um nico bit, optou-se por utilizar o de ndice 5 no byte de cdigo, ao invs de adicionar um
byte inteiro ao comando. Neste caso, o valor 0 seleciona a memria simblica
(RAM_SYM), enquanto o valor 1, a binria (RAM_BIN). A Tabela 5.2 ilustra o tamanho de


114
cada comando implementado, bem como identifica o significado de cada byte. Apesar dos
comandos CMD_WRITE e CMD_READ definirem endereos de dois bytes, inicialmente
apenas um foi utilizado, conforme justificado em seguida, na discusso sobre os mdulos de
memria.

Tabela 5.2 Tabela de comandos implementados no bloco de hardware.
Cdigo Descrio Parmetro 1 Parmetro 2 Parmetro 3
1 byte 2 byte 3 byte 4 byte
CMD_WRITE Escrita de dado em RAM Endereo (parte baixa
bits 7:0)
Endereo (parte
alta bits 15:8)
Dado
CMD_READ Leitura de dado de RAM Endereo (parte baixa
bits 7:0)
Endereo (parte
alta bits 15:8)

CMD_EXEC Execuo do processo de
extrao de caracteres
Indicador de envio do
n ciclos gastos na
execuo do processo

CMD_GEXD Leitura dos objetos
encontrados
ndice do objeto na
lista de coordenadas

CMD_GNOD Leitura da RAM contendo
todos os caracteres
normalizados


Cada um dos estados responsveis pela execuo de um comando (resm_write_ram,
resm_read_ram, resm_exec_proc, resm_get_ext_data e resm_get_norm_data), encontra-se
ilustrado na Figura 5.24 como um estado hierrquico. O conceito de estado hierrquico
proveniente da ferramenta HDL Desinger, que o emprega com a inteno de aumentar o nvel
de abstrao e facilitar o entendimento da mquina de estados como um todo. Neste sentido,
cada estado hierrquico composto por uma srie de outros estados necessrios execuo de
uma tarefa, mas que aqui foram abstrados para favorecer o entendimento da mquina de
estados principal. Tal abstrao realizada apenas em nvel grfico, no se refletindo na
descrio Hardware Description Language (HDL) da mquina de estados.
No que diz respeito ao mdulo UART, o mesmo foi implementado a partir do mdulo
HDL fornecido por Digilent (2006). Tal componente se encarrega da transmisso e recepo
de palavras de oito bits de forma serial, conforme a taxa de transmisso especificada, que
neste caso de 38.400 bits por segundo. As palavras a serem enviadas devem ser informadas
na porta DBIN, enquanto as recebidas so disponibilizadas na porta DBOUT. Sinais de
indicao de erros de recepo so disponibilizados a partir da portas PE, FE e OE, entretanto
nenhum deles foi utilizado nesta implementao. A partir da implementao original, foi
criada a porta TD, cuja funo a de indicar o trmino de uma operao de envio, o que
tambm sinalizado de uma forma no to prtica pela porta TBE.


115
Ambos os mdulos RAM_BIN e RAM_SYM consistem em memrias volteis de
acesso duplo, construdas a partir de recursos prprios para este fim disponveis no FPGA. A
implementao dos mesmos se deu pela ferramenta CORE Generator, integrante do ambiente
ISE, a partir da especificao de parmetros como o tipo de memria (RAM/ROM, acesso
simples/duplo), largura da palavra, nmero de palavras disponveis, etc. Inicialmente foram
utilizadas memrias de 256 palavras de oito bits cada para viabilizar os testes de validao,
at porque no se tinha ento a definio do tamanho mximo necessrio. A principal
diferena entre tais mdulos reside no fato do intitulado RAM_BIN armazenar a imagem de
entrada, no formato binrio, enquanto o outro armazena a imagem simblica resultante do
processo de etiquetao de componentes conectados. As operaes de escrita e leitura nos
blocos de memria binria e simblica so realizadas com auxlio de multiplexadores, haja
vista que tais operaes devem ser possibilitadas para ambos os mdulos SIRP_CP e FPLA.
No caso da memria binria (RAM_BIN), as operaes de escrita so efetuadas
apenas a partir do mdulo SIRP_CP, enquanto as de leitura podem ser realizadas tambm pelo
mdulo FPLA. Desta maneira, o multiplexador RAM_BIN_MUX utilizado para selecionar
o endereo de uma operao (portas addra e addrb) na memria binria, bem como
redirecionar o contedo dos barramentos de sada (douta e doutb), quando tal operao for de
leitura. Caso o mdulo SIRP_CP esteja realizando uma operao de escrita ou leitura, o sinal
ctrl_ram_bin_addra o que define o endereo, enquanto o dado contido em tal endereo
redirecionado para o barramento ctrl_ram_bin_douta. Caso contrrio, os endereos de leitura
so definidos pelos sinais fpla_addr_p1 e fpla_addr_p2, sendo os dados contidos em tais
endereos redirecionados para os barramentos fpla_data_p1 e fpla_data_p2, respectivmente.
Como numa operao de escrita apenas 1 byte de dado processado por vez, no h razo
para utilizar o recurso de acesso duplo. Deste modo, tanto o barramento de entrada dinb,
quanto o sinal de controle de escrita web, ambos situados no bloco RAM_BIN, foram
desativados.
A mesma interao entre a memria binria e os blocos RAM_BIN_MUX, SIRP_CP e
FPLA ocorre em relao memria simblica (RAM_SYM) e os blocos RAM_SYM_MUX,
SIRP_CP e FPLA. A nica diferena diz respeito ao fato de que neste caso o bloco SIRP_CP
realiza apenas operaes de leitura, enquanto o bloco FPLA executa ambas operaes de
leitura e escrita.
Simultaneamente construo do conjunto de mdulos bsicos foi realizada a
implementao da interface de software sobre plataforma x86 que permitiu a validao fsica
dos mdulos conforme os mesmos eram construdos. Tal interface originalmente se prestou


116
validao de algoritmos de etiquetao de componentes conectados, ainda durante a
construo da verso do sistema sobre plataforma x86. Como muitos recursos presentes nesta
interface serviam ao propsito da validao dos mdulos de hardware, optou-se por
incrementar a mesma com as funcionalidades ainda necessrias ao invs de construir outra
opo especfica. Tais funcionalidades foram sendo implementadas conforme os blocos de
hardware iam sendo construdos e validados primeiramente em nvel de transferncia de
registradores e portas lgicas.
Como resultado, obteve-se a interface ilustrada na Figura 5.25(a), a qual permite a
transmisso da matriz binria ao FPGA (boto Xmit to FPGA), a execuo do
processamento (boto Process in FPGA), bem como a apurao dos resultados. Neste
sentido, possvel ler o contedo das memrias binria, simblica (boto Rcve from FPGA)
e de caracteres normalizados (boto Get normalized objs), sendo o contedo desta ltima
exibido numa janela parte, ilustrada pela Figura 5.25(b). Tambm possvel a leitura da
matriz de coordenadas (boto Get extracted objs), procedimento este que causa a
delimitao dos objetos da matriz da direita na Figura 5.25(a) por retngulos vermelhos.


(a) (b)
Figura 5.25 Ilustrao da (a) interface de software sobre plataforma x86 utilizada na validao dos
mdulos de harware. No detalhe (b) exibido um dos objetos normalizados.

5.3.2.3 Mdulo FPLA

Finalizada a construo e validao do conjunto de mdulos bsicos, o foco voltou-se
ao mdulo FPLA, o qual baseado na arquitetura proposta por Yang et al. (2005). Conforme
ilustrado na Figura 5.26, o mdulo composto pelos sub-mdulos FPLA_CP e FPLA_DP,
bem como pelo bloco SEC_SCAN_EXT_GEN. Neste sentido, o sub-mdulo FPLA_CP o
responsvel pelo controle do processo de etiquetao de componentes conectados. Dentre as


117
operaes executadas pelo mesmo destacam-se o endereamento (addr_p1, addr_p2) da
memria binria, endereamento (addr_lp1, addr_lp2) e escrita (wr_lp1, wr_lp2) da memria
simblica, bem como a gerao de outros sinais de controle (busy, preset_cra, sec_scan). J o
sub-mdulo FPLA_DP o encarregado pela tarefa de processamento em si, a partir dos
valores de pixels, etiquetas e sinais de controle fornecidos pelo sub-mdulo de controle.
Finalmente, o bloco SEC_SCAN_EXT_GEN encarrega-se da gerao do sinal sec_scan_ext,
que constitui uma variante do sinal sec_scan, utilizado especificamente pelo mdulo OCE.


Figura 5.26 Diagrama de blocos do mdulo FPLA.

Descendo um nvel na hierarquia do mdulo FPLA, torna-se possvel a visualizao
do contedo de seus sub-mdulos. O primeiro deles, FPLA_CP, constitudo pela mquina
de estados ilustrada na Figura 5.27. No que diz respeito ao funcionamento da mesma,
inicialmente ela se encontra no estado waiting. No momento em que o bloco de controle
central (SIRP_CP) solicita o incio de operao (start = 1), a mquina sinaliza que est em
fase do processamento (busy <= 1) e avana para o estado sync. Tal estado permanece como
o atual at que ocorra a sincronizao dos sinais clk e clk_div2 (slow_clk_level = 0), o que
imprescindvel para o correto fornecimento dos pixels ao sub-mdulo FPLA_DP. Quando
ocorre a sincronizao, a mquina sinaliza o reincio de estruturas internas ao sub-mdulo
FPLA_DP e avana para o estado address. Deste momento em diante a mquina executa a


118
primeira etapa do processamento, alternando entre os estados address e feed enquanto hajam
pixels a serem processados na memria binria (int_col_cnt <= cols). Terminada a primeira
etapa, a mquina sinaliza o incio da segunda e avana para o estado get_label. De maneira
similar primeira etapa, a mquina alterna entre os estados get_label e set_label enquanto
hajam dados a serem processados, entretanto agora levando em considerao a memria
simblica. Ao trmino da segunda etapa, a mquina volta ao estado inicial (waiting) e ajusta o
valor dos sinais de controle.


Figura 5.27 Mquina de estados que constitui o sub-mdulo FPLA_CP.

Uma alterao realizada em relao arquitetura original diz respeito ao modo de
processamento da imagem. Originalmente a imagem processada no modo classificado por
este autor como paisagem, conforme ilustrado na Figura 5.28(a). Entretanto, a utilizao
deste modo causa o problema de ordenao dos objetos, previamente discutido na Seo
5.2.2.3, onde a soluo apontada foi a utilizao de um processo de ordenao a partir da
coordenada x1.
Entretanto, possvel obter uma ordenao intrnseca dos objetos a partir da utilizao
do modo de processamento classificado por este autor como retrato, conforme ilustrado na
Figura 5.28(b), eliminando assim o processo extra de ordenao. O modo de processamento
retrato consiste no endereamento das memrias levando em considerao a rotao em 90
no sentido horrio da imagem armazenada na memria binria. A mesma ordenao pode ser
alcanada a partir do simples armazenamento na imagem rotacionada na memria binria,
embora esta estratgia exija a rotao dos objetos em 90 negativos antes dos mesmos serem
repassados ao mdulo de reconhecimento.


119
A adoo do modo de processamento retrato no mdulo FPLA requeriu alteraes
tanto no sub-mdulo FPLA_CP, quanto no sub-mdulo FPLA_DP. Dentre as alteraes no
bloco de controle pode ser destacada a verificao da existncia de dados a serem processados
a partir do nmero de colunas da imagem (int_col_cnt <= cols). J as relativas ao bloco de
processamento sero citadas a seguir, na discusso sobre o mesmo.


(a) (b)
Figura 5.28 Exemplo de processamento em modo (a) paisagem e (b) retrato.

Continuando a discusso sobre o contedo dos sub-mdulos do mdulo FPLA, o
segundo e ltimo o denominado FPLA_DP. Conforme possvel visualizar na Figura 5.29,
tal sub-mdulo constitudo por trs blocos principais, intitulados LBL_ASSIGN,
COMB_CIRCUIT e CLASS_REG_ARRAY. De acordo com o algoritmo previamente
discutido na Seo 4.2.1.1, numa primeira etapa o bloco LBL_ASSIGN processa dois pixels
da memria binria por vez (p1, p2), atribuindo-lhes uma etiqueta inicial, bem como gerando
seus respectivos pares equivalentes. Neste sentido, os registradores auxiliares conectados ao
bloco implementam a janela de 3x4 pixels (Figura 4.6) utilizada no processamento, onde N o
nmero de colunas da imagem. Como apenas um par equivalente ({pair1_la, pair1_lb} e
{pair2_lx, pair2_ly}) pode ser armazenado por vez na matriz de classes
(CLASS_REG_ARRAY), o bloco COMB_CIRCUIT ento utilizado para executar esta
tarefa. Neste sentido, a freqncia de operao do bloco LBL_ASSIGN igual metade da
empregada nos outros dois blocos.
Na segunda etapa de processamento (sec_scan = 1), igualmente dois por vez (lp1,
lp2), as etiquetas previamente armazenadas na memria simblica so comparadas com o
contedo do elemento apontado pelas mesmas na matriz de classes. Quando os valores
divergem, a memria simblica atualizada com aquele contido na matriz de classes.


120

Figura 5.29 Diagrama de blocos referente ao contedo do sub-mdulo FPLA_DP.

Descendo um nvel agora na hierarquia do sub-mdulo FPLA_DP, torna-se possvel a
visualizao dos circuitos que compem os seus blocos. No caso do bloco LBL_ASSIGN,
ilustrado na Figura 5.30, o mesmo composto por duas unidades de processamento, as quais


Figura 5.30 Diagrama esquemtico do bloco LBL_ASSIGN.


121
so responsveis pela gerao das etiquetas e dos pares equivalentes dos pixels P1 e P2,
respectivamente. No caso da unidade de processamento P1, o multiplexador contido na regio
A utiliza como seletor de canal o valor do prprio pixel P1. Quando P1 pertence ao funda
da imagem (valor igual a zero), o valor da sua etiqueta zero, caso contrrio, o valor
determinado pelo sub-circuito contido na regio B. Na regio B realizada a apurao da
etiqueta em funo da vizinhana de P1 na janela de processamento (N3, N5, N2, N1). Caso
nenhum dos pixels vizinhos P1 possua uma etiqueta, uma nova gerada a partir do bloco
LBL_GEN, caso contrrio, o valor da etiqueta obtido a partir dos vizinhos. Neste sentido o
codificador de prioridade representado pelo bloco PRI_ENC_4X2 determina qual dos
vizinhos fornece a etiqueta, a partir dos critrios ilustrados na Tabela 5.3. Finalmente, o sub-
circuito contido na regio D o responsvel pela gerao dos pares equivalentes relativos
ao pixel P1. Neste sentido, um par equivalente gerado quando o valor de P1 for igual a 1
(um), o pixel N3 j possuir uma etiqueta, bem como pelo menos um dos pixels N5 e N1
tambm j possuir uma etiqueta, desde que essa ltima seja diferente da atribuda a N3.

Tabela 5.3 Tabela-verdade referente aos codificadores de prioridade utilizados no bloco LBL_ASSIGN.
N3 N5 N2 N1 Sada pri_out(1) pri_out(0)
1 X X X N3 1 1
X 1 X X N5 1 0
X X 1 X N2 0 1
X X X 1 N1 0 0

Basicamente, a mesma lgica de funcionamento da unidade de processamento P1 se
aplica unidade de processamento P2. A maior diferena reside no fato das novas etiquetas
atribudas P2 serem geradas tambm pelo bloco pertencente unidade de processamento P1
(LBL_GEN). Originalmente, cada unidade de processamento tinha o seu bloco de gerao de
etiquetas, sendo que a primeira unidade de processamento gerava apenas etiquetas mpares,
enquanto a segunda, apenas pares, no intuito de evitar a sobreposio.
Entretanto, tal soluo gerava contadores cujos valores eram pelo menos duas vezes
superiores a nmero real de componentes, haja vista que os mesmos eram incrementados em
duas unidades cada vez. Como o valor de uma etiqueta se refere ao ndice de um elemento na
matriz de classes, quanto maior o valor da etiqueta, maior o tamanho da matriz de classes
utilizada no processamento.
Assim sendo, a utilizao de um nico bloco de gerao de etiquetas para ambas as
unidades de processamento foi motivada tanto pela economia de recursos, como para facilitar
a implementao do processamento da imagem no modo retrato. No h empecilhos na


122
utilizao de um nico bloco de gerao de etiquetas, pois duas etiquetas nunca so geradas
ao mesmo tempo para P1 e P2, haja vista que quando P1 e P2 so iguais a 1 (um), a mesma
etiqueta atribuda P1 utilizada por P2. Originalmente, neste caso, a etiqueta gerada para P2
era simplesmente descartada.
Conforme mencionado anteriormente, at dois pares equivalentes podem ser gerados
simultaneamente pelo bloco LBL_ASSIGN, ao passo que o bloco CLASS_REG_ARRAY
capaz de processar apenas um por vez. Neste sentido, o bloco COMB_CIRCUIT utilizado
como uma interface entre os primeiros, repassando apenas um par no momento da gerao
dos mesmos e postergando o envio do outro para o ciclo seguinte.
Quando dois pares equivalentes chegam ao circuito, apenas o primeiro (pair1_la,
pair1_lb) avana diretamente at os registradores na regio R2, enquanto o segundo
(pair2_lx, pair2_ly) armazenado temporariamente nos registradores na regio R1. No
ciclo seguinte, o par armazenado na regio R1 que avana at a regio R2, haja vista
que o registrador contigo na regio R3 do tipo J-K, o qual inverte a sada quando ambas
entradas so iguais a 1 (um). A mesma ordem de envio dos pares obedecida caso haja
apenas um par equivalente.


Figura 5.31 Diagrama esquemtico do bloco COMB_CIRCUIT.

O destino final dos pares equivalentes gerados pelo bloco LBL_ASSIGN e
reordenados pelo COMB_CIRCUIT o bloco CLASS_REG_ARRAY, ilustrado na Figura
5.32. Tal bloco composto por uma matriz unidimensional de elementos, onde N o nmero


123
total de elementos na mesma, bem como nmero mximo de etiquetas suportadas pela
arquitetura.
No momento em que o processamento do mdulo FPLA iniciado (preset_car = 1),
o valor na porta de sada do registrador contido em cada elemento ajustado para ser igual ao
ndice do mesmo na matriz, onde o menor ndice igual a 1 (um). A sada de cada registrador
est conectada a dois barramentos (lbl_out_1 e lbl_out_2), que por sua vez, constituem as
entradas dos multiplexadores Mux1 e Mux2, respectivamente, cujos seletores de canais
so as etiquetas que compem um par equivalente.
Durante a primeira etapa, conforme os pares equivalentes so recebidos pelo circuito,
os valores contidos nos respectivos elementos da matriz so selecionados e classificados de
acordo com sua magnitude pelo bloco Min_Max. O maior dos dois valores utilizado como
entrada das portas XOR contidas nos elementos da matriz, enquanto o menor deles alimenta os
multiplexadores existentes nos mesmos elementos. Assim sendo, quando o maior dos valores
for diferente do contido atualmente no registrador do elemento, o valor da menor etiqueta
carregado para o mesmo, caso contrrio, o valor atual permanece.
A partir deste processo possvel determinar as equivalncias entre as etiquetas
durante a execuo da primeira etapa e utilizar tais equivalncias na atualizao do contedo
da memria simblica na segunda etapa.


Figura 5.32 Diagrama esquemtico do bloco CLASS_REG_ARRAY.



124
5.3.2.4 Mdulo OCE

Ao trmino da implementao e validao do mdulo FPLA, o prximo construdo foi
o denominado OCE. Tal mdulo, ilustrado na Figura 5.33, opera de forma simultnea
segunda etapa do mdulo FPLA, tendo como responsabilidade a extrao das coordenadas de
cada objeto encontrado pelo segundo mdulo mencionado. Basicamente, a tarefa consiste em
encontrar as coordenadas esquerda superior e direita inferior do retngulo imaginrio que
delimita cada um dos objetos. Neste sentido, praticamente todos os dados utilizados so
fornecidos pelo mdulo FPLA, como o valor simblico dos pixels (p1_val, p2_val), a
sinalizao da etapa (sec_scan) e as coordenadas de tais pixels (p1_row, p2_row, p1_col,
p2_col).
No que diz respeito forma como a tarefa executada, dois valores simblicos, bem
como as coordenadas dos mesmos, so fornecidos por vez. Caso pelo menos um dos valores
simblicos consista numa etiqueta, a mesma utilizada pelo decodificador na regio A para
a gerao de uma sada no estilo one-hot, a qual empregada na seleo do respectivo bloco
na regio F. Como nesta etapa o processamento realizado com os pixels alinhados
verticalmente, no h empecilho em determinar a entrada do decodificador a partir de uma
operao OR entre os dois valores simblicos. O contedo do bloco selecionado na regio F
ento comparado na regio E com as coordenadas mnimas e mximas provenientes da
regio B. Caso alguma das coordenadas (x1,y1) originrias da regio B for menor do que
as atualmente armazenadas, ento o contedo do bloco na regio F alterado, caso
contrrio, permanece o mesmo. O mesmo se aplica s coordenadas (x2,y2), guardadas as
devidas diferenas.
O valor das coordenadas provenientes da regio B apurado primeiramente em
funo dos valores simblicos de P1 e P2. Caso os mesmos sejam diferentes, o que apurado
pela porta XOR na regio A, os valores fornecidos pela regio B so provenientes da
regio C, caso contrrio, dos comparadores existentes na regio D. Quando tais valores
so provenientes da regio C, significa que existe apenas uma etiqueta entre os valores
simblicos (o outro igual a zero), o que implica dos valores mnimos e mximos serem os
mesmos. Neste sentido, a regio C utilizada para selecionar as coordenadas referentes ao
valor simblico que se constitui numa etiqueta. J no caso dos valores simblicos serem
iguais, independentemente de maiores que zero (o que determinado de fato pelo sinal
p_neqz), as sadas da regio B so definidas a partir dos comparadores na regio D.



125

Figura 5.33 Diagrama de blocos do mdulo OCE.

O contedo da regio F consiste numa matriz unidimensional de blocos, onde N o
nmero de elementos que compem a mesma, de maneira similar que ocorre no bloco
CLASS_REG_ARRAY. De fato, ambas as matrizes devem possuir o mesmo nmero de
elementos, haja vista que cada objeto existente na matriz de classes deve ter uma
correspondncia na matriz de coordenadas. No que diz respeito ao contedo de cada bloco, o
mesmo composto por quatro registradores que armazenam as coordenadas de um objeto,
seus respectivos multiplexadores de entrada e buffers tristate de sada, conforme ilustrado na
Figura 5.34.
Inicialmente (preset = 1) os registradores REG_X1 e REG_Y1 tm seu valor de
sada ajustado para o maior valor representvel nos barramentos x1_din e y1_din,
respectivamente. J os registradores REG_X2 e REG_Y2 tm seu valor de sada ajustado para
zero. Este artifcio utilizado posteriormente na determinao dos elementos que de fato
contm coordenadas de um objeto, haja vista que as atribudas inicialmente so invlidas.
Conforme as etiquetas so informadas ao mdulo OCE, as sadas do respectivo
elemento so conectadas aos barramentos de sada (x1_dout, x2_dout, y1_dout, y2_dout), a
partir da habilitao dos buffers tristate pelo sinal gerado pelo decodificador (o_ena). Da
mesma maneira que ocorre no bloco CLASS_ARRAY_REG, o valor da etiqueta corresponde
ao ndice do elemento na matriz. Tais sadas so utilizadas de forma externa ao bloco (regio
E) na gerao das prprias entradas do mesmo (x1_din, x2_din, y1_din, y2_din). J a


126
atualizao do contedo dos registradores a partir destas entradas ocorre quando o bloco est
selecionado (o_ena = 1) e pelo menos uma etiqueta foi informada ao mdulo OCE (i_ena =
1), considerando que o mesmo esteja ativo (sec_scan = 1).


Figura 5.34 Diagrama esquemtico de um elemento da matriz de coordenadas dos objetos.

A utilizao de buffers tristate foi realizada principalmente no intuito de avaliar o
impacto em relao aos resultados da sntese deste bloco e do bloco CLASS_REG_ARRAY,
onde se utilizaram multiplexadores na seleo dos canais de sada. Neste sentido, o maior
impacto causado pela utilizao de buffers tristate se refere liberao de rea programvel
no dispositivo, haja vista que tais estruturas so fisicamente implementadas, tal qual os cores
PowerPC. No que diz respeito a outros aspectos, como por exemplo a freqncia de operao
do circuito, nenhuma alterao significativa foi notada.

5.3.2.5 Mdulo ON

Finalizada a implementao do bloco OCE, partiu-se ento para a construo do
ltimo mdulo principal do bloco de hardware, denominado ON, cuja tarefa consiste na
normalizao dos objetos previamente localizados pelo mdulo FPLA. Tal mdulo
composto pelos sub-mdulos ON_CP e ON_DP, bem como pelos circuitos secundrios
ABS_ADDR_GEN e LBL_FILTER, conforme ilustrado na Figura 5.35.


127

Figura 5.35 Diagrama de blocos do mdulo ON.

O processo de normalizao consiste no mapeamento para uma matriz de tamanho
fixo dos objetos classificados como caracteres, dentre aqueles encontrados pelo mdulo
FPLA. Neste sentido, o sub-mdulo ON_CP, ilustrado na Figura 5.36, varre a matriz de


Figura 5.36 Mquina de estados que constitui o sub-mdulo ON_CP.


128
objetos (mdulo OCE) de maneira seqencial, selecionando as coordenadas cada objeto a
partir da especificao do ndice do mesmo via barramento ext_obj_idx. Tais coordenadas so
disponibilizadas ao sub-mdulo por intermdio das portas ext_x1, ext_x2, ext_y1 e ext_y2,
sendo ento verificadas em relao sua validade (vide Seo 5.3.2.4) e ao fato de
identificarem um caractere ou no (vide Seo 4.2.1). Caso ambas as condies sejam
verdadeiras, a altura e a largura do objeto so apuradas a partir das coordenadas do mesmo.
Tais medidas, denominadas altura e largura de origem, bem como as mesmas medidas da
matriz de normalizao, denominadas altura e largura de destino, so ento repassadas ao sub-
mdulo ON_DP por intermdio das portas orig_h, orig_w, targ_h e targ_w, respectivamente.
A partir de tais informaes, o sub-mdulo ON_DP apura a razo entre o objeto original e o
de destino, sinalizando o trmino desta operao inicial pelo sinal dp_oper_done.
Deste ponto em diante, ON_CP percorre todas as posies existentes na matriz de
destino, informando cada uma delas ON_DP por intermdio das portas targ_col e targ_row.
ON_DP, por sua vez, apura o endereo do pixel na imagem de origem (memria simblica)
referente quela posio na matriz de destino, levando em considerao o algoritmo de
interpolao vizinho mais prximo. Como o sub-mdulo ON_DP no foi projetado levando
em considerao que a imagem de origem possa estar contida em outra imagem, o endereo
de origem gerado pelo mesmo acaba sendo relativo ao objeto, no imagem. Neste sentido, o
sub-circuito ABS_ADDR_GEN utilizado para a gerao de endereo absoluto do pixel na
imagem de origem.
Alm das coordenadas de destino, ON_CP tambm gera outros dados necessrios ao
armazenamento do pixel de origem na memria de destino (no ilustrada aqui), como o
endereo (targ_addr) e o sinal de gravao (we_targ_data). Os demais sinais gerados pelo
sub-mdulo dizem respeito ao status de operao (done, busy) e status dos caracteres
normalizados (new_vld_obj, vld_obj_cnt), estas ltimas utilizadas por um bloco externo de
status do sistema.
No tocante ao sub-circuito LBL_FILTER, o mesmo utilizado como filtro de
gravao da memria de destino. Caso o ndice do objeto que est sendo processado
(ext_obj_idx, que idntico etiqueta do mesmo) for diferente do valor do pixel na memria
de origem, significa que aquele pixel pertence a outro objeto que se encontra nos limites do
primeiro, sem entretanto fazer parte do mesmo. Neste caso, o valor zero gravado na
memria de destino.
Conforme mencionado h pouco, uma das tarefas executadas pelo sub-mdulo
ON_DP consiste em apurar a razo entre a imagem de origem e a matriz de destino. Tal razo


129
utilizada no intuito de possibilitar a localizao do pixel correspondente a cada coordenada
da matriz de destino na imagem de origem. Assim sendo, foi necessrio o emprego de um
circuito divisor, bem como uma forma de representao numrica que suportasse nmeros
racionais positivos.
No que diz respeito ao circuito divisor, inicialmente optou-se por uma implementao
disponibilizada por Herveille (2006), na qual empregado o algoritmo de diviso sem
restaurao. Tal bloco toma um dividendo de 2N bits e um divisor de N bits e disponibiliza
um quociente de N bits, um resto (inteiro) de N bits, alm de sinalizar divises por zero e
overflows. O primeiro resultado demora N bits para ser disponibilizado, enquanto que os
subseqentes so fornecidos a cada novo ciclo. Posteriormente, optou-se pela implementao
disponibilizada por Erokhin (2006), a qual possui as mesmas caractersticas da anterior, mas
disponibilizando os resultados a cada novo ciclo desde o princpio. Em ambos os casos,
apenas nmeros inteiros so aceitos.
J em relao forma de representao numrica, optou-se pela soluo comumente
utilizada para os casos de mapeamento de algoritmos escritos em linguagens de alto nvel para
uma arquitetura de hardware: aritmtica de ponto fixo. Neste sentido, decidiu-se pela
utilizao de uma palavra de 26 bits para a representao numrica, sendo o comprimento da
frao igual a oito bits. Dentre os motivos que justificam tal escolha, pode-se citar os
seguintes:
As dimenses mximas de uma imagem de entrada (regio da placa) so de
260 x 80 pixels (largura x altura);
As dimenses mximas para um objeto ser considerado um caractere so de 30
x 34 pixels (largura x altura). Tanto esta medida, quanto a citada no item
anterior, foram apuradas durante a etapa de processamento manual do segundo
conjunto de imagens (vide Seo 5.2.2);
Um comprimento de frao de oito bits possibilita preciso suficiente para a
representao da razo, at porque o resultado final acaba sendo truncado;
Como o circuito divisor empregado suporta apenas a diviso inteira, o
dividendo deve ser deslocado N bits para a esquerda antes da operao ser
efetuada, onde N igual ao comprimento da frao. Desta forma, ignora-se o
resto e utiliza-se apenas o quociente;
Considerando-se oito bits para frao e nove bits para a parte inteira, so
necessrios mais oito bits para o deslocamento anterior multiplicao,


130
totalizando assim, 25 bits. Como o circuito multiplicador exige que o nmero
de bits do dividendo seja exatamente o dobro dos demais termos, adiciona-se
mais um bit ao dividendo, totalizando assim, 26 bits.
A partir destas consideraes acerca do sub-mdulo ON_DP, torna-se vivel a
discusso sobre a forma de operao dos blocos internos ao mesmo, ilustrados na Figura 5.37.
Inicialmente, as medidas de largura e altura de origem (orig_w, orig_h) e destino (targ_w,
targ_h) so transformadas de inteiras para ponto fixo pelos blocos na regio A. A alterao
de tais entradas implica no clculo das razes de largura e altura entre as mesmas pelos blocos
na regio B, sendo a sinalizao de trmino desta operao apurada e informada ao sub-
mdulo ON_CP pelo circuito na regio C. Na seqncia, cada par de coordenadas da matriz
de destino tambm convertido para a representao de ponto fixo pelos blocos na regio
D, sendo em seguida utilizado na apurao do endereo de origem.


Figura 5.37 Diagrama de blocos referente ao contedo do sub-mdulo ON_DP.

As coordenadas referentes coluna e linha de origem so apuradas nas regies E e
F, respectivamente. A primeira consiste no produto entre a coluna de destino e a razo
latitudinal, enquanto ltima no produto entre a linha de destino e a razo longitudinal. Como o
endereo de origem refere-se a uma memria seqencial, foi necessria uma multiplicao
adicional entre a linha de origem (previamente truncada) e a largura de origem, realizada na
regio G. Finalmente, o endereo de origem apurado pela soma das sadas truncadas das
regies E e G.

5.3.2.6 Verso final



131
Ao trmino da implementao e validao individual dos mdulos FPLA, OCE e ON,
os mesmos foram ento agregados aos demais, resultando no diagrama de blocos ilustrado na
Figura 5.38. Por conta desta juno dos mdulos, o conjunto de blocos bsicos (Seo 5.3.2.2)
sofreu modificaes no sentido de incluso de novos mdulos, bem como excluso e alterao
dos j existentes.


Figura 5.38 Diagrama de blocos referente ao bloco de hardware.

No que diz respeito excluso, o mdulo UART foi eliminado por conta da maior
convenincia de utilizao da interface de comunicao serial atrelada plataforma
embarcada bsica. Desta forma, alm do fato da interface serial tornar-se acessvel via
software, o envio da resposta apurada pelo sistema embarcado (os cdigos ASCII da placa)
realizado de uma forma mais simples e ortodoxa. Como o bloco de hardware constitui um
perifrico do sistema embarcado, deixar o gerenciamento do servio de comunicao a cargo
do mesmo seria mais complexo e pouco convencional. Entretanto, na comunicao entre o
perifrico (bloco de hardware) e o sistema (embarcado), o protocolo baseado nos sinais
uart_rda e uart_td foi mantido, haja vista a eliminao do mesmo demandaria um esforo
desnecessrio para o momento.
Em relao aos mdulos alterados, a modificao mais significativa referiu-se ao
circuito de gerao de clocks. O circuito original foi substitudo por outro de maior


132
funcionalidade, denominado Digital Clock Manager (DCM), disponibilizado como recurso do
prprio FPGA. Dentre outras funes, um DCM capaz de reduzir da variao da fase de
clock em diferentes elementos (clock skew), bem como derivar diferentes freqncias a partir
da multiplicao e diviso de um clock principal. Considerando um clock principal de 100
MHz (clk100), o mdulo DCM foi utilizado na gerao de clocks secundrios com baixa
variao de fase de 50 (clk), 25 (clk_div2) e 12,5 (clk_div4) MHz. Verses defasadas em 180
das duas ltimas freqncias citadas foram geradas com auxlio de inversores. A reduo na
freqncia originalmente planejada para os mdulos se deveu ao aumento do atraso de
propagao causado pela conexo entre os blocos. Outras modificaes de menor impacto
foram causadas pela incluso dos sinais referentes aos mdulos OCE e ON no mdulo de
controle, bem como pelo acesso proporcionado ao mdulo ON memria simblica, via
mdulo RAM_SYM_MUX.
Finalmente, no tocante s incluses, trs mdulos e dois circuitos secundrios foram
adicionados ao conjunto de blocos bsicos. Entre os novos mdulos, o denominado
OCE_MUX responsvel pela multiplexao dos canais conectados s portas p1_val e
p2_val do mdulo OCE. Tais portas so alimentadas pelo mdulo FPLA, quando da execuo
da etapa de etiquetao de componentes conectados, pelo mdulo ON, quando da execuo da
etapa de normalizao e pelo mdulo SIRC_CP, quando da consulta da matriz de
coordenadas. J o mdulo RAM_NOBJ consiste na memria de objetos normalizados,
mencionada, mas no ilustrada anteriormente, enquanto o mdulo SYS_STA_REG o
responsvel por disponibilizar informaes de status do sistema. A palavra de status
(status_reg) composta por quatro bits, onde os trs menos significativos representam o
nmero de caracteres normalizados (zero a sete) e o bit mais significativo indica o trmino do
processamento executado pelo bloco de hardware.
J entre os novos circuitos, FPLA_P_CONV utilizado na converso das coordenadas
geradas por FPLA para as requisitadas por OCE, enquanto o outro circuito seleciona as fontes
de endereamento da memria de objetos normalizados. RAM_NOBJ endereada pelo
mdulo ON durante a execuo da etapa de normalizao e por SIRP_CP no restante do
tempo, permitindo assim a consulta da matriz de objetos normalizados. O primeiro
barramento de endereamento do mdulo RAM_NOBJ exclusivamente conectado porta
ram_nobj_addr, habilitando assim o acesso direto memria para a camada de software
embarcado.
As principais caractersticas arquiteturais do bloco de hardware encontram-se
resumidas na Tabela 5.4. Dentre as implicaes dos valores de tais caractersticas, pode-se


133
citar o tamanho dos mdulos de memria. Neste sentido, ambos os mdulos RAM_BIN e
RAM_SYM so capazes de armazenar at 20.800 palavras de oito bits, haja vista que o
sistema suporta imagens de entrada com at 260 pixels de largura e 80 pixels de altura.
Embora a memria binria necessite de palavras de apenas um bit, optou-se por mant-las
com oito, para o caso de uma futura implementao do processo de etiquetao diretamente
sobre imagens em 256 tons de cinza. J o mdulo RAM_NOBJ necessitaria de 1575 palavras
de um bit, haja vista que at sete objetos de 15 x 15 pixels devem poder ser armazenados.
Entretanto, o mdulo est estruturado em 50 palavras de 32 bits cada, no intuito de acelerar o
processo de acesso direto memria mencionado no pargrafo anterior. Apesar de tal
estrutura, no h empecilho algum ao uso de palavras de um bit na segunda interface de
acesso ao mdulo (portas clkb, addrb, web e doutb).

Tabela 5.4 Principais caractersticas arquiteturais do bloco de hardware.
Mdulo Caracterstica Valor
Dimenses mximas da imagem de entrada (largura x altura) 260 x 80 FPLA
Nmero de elementos na matriz de classes 128
OCE Nmero de elementos na matriz de coordenadas 128
Comprimento da palavra na representao de ponto fixo (bits) 26
Comprimento da frao na representao de ponto fixo (bits) 8
ON
Dimenses da matriz de sada (largura x altura) 15 x 15

Considerando o FPGA utilizado na implementao do sistema embarcado (um Virtex-
II Pro, modelo XC2VP30), um resumo de utilizao de recursos do mesmo apresentado na
Tabela 5.5. Tal FPGA possui uma rea programvel composta por 30.816 elementos lgicos,
onde cada elemento lgico equivale a 2,25 slices. Cada slice, por sua vez, composta
basicamente por uma Look Up Table (LUT) de quatro entradas, um flip-flop e uma lgica de
carry associada (XILINX, 2007).

Tabela 5.5 Resumo de utilizao de recursos do FPGA pelo bloco de hardware.
Usados Disponveis Utilizao
Recursos lgicos
Nmero de slice flip-flops 10.532 27.392 38%
Nmero de LUTs de 4 entradas 9.924 27.392 36%
Nmero de blocos de RAM de 18Kbits (Block RAMs) 23 136 16%
Nmero de multiplicadores de 18x18 bits (MULT18x18s) 6 136 4%
Nmero de clocks globais (GCLKs) 5 16 31%
Nmero de gerenciadores digitais de clock (DCMs) 2 8 25%
Distribuio lgica
Nmero de slices ocupados 9.694 13.696 70%
Nmero de slices contendo apenas lgica relacionada 9.694 9.694 100%
Nmero de slices contendo lgica no relacionada 0 9.694 0%


134
J em relao s mximas freqncias de operao do circuito, exibidas na Tabela 5.6,
as mesmas foram obtidas aps a realizao do processo de posicionamento e roteamento no
ambiente ISE. Considerando especificamente o FPGA utilizado neste caso, o circuito
projetado encontra-se em modo normal de operao. Entretanto, por conta de um dos
requisitos de timming no ter sido atingido, pode ocorrer que tal condio de operao no
possa ser reproduzida em outros dispositivos similares, por conta de variaes no processo de
fabricao dos mesmos. Neste sentido, uma das formas de sanar tal restrio consiste no
emprego da tcnica de pipelining. A princpio, a utilizao de um nico estgio j deveria ser
suficiente, pois espera-se que a freqncia de operao dobre numa configurao como esta.

Tabela 5.6 Relatrio de restries de tempo fornecido pela ferramenta ISE.
Requisitado Obtido
Clock
Perodo(ns) Freqncia(MHz) Perodo(ns) Freqncia(MHz)
Clk 20 50,0 25,455 39,285
clk_div2 40 25,0 33,480 29,868
clk_div4 80 12,5 62,150 16,090

5.3.3 Bloco de software

5.3.3.1 Introduo

Findada a construo do bloco de hardware, ainda restava a implementao do bloco
de software para que o sistema embarcado pudesse ser concludo. Entretanto, a
implementao do bloco de software estava condicionada prvia existncia da plataforma
embarcada sobre a qual o mesmo seria executado. Neste sentido, a elaborao de tal
plataforma se deu com o auxlio do assistente Base System Builder (BSB), disponibilizado
pela ferramenta Xilinx Platform Studio (XPS), o qual possibilita a construo de um sistema
bsico pela especificao de atributos como (XILINX, 2006d):
tipo de processador (hard ou soft core, dependendo do tipo de FPGA);
barramento de comunicao;
freqncia de operao do processador e do barramento;
tipo e tamanho de memria voltil;
configurao de memria cache;
perifricos convencionais (dispositivos de E/S de propsito comum, porta
de comunicao serial, temporizadores, etc.);


135
fontes de interrupo dos perifricos selecionados.
A plataforma inicial de hardware era composta basicamente por dois hard cores
PowerPC, um mdulo RAM de 64 Kbytes, um mdulo UART a 38.400 bits por segundo e um
boto de contato momentneo, utilizado como reset externo. Em relao aos processadores,
ambos operavam a 100 MHz e no empregavam memria cache, sendo que um deles era
utilizado apenas para possibilitar a depurao do software sobre o outro. O processador sobre
o qual o software seria executado estava conectado ao mdulo RAM por um barramento
Processor Local Bus (PLB), enquanto o mdulo UART e o boto de contato momentneo
conectavam-se ao mesmo via barramento On-chip Peripheral Bus (OPB). A freqncia de
operao de ambos os barramentos era de 100 Mhz, sendo que a comunicao entre os
mesmos era realizada por intermdio de uma ponte PLB pra OPB.
J em relao plataforma de software, tanto nesta plataforma embarcada inicial,
como na verso final da mesma, nenhum SO foi empregado, mas apenas o conjunto de
componentes associados placa de prototipao utilizada (XUP-V2Pro). Tal conjunto,
denominado Board Support Package (BSP), composto por itens como drivers, bibliotecas,
dispositivos de E/S padro, rotinas de interrupo e outras caractersticas de software
relacionadas (XILINX, 2006c).
A partir desta plataforma foi construdo e validado o mdulo de reconhecimento de
caracteres, conforme discutido a seguir.

5.3.3.2 A RNA sobre plataforma embarcada

Embora a implementao do bloco de software pudesse ter sido efetuada a partir da
prpria ferramenta XPS, optou-se pela utilizao de outra mais apropriada para este fim,
denominada Software Development Kit (SDK). Tal ferramenta, tambm integrante do
ambiente EDK, agiliza o processo de desenvolvimento de software embarcado por conta de
caractersticas como:
Conjunto avanado de funcionalidades de edio e compilao de cdigo
C/C++;
Gerenciamento de projetos;
Configurao de build e gerao automtica do Makefile;
Perfeita integrao com o ambiente EDK para a depurao e perfilamento de
aplicaes embarcadas.


136
Durante o processo de mapeamento da RNA sobre plataforma x86 para a plataforma
embarcada, trs foram as principais modificaes realizadas na mesma. A primeira
modificao consistiu numa nova implementao da RNA, a qual veio a substituir tambm a
utilizada sobre plataforma x86. Neste sentido, o intuito foi o de utilizar o suporte linguagem
C++ fornecido pela ferramenta SDK para projetar uma RNA mais compacta e flexvel que a
original escrita em C. Tal implementao foi trivial, pois contemplava apenas a rede em si,
haja vista que os coeficientes haviam sido obtidos pelo MATLAB.
J a segunda modificao, que consistiu na incluso dos coeficientes relativos s
sinapses das redes no prprio cdigo fonte do programa que as executa, foi realizada por
necessidade. Originalmente, tais coeficientes eram armazenados em arquivos de texto,
conforme mencionado na Seo 5.2.3, sendo estes arquivos lidos e os coeficientes atribudos
s respectivas sinapses logo aps a criao das redes. Entretanto, como no caso do sistema
embarcado nenhum SO foi utilizado, no existe a possibilidade de acesso um sistema de
arquivos. Deste modo, a soluo foi a criao de constantes matriciais para o armazenamento
dos coeficientes, as quais passaram a ser utilizadas no construtor das redes para a atribuio
dos pesos s sinapses das mesmas.
Neste ponto a plataforma base sofreu a primeira alterao, pela substituio do mdulo
RAM interno (utilizava recursos do FPGA) de 64 Kbytes, por outro externo, do tipo Double
Data Rate (DDR) Synchronous Dynamic Random Access Memory (SDRAM), de 256 Mbytes.
Considerando as topologias 225x40x40x26 e 225x20x20x10 para RNAs de letras e nmeros,
respectivamente, bem como o fato de cada coeficiente representado em ponto flutuante
consumir quatro bytes, so necessrios 66.960 bytes apenas para a seo de dados referente
aos coeficientes. Como neste caso o tamanho mximo permitido para a memria de dados
de 64 Kbytes, foi necessria a utilizao de uma memria externa ao FPGA. Considerando a
hiptese de uso do soft core Microblaze, a situao ainda mais desfavorvel, haja vista que o
tamanho mximo para memria de dados e instrues de 64 Kbytes.
To logo tais alteraes foram efetuadas, realizou-se uma avaliao do processo de
reconhecimento sobre plataforma embarcada, cujo intuito foi o de apurar o tempo de
processamento demandado pelo mesmo. Para tanto, foi efetuada a contagem do nmero de
ciclos necessrios ao reconhecimento dos sete caracteres de uma placa a partir da utilizao
de um temporizador conectado ao barramento PLB e o seguinte pseudocdigo:






137
Inicia contador
Para ndice de 1 at 3 faa
Execute ForwardPass da rede de letras (vetor de objetos normalizados[ndice])
Fim Para
Para ndice de 4 at 7 faa
Execute ForwardPass da rede de nmeros (vetor de objetos normalizados[ndice])
Fim Para
Pra contador

onde a funo ForwardPass consiste na propagao da matriz de entradas pelas camadas da
RNA.
Conforme ilustrado na Tabela 5.7, o tempo inicialmente demandado pelo processo foi
muito alm do esperado, principalmente por conta da inexistncia de uma unidade de ponto
flutuante no core PowerPC. Neste sentido, a primeira tentativa no intuito de reduzir o tempo
de processamento consistiu na explorao das opes de compilao do programa, onde
(XILINX, 2006a):
-g adiciona informaes de depurao no cdigo fonte, o que torna a execuo
do programa mais lenta;
-On define o nvel de otimizao empregado pelo compilador, onde n = 0
implica em nenhuma otimizao, enquanto o nvel de otimizao mximo
obtido com n = 3;
-msoft-float causa a emulao em software das operaes que empregam ponto
flutuante (opo padro);
-mppcperflib implica no uso de bibliotecas avanadas para emulao de
inteiros e ponto flutuante em baixo nvel.
Como a explorao de tais opes de compilao no surtiu efeito considervel, outra
tentativa consistiu em simular uma reduo no nmero das sinapses das RNAs, o que

Tabela 5.7 Tempo de execuo inicialmente demandado pelo processo de reconhecimento de caracteres
sobre plataforma embarcada.
Opes de compilao Topologia de RNA N ciclos Tempo (s)
Letras Nmeros
-g O0 -msoft-float 225x40x40x26 225x20x20x10 285350872 2,85350872
-g O0 -mppcperflib 225x40x40x26 225x20x20x10 285350825 2,85350825
-O3 -mppcperflib 225x40x40x26 225x20x20x10 252524773 2,52524773
-g O0 -msoft-float 200x40x40x26 200x20x20x10 247352503 2,47352503
-g O0 -mppcperflib 200x40x40x26 200x20x20x10 247352532 2,47352532
-O3 -mppcperflib 200x40x40x26 200x20x20x10 217768735 2,17768735
-g O0 -msoft-float 200x20x20x26 200x20x20x10 185542166 1,85542166
-g O0 -mppcperflib 200x20x20x26 200x20x20x10 185542137 1,85542137
-O3 -mppcperflib 200x20x20x26 200x20x20x10 163591896 1,63591896



138
implicou numa reduo de 42,66% no melhor dos casos. Entretanto, apesar de tal reduo, o
tempo demandado ainda era muito alm do esperado (alguns milsimos de segundos), alm
do fato da reduo das sinapses da RNAs provocar um impacto negativo na taxa de
reconhecimento.
Felizmente, conforme demonstrado por Pratt (2006b), dois simples ajustes podem
reduzir em at 10 vezes o tempo de execuo de aplicativos baseados em FPGAs Virtex-II
Pro e processadores PowerPC. O primeiro ajuste consiste no aumento da freqncia de
operao do processador, enquanto o segundo, na habilitao das memrias cache de
instrues e dados. No caso das memrias cache, operaes realizadas a partir das mesmas
representam acessos de ciclo nico para a CPU, enquanto operaes envolvendo a memria
externa acabam por consumir um nmero muito maior de ciclos em cada acesso. Neste
sentido, uma nova bateria de avaliaes foi realizada, considerando agora tambm o soft core
MicroBlaze. Apenas topologias de rede 225x40x40x26 (letras) e 225x20x20x10 (nmeros)
foram contempladas neste novo conjunto de avaliaes.
Os novos resultados, como esperado, realmente obtiveram um aumento de at 10
vezes no desempenho referente ao tempo de execuo, conforme ilustrado na Tabela 5.8. A
partir da anlise de tais dados, bem como pela comparao dos mesmos com os obtidos

Tabela 5.8 Tempo de execuo demandado pelo processo de reconhecimento de caracteres aps
otimizaes na plataforma embarcada.
Processador Cache (KB) UPF BS Opes de compilao N ciclos
1
Tempo(s)
Tipo Freq.
(MHz)
Instr. Dados
PPC 100 16 16 N N -g -O0 -msoft-float 25295654 0,25295654
PPC 100 16 16 N N -g -O0 mppcperflib 25295671 0,25295671
PPC 100 16 16 N N -O3 mppcperflib 22095847 0,22095847
PPC 300 16 16 N N -O3 -mppcperflib 7681319 0,07681319
MB 100 64 64 N N -xl-mode-executable -g -O0 64756028 0,64756028
MB 100 64 64 N N -xl-mode-executable -O3 61451422 0,61451422
MB 100 64 64 S N -xl-mode-executable -g -O0 27623032 0,27623032
MB 100 64 64 S N -xl-mode-executable -O3 24027063 0,24027063
MB 100 64 64 S S -xl-mode-executable -g -O0 17087825 0,17087825
MB 100 64 64 S S -xl-mode-executable -O3 13492318 0,13492318

desempenho foi a utilizao de memrias cache. Em relao aos parmetros especficos de
cada processador, o aumento da freqncia de operao no PowerPC, neste caso, implicou

1
O perodo de cada ciclo de 10 ns, haja vista que o temporizador est conectado ao barramento PLB, cuja
freqncia de operao de 100 MHz.



139
num ganho proporcional (por um fator de trs) de tempo. J no caso do MicroBlaze, a
utilizao da Unidade de Ponto Flutuante (UPF) se sobressaiu ao emprego do Barrel Shifter
(BS) e s otimizaes em nvel de compilao.
Apesar do decrscimo considervel no tempo de execuo do processo de
reconhecimento proporcionado pela explorao das caractersticas arquiteturais dos
processadores, 76 ms ainda era um tempo em torno de 10 vezes acima do esperado. Deste
modo, partiu-se para a terceira e ltima grande modificao na RNA original, alterao esta
que consistiu na criao de uma verso em ponto fixo do algoritmo de propagao das redes.
Neste caso, o ganho em velocidade de processamento se d por conta do uso exclusivo de
nmeros inteiros, sendo que o nmero de bits necessrios representao das partes inteira e
fracionria varia conforme a aplicao.
Originalmente a converso de um algoritmo em ponto flutuante para a respectiva
verso em ponto fixo tende a ser um processo seno difcil, ao menos trabalhoso. Entretanto,
com o advento de ambientes de suporte ao desenvolvimento, essa tarefa facilitada. Neste
sentido, empregou-se um processo de converso baseado na metodologia discutida em
MATLAB, (2006). Nesta metodologia, o usurio especifica o comprimento das palavras das
variveis e deixa a cargo do pacote de ponto fixo a apurao dos pontos binrios, mantendo
assim a melhor preciso possvel na resposta e evitando a ocorrncia de overflows.
Tal metodologia, entretanto, aplica-se de forma direta somente a operaes aritmticas
simples, como adio, subtrao e multiplicao, no tendo efeito sobre funes
trigonomtricas como a tangente hiperblica, utilizada como funo de ativao.
Desdobrando a tangente hiperblica para a sua forma mais simples, tem-se a seguinte equao

1
1
) tanh(
2
2
+

=
x
x
e
e
x
(5.1)
a qual se apresenta ainda num formato um tanto quanto complexo para o seu mapeamento
para ponto fixo.
Por conta desta dificuldade, resolveu-se investir numa simplificao da mesma.
Conforme mencionado na Seo 2.4.2, a funo piecewise-linear consiste justamente numa
aproximao de um amplificador no-linear, entretanto, opera originalmente na faixa de
valores [0, 1]. Decidiu-se ento estender a faixa de operao da funo piecewise-linear
original para [-1, 1], originando assim uma aproximao da funo tangente hiperblica. No
que diz respeito ao desempenho de tal aproximao, o mesmo perfeitamente aceitvel,
conforme discutido no captulo de resultados. Na Figura 5.39 encontram-se ilustradas as
repostas fornecidas pelas verses original e aproximada da tangente hiperblica.


140

Figura 5.39 Ilustrao das respostas geradas pela tangente hiperblica original e sua aproximao
(tanh_pw).

Levando em considerao a verso em ponto fixo do algoritmo de propagao e o
emprego de uma aproximao da funo de ativao original, foram apurados os resultados
exibidos na Tabela 5.9. Considerando tais dados, optou-se pela utilizao do processador
PowerPC e de coeficientes representados em palavras de 16 bits na verso final do sistema
embarcado, j que o menor tempo foi obtido para este caso. Entretanto, vale pena ressaltar
que no caso da impossibilidade de uso do hard core PowerPC, a adoo do soft core
Microblaze permitiria que o desempenho do sistema se mantivesse muito prximo ao atual.

Tabela 5.9 Tempo de execuo demandado pelo processo de reconhecimento de caracteres aps
otimizaes no algoritmo de propagao das RNAs.
Processador Cache (KB) UPF DB Opes de compilao N ciclos Tempo(s)
Tipo Freq.
(MHz)
Instr. Dados
Comprimento da palavra utilizada na representao dos coeficientes das redes: 32 bits
PPC 300 16 16 N N -O3 406573 0,00406573
MB 100 64 64 S S -xl-mode-executable -O3 1006711 0,01006711
Comprimento da palavra utilizada na representao dos coeficientes das redes: 16 bits
PPC 300 16 16 N N -O3 242443 0,00242443
MB 100 64 64 S S -xl-mode-executable -O3 600310 0,00600310

Finalmente, na prxima seo so discutidos os passos restantes na construo do
sistema embarcado.



141
5.3.4 Consolidao do sistema

Tendo ambos os blocos de hardware e software sido implementados e validados de
forma independente, duas tarefas ainda eram necessrias para a concluso da verso
embarcada dos sistema de extrao e reconhecimento de caracteres. A primeira delas consistia
na agregao do bloco de hardware plataforma embarcada, enquanto a segunda no
interfaceamento entre os blocos em si.
No que diz respeito conexo do bloco de hardware plataforma embarcada, a
mesma foi efetuada com auxlio de duas ferramentas distintas: XPS e ISE. Num primeiro
momento foi utilizado o assistente de criao e importao de perifricos disponibilizado pela
ferramenta XPS para a criao de modelos HDL compatveis com a interface de perifrico
utilizada pelo EDK. Durante este processo faz-se necessria a seleo de vrias caractersticas
pertinentes ao perifrico, como o tipo de barramento ao qual ele ser conectado, os servios
disponibilizados ao mesmo, bem como as configuraes de cada um deles.
Dentre os tipos de barramentos, dois so os principais a serem empregados no caso de
um processador PowerPC:
OPB: consiste num modelo de barramento projetado para a conexo
simplificada de dispositivos de baixo desempenho implementados em chip,
cujo propsito no o de conexo direta ao ncleo do processador. O ncleo
do processador acessa os perifricos conectados a esse tipo de barramento por
meio de uma ponte OPB (IBM, 2007a);
PLB: consiste num modelo de barramento projetado para conexo direta com
ncleo do processador. Geralmente utilizado na conexo de elementos que
necessitam grandes larguras de banda como memrias externas e controladores
DMA (IBM, 2007b).
Entretanto, como a interface de tais barramentos um tanto quanto complexa, o
ambiente EDK emprega um modelo que simplifica a conexo dos perifricos aos mesmos.
Tal modelo, ilustrado na Figura 5.40, denomina-se Intellectual Property Interconnect (IPIC) e
consiste num mdulo que permite a conexo entre o ncleo do perifrico (User Logic) e o
bloco Intellectual Property Interface (IPIF), encarregado de conectar o ncleo ao barramento
OPB ou PLB. Mais do que a simples conexo, o bloco IPIF disponibiliza servios requeridos
pela maioria dos perifricos, como decodificao de endereos, registradores endereveis,
gerenciamento de interrupes, etc. (XILINX, 2006b). Desta forma, a conexo do perifrico


142
ao barramento simplificada, haja vista a complexidade da conexo resolvida pelo bloco
IPIF.


Figura 5.40 Diagrama ilustrativo da composio e forma de conexo do modelo IPIC.

Na prtica, ao final do processo de criao de perifrico so gerados dois arquivos
HDL, bem como um arquivo de cabealho contendo as chamadas a todos os servios
implementados para que os mesmos possam ser acessados por software. Em relao aos
arquivos HDL um deles se referente ao mdulo IPIF, enquanto o outro ao mdulo IPIC. Neste
sentido, o prximo passo consistiu na instanciao do ncleo do perifrico no mdulo IPIC,
bem como a conexo do mesmo com o mdulo IPIF. Essa tarefa foi realizada com o auxlio
da ferramenta ISE, sendo que para este caso a comunicao do perifrico com o software
embarcado foi realizada por intermdio de registradores, via barramento OPB. Estando o
perifrico compatvel com o modelo IPIC, a ltima etapa da conexo do mesmo plataforma
embarcada consistiu na sua importao, por intermdio do mesmo assistente utilizado na sua
criao.
Como ltima tarefa a ser realizada no processo de construo do sistema embarcado, a
conexo entre o bloco de hardware, agora agregado ao sistema, e o bloco de software se deu
pela por intermdio da escrita e leitura de registradores. Neste sentido, durante a etapa
anterior foram disponibilizados trs registrados de 32 bits cada, tendo os mesmos sido
conectados s portas do bloco de hardware conforme ilustrado no Quadro 5.1. No caso das
portas cujo comprimento inferior ao da faixa do registrador disponibilizada para as mesmas,
os bits sobressalentes (sempre os mais significativos alm do comprimento da porta) so
ignorados.


143
Registrador Porta no bloco de hardware
Nome Faixa Nome Comprimento
Portas de entrada no bloco de hardware
7:0 uart_dbin 8
15:8 uart_rda 1
23:11 uart_td 1
REG0
31:24 ram_nobj_addra 6
Portas de sada no bloco de hardware
7:0 uart_dbout 8
15:8 uart_rd 1
23:11 uart_wr 1
REG1
31:24 status_reg 4
REG2 31:0 ram_nobj_douta 32
Quadro 5.1 Mapeamento realizado entre os registradores acessveis por software e as portas do bloco de
hardware.

A partir de tal mapeamento dos registradores e do arquivo de cabealho
disponibilizado na etapa anterior, o software responsvel pela execuo do processo de
reconhecimento de caracteres foi modificado e integrado ao bloco de hardware. Neste
sentido, os bytes recebidos pela interface serial atrelada ao sistema embarcado so repassados
ao mdulo de hardware por intermdio da escrita dos mesmos nas respectivas faixas do
registrador REG0. J as respostas fornecidas pelo bloco de hardware para envio pela interface
serial so obtidas a partir da leitura das respectivas faixas do registrador REG1. No caso do
recebimento de um comando de execuo do processo de extrao, a camada de software
identifica o mesmo antes de repass-lo ao bloco de hardware e na seqncia inicia o
monitoramento da porta status_reg (REG1(31:24)). Quando o trmino do processo de
extrao detectado, os objetos normalizados so lidos da memria de objetos normalizados
por intermdio das portas ram_nobj_addra (REG0(31:24)) e ram_nobj_douta (REG2).
Conforme cada objeto normalizado lido o mesmo identificado pelo bloco de software
(RNA) e armazenado num vetor temporrio, cujo contedo retornado via serial ao aplicativo
de validao sobre plataforma x86 ao trmino do processo.
No prximo captulo apresentada a metodologia empregada na apurao dos
resultados de ambas as verses do sistema, bem como uma comparao de desempenho entre
as mesmas.

6 RESULTADOS

6.1 Introduo

Findada a implementao de ambas as verses sobre plataforma x86 e embarcada do
sistema, partiu-se ento para a apurao dos resultados proporcionados pelas mesmas. Tais
resultados contemplam tanto a capacidade de identificao das placas de licenciamento
veicular, como o tempo demandado para a execuo da tarefa.
Entretanto, anterior apurao de tais dados foi realizada a implementao da opo
que permitiu a automatizao do processo, haja vista o volume de dados de entrada e sada.
Desta forma, inicialmente apresentado o mtodo e as consideraes envolvidas na
tarefa de apurao dos resultados, sendo estes ltimos discutidos na seqncia.

6.2 Metodologia de apurao dos resultados

6.2.1 Introduo

Conforme mencionado na Seo 5.2.2, num primeiro momento houve interveno
humana no processamento do conjunto de entradas no intuito de classificar as imagens e
disponibilizar dados confiveis para comparao. Posteriormente, com base nestas
classificaes e dados de comparao, o conjunto de entrada foi processado de forma
automtica, provendo os resultados discutidos em seguida.

6.2.2 Os dados de entrada

O conjunto de dados utilizado tanto no fornecimento de parmetros para a construo
da verso final dos sistemas, bem como na obteno dos resultados fornecidos pelos mesmos
composto por 3.000 entradas. Cada entrada consiste numa imagem da parte traseira de um
veculo no momento de sua passagem por um ponto de controle, bem como do respectivo
arquivo de coordenadas referentes possvel localizao da placa do mesmo na imagem. A
Figura 6.1 ilustra algumas das imagens que compem o conjunto de entradas.



145

Figura 6.1 Ilustrao de algumas das imagens que compem o conjunto de dados de entradas.

Entretanto, por motivos que vo desde a existncia de elementos que comprometem a
visibilidade da placa (desgaste, sujeira, ferrugem, etc.) at a falha em algum ponto do
processamento, apenas um subconjunto destas 3.000 entradas pde ser considerado. Para
tanto, durante a etapa de processamento semi-automatizado foram atribudas classificaes a
cada uma das entradas, permitindo assim que apenas aquelas onde a placa foi corretamente
localizada fossem utilizadas na apurao de resultados.
O mtodo de classificao utilizado composto por dois nveis, onde o primeiro
define classes mais abrangentes e o segundo as mais especficas, conforme ilustrado pelo
Quadro 6.1, onde as clulas contendo o smbolo indicam combinaes impossveis. Neste
sentido, dentre os motivos que no conduziram correta localizao de uma placa pode-se
citar dficits do algoritmo de localizao (Figura 6.2(a)), bem como a inexistncia/existncia
parcial (Figura 6.2(b)) ou comprometimento (Figura 6.2(c)) da placa na imagem. J em
relao aos casos onde a placa foi corretamente localizada, duas situaes negativas foram
detectadas: visibilidade comprometida ((Figura 6.2(d)-(e)) e dficit do algoritmo de
binarizao (Figura 6.2(f)-(g)). O descarte sumrio de entradas ocorreu nos casos de placas de
motocicletas ou com tonalidades invertidas (fundo escuro, letras claras, como na (Figura
6.2(h)).

Classificao primria
Localizada
totalmente
Localizada
parcialmente
No
localizada
Ignorada
Totalmente visvel 1112 39 280
Parcialmente visvel 24 138
No visvel 140
Comprometida 238 8 492
Binarizao deficitria 289
Motocicleta 147
Tonalidades invertidas 93
C
l
a
s
s
i
f
i
c
a

o


S
e
c
u
n
d

r
i
a


1639 71 1050 240
Quadro 6.1 Classficaes apuradas para o conjunto original de entradas a partir do emprego da
classificao de dois nveis.


146

Assim sendo, do conjunto inicial de 3.000 entradas, 1.391 foram descartadas por conta
da impossibilidade de localizao completa das placas ou de restries deste sistema. Das
1.639 entradas restantes, 238 foram desconsideradas por apresentarem comprometimentos que
impossibilitariam o seu reconhecimento completo. Desta forma, o conjunto considerado na
apurao de resultados composto por 1.401 entradas. Caso seja levado em considerao que
o processo de binarizao, embora necessrio, no constitui o sistema em si, ento o conjunto
a ser considerado composto por 1.112 entradas.




(a) (b) (c)



(d) (e) (f) (g) (h)
Figura 6.2 Exemplos de entradas categorizadas a partir do emprego da classificao de dois nveis.

6.2.3 A interface de apurao de resultados

Para que a apurao dos resultados de ambas as verses do sistema pudesse ser
realizada de uma forma automtica, o primeiro passo consistiu na elaborao de um fluxo
comum de processamento. Tal fluxo, conforme ilustrado na Figura 6.3, composto por uma
preparao inicial dos dados de entrada, seguida pelo processamento dos mesmos e
culminando com a apurao e armazenamento dos dados de desempenho. No caso da
apurao de resultados a partir do sistema embarcado, a etapa de processamento precedida
pelo envio da imagem binarizada para o FPGA via canal RS-232 e sucedida pelo recebimento
dos resultados processados no dispositivo pelo mesmo meio. No que diz respeito ao tempo de
execuo de cada sistema, o mesmo se refere apenas aos blocos responsveis pelas tarefas de
extrao de reconhecimento.



147

Figura 6.3 Fluxograma dos processos empregados na apurao dos resultados dos sistemas.

A partir do fluxo discutido acima foi implementada a interface ilustrada na Figura 6.4.
Do ponto de vista do sistema sobre plataforma x86, tal opo unifica e automatiza os
processos de extrao e reconhecimento implementados previamente de maneira separada. J
em relao ao sistema embarcado, tal opo consiste apenas numa forma de fornecimento de
dados de entrada e recuperao de resultados.
No que diz respeito aos resultados, os referentes ao desempenho de reconhecimento
das placas foram ambos apurados a partir dos padres de sada fornecidos pelas RNAs. J em
relao ao tempo de execuo, a apurao de desempenho um pouco menos trivial. No caso
do sistema embarcado, o mesmo foi obtido sem maiores dificuldades pela utilizao de
contadores. Entretanto, quando do emprego da mesma abordagem no sistema sobre
plataforma x86, corre-se o risco dos resultados serem influenciados por outros aplicativos ou
pelo prprio sistema operacional.
Desta forma, no intuito de minimizar ao mximo tal interferncia, foi empregado o
aplicativo AQTime, verso 5.3 (verso de avaliao), fornecido pela empresa AutomatedQA
Corp. Tal ferramenta consiste num perfilador que possibilita a obteno de vrias medidas de
desempenho de um software, dentre elas o tempo de execuo de cada uma das funes que o
constituem. Neste sentido, dentre os vrios contadores disponveis existe um denominado
User Time, que computa apenas o tempo gasto na execuo de cdigo em modo de usurio,
ignorando tempo gasto em modo kernel, com outras threads ou na troca entre as mesmas
(AQTIME, 2007). Entretanto, mesmo ignorando o tempo gasto relativo a outras threads, a
atualizao das memrias cache por conta de uma troca de thread computada pelo contador
User Time. Assim sendo, mesmo com a utilizao do perfilador, reduziu-se ao mximo o
nmero de aplicaes em execuo durante a obteno dos resultados sobre plataforma x86.




148

Figura 6.4 Interface da opo construda sobre plataforma x86 para a apurao de desempenho de
ambas as verses do sistema.

6.3 Resultados preliminares

A partir do conjunto de entradas discutido na seo anterior, inicialmente foram
apurados resultados relativos capacidade de reconhecimento de caracteres para diferentes
configuraes de RNA. Neste sentido, foram levados em considerao os algoritmos de
aprendizado e as topologias de RNA que apresentaram os melhores resultados ainda na etapa
de treinamento (vide Seo 5.2.2.6). Especificamente em relao s topologias de rede, foram
avaliadas tanto as de melhor desempenho de reconhecimento, quanto as que exibiram o
melhor custo-benefcio entre a taxa de reconhecimento e o nmero de neurnios na RNA. J
no que diz respeito aos resultados em si, os mesmos se referem agora ao reconhecimento
completo da placa (sete caracteres), apresentando taxas de acerto para ambas situaes onde
os erros de binarizao so ou no considerados (casos A e B, respectivamente).
A primeira anlise realizada teve como objetivo descobrir a influncia dos algoritmos
de aprendizagem na capacidade de reconhecimento de placas da RNA. Para tanto, a partir do
emprego da metodologia discutida na seo anterior, foram apurados os resultados ilustrados
na Tabela 6.1 para o sistema sobre plataforma x86. Analisando tais resultados, nota-se que o
algoritmo traingdx possibilita uma taxa reconhecimento seis vezes superior proporcionada
por traincgp para um caso e uma ligeira vantagem para outro.
No tocante ao primeiro caso, onde a topologia de melhor custo-benefcio empregada,
o desempenho consideravelmente inferior do algoritmo traincgp se origina na prpria etapa
de treinamento. Apesar do percentual mdio de reconhecimento das RNAs de letras com
topologia 225x40x40x26 ser em torno de 60% (78% no caso da rodada escolhida), o
desempenho isolado de alguns caracteres comprometeu o processo como um todo, conforme
ilustrado na Figura 6.5. Mais do que isso, os casos onde um ou mais caracteres no obtiveram


149
Tabela 6.1 Capacidade de reconhecimento de RNAs treinadas a partir dos algoritmos de aprendizagem
traincgp e traingdx, utilizando coeficientes em ponto flutuante.
RNAs Reconhecimento
Algoritmo
aprendizado
Topologia
Letras Nmeros N placas % A % B
Traincgp 225x40x40x26 225x20x20x10 104 7,42 9,35
Traingdx 225x40x40x26 225x20x20x10 594 42,40 53,42
Traincgp 225x80x60x20x26 225x60x80x40x10 628 44,83 56,47
Traingdx 225x100x60x40x26 225x80x20x20x10 660 47,11 59,35

um acerto sequer na simulao realizada logo aps o treinamento constituem uma regra, no
uma exceo, para esta funo de aprendizado, comprometendo o uso da mesma.
J em relao ao segundo caso, o desempenho ligeiramente superior obtido pela
funo traingdx no est obrigatoriamente relacionado ao maior nmero de neurnios
empregados na rede treinada pela mesma. Conforme mencionado anteriormente, neste caso
foram consideradas as topologias que possibilitaram o melhor desempenho para cada uma das
funes de aprendizado avaliadas. No caso da funo traincgp, a topologia 225x80x60x20x26
/ 225x60x80x40x10 apresentou melhores resultados que outras de ordem superior.


Figura 6.5 Capacidade de reconhecimento por caractere referente primeira entrada da Tabela 6.1,
apurada a partir de entradas no utilizadas no treinamento, por simulao conduzida logo aps a
realizao do mesmo.

Outro fator analisado foi a influncia da utilizao da verso aproximada da funo de
ativao tangente hiperblica (tanh_pw). Neste sentido, manteve-se a mesma configurao
das redes utilizada na apurao inicial, inclusive a utilizao de aritmtica e ponto flutuante,
sendo alterada apenas a funo de ativao utilizada pelos neurnios. Conforme ilustrado na
Tabela 6.2, a influncia do emprego da funo tanh_pw no significativa, pois reduz em
torno de um ponto percentual apenas as taxas obtidas pela utilizao da funo original.
Na seqncia foi realizada a anlise do impacto causado pela utilizao de aritmtica
de ponto fixo na RNA, o que obrigatoriamente implica no uso da funo tanh_pw. Da mesma
maneira que no caso do uso isolado de tal funo, o emprego de aritmtica de ponto fixo
tambm causa um baixo impacto nos resultados originais (Tabela 6.1), sendo que tal impacto


150
Tabela 6.2 Influncia do emprego da funo tangente hiperblica aproximada (tanh_pw) nos resultados
apresentados na Tabela 6.1.
RNAs Reconhecimento
Algoritmo de
aprendizado
Topologia
Letras Nmeros N placas % A % B
traincgp 225x40x40x26 225x20x20x10 99 7,07 8,90
traingdx 225x40x40x26 225x20x20x10 578 41,26 51,98
traincgp 225x80x60x20x26 225x60x80x40x10 617 44,04 55,49
traingdx 225x100x60x40x26 225x80x20x20x10 651 46,47 58,54

da ordem de dois pontos percentuais, aproximadamente. Desta maneira, pode-se concluir
que a preciso proporcionada pela utilizao de aritmtica de ponto fixo e coeficientes de 16
bits muito prxima da obtida pelo uso da representao em ponto flutuante.

Tabela 6.3 Capacidade de reconhecimento de RNAs treinadas a partir dos algoritmos de aprendizagem
traincgp e traingdx, utilizando coeficientes em ponto fixo de 16 bits e a funo de ativao tanh_pw.
RNAs Reconhecimento
Algoritmo de
aprendizado
Topologia
Letras Nmeros N placas % A % B
traincgp 225x40x40x26 225x20x20x10 93 6,64 8,36
traingdx 225x40x40x26 225x20x20x10 570 40,69 51,26
traincgp 225x80x60x20x26 225x60x80x40x10 611 43,61 54,95
traingdx 225x100x60x40x26 225x80x20x20x10 645 46,04 58,00

Conforme demonstrado, as maiores taxas de reconhecimento foram obtidas a partir do
emprego de traingdx como funo de aprendizado, razo pela qual apenas esta funo foi
considerada nas anlises seguintes. Nas avaliaes anteriores havia sido considerado apenas o
erro quadrtico mdio (EQM) como critrio de parada do treinamento da RNA, bem como o
uso de uma camada de entrada composta por 225 neurnios (matriz de 15 x 15). Neste
sentido, resolveu-se investigar a possibilidade de aumento da taxa de reconhecimento pelo uso
do critrio de parada prematura (PP) e o emprego de uma camada de entrada contendo 900
neurnios (matriz 30 x 30).
Levando em considerao o uso de aritmtica de ponto fixo, foram apurados os
resultados ilustrados na Tabela 6.4. A partir da comparao das duas primeiras entradas desta
tabela com as correspondentes na Tabela 6.3, nota-se uma ligeira melhora no caso da
topologia de melhor custo-benefcio. J no caso da topologia de melhor desempenho, o ganho
se deu tanto pelo aumento da taxa de reconhecimento, quanto pela reduo do tamanho da
rede. Em contrapartida, quando do aumento da camada de entrada, a utilizao do critrio de
parada prematura gerou um resultado inferior inclusive ao apurado para o caso original
(segunda entrada da Tabela 6.3). O mesmo no se aplica para os demais casos onde houve


151
aumento da camada de entrada, principalmente para as redes de melhor desempenho, que
experimentaram ganhos considerveis. Entretanto, apesar de tal melhora, a hiptese de
alterao do tamanho da camada de entrada no ser considerada na verso final do sistema.
Alm do fato de tal alterao implicar na tambm alterao do bloco de hardware (mdulo
ON e sua respectiva memria), o aumento do tempo de processamento proibitivo no caso do
sistema embarcado, conforme demonstrado na prxima seo.

Tabela 6.4 Influncia do emprego do critrio de parada prematura e do aumento do nmero de
neurnios na camada de entrada na taxa de reconhecimento da RNA, considerando o uso de aritmtica de
ponto fixo e funo de treinamento traingdx.
RNAs Reconhecimento
Critrio de
parada
Topologia
Letras Nmeros N placas % A % B
PP 225x40x40x26 225x20x20x10 574 40,97 51,62
PP 225x60x60x60x26 225x50x50x50x10 629 44,90 56,56
EQM 900x40x40x26 900x20x20x10 593 42,33 53,33
PP 900x40x40x26 900x20x20x10 546 38,97 49,10
EQM 900x40x40x40x26 900x30x30x30x10 670 47,82 60,25
PP 900x50x50x50x26 900x40x40x40x10 708 50,54 63,67

6.4 Resultados finais

Com base nas avaliaes discutidas na seo anterior, foram selecionadas trs
topologias distintas para a apurao dos resultados finais, sendo que em todos os casos a RNA
foi treinada com o uso da funo traingdx, como mencionado previamente. Conforme
ilustrado no Quadro 6.2, ambas as verses do sistema foram avaliadas em relao sua
capacidade de reconhecimento de placas de licenciamento veicular e tempo mdio de
execuo desta tarefa.

RNAs Reconhecimento Tempo mdio de execuo (ms)
Topologia Mdulo

Critrio
de
parada
Letras Nmeros
% A % B
FPLA OCE ON RNA
Total
PP 40x40 20x20 40,97 51,62 10,785 0,104 0,008 0,453 11,351
EQM 100x60x40 80x20x20 46,04 58,00 10,606 0,104 0,008 1,429 12,147
x
8
6

PP 60x60x60 50x50x50 44,90 56,56 10,904 0,104 0,007 1,056 12,071
PP 40x40 20x20 40,97 51,62 1,675 0,412 2,959 5,046
EQM 100x60x40 80x20x20 46,04 58,00 1,675 0,412 9,662 11,748
P
l
a
t
a
f
o
r
m
a

F
P
G
A

PP 60x60x60 50x50x50 44,90 56,56 1,675 0,412 7,508 9,595
Quadro 6.2 Resultados finais apurados para ambas as verses dos sistemas, considerando trs diferentes
topologias de RNA e dois tipos de critrios de parada da etapa de treinamento.



152
Em relao capacidade de reconhecimento, nota-se que ambas as verses possuem
exatamente o mesmo percentual de acuracidade, comprovando assim a equivalncia lgica
das mesmas. Entretanto, de uma maneira similar ilustrada anteriormente pela Figura 6.5, a
capacidade de reconhecimento do sistema foi afetada por conta do desempenho isolado de
alguns caracteres, conforme ilustrado na Figura 6.6. Neste caso, percebe-se que,
proporcionalmente, os caracteres que mais contriburam negativamente foram o D e O
por parte das letras e 6, 8 e 9 por parte dos nmeros.


Figura 6.6 Taxa de erros e acertos por caractere para as RNAs de letras e nmeros de topologias
225x40x40x26 e 225x20x20x10, respectivamente.

A partir de uma anlise mais detalhada dos erros e acertos por caractere, verifica-se
que, apesar da eliminao dos conflitos entre letras e nmeros pelo uso de RNAs distintas, um
nmero considervel de erros ocorre por conflitos entre os prprios elementos dos grupos
distintos. Conforme ilustrado pela Tabela 6.5, no caso do caractere D, 36,96% (17
instncias) do total de erros (46 instncias) dizem respeito ao conflito de reconhecimento do
mesmo com o caractere D, apenas. Em contrapartida, houve conflito de reconhecimento do
caractere O com os caracteres D e Qem 45%(9 instncias) do casos de reconhecimento
incorreto (20 instncias).
Os mesmos conflitos apresentados pelo grupo de letras foram exibidos tambm pelo
grupo de nmeros, conforme ilustrado pela Tabela 6.6. Neste caso o percentual de conflito foi
ainda maior que o apresentado pelas letras, mas o impacto no resultado final foi menor, haja
vista que, proporcionalmente, o nmero total de erros para os nmeros foi menor que para as
letras.
Considerando agora os resultados relativos velocidade de processamento, para cada
entrada do Quadro 6.2 foi apurado o tempo mdio de execuo de cada um dos mdulos que
compem os sistemas. A partir da anlise de tais dados, os dois primeiros aspectos percebidos
so a considervel reduo obtida pelo mdulo FPLA na plataforma embarcada e o notvel
aumento causado por outros dois mdulos da mesma plataforma. No que tange o ganho do


153
Tabela 6.5 Detalhamento dos erros e acertos por caractere para a RNA de letras de topologia
225x40x40x26.
D G I M O
Total instncias 122 107 1028 262 55
No reconhecidas 26 16 66 27 11
Conflitos
A 1 1
B 1
C 1
D 2 4
G 1
H 3
I 1
K 2
L 1
N 6
O 17 3
Q 2 4
R 1
S 2
W 7 1
Z 1
Total conflitos 20 7 12 14 9
Total erros 46 23 78 41 20
Total acertos 76 84 950 221 35


Tabela 6.6 Detalhamento dos erros e acertos por caractere para a RNA de nmeros de topologia
225x20x20x10.
2 5 6 8 9
Total instncias 393 417 478 423 476
No reconhecidas 32 18 30 44 49
Conflitos
0 1 3 6 5
1 2 1 3 3
2 1 1 1
3 8 1 1
4 1 8 1
5 6 1 4
6 2 13 7 1
7 2 1
8 1 26 11
9 2 2 5
Total conflitos 18 18 44 23 28
Total erros 50 36 74 67 77
Total acertos 343 381 404 356 399



154
mdulo FPLA, o mesmo era aguardado, haja vista que justamente no caso da execuo
repetitiva de tarefas de baixa complexidade aritmtica que se esperava obter o maior ganho.
Outros fatores que contriburam para esta expectativa foram o emprego de uma arquitetura
tida como estado da arte para esta tarefa e a utilizao de uma memria interna ao FPGA,
fixando a latncia de acesso aos dados de entrada em um ciclo.
Seguindo a seqncia lgica de processamento realizada pelos sistemas, o prximo
mdulo discutido o OCE. Por conta da natureza mais enxuta do algoritmo implementado
pelo mesmo, foi possvel a obteno de um tempo de execuo na ordem de uma centena de
microssegundos para a verso sobre plataforma x86. J no caso da plataforma embarcada, o
motivo da inexistncia de tempo associado ao mesmo diz respeito sua execuo simultnea
com a segunda etapa do mdulo FPLA. Entretanto, o tempo de fato consumido pelo mesmo
neste caso de 0,8375 milsimos de segundo, haja vista que cada etapa do mdulo FPLA
requer metade do tempo total requerido pelo mesmo. Como este tempo esta condicionado
pelo bloco FPLA, acredita-se que quando considerado de forma independente o mdulo OCE
do sistema embarcado possa ser to rpido quanto ou at mais que a sua verso sobre
plataforma x86.
J no caso do mdulo ON, a vantagem da verso sobre plataforma x86 reside no fato
da grande demanda aritmtica do algoritmo de redimensionamento. Neste caso prevaleceu o
poder de processamento disponibilizado pela ULA do processador Pentium IV utilizado na
plataforma. Mais do que isso, a vantagem s no foi maior por conta da unidade de diviso
com latncia de um ciclo empregada na plataforma embarcada.
Finalmente, em relao ao mdulo de reconhecimento, apesar de proporcionalmente
menor, a mesma desvantagem apresentada pelo mdulo ON aplica-se tambm a este caso. O
que contribuiu significativamente para a reduo da desvantagem do sistema embarcado nesta
questo foi o emprego de aritmtica de ponto fixo, conforme demonstrado no captulo relativo
implementao dos sistemas.

7 CONCLUSES

Tendo como a principal motivao a franca expanso dos mercados de sistemas
embarcados e viso computacional, o intuito deste trabalho foi o de desenvolver um sistema
voltado extrao e reconhecimento de caracteres pticos, baseado na metodologia de co-
projeto de hardware e software.
Como resultado deste estudo tm-se duas verses funcionais do sistema proposto,
sendo uma completamente em software, sobre plataforma x86, e a outra composta por uma
combinao de blocos de hardware e software, implementada sobre um FPGA. Alm disso,
este trabalho proporcionou a publicao de dois artigos, conforme disposto no Anexo A, e a
possibilidade de escrita de pelo menos mais um, referente ao sistema como um todo.
No que diz respeito ao processo de desenvolvimento do mesmo, a primeira etapa
consistiu na reviso terica acerca de ambas as reas envolvidas, bem como na escolha de um
sistema para ser utilizado como estudo de caso. Por conta da vasta lista de aplicaes de
Sistemas de Reconhecimento de Placas de Licena Veicular, que inclui desde o controle de
estacionamento at a identificao de veculos roubados, um sistema deste tipo foi
selecionado com estudo de caso. Entretanto, por conta da complexidade de um SRPLV, este
trabalho considerou a implementao da segunda (extrao de caracteres) e terceira
(reconhecimento de caracteres) etapas do mesmo, enquanto a primeira (localizao da placa)
foi alvo de estudo de outro trabalho (Pacheco, 2007).
Para que a verso embarcada do sistema pudesse ser implementada, inicialmente foi
necessria a construo de uma verso totalmente em software, tarefa esta realizada com o
emprego da linguagem C++, sobre uma plataforma x86. Alm de agilizar o processo de
validao dos algoritmos previamente selecionados para comporem o sistema final, a verso
em software tambm foi construda para servir como parmetro na comparao com a verso
embarcada. Outra possibilidade no explorada de comparao seria entre o sistema
heterogneo aqui desenvolvido e uma verso totalmente em software, construda sobre a
mesma plataforma embarcada. Do ponto de vista arquitetural, ao menos, seria uma
comparao mais justa.
Dentre as concluses obtidas a partir da verso de avaliao do sistema, a mais
importante foi a de que a utilizao da regio candidata no formato em que a mesma
disponibilizada por Pacheco (2007), implica diretamente no aumento da complexidade das
etapas posteriores. O fato da regio candidata compreender uma rea que se estende alm dos


156
limites da placa, em ambas as direes horizontal e vertical, acaba por influenciar
negativamente o resultado do sistema como um todo.
O primeiro procedimento a ser afetado a binarizao, que apesar de estar fora do
escopo deste trabalho, foi aqui empregado como um processo auxiliar e geralmente est
presente em sistemas de viso computacional. Conforme discutido na Seo 5.2.2.2, a
existncia de formas alm dos limites da placa pode causar a conexo indevida das mesmas
com os caracteres durante a binarizao, o que geralmente implica no no reconhecimento do
caractere e, por conseqncia, da placa. Outro fato que evidencia tal problema o
considervel nmero de entradas do processo de avaliao que foram comprometidas ainda na
etapa de binarizao, conforme ilustrado no Quadro 6.1.
De acordo com a discusso realizada na Seo 5.2.2.5, problema similar ocorre
quando da tentativa do uso do mtodo de projees na etapa de identificao de regies. Por
conta da existncia de objetos nas extremidades da regio candidata, a separao dos
caracteres fica comprometida , haja vista que a determinao do ponto de incio e fim dos
mesmos pelo mtodo de picos e vales impossvel em certos casos, como o ilustrado na
Figura 5.9.
Entretanto, acredita-se que a soluo da dificuldade causada pelo formato da regio
candidata no resida na alterao do mtodo pelo qual a placa localizada, mas sim na
realizao do enquadramento da mesma, aps a localizao da regio inicial. Um exemplo de
mtodo empregado para esta finalidade o apresentado por Dias (2007), discutido na Seo
2.5.7. Tal mtodo realiza inclusive a correo da distoro de perspectiva, o que sugere que o
mesmo no seja de implementao trivial. Apesar disso, entende-se que o retorno obtido na
construo de um mdulo que implemente mtodo igual ou similar supere qualquer outra
tentativa de correo nas etapas posteriores, como foi o caso da tentativa do uso do mtodo de
fora bruta, discutido nas Sees 5.2.2.3 e 5.2.2.6. J em ambientes controlados, como o da
aplicao de identificao de objetos numa linha de produo, a etapa de correo de ngulo
da imagem talvez fosse dispensvel, o que diminuiria a complexidade do mdulo de
enquadramento.
No que diz respeito etapa de reconhecimento, um nmero muito maior de
possibilidades puderam ser avaliadas em funo da utilizao do ambiente MATLAB. Neste
sentido, a escolha dos resultados fornecidos pela funo de treinamento traingdx foi feita com
base numa srie de resultados, como os ilustrados da Tabela 6.1 Tabela 6.3, que sempre a
indicaram como possuindo o melhor desempenho para este caso. Outra concluso obtida a
partir da anlise das tabelas do Captulo 6, foi que a relao de custo-benefcio proporcionada


157
pelo aumento de nmero de neurnios, tanto na camada de entrada, quanto nas camadas
escondidas, consideravelmente baixa para este caso. Tambm neste caso insignificante o
ganho propiciado pelo emprego do critrio de parada prematura, conforme demonstrado pela
comparao entre a Tabela 6.3 e a Tabela 6.4.
J em relao inteno inicial de utilizar aritmtica de ponto flutuante na RNA, a
mesma demonstrou-se invivel, haja vista que esta abordagem compromete seriamente o
tempo de execuo da etapa de propagao no sistema embarcado. Como soluo, optou-se
pelo uso de aritmtica de ponto fixo, bem como de uma aproximao da funo de ativao
original (tangente hiperblica). Considerando a utilizao de 16 bits na representao dos
pesos das sinapses, obteve-se uma reduo de praticamente 36 vezes no tempo inicialmente
necessrio execuo da etapa de propagao, quando da utilizao de aritmtica de ponto
flutuante na mesma. No tocante ao impacto na preciso das respostas, o mesmo se
demonstrou perfeitamente aceitvel, pois houve um decrscimo total mdio de apenas dois
pontos percentuais nas taxas de reconhecimento originais.
A opo pelo processador PowerPC se justifica principalmente pelo fato do mesmo
ser capaz de executar a etapa de propagao num tempo praticamente trs vezes inferior ao
requerido pelo soft core MicroBlaze. Alm disso, por se tratar de um hard core, sua utilizao
na implica em consumo de rea programvel do FPGA, cujo percentual de utilizao foi de
70%, considerando apenas o bloco de hardware. Entretanto, conforme mencionado na Seo
5.3.3.2, pode-se optar pelo soft core MicroBlaze sem que isso incorra numa degradao
comprometedora no tempo de execuo do sistema. Esta opo possibilita o emprego de
FPGAs que no possuem hard cores implantados no seu interior na implementao do
sistema aqui proposto. Alm disso,acredita-se que o emprego de verses posteriores da aqui
considerada para o core MicroBlaze (4.0) sejam capazes de alcanar freqncias de operao
mais elevadas, diminuindo ainda mais a diferena existente em relao ao core PowerPC.
Finalmente, em relao ao sistema como um todo, tm-se os resultados ilustrados no
Quadro 6.2. A partir de tais resultados verifica-se que, no pior caso, o tempo de execuo da
verso embarcada ligeiramente inferior ao da verso sobre plataforma x86, enquanto no
melhor caso, 2,25 vezes superior. Neste caso, o principal fator que contribui para o
desempenho do sistema embarcado notavelmente o nmero de neurnios utilizados nas
camadas escondidas da RNA. Este fato j era esperado, haja vista que o processamento da
RNA realizado de uma forma seqencial, o que favorece o processador sobre plataforma
x86, cuja freqncia de operao (3 GHz) 10 vezes superior do processador utilizado na


158
plataforma embarcada. O mesmo ocorreu em relao do mdulo de normalizao (ON), o
qual demanda um elevado ndice de processamento aritmtico.
Entretanto, a principal fonte de reduo no tempo de processamento da verso
embarcada consiste nos mdulos responsveis pela etiquetao de componentes conectados
(FPLA) e extrao de coordenadas dos objetos (OCE). Neste caso, a maior possibilidade de
paralelizao e a baixa demanda aritmtica dos algoritmos favoreceram a verso embarcada,
mesmo a freqncia de operao destes blocos no superando 25 MHz. Na verdade,
praticamente todo o bloco de hardware opera numa freqncia igual ou inferior a 25 MHz, j
que apenas os mdulos RAM operam a 50 MHz.
J em relao capacidade de reconhecimento exibida pelo sistema, esperavam-se
obter taxas maiores. Mesmo com a utilizao de RNAs distintas para letras e nmeros, ainda
persistiram problemas de conflitos de reconhecimento, neste caso entre elementos do mesmo
grupo (letras ou nmeros). Entretanto, como esta constitui a primeira verso do sistema, no
havia como considerar a utilizao de inmeros outros mtodos empregados no intuito de
aumentar a taxa de reconhecimento. Preferiu-se optar pela implementao de uma verso
funcional, com um percentual de reconhecimento mediano, e investir na avaliao de
alternativas que possibilitem a melhor relao entre o incremento da taxa de reconhecimento e
o esforo de implementao. Neste sentido, conforme mencionado anteriormente, acredita-se
que a utilizao de uma etapa de enquadramento da placa, aps a localizao inicial da
mesma, fornea o melhor custo-benefcio.
Como ltima considerao, convm mencionar que, conforme discutido nos trs
ltimos pargrafos, as heursticas adotadas no particionamento do sistema embarcado, apesar
de darem margem a consideraes, em geral proporcionaram o resultado esperado. Entretanto,
acredita-se fortemente que o particionamento de um sistema como o implementado aqui possa
ser realizado de uma forma mais eficiente pela utilizao de uma abordagem como a proposta
por Davis (2005). Nesta abordagem, inicialmente o sistema implementado totalmente em
software sobre a plataforma embarcada, a qual consiste num FPGA. Em seguida, realizado o
perfilamento da aplicao em busca dos gargalos de processamento do sistema. Deste modo,
consegue-se uma tima relao entre aumento de desempenho e esforo de implementao,
pois no caso mais extremo, apenas sees de um algoritmo podem vir a ter implementaes
dedicadas.
Finalizando a discusso e este captulo, seguem abaixo sugestes de trabalhos futuros
que certamente contribuiro com o aprimoramento desta primeira verso do sistema:


159
Incorporao do processo de binarizao verso embarcada do sistema.
Eventualmente pode-se tambm empregar tcnicas de identificao de regies
que trabalhem diretamente sobre imagens em tons de cinza, o que praticamente
descartaria a necessidade de prvia binarizao da imagem de entrada;
Implementao de um processo de enquadramento da regio de interesse
contida na regio candidata inicial. Mesmo que tal processo no seja capaz de
realizar a correo de distoro angular da placa, acredita-se que j se obtenha
um ganho considervel, haja vista que a distoro angular pode ser corrigida
pelo prprio posicionamento da cmera, em algumas situaes;
Avaliao do ganho proporcionado pela utilizao de tcnicas de
processamento no domnio da freqncia para o caso do mdulo de
normalizao. Como este mdulo implementa uma operao de interpolao, a
mesma pode ser realizada a partir de filtros digitais de duas dimenses. Tal
implementao pode vir a proporcionar um ganho, ao menos na velocidade de
execuo, em comparao ao processamento no domnio do espao realizado
atualmente;
Avaliao do emprego de mtodos de classificao sintticos. Como os
mesmos se baseiam em gramticas e regras de formao, talvez sejam mais
propcios para uma implementao em hardware. Imagina-se que no caso das
gramticas no demandarem muita rea para o seu armazenamento, a
implementao das regras de formao poderia ser feita a partir de mquinas
de estado;
Integrao do mdulo dedicado de localizao de regies candidatas
implementado por Pacheco (2007) ao sistema embarcado aqui desenvolvido.
Tal integrao, juntamente com uma soluo para a questo da binarizao,
resultam numa verso completa de um SRPLV embarcado.

BIBLIOGRAFIA

ADAMS, J. K.; THOMAS, D. E. The design of mixed hardware/software systems, 33rd
Design Automation Conference Proceedings, 1996. p. 515-520.

ALOIMONOS, Y.; ROSENFELD, A. Computer Vision. Science, EUA, v. 253, p. 1249-1254,
1991.

ANAGNOSTOPOULOS, C. N. E.; ANAGNOSTOPOULOS, I. E.; LOUMOS, V.;
KAYAFAS, E. A License Plate-Recognition Algorithm for Intelligent Transportation System
Applications, IEEE Transactions on Intelligent Transportation Systems, v. 7, p. 377-392,
2006.

ANDREADIS, I. & AMANATIADIS, A. Digital Image Scaling, Proceedings of 2005 IEEE
Instrumentation and Measurement Technology Conference (IMTC 2005), 2005, v. 3, p. 2028-
2032.

AQTIME, AQTime 5 Help seo Counters Overview. Documentao da verso de
avaliao da ferramenta AQTime 5.3, 2007.

AYLAND, N.; DAVIES, P. Automatic vehicle identification for heavy vehicle
monitoring, Second International Conference on Road Traffic Monitoring, 1989. p. 152-155.

BARROSO, J.; BULAS-CRUZ, J.; DAGLESS, E. L. Real-Time Number Plate Reading,
4th IFAC Workshop on Algorithms and Architectures for Real-time Control, 1997.

BERGER, A. S. Embedded Systems Design: An Introduction to Processes, Tools, and
Techniques. EUA: CMP Books, 2001. 237 p.

BREMANANTH, R.; CHITRA, A.; SEETHARAMAN, V.; NATHAN, V. S. L. A robust
video based license plate recognition system, Proceedings of 2005 International Conference
on Intelligent Sensing and Information Processing, 2005. p. 175-180.

CAMPOS, T.; BAMPI, S.; SUSIN, A. Sistema de Identificao de Placas por
Processamento Automtico de Imagens, VII Workshop IBERCHIP, 2001.

CHIODO, M.; GIUSTO, P.; JURECSKA, A.; HSIEH, H. C.; VICENTELLI, A. S.-;
LAVAGNO, L. Hardware-Software Codesign of Embedded Systems. IEEE Micro, v. 14, p.
26-36, 1994.

COELHO, C. J. N., Jr.; SILVA, D. C. D., Jr.; FERNANDES, A. O. Hardware-software
codesign of embedded systems, Proceedings of XI Brazilian Symposium on Integrated
Circuit Design, 1998. p. 2-8.

COETZEE, C.; BOTHA, C.; WEBER, D. PC Based Number Plate Recognition System,
Proceedings of 1998 IEEE International Conference on Industrial Electronics, 1998.

COWELL, J.R. Syntactic pattern recognizer for vehicle identification numbers. Image and
Vision Computing, Elsevier Science, v. 13, p. 13-19, 1995.


161

CRAVOTA, R. 2007 EDN Microprocessor Directory. Disponvel em:
http://www.edn.com/index.asp?layout=mpd2007&industryid=48351. Acesso em: 25 nov
2007.

DAVIS, D.; SRINIVAS, B.; RANJESH, J. Hardware/Software Codesign for Platform
FPGAs, 2005 Embedded Systems Conference, San Francisco. Disponvel em:
http://www.techonline.com/learning/techpaper/193103703. Acesso em: 22 nov 2007.

DE MICHELI, G. Computer-aided hardware-software codesign, IEEE Micro, v. 14, p. 10-
16, 1994.

DIAS, F. G. Conceitos Fundamentais de SRPLV. Disponvel em:
http://www.dca.fee.unicamp.br/~gaiotto/projects/srplv/conceitos.html. Acesso em: 14 nov.
2007.

DIAS, F. G.; LOTUFO, R. A. Melhorias para Sistemas de Reconhecimento da Placa de
Licenciamento Veicular, IV Workshop de Teses e Dissertaes em Computao Grfica e
Processamento de Imagens (WTDCGPI 2005), 2005.

DIGILENT, Componente UART. Disponvel em:
http://www.digilentinc.com/Data/VHDLSource/Serial_UART/UART_Component.zip.
Acesso em 04 jun 2006.

DRAGHICI, S. A neural network based artificial vision system for license plate recognition.
International Journal of Neural Systems, v. 8, p. 113-12, 1997.

EMBEDDED SYSTEM. Wikipedia. Disponvel em:
http://en.wikipedia.org/wiki/Embedded_system. Acesso em: 23 nov 2007.

EROKHIN, V. V. Single Clock Unsigned Division Algorithm. Disponvel em:
http://www.opencores.org/projects.cgi/web/single_clock_divider/overview. Acesso em: 23
ago 2006.

FLETCHER, B. H. FPGA Embedded Processors Revealing the True System Performance,
2005 Embedded Systems Conference, San Francisco. Disponvel em:
http://www.techonline.com/learning/techpaper/193103682. Acesso em: 22 nov 2007.

FONS, M.; FONS, F.; CANTO, E. Design of an Embedded Fingerprint Matcher System,
Proceedings of Tenth IEEE International Symposium on Consumer Electronics (ISCE '06),
2006. p.1-6.

GUESUALDI, A. da R.; SEIXAS, J. M. de Character recognition in car license plates
based on principal components and neural processing, Proceedings of VII Brazilian
Symposium on Neural Networks (SBRN 2002), 2002. p. 206-211.

GONZALEZ, R. C.; WOODS, R. E. Digital Image Processing. 2nd ed., EUA: Prentice Hall,
2002. 793 p.

GUPTA, P. Hardware-software codesign. IEEE Potentials, v. 20, p. 31-32, 2002.


162

HA, S.; LEE, C.; YI, Y.; KWON, S.; JOO, Y. Hardware-Software Codesign of Multimedia
Embedded Systems: the PeaCE Approach, Proceedings of 12th IEEE International
Conference on Embedded and Real-Time Computing Systems and Applications, 2006. p.
207-214.

HAYKIN, S. Neural networks: a comprehensive foundation. 2nd ed., Upper Saddle River:
Prentice Hall, 1999. 842 p.

HEATH, S. Embedded Systems Design. 2nd ed., EUA: Newnes, 2003. p. 1-14.

HERVEILLE, R. Hardware Division Units. Disponvel em:
http://www.opencores.org/projects.cgi/web/divider/overview. Acesso em: 23 ago 2006.

HI-TECH SOLUTIONS, License Plate Recognition A Tutorial. Disponvel em:
http://www.licenseplaterecognition.com. Acesso em: 14 nov. 2007.

HWANG, I.; KANG, B.; GERARD, J. High-resolution image scaler using interpolation filter
for multimedia video applications. IEEE Transactions on Consumer Electronics, v. 43, p.
813-818, 1997.

IBM OPB Bus Functional Model Toolkit: Users Manual Version 3.5. Disponvel em:
http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/
852569B20050FF7785256991006698D3/$file/OpbToolkit.pdf. Acesso em: 29 mar 2007a.

__ Processor Local Bus Functional Model Toolkit: Users Manual Version 4.9.2.
Disponvel em: http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs
/852569B20050FF778525699100664DAB/$file/PlbToolkit.pdf. Acesso em: 29 mar 2007b.

IIGO, R. M. Application of machine vision to traffic monitoring and control. IEEE
Transactions on Vehicular Technology, v. 38, p. 112-122, 1989.

__ Traffic Monitoring and Control Using Machine Vision: A Survey. IEEE Transactions on
Industrial Electronics, v. IE-32, p. 177-185, 1985.

JHNE, B.; HAUECKER, H. Computer Vision and Applications A Guide for Students
and Practitioners. EUA: Academic Press, 2000. p. 578-578.

JEAN, S.-D.; LIU, C.-M.; CHANG, C.-C.; CHEN, Z. A new algorithm and its VLSI
architecture design for connected component labeling, IEEE International Symposium on
Circuits and Systems (ISCAS '94), 1994. v. 2, p. 565-568.

KIM, C.-H.; SEONG, S.-M.; LEE, J.-A.; KIM, L.-S. Winscale: an image-scaling algorithm
using an area pixel model. IEEE Transactions on Circuits and Systems for Video
Technology, v. 13, p. 549-553, 2003.

KLSCH, M.; KISACANIN, B. Embedded Computer Vision and Smart Cameras, 2005
Embedded Systems Conference, San Francisco. Disponvel em:
http://www.techonline.com/learning/techpaper/199203583. Acesso em: 03 jun 2007.



163
KUTTNER, C. Hardware-Software Codesign Using Processor Synthesis. IEEE Design &
Test of Computers, v. 13, p. 43-53, 1996.

KWASNICKA, H.; WAWRZYNIAK, B. License Plate Localization and Recognition in
Camera Pictures, 3rd Symposium on Methods of Artificial Intelligence (AI METH 2002),
2002.

LEEDHAM, G.; YAN, C.; TAKRU, K.; TAN, J. H. N.; MIAN, L. Comparison of some
thresholding algorithms for text/background segmentation in difficult document images,
Proceedings of 7th International Conference on Document Analysis and Recognition, 2003. p.
859-864.

MARTN, F.; GARCA, M.; ALBA, J. L. New Methods for Automatic Reading of VLP's
(Vehicle License Plates), Signal Processing Pattern Recognition and Applications (SPPRA
2002), 2002.

MATLAB, Fixed-Point C Development. Demonstrao referente ao pacote de ponto fixo
disponibilizado pelo ambiente MATLAB, v. 7.2.0.232 (R2006a), 2006.

MOLZ, R. F. Uma Metodologia para o Desenvolvimento de Aplicaes de Viso
Computacional utilizando um projeto conjunto de Hardware e Software. 2001, 80f. Tese
(Doutorado em Cincia da Computao) Universidade Federal do Rio Grande do Sul, Porto
Alegre, 2001.

NARASIMHAN, N.; SRINIVASAN, V.; VOOTUKURU, M.; WALRATH, J.;
GOVINDARAJAN, S.; VEMURI, R. Rapid prototyping of reconfigurable coprocessors,
Proceedings of International Conference on Application Specific Systems, Architectures and
Processors (ASAP 96), 1996. p. 303-312.

NN FAQ, Neural Network FAQ. Disponvel em:
ftp://ftp.sas.com/pub/neural/FAQ.html#A_kinds. Acesso em 01 abr 2008.

NI NI Vision Concepts Manual, EUA: National Instruments Corporation, 2007. cap. 1, p. 1-
5.

NICOL, C. J. A Systolic Approach for Real Time Connected Component Labeling.
Computer Vision and Image Understanding, v. 61, p. 17-31, 1995.

NIEMANN, R. Hardware/Software Codesign. Disponvel em: http://ls12-www.cs.uni-
dortmund.de/~niemann/codesign/codesign.html. Acesso em: 23 nov 2007.

NIJHUIS, J. A. G.; TER BRUGGE, M. H.; HELMHOLT, K. A.; PLUIM, J. P. W.;
SPAANENBURG, L.; VENEMA, R. S.; WESTENBERG, M. A. Car license plate
recognition with neural networks and fuzzy logic, Proceedings of IEEE International
Conference on Neural Networks, 1995. v. 5, p. 2232-2236.

OU, J.; PRASANNA, V. K. MATLAB/Simulink Based Hardware/Software Co-
Simulation for Designing Using FPGA Configured Soft Processors, Proceedings of 19th
IEEE International Parallel and Distributed Processing Symposium, 2005. p. 148b-148b.



164
OWENS, R. Geometric Transformations Material referente disciplina de Viso
Computacional. Disponvel em: http://homepages.inf.ed.ac.uk/rbf/CVonline/
LOCAL_COPIES/OWENS/LECT5/node5.html. Acesso em: 1 dez 2007.

PACHECO, M. A. Nova Metodologia de Localizao de Regies Candidatas em Imagens
Digitais Utilizando Arquiteturas Reconfigurveis. 2007. 95f. Dissertao (Mestrado em
Engenharia Eltrica) Universidade Federal de Santa Maria, Santa Maria, 2007.

PHOTOCOP Plate Recognition. Disponvel em:, http://www.photocop.com/recognition.htm.
Acesso em: 14 nov 2007.

POLIDRIO, A.M. & BORGES, D.L. Um Mtodo de Reconhecimento Sinttico de
Caracteres para Identificao de Placas de Veculos, Anais do X Simpsio Brasileiro de
Computao Grfica e Processamento de Imagens (SIBGRAPI'97), 1997.

PRATT, W. K. Digital Image Processing, 4. ed. EUA: Wiley-Interscience, 2007a. cap. 13, p.
387-417.

PRATT, B. Simple Speedups for any ML-XUP Virtex-II Pro EDK System. Disponvel
em: http://www.et.byu.edu/groups/ececmpsysweb/cmpsys.2005.winter/teams/ibox/groups/
ibox/public/brian/index.html. Acesso em: 17 jun 2007b.

QUERCUS TECHNOLOGIES The Automatic Number Plate Recognition Tutorial.
Disponvel em: http://www.anpr-tutorial.com. Acesso em: 14 nov. 2007.

RASQUINHA, A. & RANGANATHAN, N. C
3
: a chip for connected component labeling,
Proceedings of Tenth International Conference on VLSI Design, 1997. p. 446-450.

ROSENFELD, A.; PFALTZ, J. L. Sequential Operations in Digital Picture Processing.
Journal of Association for Computing Machinery, v. 13, p. 471-494, 1966.

RUSS, J. C. The Image Processing Handbook, 5 ed. EUA: CRC Press, 2007. cap. 1, p. 1-
76.

SONKA, M.; HLAVAC, V.; BOYLE, R.. Image Processing, Analysis, and Machine
Vision, 3. ed. EUA: Thomson Learning, 2007. 829 p.

SOUZA, F.P.C.de Localizao e Leitura Automtica de Caracteres Alfanumricos Uma
Aplicao na Identificao de Veculos, 2000. 96f. Dissertao (Mestrado em Engenharia
Eltrica) Universidade Federal do Rio Grande do Sul, Porto Alegre, 2000.

TIAN, H.; LAM, S. K.; SRIKANTHAN, T. Area-time efficient between-class variance
module for adaptive segmentation process, IEE Proceedings Vision, Image and Signal
Processing, v. 150, p. 263-269, 2003.

TOWNSEND, A. When Hardware Met Software. Xcell Journal, Issue 54, p. 6-9, Third
Quarter, 2005.



165
TURNER, S. Advanced techniques for travel time data collection, Proceedings of 6th
International Vehicle Navigation and Information Systems Conference (VNIS 1995), 1995. p.
40-47.

WANG, K.-B.; CHIA, T. L.; CHEN, Z.; LOU, D.-C. Parallel Execution of a Connected
Component Labeling Operation on a Linear Array Architecture. Journal of Information
Science and Engineering, v. 19, p. 353-370, 2003.

WOLF, W. A Decade of Hardware/Software Codesign. Computer, v. 36, p. 38-43, 2003.

XILINX Embedded System Tools Reference Manual. Documentao do ambiente EDK
8.2i, 2006a. p. 100-131.

XILINX Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Complete Data Sheet, DS083
(v4.6). Disponvel em: http://www.xilinx.com/support/documentation/data_sheets/ds083.pdf.
Acesso em: 12 jun 2007.

XILINX XPS Help Documentation: seo Creating New Peripherals. Documentao do
ambiente EDK 8.2i, 2006b.

XILINX XPS Help Documentation: seo Software Development Overview. Documentao
do ambiente EDK 8.2i, 2006c.

XILINX XPS Help Documentation: seo Using the Base System Builder. Documentao do
ambiente EDK 8.2i, 2006d.

XITE X-based Image Processing Tools and Environment, University of Oslo, Denmark.
Disponvel em: http://www.ifi.uio.no/~blab/Software/Xite/. Acesso em: 26 set 2005.

YANG, S.-W.; SHEU, M.-H.; WU, H.-H.; CHIEN, H.-E.; WENG, P.-K.; WU, Y.-Y VLSI
architecture design for a fast parallel label assignment in binary image, 2005 IEEE
International Symposium on Circuits and Systems (ISCAS 2005), 2005. v. 3, p. 2393-2396.

YAP, K. S.; TAY, Y. H.; KHALID, M.; AHMAD, T. Vehicle Licence Plate Recognition by
Fuzzy Artmap Neural Network, 1999 World Engineering Congress (WEC99), 1999.


166
ANEXO A Lista de publicaes

DESSBESELL, G. F.; PACHECO, M. A.; MARTINS, J. B. dos S.; MOLZ, R. F. An Area
Cost Optimized Fast Parallel Label Assignment VLSI Architecture, Proceedings of 3rd
Southern Conference on Programmable Logic (SPL 2007), Mar del Plata, Argentina, 26-28
fev 2007. p. 155-160.

DESSBESELL, G. F.; PACHECO, M. A.; MARTINS, J. B. dos S.; MOLZ, R. F. A VLSI
Architecture Suitable for Mid-Level Image Processing, artigo aceito para apresentao oral
no 4th Southern Conference on Programmable Logic (SPL 2008), San Carlos de Bariloche,
Argentina, 26-28 mar 2008. p. 87-92.

Potrebbero piacerti anche