Sei sulla pagina 1di 77

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CINCIAS EXATAS E NATURAIS CURSO DE CINCIAS DA COMPUTAO BACHARELADO

INSPEO INDUSTRIAL ATRAVS DE VISO COMPUTACIONAL

MAURCIO EDGAR STIVANELLO

BLUMENAU 2004 2004/2-38

MAURCIO EDGAR STIVANELLO

INSPEO INDUSTRIAL ATRAVS DE VISO COMPUTACIONAL

Trabalho de Concluso de Curso submetido Universidade Regional de Blumenau para a obteno dos crditos na disciplina Trabalho de Concluso de Curso II do curso de Cincia da Computao Bacharelado. Prof. Paulo Csar Rodacki Gomes - Orientador

BLUMENAU 2004 2004/2-38

INSPEO INDUSTRIAL ATRAVS DE VISO COMPUTACIONAL

Por

MAURCIO EDGAR STIVANELLO

Trabalho aprovado para obteno dos crditos na disciplina de Trabalho de Concluso de Curso II, pela banca examinadora formada por:

Presidente:

______________________________________________________ Prof. Paulo Csar Rodacki Gomes, Dr. Orientador, FURB ______________________________________________________ Prof. Marcel Hugo, FURB ______________________________________________________ Prof. Antnio Carlos Tavares, FURB

Membro:

Membro:

Blumenau, 17 de novembro de 2004

Dedico este trabalho a minha famlia, pelo apoio recebido durante os anos da graduao.

No basta conquistar a sabedoria, preciso us-la. Ccero

AGRADECIMENTOS

minha noiva Leila, pelo carinho e incentivo. Aos meus amigos, pela compreenso quanto s horas ausente. Ao professor Paulo Csar Rodacki Gomes, pela orientao e apoio no desenvolvimento deste trabalho, assim como em outros projetos. Ao professor Cludio Loesch, pelas dvidas esclarecidas. Aos colegas e professores do curso de Cincias da computao pela troca de conhecimentos e experincias.

RESUMO Este trabalho apresenta um prottipo de inspeo automatizada, utilizando viso computacional. A viso computacional tem assumido um importante papel na indstria, auxiliando o homem em tarefas repetitivas e insalubres, como a inspeo de produtos. Os sistemas de viso computacional fundamentam-se em diferentes reas da cincia da computao. No desenvolvimento do prottipo so utilizados, dentre outras tcnicas de processamento de imagens, os descritores de Fourier, importante abordagem para a descrio de formas a partir da borda. Para a interpretao das representaes dos produtos, foi implementada uma rede neural artificial do tipo Perceptron Multicamadas, sendo esta muito empregada no reconhecimento de padres. A combinao destas tcnicas possibilitou o desenvolvimento de um prottipo de inspeo automatizada independente de produto. Palavras chaves: Segmentao; Descritores de Fourier; Redes Neurais Artificiais; Perceptron Multicamadas; Viso Computacional; Inspeo Automatizada.

ABSTRACT This work presents a software prototype of automatized inspection using machine vision. The machine vision has assumed an important role in the industry, assisting the man in repetitive and unhealthy tasks, as the inspection of products. The systems for machine vision are based on different areas of the computer science. The software prototype uses Fourier descriptors in order to describe the edge of products shapes, amonget other image processing techniques such as segmentation. For the interpretation of the representations of the products, a neural network of the type Multilayer Perceptron was implement. The combination of these techniques made possible the development of a software prototype of automatized inspection independent of product. Key-Words: Segmentation; Fourier Descriptors; Artificial Neural Networks; Multilayer Perceptron; Machine Vision.

LISTA DE FIGURAS Figura 1 Exemplo de inspeo manual.................................................................................. 12 Figura 2 Exemplo de defeitos em produtos ........................................................................... 13 Figura 3 Exemplo sistema de inspeo automatizada ........................................................... 14 Figura 4 Exemplo de arquitetura de sistema de inspeo automatizada ............................... 16 Figura 5 Exemplo de cmera, lente e componente de iluminao ........................................ 17 Figura 6 Exemplo de placa de aquisio ............................................................................... 18 Figura 7 Exemplo software de inspeo................................................................................ 19 Figura 8 Exemplo sistema de descarte .................................................................................. 19 Figura 9 Representao de imagem digital............................................................................ 20 Figura 10 Aplicao do filtro de realce ................................................................................. 22 Figura 11 Segmentao de imagem atravs de limiar ........................................................... 24 Figura 12 Aplicao do operador Sobel sobre imagem......................................................... 24 Figura 13 a) Posies de uma imagem 3 X 3; b) Mscara para x; c) Mscara para y........... 25 Figura 14 Cdigo de cadeia ................................................................................................... 26 Figura 15 Cdigo de cadeia ................................................................................................... 27 Figura 16 Original e reconstrues a partir de M coeficientes.............................................. 29 Figura 17 O Neurnio Biolgico ........................................................................................... 30 Figura 18 Modelo de Neurnio Artificial.............................................................................. 32 Figura 19 Grficos de funes de transferncia .................................................................... 33 Figura 20 Camadas da rede neural ........................................................................................ 33 Figura 21 Caso de uso Configurar inspeo.......................................................................... 41 Figura 22 Caso de uso Inspecionar produto .......................................................................... 41 Figura 23 Diagrama de classes de processamento e anlise de imagem ............................... 42 Figura 24 Sub-quadro de analise ........................................................................................... 45 Figura 25 Diagrama de classes da rede neural ...................................................................... 49 Figura 26 Diagrama de seqncia Configurar Inspeo........................................................ 54 Figura 27 Diagrama de seqncia do treinamento da rede neural......................................... 56 Figura 28 Diagrama de seqncia da inspeo...................................................................... 58 Figura 29 Tela principal do prottipo.................................................................................... 63 Figura 30 Tela de definio de subquadros ........................................................................... 64 Figura 31 Tela de definio de subquadros ........................................................................... 64 Figura 32 Cmera e painel de iluminao ............................................................................. 66 Figura 33 Imagens capturadas com diferente iluminao ..................................................... 66 Figura 34 Amostra de produto aprovado............................................................................... 67 Figura 35 Amostras de produtos reprovados......................................................................... 68 Figura 36 Amostra de produto aprovado............................................................................... 70 Figura 37 Amostras de produtos reprovados......................................................................... 71

LISTA DE QUADROS Quadro 1 Coordenadas dos vizinhos-de-4 de p ..................................................................... 21 Quadro 2 Coordenadas dos vizinhos-de-8 de p ..................................................................... 21 Quadro 3 Equao da derivada pelas mscaras de Sobel ...................................................... 25 Quadro 4 Formato de nmero complexo............................................................................... 27 Quadro 5 Transformada discreta de Fourier.......................................................................... 27 Quadro 6 Transformada inversa de Fourier........................................................................... 28 Quadro 7 Transformada inversa de Fourier........................................................................... 29 Quadro 8 Regra Delta ............................................................................................................ 36 Quadro 9 Equaes feedforward ........................................................................................... 38 Quadro 10 Algoritmo de retropropagao............................................................................. 38 Quadro 11 Equao da derivada da funo logstica............................................................. 39 Quadro 12 Equao da funo de transferncia .................................................................... 39 Quadro 13 Mtodo utilizando acesso RowPointer().............................................................. 62

LISTA DE TABELAS Tabela 1 Aplicaes bsicas para modelos de rede neural artificial ..................................... 37

SUMRIO 1 INTRODUO.................................................................................................................. 12 1.1 OBJETIVOS DO TRABALHO ........................................................................................ 14 1.2 ESTRUTURA DO TRABALHO ...................................................................................... 15 2 FUNDAMENTAO TERICA .................................................................................... 16 2.1 SISTEMAS DE INSPEO AUTOMATIZADA ........................................................... 16 2.2 PROCESSAMENTO DE IMAGENS ............................................................................... 19 2.2.1 REPRESENTAO DE IMAGENS DIGITAIS MONOCROMTICAS.................... 20 2.2.2 RELACIONAMENTO BSICO ENTRE PIXELS ........................................................ 20 2.2.2.1 VIZINHANA DE UM PIXEL ................................................................................... 21 2.2.2.2 CONECTIVIDADE...................................................................................................... 21 2.2.2.3 ROTULAO DE COMPONENTES CONEXOS..................................................... 21 2.2.3 PR-PROCESSAMENTO.............................................................................................. 22 2.2.4 SEGMENTAO DE IMAGENS ................................................................................. 23 2.2.4.1 LIMIARIZAO ......................................................................................................... 23 2.2.4.2 DETECO DE BORDAS ......................................................................................... 24 2.2.5 DESCRITORES DE IMAGENS .................................................................................... 25 2.2.5.1 CDIGO DE CADEIA ................................................................................................ 26 2.2.5.2 DESCRITORES DE FOURIER ................................................................................... 26 2.2.6 INTERPRETAO DE IMAGENS .............................................................................. 29 2.3 REDES NEURAIS ............................................................................................................ 30 2.3.1 O CREBRO E A REDE NEURAL BIOLGICA ....................................................... 30 2.3.2 REDE NEURAL ARTIFICIAL...................................................................................... 31 2.3.2.1 ESTRUTURA DA REDE NEURAL ........................................................................... 31 2.3.2.1.1 O NEURNIO ARTIFICIAL.................................................................................. 31 2.3.2.1.2 REDE DE NEURNIOS......................................................................................... 33 2.3.2.2 FASES DO PROJETO DE REDE NEURAL .............................................................. 34 2.3.2.2.1 DEFINIO DA REDE NEURAL......................................................................... 35 2.3.2.2.2 TREINAMENTO DA REDE NEURAL ................................................................. 35 2.3.2.2.3 UTILIZAO DA REDE NEURAL ...................................................................... 36 2.3.2.3 MODELO DE REDES NEURAIS ............................................................................... 36 2.3.2.4 REDES PERCEPTRON MULTICAMADAS ............................................................. 37 3 DESENVOLVIMENTO DO PROTTIPO .................................................................... 40

3.1 ESPECIFICAO DE REQUISITOS.............................................................................. 40 3.2 ESPECIFICAO ............................................................................................................ 40 3.2.1 DIAGRAMAS DE CASO DE USO ............................................................................... 40 3.2.2 DIAGRAMAS DE CLASSE .......................................................................................... 41 3.2.2.1 CLASSES DE PROCESSAMENTO DE IMAGEM ................................................... 42 3.2.2.1.1 CLASSE CIMAGEMBYTE E O PROCESSAMENTO DE IMAGEM ................. 43 3.2.2.1.2 CLASSE CQUADRO E A ANLISE GERAL ...................................................... 44 3.2.2.1.3 CLASSE CSUBQUADRO E AS SUBANLISES................................................. 44 3.2.2.1.4 CLASSE CSUBQUADROFORMA E A ANLISE DE FORMA ......................... 45 3.2.2.2 CLASSES DE REDE NEURAL .................................................................................. 48 3.2.2.2.1 CREDE..................................................................................................................... 50 3.2.2.2.2 CLASSE CCAMADABASE ................................................................................... 51 3.2.2.2.3 CLASSE CCAMADAENTRADA .......................................................................... 51 3.2.2.2.4 CLASSE CCAMADAOCULTA ............................................................................. 51 3.2.2.2.5 CLASSE CCAMADASAIDA ................................................................................. 52 3.2.2.2.6 CLASSE CNEURONIO .......................................................................................... 52 3.2.2.2.7 CLASSE CNEURONIOENTRADA ....................................................................... 52 3.2.2.2.8 CLASSE CNEURONIOPROCESSAMENTO........................................................ 53 3.2.3 DIAGRAMAS DE SEQUENCIA .................................................................................. 53 3.3 IMPLEMENTAO ........................................................................................................ 60 3.3.1 TCNICAS E FERRAMENTAS UTILIZADAS........................................................... 60 3.3.1.1 MICROSOFT VISION SDK........................................................................................ 60 3.3.2 MICROSOFT FOUNDATION CLASS ......................................................................... 62 3.3.3 OPERACIONALIDADE DA IMPLEMENTAO...................................................... 63 3.4 RESULTADOS E DISCUSSO ...................................................................................... 65 4 CONCLUSES.................................................................................................................. 73 4.1 EXTENSES .................................................................................................................... 74 REFERNCIAS BIBLIOGRFICAS ................................................................................. 75

12

1 INTRODUO
O mercado consumidor de produtos industrializados est cada vez mais exigente no que diz respeito qualidade. Pequenos defeitos e imperfeies antes ignorados agora devem ser observados pelos fabricantes, sob o risco de no satisfazerem os consumidores de seus produtos. Este fato tem motivado as indstrias a investirem cada vez mais nos processos de inspeo de qualidade, j que a mesma se tornou um diferencial competitivo. Apesar deste aumento dos investimentos na rea, na maioria das indstrias brasileiras, principalmente nas de pequeno e mdio porte, a inspeo e a seleo dos produtos nas fbricas ainda realizada por inspetores humanos. Na figura 1 exemplificada uma situao como esta, para o caso especfico de inspeo de azulejos numa indstria de cermica. Seguindo o modelo convencional de inspeo, o funcionrio encontra-se inserido em determinado ponto de uma linha de produo de azulejos para avaliar cada uma das peas produzidas. O funcionrio deve avaliar a integridade, a impresso e as dimenses da pea. Caso alguma destas caractersticas encontre-se fora dos padres de qualidade aceitveis, a pea retirada da linha de produo para ser descartada ou adicionada a um lote de qualidade inferior.

Figura 1 Exemplo de inspeo manual

Assim como ocorre na indstria de cermica, indstrias de outros segmentos tambm se da utilizam inspeo manual. No caso da indstria madeireira, os inspetores avaliam a qualidade das peas de madeira com base na quantidade e tamanho dos ns presentes nas mesmas. J na indstria grfica, a inspeo manual visa identificar defeitos de impresso presentes nos impressos, como falha no registro de impresso, presena de manchas

13

indesejadas e problemas relacionados integridade do impresso. Tambm na indstria de bebidas so inspecionadas as garrafas, visando identificar defeitos como tampas e rtulos mal posicionados ou no presentes, volume do lquido incorreto e falhas na marcao de cdigos. Na figura 2 podem ser observados dois dos exemplos de defeito citados, a serem identificados pelo inspetor no momento da inspeo manual. Dentre estes encontram se a falta de integridade da tampa em uma garrafa, assim como a falha no registro de impresso de um impresso.

Figura 2 Exemplo de defeitos em produtos

Por se tratar de uma tarefa extremamente repetitiva e que exige um excessivo esforo fsico pelo funcionrio que a realiza, a inspeo manual acarreta problemas tais como a falta de inspeo em todos os produtos, a falta de preciso nas inspees e a alta rotatividade desses trabalhadores. Alm disso, a efetividade da inspeo humana declina

significativamente no decorrer da jornada de trabalho. Os sistemas de inspeo por computador surgem para auxiliar o homem nestas tarefas. Disponveis em diversas configuraes e aplicveis em diferentes situaes industriais, estes sistemas tem como principal objetivo o auxilio ou at mesmo a substituio da viso humana no ambiente industrial. As vantagens de sistemas como estes, quando comparados inspeo convencional, evidenciam-se ainda mais quando a linha de produo deve ser monitorada em alta velocidade e com preciso. A figura 3 exibe um sistema de inspeo automatizada utilizado na indstria de bebidas.

14

Figura 3 Exemplo sistema de inspeo automatizada

Apesar de proporcionarem benefcios como aumento de produtividade, melhoria da qualidade e reduo de desperdcio, a tecnologia de inspeo automatizada ainda no conquistou o espao merecido. O alto custo e a baixa oferta destes sistemas so alguns dos responsveis por este quadro. Visando difundir a tecnologia e contribuir para a valorizao da mo de obra humana, que na opinio do autor deveria ser aplicada em tarefas mais intelectuais, o presente trabalho apresenta a implementao de um prottipo de software para inspeo industrial automatizada. Este prottipo processa imagens capturadas por uma cmera de vdeo, inspecionando os produtos contidos nas mesmas atravs da anlise de determinadas propriedades, baseando-se em parmetros previamente definidos. Para realizar tal tarefa foram utilizadas diversas tcnicas de processamento de imagens. Tambm foi utilizada uma rede neural do tipo perceptron multicamada para o reconhecimento e interpretao. 1.1 OBJETIVOS DO TRABALHO O objetivo deste trabalho disponibilizar um sistema que processe e analise imagens de produtos de uma linha de produo. Os objetivos especficos do trabalho so: a) analisar caractersticas como forma, posio e orientao de embalagens plsticas (frascos) utilizadas na indstria; b) classificar as embalagens dentre as classes aprovada e rejeitada; c) detectar defeitos nas embalagens, como a falta ou posio incorreta dos componentes que a constituem.

15

1.2

ESTRUTURA DO TRABALHO Primeiramente ser realizada uma reviso bibliogrfica dos diversos temas que

fundamentam o desenvolvimento do prottipo de software de inspeo automatizada. Aps isso demonstrada a especificao e so abordados detalhes da implementao do prottipo. Finalmente so apresentadas as concluses do presente trabalho, assim como sugestes para trabalhos futuros.

16

2 FUNDAMENTAO TERICA
Neste captulo sero abordados os assuntos e tcnicas utilizadas no desenvolvimento do prottipo e necessrios concluso deste trabalho. 2.1 SISTEMAS DE INSPEO AUTOMATIZADA Os sistemas de viso computacional resultam da integrao de diversas tecnologias, e podem ser aplicados em diferentes situaes. Dentre as aplicaes mais utilizadas pode-se citar, alm da indstria, a rea de segurana, onde atuam como solues de identificao biomtrica no reconhecimento humano e tambm no reconhecimento veicular no trnsito. A figura 4 ilustra a arquitetura simplificada de um sistema de inspeo automatizada para a indstria. Neste exemplo, o processo de inspeo acontece de forma integrada com a linha de produo, evitando assim trabalho desnecessrio, j que uma pea identificada como defeituosa no estar presente nas etapas seguintes da produo. Neste processo, para cada pea que transita pela esteira, capturado pelo sistema de aquisio um quadro contendo a imagem da mesma. Este quadro transmitido ao sistema de processamento, onde um computador executando um software especificamente desenvolvido para a funo de inspeo analisa a imagem a fim de identificar algum defeito na pea. Caso seja identificado algum defeito, o sistema de processamento comanda atravs de um sinal digital o sistema de descarte, que por meio de um mecanismo pneumtico retira a pea defeituosa da esteira.

Figura 4 Exemplo de arquitetura de sistema de inspeo automatizada

Como pode ser visto, a arquitetura de um sistema de inspeo automatizada composta por vrios subsistemas e pode assumir diferentes configuraes. Para aplicaes de

17

inspeo industrial, porm, comum que seja composto por um sistema de aquisio de imagens, um sistema de processamento e um sistema de descarte. A funo do sistema de aquisio de imagens obter informaes da cena a ser monitorada, necessrias ao processamento e consecutiva inspeo. So utilizados diferentes equipamentos como sensores, cmeras, lentes, filtros, dispositivos de iluminao, entre outros. Exemplos destes componentes podem ser vistos na figura 5.

Figura 5 Exemplo de cmera, lente e componente de iluminao

As cmeras so os componentes bsicos do sistema de aquisio. Possuem uma matriz de sensores sensveis luz onde, para cada elemento da matriz, obtida a intensidade de luz que incide naquele ponto. No ambiente a ser observado aplicada uma iluminao sobre o objeto de interesse. A luz refletida no objeto e incide sobre a cmera. A intensidade de cada um dos pontos forma uma imagem digital, que utilizada posteriormente para anlise. Conforme explicado anteriormente, a iluminao exerce um papel fundamental no sistema de captura, uma vez que a cmera captura a luz refletida sobre a cena observada. Existem diversas tcnicas de iluminao, que variam entre si na fonte de luz, intensidade, direo, etc. Cada uma delas oferece algum tipo de benefcio e ressalta determinadas caractersticas dos objetos. Por isso, a escolha do tipo de iluminao muito importante. Por exemplo, para o reconhecimento de caracteres na embalagem de um produto para verificao da qualidade de impresso da sua data de validade, seria ideal a utilizao de um anel luminoso em torno da cmera, que produziria uma luz paralela ao seu eixo ptico. J para a inspeo de garrafas onde se deseja inspecionar a presena da tampa, seria interessante uma iluminao de fundo, que, por ser posicionada atrs do objeto, destaca a silhueta do mesmo.

18

Objetivando destacar caractersticas especficas dos produtos e da cena observada, tambm so empregados diversos acessrios cmera ou ao ambiente. Na cmera, pode-se acoplar, por exemplo, um filtro vermelho para se conseguir um maior contraste na imagem. Tambm se pode conseguir a visualizao de uma face oculta de um produto atravs da utilizao de espelhos. Constitudo de hardware e software, o sistema de processamento responsvel pelo controle de todo o sistema de viso. Diversas arquiteturas de hardware podem ser utilizadas para este fim, desde computadores IBM-PC comuns at arquiteturas especificamente desenvolvidas para sistemas de viso. Alm do hardware bsico necessrio ao processamento, este sistema deve possuir placas de aquisio de imagens capazes de converter o sinal de vdeo proveniente das cmeras em imagens digitais. Alm disso, deve possuir portas de comunicao utilizadas no acionamento de sistemas externos ou no recebimento de sinais provenientes de sensores. A figura 6 exibe uma placa de aquisio de imagens, contendo tambm portas digitais de comunicao.

Figura 6 Exemplo de placa de aquisio

O software utilizado nos sistemas de viso responsvel pelo controle do sistema como um todo, pelo processamento e anlise das imagens e pela interface com o usurio. Atravs destes softwares especficos, realizada a anlise sobre cada uma das imagens em busca de defeitos, irregularidades ou mesmo para realizar classificao. Com base no resultado da anlise, o software toma uma deciso cerca de cada produto analisado, que pode resultar em diferentes aes. Alm da inspeo o software pode ainda realizar levantamentos estatsticos importantes sobre a produo. A figura 7 exibe a tela um software

19

de inspeo desenvolvido para a indstria de bebidas, no momento de configurao da anlise de tampa em garrafas.

Figura 7 Exemplo software de inspeo

O sistema de descarte responsvel por retirar a pea rejeitada da linha de produo. Comandados pelo software de inspeo, estes sistemas podem assumir diferentes configuraes. Muitos destes sistemas utilizam-se de guias para realizar o descarte da pea, como o caso do sistema exibido na figura 8.

Figura 8 Exemplo sistema de descarte

Neste exemplo, o software de inspeo comanda o sistema de descarte, que redireciona a garrafa rejeitada para outro destino, dentro da linha de produo. 2.2 PROCESSAMENTO DE IMAGENS O processamento de imagens assume um importante papel nos sistemas de viso computacional. A extrao de informaes de uma imagem, para posterior anlise e tomada de deciso a cerca de um produto conseguida atravs do emprego de diversas tcnicas de

20

processamento de imagens. Nesta seo sero descritas algumas das tcnicas utilizadas nestes sistemas. 2.2.1 REPRESENTAO DE IMAGENS DIGITAIS MONOCROMTICAS Segundo Gonzales e Woods (2000, p. 4) o termo imagem refere-se funo bidimensional de intensidade da luz f(x,y), onde x e y denotam as coordenadas espaciais e o valor de f em qualquer ponto(x,y) proporcional ao brilho da imagem naquele ponto. Existem vrias maneiras de representar digitalmente imagens. A mais utilizada a que representa a imagem na forma de uma matriz, em que em cada posio da mesma representa um ponto da imagem e onde armazenado o nvel de cinza daquele ponto. Para o menor elemento de uma imagem digital, ou seja, para cada posio da matriz dado o nome de pixel. Cada pixel representado por um byte, podendo assim assumir 256 valores diferentes.

Figura 9 Representao de imagem digital

A Figura 9 ilustra a representao descrita e que utilizada neste trabalho. Tambm exibida a orientao de sistema de coordenadas mais utilizada nos algoritmos de processamento de imagem, com a origem do sistema no canto superior esquerdo da matriz. 2.2.2 RELACIONAMENTO BSICO ENTRE PIXELS Sero descritos nesta seo alguns relacionamentos bsicos entre pixels de uma imagem. Estes relacionamentos so utilizados em diversas tcnicas de processamento de imagens.

21

2.2.2.1

VIZINHANA DE UM PIXEL Gonzales e Woods (2000, p. 26) explicam a relao de vizinhana entre pixels de uma

imagem. Um pixel p, posicionado nas coordenadas (x,y), possui quadro vizinhos, cujas coordenadas so dadas so exibidas no quadro 1.
( x + 1, y ), ( x 1, y ), ( x, y + 1), ( x, y 1)
Quadro 1 Coordenadas dos vizinhos-de-4 de p

A esse tipo de vizinhana d-se o nome de vizinhana-de-4, sendo que se refere aos pixels horizontais e verticais que esto a uma unidade de distncia de p. J a vizinhana chamada vizinhana-de-8 considera tambm os vizinhos diagonais de p. Adicionalmente aos pixels posicionados nas coordenadas exibidas no quadro 1, so considerados os pixels posicionados nas coordenadas exibidas no quadro 2. ( x + 1, y + 1), ( x + 1, y 1), ( x 1, y + 1), ( x 1, y 1)
Quadro 2 Coordenadas dos vizinhos-de-8 de p

Observe que alguns dos pixels vizinhos no estaro presentes na imagem quando p estiver localizado na borda da imagem. 2.2.2.2 CONECTIVIDADE Gonzales e Woods (2000, p. 27) explicam que a conectividade entre pixels um conceito importante no processamento de imagens, em especial para o estabelecimento das bordas de objetos presentes em uma imagem. Para estabelecer se dois pixels so conexos, preciso determinar se so vizinhos e se seus nveis de cinza so similares. Observe que, conforme a necessidade, pode ser considerada para determinao de conexidade a vizinhana-de-4 ou a vizinhana-de-8, resultando respectivamente na conectividade-de-4 e conectividade-de-8. 2.2.2.3 ROTULAO DE COMPONENTES CONEXOS Gonzales e Woods (2000, p. 28) descrevem um algoritmo para a rotulao de componentes conexos em uma imagem binria. Considere que uma imagem seja percorrida pixel por pixel, seguindo a orientao descrita na seo 2.1.1. Considerando a vizinhana-de4, defina-se p como sendo o pixel em qualquer passo no processo de varredura e sejam r e t,

22

respectivamente, os vizinhos superior e esquerdo de p. Observe que, obedecendo seqncia de varredura definida, quando chegar ao ponto p, j tero sido encontrados r e t. Como passo inicial do procedimento de rotulao, verifique se o valor de p 0. Em caso positivo mova para a prxima posio. Se o valor de p 1, verifique os valores de r e t. Se ambos forem 0, atribua a p um novo rtulo. Note que, neste caso, ou a primeira vez que o componente conexo aparece, ou o pixel se trata de uma ponta de um componente j encontrado. Caso apenas um dos vizinhos for 1, atribua a p o seu rtulo. Se ambos forem 1 e possuem o mesmo rtulo, atribua a p o mesmo rtulo. Caso forem 1, mas possuem rtulos diferentes, atribua um dos rtulos a p e anote que os dois rtulos so equivalentes. Observe que, neste caso, r e t fazem parte do mesmo componente conexo, j que esto ligados por p. Procedendo desta maneira, ao fim da varredura todos os pontos com valor 1 tero sido rotulados. Para finalizar, resta apenas unir as classes marcadas como equivalentes. O mesmo processo pode ser realizado para a rotulao de componentes conexos considerando a vizinhana-de-8, mas neste caso devem ser considerados os dois vizinhos diagonais superiores de p. 2.2.3 PR-PROCESSAMENTO De maneira geral, o pr-processamento visa melhorar a qualidade de uma imagem digital com a finalidade de facilitar o processamento subseqente de anlise. Dentro de um sistema de viso computacional o pr-processamento exerce principalmente as funes de realce e restaurao das imagens a serem processadas.

Figura 10 Aplicao do filtro de realce

23

Na operao de realce, o objetivo destacar as caractersticas importantes da imagem. Para isso so utilizadas tcnicas de contraste, destaque de contornos e suavizao. A figura 10 exemplifica a aplicao de realce sobre uma imagem desfocada. Gonzales e Woods (2000, p. 115) ressaltam o fato de que as tcnicas de pr-processamento so bastante dependentes da aplicao. J a operao de restaurao de imagens, visa deixar uma imagem digital o mais prximo possvel da cena captada. No processo de digitalizao de imagens atravs de dispositivos eletrnicos comum a perda de detalhes ou a obteno de rudos indesejados. Como exemplo de casos onde podem ser aplicadas tcnicas de restaurao de imagem pode-se citar a ausncia de foco e o movimento dos objetos na imagem capturada. 2.2.4 SEGMENTAO DE IMAGENS A segmentao em imagens digitais tenta reproduzir o processo da viso humana descrita por Facon (1993, p. 87) onde so efetuados agrupamentos sobre a imagem percebida, baseados em proximidade, similaridade e continuidade. De maneira geral, esta etapa do processamento de imagens tem como objetivo isolar os objetos de interesse. Nesta etapa o objetivo dividir a imagem em elementos significativos. Esta separao pode ocorrer em vrios nveis, onde, em um dado momento, pode-se aplicar uma segmentao para obter determinado objeto e em outro momento pode-se obter um detalhe deste objeto. Gonzales e Woods (2000, p. 4) explicam que a maioria dos algoritmos de segmentao baseia-se na descontinuidade ou similaridade dos valores de nvel de cinza. Exemplos de cada uma das abordagens sero descrito nas prximas sees. 2.2.4.1 LIMIARIZAO Uma abordagem muito utilizada para a segmentao de imagens atravs da similaridade a limiarizao. Esta abordagem engloba vrias tcnicas diferentes. Uma delas a limiarizao global. Nesta tcnica, define-se um limiar que representa um nvel de cinza qualquer. Para cada pixel da imagem realizado um teste para verificar se o nvel de cinza deste pixel maior que o limiar definido. Em caso positivo, o mesmo rotulado com um valor, caso contrrio rotulado com outro valor. O resultado deste processo uma imagem

24

binria, ou seja, a cor de cada pixel representada por apenas um bit. Cada pixel da imagem, portanto, apresenta a cor preta (valor 0) ou branca (valor 1). Para aplicaes de inspeo, o resultado da segmentao desejado uma imagem binria onde a forma do objeto a ser inspecionado esteja representada por um agrupamento de pixels com determinado valor e que o fundo esteja representado com pixels de outro valor.

Figura 11 Segmentao de imagem atravs de limiar

A figura 11 exemplifica a segmentao atravs de limiarizao global, onde o resultado obtido a silhueta do frasco a ser inspecionado. 2.2.4.2 DETECO DE BORDAS A deteco de bordas uma das tcnicas em que a segmentao realizada com base na descontinuidade de valores de nveis de cinza. Gonzales e Woods (2000, p. 4) explicam que a deteco de bordas pode ser obtida pelo uso de filtros por derivada.

Figura 12 Aplicao do operador Sobel sobre imagem

25

Dentre os filtros por derivada encontra se o denominado operador de Sobel. Na figura 12 pode-se verificar o resultado obtido pela aplicao deste filtro em uma imagem. Este filtro faz parte dos mtodos de domnio espacial que operam diretamente sobre os pixels de uma imagem considerando a vizinhana dos mesmos. A abordagem principal para definir a vizinhana em torno de um pixel consiste em usar uma subimagem quadrada, centrada no pixel em questo. O centro desta subimagem movido ento de pixel a pixel sobre toda a imagem, aplicando-se o operador para cada posio da mesma.

Figura 13 a) Posies de uma imagem 3 X 3; b) Mscara para x; c) Mscara para y

A partir das mscaras do operador de Sobel exibidas na figura 13, tem-se que as derivadas baseadas nas mesmas podem ser obtidas pelas equaes mostradas no quadro 3.

Gx = ( z7 + 2 z8 + z9 ) ( z1 + 2 z 2 + z3 ) Gy = ( z3 + 2 z6 + z9 ) ( z1 + 2 z 4 + z 7 )
Quadro 3 Equao da derivada pelas mscaras de Sobel

2.2.5

DESCRITORES DE IMAGENS Na etapa de segmentao, obtm-se agrupamentos de pixels que representam os

componentes da imagem a serem analisados. Porm, estes componentes devem ser descritos de maneira mais apropriada, j que uma anlise direta sobre os pixels no muito eficiente. Os descritores so conjuntos de nmeros, gerados para descrever uma forma. Os descritores podem no reconstruir completamente a forma descrita, mas devem ser suficientes para discriminar diferentes formas. A descrio de componentes da imagem pode se dar atravs de descritores simples, como a rea. A rea obtida simplesmente atravs da contagem dos pixels que compe a regio. Porm, para a maioria das aplicaes, informaes simples como a rea no so

26

suficientes para a resoluo dos problemas. A seguir sero descritos dois mtodos de descrio de imagens que as descrevem com quantidade maior de detalhes. 2.2.5.1 CDIGO DE CADEIA Um exemplo de descritor mais completo o cdigo de cadeia.

Figura 14 Cdigo de cadeia

Csar e Costa (2001, p. 350) descrevem que o cdigo de cadeia pode ser gerado seguindo-se a fronteira de um agrupamento de pixels em determinado sentido e atribuindo-se uma direo aos segmentos que conectam cada par de pixels. A figura 14 exemplifica a gerao de cdigo de cadeia com quatro direes possveis e onde a cadeia resultante para a forma descrita foi 033032221101. Esta tcnica, apesar de bastante conhecida, no ser utilizada neste trabalho devido ao tamanho elevado da cadeia resultante do processo de descrio. 2.2.5.2 DESCRITORES DE FOURIER Csar e Costa (2001, p. 350) afirmam que os descritores de Fourier so uma das formas de representao de imagens mais populares para aplicaes de viso computacional e reconhecimento de padres. Estes descritores no constituem um mtodo simples, mas uma classe de mtodos j que existem diferentes maneiras de defini-los. Gonzales e Woods (2000, p. 355) demonstram como uma imagem pode ser representada atravs de descritores de Fourier. A figura 15 exibe uma fronteira digital de N pontos no plano xy.

27

Figura 15 Cdigo de cadeia

Iniciando de um ponto qualquer (x0,y0) no sentido anti-horrio (por exemplo), pode-se encontrar os pares de coordenadas (x0,y0),(x1,y1),(x2,y2),...,(xn-1,yn-1) que representam a fronteira da forma. Cada par pode ser tratado como nmero complexo da forma exibida no quadro 2, para k = 0,1,2,...,N 1, onde N a quantidade de pontos que compe a fronteira. Esta representao possui a vantagem de reduzir um problema de duas dimenses a uma s dimenso, e pode ser visualizada no quadro 4.

s (k ) = x (k ) + jy (k )
Quadro 4 Formato de nmero complexo

A transformada discreta de Fourier definida no quadro 5, para u = 0,1,2,...,N-1, onde N a quantidade de pontos que compe a fronteira. Os coeficientes complexos a(u) so chamados de descritores de Fourier.

1 a (u ) = N

s(k )
k =0

N 1

j 2uk / N

Quadro 5 Transformada discreta de Fourier

Observe que podem ser obtidos tantos descritores quanto o nmero de postos que compe a fronteira no plano xy. Porm, no existiria vantagem em se descrever a forma pela mesma quantidade de pontos. A vantagem deste mtodo de descrio encontra-se justamente

28

na possibilidade de representar uma forma com uma pequena quantidade de descritores. Gonzales e Woods (2000, p. 357) afirmam que poucos coeficientes de baixa ordem so capazes de capturar a forma geral, e que um grande nmero de coeficientes necessrio na definio das caractersticas mais marcantes, como cantos e retas. A propriedade de que poucos coeficientes capturam a essncia geral de uma fronteira possui um grande valor, j que desta maneira podem ser usados para diferenciar formatos de fronteiras distintos. Oliveira e Bauchspiess (2001) utilizaram os descritores de Fourier gerados pela ferramenta Matlab (MATHWORKS, 2004) para a representao da borda de objetos, previamente descritos por cadeias direcionais. O mtodo utilizado para a obteno dos descritores difere do mtodo apresentado neste trabalho. As equaes utilizadas pelos autores no se encontram na forma exponencial, como so apresentadas nos quadros 5 e 6. Em seu trabalho afirmam que o uso de 10 a 25 descritores mostrou-se suficiente para a representao das formas utilizadas. A transformada inversa de Fourier de a(u) definida no quadro 6, para u = 0,1,2,...,N-1 onde N a quantidade de pontos que compe a fronteira. A transformada inversa de Fourier utilizada para reconstruir s(k) a partir dos coeficientes a(u).

s (k ) = a (u ) j 2uk / N
u =0

M 1

Quadro 6 Transformada inversa de Fourier

A varivel M representa o nmero de coeficientes utilizados na descrio da fronteira, sendo que este pode ser menor ou igual a N-1. Na figura 16 so exibidas as fronteiras obtidas pela reconstruo da fronteira original de um quadrado, geradas a partir de diferentes nmeros de coeficientes. Atravs deste exemplo pode-se confirmar a premissa de que os coeficientes de baixa ordem capturam a essncia geral da forma, sendo os detalhes mais finos capturados pelos coeficientes de alta freqncia.

29

Figura 16 Forma original e reconstrues a partir de M coeficientes

Outra vantagem na utilizao dos descritores de Fourier que sobre os mesmos podem ser aplicadas transformaes simples com o objetivo de obter invarincia quanto rotao, translao e escala. Bowman, Soga e Drummond (2001) explicam que a invarincia quanto translao pode ser obtida simplesmente no utilizando o descritor onde N = 0, e apresentam a equao para a obteno de descritores invariantes rotao, sendo esta exibida no quadro 7.
2 ar (u ) = au + bu2

Quadro 7 Transformada para obteno de invarincia

Atravs do uso da transformao exibida no quadro 7, os descritores obtidos a partir de uma mesma borda em diferentes ngulos, so iguais. 2.2.6 INTERPRETAO DE IMAGENS A interpretao consiste em identificar padres atravs da anlise das descries da imagem realizadas nas etapas anteriores. Esta anlise leva em conta padres ou regras previamente definidas. Facon (1993, p.174) exemplifica uma interpretao onde devero ser classificados objetos dentre cinco classes existentes. Nesta anlise os objetos so descritos atravs das seguintes propriedades: permetro, rea, nmero de Euler, raio mnimo e raio mximo. Neste exemplo a classificao se d diretamente pela comparao entre todas as propriedades do objeto analisado com cada um dos padres existentes. Existem casos, porm, em que os objetos analisados no podem ser descritos por propriedades simples como estas. Em oposio ao mtodo utilizado, Gonzales e Woods (2000, p. 424) ressaltam que as propriedades estatsticas das classes de padres so freqentemente desconhecidas, ou no podem ser estimadas. Problemas de deciso terica so mais bem tratados por mtodos que

30

levem s funes de deciso atravs de treinamento. Na seo seguinte ser discutido o mtodo de redes neurais, que segue este princpio. 2.3 REDES NEURAIS Dentre as vrias tcnicas utilizadas no reconhecimento de padres encontram-se as redes neurais artificiais. Surgidas como uma tentativa de simular o funcionamento do crebro e resolver problemas do mesmo modo como o homem o faz, as redes neurais artificiais so utilizadas em vrias reas na resoluo de problemas que vo desde a extrao de informaes de grandes bases de dados at o reconhecimento de imagens de satlite. Nas sees seguintes sero abordadas as redes neurais artificiais. Para uma melhor compreenso do assunto sero inicialmente descritos a estrutura e funcionamento bsico da rede neural biolgica. 2.3.1 O CREBRO E A REDE NEURAL BIOLGICA Segundo Medeiros (2003, p.1), o crebro humano composto por 100 bilhes de neurnios, e responsvel pelo controle da maioria das funes do corpo. Os neurnios so as unidades fundamentais dos tecidos do sistema nervoso. O ncleo de cada neurnio conectado a outros neurnios por meio de vrios filamentos chamados dentritos e um filamento mais longo denominado axnio. Estas conexes so denominadas conexes sinpticas. A figura 17 exibe uma ilustrao do neurnio biolgico.

Figura 17 O Neurnio Biolgico

O neurnio pode disparar pulsos eltricos atravs das conexes sinpticas, sendo estes recebidos pelos dentritos dos outros neurnios. Quando um neurnio recebe pulsos eltricos

31

pelos dentritos, ele ativa e eventualmente dispara um pulso ao axnio, que emite este pulso aos outros neurnios. Esta ativao e o conseqente repasse de sinal aos demais neurnios somente realizada caso os pulsos eltricos recebidos pelas sinapses sejam fortes o suficiente a ultrapassar determinado limiar. As conexes sinpticas e a quantidade de pulsos necessrios para ativar o neurnio podem mudar. Estas caractersticas permitem a rede neural reter conhecimento, ou seja, aprender. O conhecimento retido fica distribudo por toda a rede neural. 2.3.2 REDE NEURAL ARTIFICIAL Segundo Loesch e Sari (1996, p. 5), redes neurais artificiais so sistemas computacionais de implementao em hardware ou software que imitam as habilidades computacionais do sistema nervoso, usando um grande nmero de neurnios interconectados. Conforme comentado anteriormente, sistemas que simulam a rede neural biolgica j so utilizados com sucesso nas mais diversas reas. Na seqncia sero explanados a estrutura, dinmica e aprendizado das redes neurais artificiais. 2.3.2.1 ESTRUTURA DA REDE NEURAL Neste momento sero consideradas inicialmente as caractersticas individuais de cada neurnio da rede. Logo aps ser considerada a organizao dos grupos de neurnios que constituem a rede. 2.3.2.1.1 O NEURNIO ARTIFICIAL

O neurnio artificial o elemento bsico que forma uma rede neural artificial. Tambm conhecido como elemento de processamento, simula o funcionamento de um neurnio biolgico. A figura 18 apresenta um modelo de neurnio artificial demonstrado por Loesh e Sari (1996, p. 21).

32

Figura 18 Modelo de Neurnio Artificial

Baseados no neurnio biolgico, os elementos principais que constituem o neurnio artificial so: a) entradas; b) pesos sinpticos; c) funo de ativao ou funo Soma; d) funo de transferncia ou ativador. O neurnio possui um ou mais sinais de entrada. atravs destas entradas que o neurnio recebe os estmulos a serem processados. Assim como ocorre no neurnio natural, no neurnio artificial todas as entradas so consideradas de maneira simultnea no momento do processamento. No existe situao onde somente o valor de uma ou outra entrada considerado. Os pesos so os valores que representam o grau de importncia de cada entrada para o neurnio. atravs da variao destes valores que se constri o conhecimento. Os valores dos pesos so obtidos no momento do treinamento da rede neural. A funo de ativao antecede a funo de transferncia e tem como atribuio repassar o sinal obtido atravs das entradas funo de transferncia. Em modelos mais simples de redes neurais esta funo simplesmente realiza a soma dos valores das entradas multiplicados pelos respectivos pesos. A funo de transferncia analisa o valor gerado pela funo de ativao e gera uma sada para o neurnio. A funo muda conforme o modelo de rede utilizado. Uma das funes

33

mais empregadas a de sinal, representada graficamente na figura 19, onde o valor obtido pela funo de ativao comparado com determinado limiar. Conforme o resultado da comparao, a sada assume um entre dois valores predeterminados.

Figura 19 Grficos de funes de transferncia

Loesh e Sari (1996, p. 23) explicam que nas redes Perceptron Multicamadas tradicionalmente utilizada a funo de transferncia sigmoidal. Esta funo fornece uma forma para controle automtico de ganho. Para argumentos de pequena magnitude o ganho acentuado. J para argumentos de alta magnitude, o ganho menor. Desta maneira, os sinais de grande amplitude no saturam a rede, assim como os sinais baixos no deixam de ser considerados. 2.3.2.1.2 REDE DE NEURNIOS

Em uma rede neural artificial os neurnios so agrupados em camadas. A figura 20 exibe a organizao das diferentes camadas na rede:

Figura 20 Camadas da rede neural

34

Tafner (1996, p. 62) explica que os neurnios da camada de entrada no realizam processamento. Sua nica funo armazenar a informao de entrada para ser repassada aos neurnios da prxima camada Uma rede neural artificial pode tambm possuir camadas intermedirias ou ocultas, que se situam entre a camada de entrada e a camada de sada. A estrutura destas camadas igual da camada de sada, porm no tem contato com o exterior. Segundo Medeiros (2003, p. 11) estas camadas tem como objetivo melhorar o desempenho da rede, aumentando a possibilidade de diviso do espao de entrada de maneira no linear. Por fim tem-se a camada de sada. Alm de realizar processamento atravs de seus neurnios esta camada tambm responsvel por repassar o resultado do processamento da rede ao mundo exterior. A quantidade de neurnios da camada de sada igual ao nmero de sadas esperadas da rede. Quanto s camadas, devem-se considerar as diferentes organizaes possveis: a) quantidade de camadas; b) quantidade de neurnio por camadas; c) o tipo de conexo entre as camadas e seus neurnios. Loesch e Sari (1996, p. 24) explicam que estas diferentes organizaes de camadas distinguem os tipos de arquitetura de redes neurais artificiais existentes: a) multicamadas, rede feedforward; b) camada simples, redes conectadas lateralmente; c) bicamadas, redes feedforward/feedback; d) multicamadas, redes cooperativas; e) redes hbridas. Dentre os tipos de arquitetura citados ser considerado o tipo Multicamadas feedforward, que ser descrito em seo prpria. 2.3.2.2 FASES DO PROJETO DE REDE NEURAL Apesar das redes neurais artificiais serem utilizadas em diversas reas, seu objetivo quase sempre o mesmo, reconhecer e classificar padres, alm de generalizar informaes. Tafner (1996, p. 62) esclarece que diante de um projeto de uma rede neural ao invs de se

35

pensar em procedimentos e frmulas algortmicas de processamento de dados deve-se ter em mente tipos de dados de entrada, dados de sada e tratamento de dados. Tambm afirma que a rede tem dois momentos distintos de processamento: o momento de aprendizado e o momento de utilizao. Segundo ele, apesar destas duas fases bem distintas de processamento, um projeto de rede possui 3 fases principais, que sero vistas a seguir. 2.3.2.2.1 DEFINIO DA REDE NEURAL

Na fase de definio da rede neural devem-se identificar as variveis relacionadas ao problema que contm as informaes necessrias resoluo do mesmo. Uma vez identificadas estas variveis escolhido o modelo da rede neural a ser utilizado. Tambm devem ser definidos os seguintes aspectos da rede: a) tamanho da rede: deve-se definir o tamanho da rede no que diz respeito a quantidade de camadas, quantidade de neurnios por camada, quantidade de entradas e quantidade de sadas; b) tipo de problema a ser resolvido: o problema pode ser de classificao, padronizao ou otimizao; c) tipo de aprendizado: o algoritmo de aprendizado deve ser selecionado entre supervisionado e no-supervisionado. 2.3.2.2.2 TREINAMENTO DA REDE NEURAL

Dentre as formas de treinamento possveis para a rede neural artificial, o treinamento supervisionado o mais utilizado. Tafner (1996, p. 65) explica o processo de aprendizado supervisionado de uma rede neural. Neste processo, deve-se possuir um conjunto de treinamento organizado em pares, onde para cada entrada se tenha a sada desejada. Estes pares so ento apresentados rede e para cada entrada deve ser verificado se a sada obtida corresponde sada desejada. Caso a sada obtida seja diferente da sada desejada deve ocorrer o ajuste dos pesos sinpticos dos neurnios da rede. Caso a sada obtida seja igual sada desejada, deve-se apresentar o par seguinte rede. Este processo deve se repetir para todos os pares do conjunto de treinamento, at que se obtenha uma taxa de acerto satisfatria. O ajuste sinptico citado nada mais do que o aprendizado do fato apresentado. atravs deste ajuste que o conjunto de neurnios representa a informao que foi apresentada rede. O ajuste sinptico resultado de um clculo que visa somar ao peso atual um valor que

36

corresponda ao grau de erro gerado pela rede diante a uma entrada, a fim de corrigir o valor do peso. Dentre os clculos existentes o mais encontrado a chamada Regra Delta, que pode ser visualizado no quadro 8:

wi(n+1) = wi(n) + i e i = c * s * xi, onde: i = correo associada com a i-sima entrada xi wi(n+1) = novo valor do peso wi(n) = valor antigo do peso s = sada desejada - sada obtida c = constante de aprendizado

Quadro 8 Regra Delta

2.3.2.2.3

UTILIZAO DA REDE NEURAL

Aps ter sido realizado o treinamento satisfatrio da rede neural, ela est pronta para ser utilizada. Segundo Tafner (1996, p. 81) a fase de utilizao propriamente a execuo da rede neural, que se inicia quando uma entrada apresentada rede e termina quando a rede gera uma sada. importante lembrar que, na fase de utilizao, nenhum ajuste de peso sinptico realizado. O processo de utilizao consiste na obteno de uma resposta da rede a um estmulo de entrada. Caso ainda surja a necessidade de reconhecimento de novos conjuntos de dados ainda ou caso sejam identificados erros significativos na execuo da rede, ser necessria uma manuteno na rede neural. A manuteno pode ser realizada pelo processo de treinamento ou mesmo por alteraes na definio da rede, dependendo do caso. 2.3.2.3 MODELO DE REDES NEURAIS Diferentes combinaes quanto aos aspectos estruturais das redes neurais artificiais resultam na existncia de diferentes modelos, cada um com sua arquitetura, aprendizagem e capacidade diferente dos demais. As aplicaes prticas tambm variam para cada modelo.

37

Segundo Medeiros (2003, p.10), os modelos desenvolvidos sempre se basearam em modelos biolgicos ou situaes reais. Assim, sempre se procurou reproduzir o funcionamento fisiolgico ou simblico do crebro humano. Loesch e Sari (1996, p. 5) apresentam uma relao de redes contendo informaes sobre as mesmas. Alguns modelos indicados para diferentes aplicaes so exibidos na Tabela 1.
Tabela 1 Aplicaes bsicas para modelos de rede neural artificial

Modelo Adaline/Madaline feedforward multicamadas Recurrent Time-Delay Rede de ligaes funcionais Boltzmann Machine Hopfield Neocognitron

Aplicao bsica Filtragem de sinal adaptativo Reconhecimento de padres Controle robtico Reconhecimento de fala Classificao Reconhecimento de padres Evocao autoassociativa Reconhecimento de caracteres manuscritos

Na seqncia ser apresentado o modelo feedforward multicamadas, tambm conhecido como perceptron multicamadas. 2.3.2.4 REDES PERCEPTRON MULTICAMADAS Segundo Loesch e Sari (1996, p. 67) a rede perceptron multicamadas o modelo mais implementado dentre todas as arquiteturas conhecidas. As capacidades da rede foram responsveis pela popularizao do modelo. A rede possui, alm da capacidade de abstrao, a capacidade de generalizao. Com isso, capaz de classificar um padro mesmo quando este no pertena ao conjunto de treinamento. Tambm uma rede robusta, sendo assim imune a pequenas falhas nos padres apresentados. A arquitetura da rede pode ser visualizada na figura 20, onde a rede possui uma camada de entrada, uma ou mais camadas ocultas e uma camada de sada. Cada neurnio recebe diversos valores de entrada e produz apenas uma sada. Os neurnios de uma mesma camada atuam em paralelo. O fluxo de processamento inicia na camada de entrada e so propagados os valores produzidos at a camada de sada. As equaes utilizadas no processamento para frente so exibidas no quadro 9.

38

Nk
(K) s (K) j = w 0j +

w
i=1

(K) ij

. x (K-1) i

onde: sada da funo de ativao do neurnio i da camada k x (K) i soma ponderada dos pesos pelas entradas s (K) j

w (K) pesos das conexes sinpticas na entrada do neurnio j da camada k, onde ij Nk


i o ndice da conexo. nmero de neurnios da camada k

e
(K) x(K) j = f(sj )

Quadro 9 Equaes feedforward

O treinamento de uma rede perceptron multicamadas segue o procedimento descrito na seo 2.2.2.2.2, onde so apresentados rede pares de treinamento. Ao se apresentar um padro de entrada, o fluxo alimentado pra frente, camada por camada. O valor de sada obtido comparado com a sada desejada, e em caso de erro ocorre um reajuste dos pesos da rede. Este ajuste realizado de trs para frente, ou seja, da camada de sada primeira camada oculta. O algoritmo de retropropagao apresentado no quadro 10.

Passo 1. Passo 2.

Inicialize os pesos w (K) ij da rede om valores aleatrios prximos a zero. Seja (x,d) o par de treinamento. Aplique o vetor x na camada de entrada e propague a m rede at a camada de sada. Seja y a sada da rede, calcule o erro quadrtico 2 = Se for inferior ao valor de tolerncia, pare com sucesso, seno prossiga.

(d - y ) .
2 j j j=1

Passo 3. Passo 4.

Faa k = ltima camada. Para todo elemento j da camada k faa: - Calcule j empregando
(k)

(k) j = d j - y j se k for a ltima camada


N k+1

(k) j =
- Calcule Passo 5. Passo 6.
(k) j

(
i=1

(k+1) i

. w (k+1) ) se for uma camada oculta ji


(k) j

empregando

. f(s (k)) . = (k) j j

k k - 1. Se k > 0 v para o passo 4, seno prossiga no passo 6. Recalcule todos os pesos de conexo da rede empregando
(k) (k) (k) j (k)

W j (n + 1) = W j (n) + 2

(n)x j

(n)

tome outro par de treinamento e retorne ao passo 2.

Quadro 10 Algoritmo de retropropagao

Loesch e Sari (1996, p. 77) fazem um comentrio sobre a implementao do algoritmo de retropropagao em software, onde existe a necessidade do clculo da derivada da funo

39

de transferncia no passo 4. Segundo ele este clculo pode ser realizado com maior eficincia computacional quando a funo de transferncia for alguma funo logstica. Neste caso, a derivada pode ser obtida pela equao exibida no quadro 11. f ' ( x) = f ( x) * (1 f ( x))
Quadro 11 Equao da derivada da funo logstica

Para usufruir desta vantagem, pode ento ser utilizada como funo de transferncia a funo logstica apresentada por Tafner (1996, p. 61), que pode ser vista no quadro 12.

f ( x) =

1 (1 + e x )

Quadro 12 Equao da funo de transferncia

40

3 DESENVOLVIMENTO DO PROTTIPO
Neste captulo so abordadas as atividades relativas ao projeto e desenvolvimento do prottipo proposto pelo trabalho. 3.1 ESPECIFICAO DE REQUISITOS O prottipo de sistema a ser desenvolvido deve analisar imagens de produtos capturadas previamente por uma cmera de vdeo, com o objetivo de detectar defeitos de produo nos mesmos. A inspeo deve ser baseada em parmetros definidos pelo usurio, portanto o sistema deve permitir a configurao prvia das diferentes anlises a serem realizadas. O prottipo deve possuir independncia quanto ao produto a ser inspecionado, permitindo assim analisar diferentes produtos sem a necessidade de nova implementao. O prottipo deve realizar as anlises em tempo real, considerando-se que sistemas de inspeo automatizada so inseridos em uma linha de produo onde interagem com um sistema de descarte, de maneira a descartar um produto defeituoso imediatamente aps a deteco do defeito. 3.2 ESPECIFICAO O sistema ser representado a seguir atravs da utilizao de alguns dos diagramas da UML, visto que, segundo Cardoso (2003, p.1), tem se tornado a cada dia um padro mais usado para anlise e projeto de software. Para a confeco dos diagramas foi utilizada a ferramenta Rational Rose (IBM CORPORATION, 2004). 3.2.1 DIAGRAMAS DE CASO DE USO A figura 21 apresenta o diagrama do caso de uso Configurar inspeo. Este caso de uso representa a funcionalidade no que diz respeito definio e configurao de cada tipo de anlise a ser realizada sobre as imagens dos produtos. O usurio deve informar quais as anlises a serem consideradas, e, para cada uma delas, informar parmetros inerentes s mesmas, necessrios a sua realizao.

41

Usurio

Configurar inspeo

Figura 21 Caso de uso Configurar inspeo

Na figura 22 pode-se observar o diagrama do caso de uso Inspecionar produto, que representa a funcionalidade no que diz respeito inspeo dos produtos. O sistema externo responsvel pela captura das imagens sinaliza ao sistema de inspeo, atravs de uma interrupo, a passagem de um produto na linha de produo. O sistema de inspeo realiza as anlises previamente configuradas pelo usurio. Baseando-se nos parmetros especificados, o sistema determina a qual classe o produto se enquadra. Caso o produto se enquadre na classe de produtos reprovados, o sistema de inspeo sinaliza o resultado ao sistema de descarte, atravs de uma sada digital. Caso o produto se enquadre na classe de produtos aprovados o sistema no faz nada, deixando-o passar.

Sistema de captura

Inspecionar produto

Sistema de descarte

Figura 22 Caso de uso Inspecionar produto

Os atores presentes neste caso de uso so sistemas externos, normalmente presentes em uma aplicao do sistema de inspeo em uma linha de produo industrial. Foram mantidos estes atores para ilustrao de uma situao real de aplicao. Porm, no prottipo desenvolvido o papel dos sistemas externos ser realizado por um usurio. Os sinais de interrupo e sadas digitais sero representados atravs da interface. 3.2.2 DIAGRAMAS DE CLASSE A seguir sero expostos os diagramas de classe do prottipo implementado. Os diagramas esto divididos em diferentes nveis, para um melhor entendimento.

42

3.2.2.1

CLASSES DE PROCESSAMENTO DE IMAGEM Na seqncia sero descritas as classes utilizadas no desenvolvimento do prottipo

mais relacionadas ao processamento e anlise de imagens.

CQuadro
(from Inspetor)

CVisGrayByteImage

m_fTempoAnalise : float m_bResultadoAnalise : bool IlustrarAnalisesDetalhe() IlustrarAnalises() IsSubQuadroDefinido() Serializar() Analisar() ConfigurarDispositivoContexto() GravarImagem() CarregarImagem() GetSubQuadroSelecionado() AdicionarSubQuadro() VerificarBordaSubQuadro() RemoverSubQuadroSelecionado() SelecionarSubQuadro() ExibirSubQuadros() ExibirImagem() SetCoordenadasSQSelecionado() SetQuadro() GetResultadoAnalise() GetTempoAnalise() GetInfoAnalise() GetCoordenadasSQSelecionado() GetTipoSubQuadroSelecionado() IsSubQuadroSelecionado() GetRetangulo() IsImagemCarregada() CQuadro() <<virtual>> ~CQuadro() CImagemByte
(from Inspetor)

GerarContorno() FiltrarSobel() GerarNegativo() CheckRange() AgruparVizinhanca8() GetHistograma() ConfigurarDispositivoContexto() <<static>> CImagemByte::ConfigurarDispositivoContexto() Binarizar() CImagemByte() CImagemByte() <<virtual>> ~CImagemByte() UnirClassesEquivalentes() AdicionarClasse() CheckElementosClasseEquivalente() CheckNovoComponente() RenumerarCompoQuadro()

CSubQuadro
(from Inspetor)

0..n <<struct>> CComponenteConexo


(from Inspetor)

CSubQuadroForma
(from Inspetor)

m_Coordenadas : CRect m_iTipoAnalise : int m_bResultadoAnalise : bool m_fTempoAnalise : float m_iLimiar : int LimiarizarImagem() GetHistogramaSQ() <<virtual>> Analisar() ExibirImagemSubQuadro() <<virtual>> IlustrarAnalise() <<virtual>> ExibirSubQuadro() SetLimiar() SetImagemBase() SetCoordenadas() <<virtual>> CopiarSubQuadro() GetInfoAnalise() GetLimiar() GetAltura() GetResultado() GetTempoAnalise() GetTipoAnalise() GetCoordenadas() GetLargura() CSubQuadro() CSubQuadro() CSubQuadro() <<virtual>> ~CSubQuadro() CheckRange() <<virtual>> GerarInfoAnalise() <<struct>> ParTreinamento
(from Inspetor)

x : int y : int rcArea : CRect area : long CComponenteConexo() 0..n

m_iQtdDescritores : int m_bVarianciaEscala : bool m_bVarianciaRotacao : bool m_bVarianciaTranslacao : bool m_lContorno : CArray<CPoint,CPoint>* DetectarAlvo() GetTamanhoContorno() IlustrarReconstrucao() GetVarianciaEscala() SetVarianciaEscala() GetVarianciaRotacao() SetVarianciaRotacao() GetVarianciaTranslacao() SetVarianciaTranslacao() GetQuantidadeDescritores() SetQuantidadeDescritores() DescreverForma() CopiarSubQuadro() PrepararAnalise() GerarParesTreinamento() Analisar() IdentificarComponentesConexos() GetPosMaiorCompoConexo() ExibirSubQuadro() IlustrarAnalise() CSubQuadroForma() CSubQuadroForma() <<virtual>> ~CSubQuadroForma() TDF() TDFInversa()

Rede Neural

<<struct>> CClass eCompoEquivalen te


( from Inspetor)

idClasse : int

CPonta
(from Inspetor)

id : int

Entrada Saida

Figura 23 Diagrama de classes de processamento e anlise de imagem

43

O diagrama de classe exibido na figura 23 exibe as classes responsveis pelo processamento e anlise de imagens. No diagrama apresentado, as classes referentes rede neural esto agrupadas em um pacote. Furlan (1998, p. 310) explica que esta notao da UML indicada para agrupar componentes relacionados entre si, para uma melhor organizao dos diagramas. As classes da rede neural implementada sero vistas em detalhe na seqncia. 3.2.2.1.1 CLASSE CIMAGEMBYTE E O PROCESSAMENTO DE IMAGEM

A classe CImagemByte a estrutura utilizada para representar imagens no prottipo implementado. Alm de ser utilizada como estrutura para qualquer imagem criada durante os processamentos, tambm utilizada para armazenar e manipular as imagens capturadas pelo sistema de aquisio e que sero analisadas pelo sistema de processamento. Observa-se que, conforme o prprio nome indica, esta imagem somente pode ser utilizada para imagens em tons de cinza. Esta classe uma especializao da classe CVisGrayByteImage, que compe a biblioteca Vision SDK e que ser discutida mais a diante. A especializao objetiva adicionar funcionalidades de processamento de imagens, j que este tipo de processamento no est presente na classe me. As principais vantagens oferecidas pela utilizao desta classe da biblioteca CVisGrayByteImage, em contrapartida aos tipos nativos oferecidos pela linguagem C++ utilizada na implementao do prottipo, so o acesso otimizado memria que representa a matriz de pixels, funes de exibio em dispositivos de contexto, rotinas de gravao e leitura no disco, alm da presena de rotinas especficas aquisio de imagem independente de dispositivo. Esta ltima funcionalidade no aproveitada no prottipo desenvolvido neste trabalho, porm poder ser utilizado nas possveis expanses futuras do mesmo. O objetivo na criao desta classe centralizar todo e qualquer tipo de processamento de imagem que se faa necessrio e que tenha ao somente sobre os pixels. Alm da memria utilizada para armazenar a matriz de pixels e do cabealho contendo propriedades bsicas da imagem, nenhuma outra informao relativa anlise armazenada. A idia que, no abrangendo as funes e estruturas utilizadas na anlise, esta classe poderia ser utilizada na implementao de outros sistemas, como um editor de imagens, por exemplo.

44

Uma das funcionalidades implementadas na classe a rotulao dos componentes conexos presentes na imagem, baseada no algoritmo apresentado na seo 2.1.2.3 e implementada na funo AgruparVizinhana8(). Para a rotulao dos componentes so utilizadas as estruturas CPonta e CComponenteEquivalente que podem ser visualizados no diagrama de classes exibido na figura 23. Outra funcionalidade importante o processamento dos operadores de Sobel, que foi implementada na funo FiltrarSobel(). Esta funo refere-se ao filtro por derivada e que utilizado para o realce de pixels localizados em fronteiras. Uma explicao mais detalhada da tcnica pode ser encontrada na seo 2.1.4.2. 3.2.2.1.2 CLASSE CQUADRO E A ANLISE GERAL

A classe CQuadro representa o quadro a ser analisado pelo sistema. Alm de possuir agregada a estrutura contendo a imagem a ser analisada, esta classe agrega e prov acesso lista de anlises definidas pelo usurio, representadas por subquadros e que sero descritos posteriormente. Esta classe no realiza nenhuma anlise direta sobre os pixels da imagem, mas responsvel pela efetivao e obteno do resultado da anlise geral, atravs de troca de mensagens com os subquadros que executam as anlises parciais. Possui funes utilizadas na definio e gerenciamento dos subquadros, assim como funes de desenho e exibio. 3.2.2.1.3 CLASSE CSUBQUADRO E AS SUBANLISES

A classe CSubquadro a classe base para os subquadros de anlise a serem implementados. Um subquadro referencia determinada regio do quadro a ser analisado, delimitando a rea a ser considerada. Tambm possui funcionalidades e estruturas utilizadas nas anlises em geral.

45

Figura 24 Subquadro de analise

A idia por trs de um subquadro a de que nem todos os tipos de anlise necessitam ser realizadas em toda a rea da imagem. A figura 24 demonstra a definio de um subquadro para anlise de tampa em uma garrafa. Neste exemplo, a anlise de integridade de tampa sobre garrafas pode ser direcionada regio do quadro capturado onde se estime que o gargalo deva estar localizado. Esta delimitao da regio de interesse reflete diretamente na velocidade de anlise, j que o processamento no considerar todos os pixels da imagem. 3.2.2.1.4 CLASSE CSUBQUADROFORMA E A ANLISE DE FORMA

A classe CSubQuadroForma uma especializao da classe CSubquadro com o objetivo de disponibilizar um tipo de anlise baseado na forma de produtos. Este tipo de anlise possibilita a inspeo de diferentes tipos de produtos, j que a presena de muitos defeitos de produo tem reflexo direto sobre a forma externa dos mesmos. A anlise de forma de produtos implementada realizada observando o contorno dos mesmos. O contorno considerado como sendo o conjunto de pixels localizados na fronteira do produto na imagem digital. O procedimento para a extrao do contorno do produto e sua anlise descrito abaixo. Para a obteno dos contornos presentes no quadro analisado, foi implementada na classe CImagemByte a funo FiltrarSobel(), que correspondente tcnica de deteco de bordas por operadores de Sobel, descrita na seo 2.1.4.2. Conforme exibido na figura 12, a partir do processamento do operador de Sobel os valores dos nveis de cinza dos pixels presentes na fronteira do produto so aproximados a 255. Os valores dos nveis de cinza dos pixels que no pertencerem fronteira sero aproximados a 0. Observe que, conforme dito

46

anteriormente, todo o processamento sobre os pixels da imagem que no resultem em informao foram implementados na classe CImagemByte. Conforme explicado, aps a aplicao do filtro operador de Sobel os valores dos nveis de cinza dos pixels so aproximados a 0 ou 255. Para evitar que os processamentos que viro a seguir considerem faixas de valores prximos as estes extremos, realizada a binarizao da imagem atravs da tcnica de limiarizao descrita na seo 2.1.4.1. Esta funcionalidade est implementada na funo Binarizar() da classe CImagemByte. A binarizao permite que somente sejam considerados valores de 0 ou 255. A partir da imagem segmentada pela deteco de bordas e pela limiarizao, se poderia varrer a imagem e identificar os pixels que compe um contorno. Porm nem todos os pixels identificados sero necessariamente do mesmo objeto. Podem existir mais de um objeto em um quadro analisado, assim como mais de um contorno pode pertencer a um nico objeto. Para resolver este problema foi utilizada a tcnica de rotulao de componentes conexos descrita na seo 2.1.2.3. A funo AgruparVizinhana8() implementa esta tcnica na classe CImagemByte. Atravs dela os diferentes agrupamentos de pixels presentes na imagem sero rotulados com diferentes valores de nveis de cinza. Observa-se agora que, como a prpria faixa de valores dos pixels entre 0 e 255 utilizada como identificador dos componentes, existe uma limitao a 253 diferentes agrupamentos. Uma abordagem diferente com utilizao de nova estrutura poderia resolver o problema, porm esta quantidade mostra-se suficiente para a resoluo do problema aqui exposto. A funo IdentificarComponentesConexos() foi implementada na classe

CSubQuadroForma para extrair informaes dos componentes conexos da imagem, sendo tambm criada uma estrutura para armazenar informaes bsicas dos componentes. Para cada componente identificado a funo insere em uma lista associada classe CSubQuadroForma uma instncia da estrutura CComponenteConexo, contendo informaes como posio dos cantos, rea, alm de um ponto inicial para acesso. As informaes extradas dos componentes so utilizadas ento para decidir qual dos contornos ser considerado. Partindo do princpio que a rea de atuao de um ponto de inspeo em uma linha de produo deve ser controlada e tambm previamente preparada, assume-se que o contorno a ser inspecionado o maior contorno presente no quadro. Somente

47

o componente conexo que possuir a maior rea ser considerado, j que representa o maior contorno presente. Uma vez identificado o componente conexo a ser considerado, pode-se extrair as coordenadas dos pixels que compe o contorno. A funo GerarContorno() da classe CSubQuadroForma percorre todo o contorno de um componente conexo, partido do ponto inicial recebido como parmetro. Aps isso, retorna uma lista contendo as coordenadas de todos os pontos pertencentes fronteira do componente. Com a lista de coordenadas dos pontos no plano xy que formam o contorno, j h informao suficiente para diferenciar produtos. Porm, a lista gerada geralmente muito grande. Considerando-se que os quadros capturados por cmeras especficas para aplicaes de inspeo normalmente so compostos por 640 pixels de largura por 480 pixels de altura, frequentemente so obtidos contornos com mais de 1000 pixels. Esta quantidade de informao invivel para a maioria das tcnicas de interpretao. Para resolver este problema foi implementada a tcnica de descrio por Fourier apresentada na seo 2.1.5.2. A funo TDF() implementada na classe CSubQuadroForma gera, a partir de uma lista que representa um contorno, uma aproximao com preciso varivel. Pelo uso desta funo, pode-se reduzir em muito a quantidade de informao que ser utilizada para descrever a forma dos produtos. Aps a reduo da quantidade de informaes que descrevem um produto, pode-se interpretar os mesmos atravs da tcnica de redes neurais, descrita na seo 2.2. A classe CSubQuadroForma associada uma rede neural implementada na classe CRede. Detalhes de implementao internos rede neural sero abordados na seo seguinte. A utilizao desta classe ocorre em dois momentos distintos: na preparao da anlise e na execuo da anlise. A preparao da anlise deve anteceder a execuo da mesma. No momento da preparao, a rede neural associada criada e posteriormente treinada. Na criao da rede so utilizados parmetros informados pelo usurio, exceto pela quantidade de neurnios da camada de entrada, que ser igual quantidade de descritores utilizados na representao do contorno, e pela quantidade de neurnios da camada de sada, que ser igual a um, podendo representar assim aprovao e reprovao.

48

Criada a rede neural, preparada atravs da funo GerarParesTreinamento() uma lista contendo pares de treinamento que so utilizados no treinamento da mesma. Cada par possui um padro de entrada e sua sada desejada. Para a preparao dos pares de treinamento devese possuir quadros com padres de produto aprovados em um diretrio e quadros com padres de produtos reprovados em outro diretrio. Para cada par, a entrada obtida pela execuo dos passos descritos anteriormente para a obteno dos descritores de Fourier. A sada desejada ser zero para os padres contidos no diretrio de produtos reprovados, e ser um para os produtos contidos no diretrio de produtos aprovados. A lista de pares de treinamento passada ento rede neural, para treinamento da mesma. Aps o treinamento da rede, a subanlise estar pronta para a execuo. No momento de execuo, o processamento para a obteno dos descritores de Fourier ocorre para cada quadro analisado, conforme procedimento descrito anteriormente. Os descritores so apresentados ento rede neural. A rede neural ativada. Aps isso, obtm-se o resultado do processamento da mesma, que um valor real. Caso este valor seja prximo a zero o resultado da anlise ser reprovado, caso o valor seja prximo a um o resultado ser aprovado. 3.2.2.2 CLASSES DE REDE NEURAL Na seqncia sero descritas as classes utilizadas na implementao da rede neural utilizada.

49

CRede SetEntradas() TreinarRede() Propagar() GetSaidas() CRede() <<virtual>> ~CRede() RetropropagarErro() CalcularErroQuadratico() Reconhecer() 1 CCamadaEntrada
(from Inspetor)

0..n CCamada Oculta


(from Inspetor)

1 CCamadaSaida
(from Inspetor)

SetEntradas() CCamadaEntrada() <<virtual>> ~CCamadaEntrada()

SetEntradas() AjustarPesos() Calcul arErroDerivativoQuadratico() GetNeuronios() CCamadaOculta() CCamadaOculta() CCamadaOculta() ~CCamadaOculta()

SetEntradas() AjustarPesos() CalcularErroDerivativoQuadratico() GetNeuronios() CCamadaSaida() <<virtual>> ~CCamadaSaida()

CCamadaBase
(from Inspe tor)

CNeuronio
(from Inspe tor)

m_fSaidas : CArray<double,double> Ativar() <<virtual>> SetEntradas() GetSaidas() CCamadaBase() <<virtual>> ~CCamadaBase() CNeuronioProcessamento
(from Inspetor)

1..n

m_ fSaida : double <<virtual>> Ati va r() GetSaida() CNeuronio() <<virtual>> ~CNeuronio() ...

m_ fEntradas : CArray<dou bl e,do ub le> m_ fPesos : CArra y<double,doubl e> m_ fErro DerivativoQuad rat ico : double Set Entradas() Ativar() GetPesos() Aju s tarPesos() GetErro DerivativoQuadratico() Set ErroDe rivat ivoQuadrati co () CNeuronioProcessa men to() <<virtual>> ~CNeuronio Process a ment o() Cal cula rSigmoid e() GerarRando mi co ()

CNeuronioEntrada
(from Inspe tor)

m_ fEntrada : do ub le SetEnt rad a() Ati va r() CNeu ro ni oEnt rada () <<virtual>> ~CNeu ronio Entrad a() ...

Figura 25 Diagrama de classes da rede neural

O diagrama de classes exibido na figura 25 refere-se ao pacote de classes as classes que compe a rede neural utilizada na anlise de forma como mtodo de interpretao de produtos.

50

Observa-se que a implementao baseada nas equaes de propagao exibidas no quadro 9 e no algoritmo de retropropagao exibido no quadro 10. Como a implementao segue o paradigma de orientao a objeto e deve aproximar-se do modelo real, as equaes e os passos do algoritmo encontram-se distribudos nas diferentes classes que compe a arquitetura da rede. A indicao da localizao de cada passo ser feita nas sees que seguem. 3.2.2.2.1 CREDE

A classe CRede prov acesso a funcionalidades de uma rede neural, incluindo os mtodos para sua criao, treinamento e execuo. Esta classe responsvel pela interface da rede com o ambiente externo, assim como pelo gerenciamento da rede como um todo. O modelo de rede neural implementado o perceptron multicamadas, descrito na seo 2.2.2.4. Na criao da rede so informados parmetros relativos sua arquitetura da mesma. Seguindo a arquitetura encontrada na literatura, a rede implementada composta por uma camada de entrada, uma ou vrias camadas ocultas e uma camada de sada. Todas as camadas podem ter N neurnios. Para realizao do treinamento, a classe implementa o algoritmo de retropropagao, exibido no quadro 10, atravs da funo booleana TreinarRede(). Os passos do algoritmo mais associados s camadas, como o clculo de erro da camada, foram implementados nas classes que representam as mesmas. Nestes casos, a classe CRede envia uma mensagem s camadas para a realizao do clculo. A classe tambm implementa a funo

CalcularErroQuadratico(), que calcula o erro quadrtico descrito no passo 2 do algoritmo. Adicionalmente ao algoritmo, foi implementado um controle em que, caso a quantidade de iteraes tenha ultrapassado um valor estipulado e o erro da rede ainda no tenha atingido um valor inferior tolerncia informada, o loop de treinamento para e a funo retorna falso. Este controle foi adicionado para os casos em que a rede no consegue aprender, e sem o mesmo continuaria o processamento infinitamente. O reconhecimento de um padro atravs da rede implementado na funo Reconhecer(), onde informada como parmetro a entrada para a rede. Pela chamada a esta funo a rede alimentada com os valores de entrada. chamada ento a funo Propagar(). Esta funo ativa todas as camadas, da camada de entrada camada de sada, repassando

51

entre elas os resultados das ativaes. O retorno da funo o resultado da execuo da rede, diante do padro apresentado. 3.2.2.2.2 CLASSE CCAMADABASE

Pelas diferenas existentes entre os tipos de camadas que compe uma rede neural do tipo perceptron multicamadas, optou-se por criar diferentes classes de camadas ao invs de utilizar apenas uma, onde fossem implementadas todas as funes. A classe CCamadaBase representa a classe me utilizada para especializao de diferentes tipos de camadas. Ela possui variveis e implementa funes comuns aos diferentes tipos de camada implementados. Pode-se citar a existncia de listas para os neurnios e para as sadas, assim como funes de ativao, informao das entradas e acesso s sadas. 3.2.2.2.3 CLASSE CCAMADAENTRADA

A classe CCamadaEntrada representa a camada de entrada da rede neural. Observe que, como as entradas dos neurnios desta camada so alimentadas por fonte externa, ela no considerada no algoritmo de retropropagao de erro. A nica funo dos neurnios desta camada armazenar a informao de entrada para ser passada para a camada seguinte. Na verdade, esta camada existe para uma aproximao do modelo, sendo que no necessariamente precisaria existir. 3.2.2.2.4 CLASSE CCAMADAOCULTA

A classe CCamadaOculta representa as camadas ocultas utilizadas na rede neural. Algumas particularidades a diferenciam da camada de sada. Nesta camada implementada a funo CalcularErroDerivativoQuadratico(), conforme descrito no passo 4 do algoritmo apresentado no quadro 10. Nesta funo, para cada neurnio da camada realizado o clculo do erro a ser considerado no ajuste sinptico. O valor do erro atribudo a cada neurnio atravs da funo SetErroDerivativoQuadrtico(). Assim, existe um clculo de erro especfico para os neurnios da camada oculta. O clculo de erro exige o clculo da derivada da funo de transferncia. Na seo 2.2.2.4 existe uma observao exclusiva referente a este clculo, sendo que esta foi seguida na implementao.

52

Adicionalmente tambm existe a funo AjustarPesos(), utilizada para indicar a todos os neurnios presentes na camada o momento de ajuste dos pesos sinpticos. 3.2.2.2.5 CLASSE CCAMADASAIDA

A classe CCamadaSaida representa a camada de sada da rede neural. Assim como na camada CCamadaOculta, esta classe implementa uma funo

CalcularErroDerivativoQuadratico(). Porm conforme diferenciado no passo 4 do algoritmo apresentado no quadro 10, existe um clculo especfico para os neurnios da camada de sada. Tambm o clculo da derivada da funo de transferncia dos neurnios foi implementado baseado no comentrio especfico sobre o assunto e que pode ser visto na seo 2.2.2.4. Nesta classe tambm existe a funo AjustarPesos(), similar existente na classe CCamadaOculta. 3.2.2.2.6 CLASSE CNEURONIO

Conforme comentado anteriormente, a funo dos neurnios na camada de entrada difere da funo que assumem nas camadas de sada e camadas ocultas. Na camada de entrada o neurnio no realiza processamento sobre o valor de entrada. J nas outras camadas o neurnio deve processar as entradas para gerar uma sada. Por este motivo foram criadas diferentes classes de neurnio, especializadas a partir de uma classe base. A classe CNeurnioBase representa a classe me utilizada para especializao dos diferentes tipos de neurnios. Ela possui variveis e implementa funes comuns aos diferentes tipos de neurnios implementados. Pode-se citar a varivel da sada, assim como funes para ativao e acesso sada. A funo para alimentao dos valores e as variveis para os mesmos foram implementados nas especializaes, j que difere entre elas. 3.2.2.2.7 CLASSE CNEURONIOENTRADA

A classe CNeuronioEntrada representa os neurnios a serem utilizados na camada de entrada. Este neurnio no realiza processamento sobre os valores de entrada. Desta forma a funo de ativao nesta classe simplesmente repassa-os s sadas. Por este motivo, tambm no possuem pesos e funes de ajuste.

53

3.2.2.2.8

CLASSE CNEURONIOPROCESSAMENTO

A classe CNeuronioProcessamento representa os neurnios a serem utilizados tanto nas camadas ocultas quanto na camada de sada. Diferente da classe CNeurnioEntrada, esta classe realiza processamento

considerando os valores de entrada e seus respectivos pesos. Este clculo implementado na funo Ativar() e segue as equaes exibida no quadro 9. A segunda equao refere-se ao processamento da funo de transferncia. Este clculo foi implementado na funo CalcularSigmoide(), e o tipo da funo escolhida foi a funo sigmoidal descrita por Tafner (1996, p. 61). A escolha desta funo foi baseada no comentrio de Loesch e Sari (1996, p. 77), em que explica que o uso de uma funo deste tipo facilita o clculo da derivada, necessria no calculo de erro realizado pelas camadas oculta e de sada. Maiores detalhes podem ser encontrados na seo 2.2.2.4. Esta classe implementa ainda o clculo de ajustes de peso, implementado na funo AjustarPesos() e descrita no passo 6 do algoritmo exibido no quadro 10. Neste clculo so utilizados a taxa de aprendizado e o valor do erro derivativo quadrtico. A taxa de aprendizado informada rede neural no momento de criao da classe CRede. J o erro derivativo quadrtico para cada neurnio repassado ao mesmo no momento da execuo da funo CalcularErroDerivativoQuadrtico() da classe de camada em que se encontra. 3.2.3 DIAGRAMAS DE SEQUENCIA A seguir so exibidos e comentados os diagramas de seqncia dos principais casos de uso do prottipo a ser implementado. O diagrama exibido na figura 26 refere-se ao caso de uso Configurar Inspeo.

54

: Usurio

CDlgAnali s e Forma

: CSubQuadroForma

: CImagemByte

: CRede

1: Configurar Anlise 2: PrepararAnali s e() 3: GerarParesTreinamento()

4: DetectarAlvo( ) 5: FiltrarSobel( ) 6: Binarizar() 7: GerarNegativo( ) 8: Iden tificarComponentesConexos( )

9: DescreverForma()

10: GerarContorno() 11: T DF() 12: CRede() 13: TreinarRede()

Figura 26 Diagrama de seqncia Configurar Inspeo

A preparao da anlise deve anteceder a sua execuo. Neste momento, a rede neural a ser utilizada criada e posteriormente treinada com o conjunto de treinamento. O processo de treinamento inicia com a gerao de um evento pelo usurio na caixa de dilogo relativa a preparao da anlise. A funo associada a este evento solicitar a execuo da funo PrepararAnalise() do objeto da classe CSubQuadroForma. Atravs dos parmetros desta funo, enviada uma srie de informaes fornecidas pelo usurio no dilogo, e que sero utilizadas durante o processo de criao e treinamento da rede neural. Alm de informar a quantidade de descritores a serem utilizados na descrio da forma, a funo PrepararAnalise() solicita a gerao do conjunto de treinamento a partir dos quadros padro, que devem estar localizados em dois diretrios, previamente informados pelo usurio. A funo GerarParesTreinamento() prepara os pares de treinamento. Nesta funo,

55

para cada padro obtida a descrio do produto na forma de descritores de Fourier, conforme procedimento abaixo. Inicialmente, chamada a funo DetectarAlvo() da prpria classe, que deve identificar o produto e destac-lo de outros objetos possivelmente presentes na imagem. Para isso, a funo realiza uma chamada funo de FiltrarSobel() do objeto CImagemByte que representa a imagem, objetivando destacar contornos presentes na mesma. Aps destacados os contornos, chamada a funo IdentificarComponentesConexos() para se obter informaes dos contornos e a partir delas identificar o contorno do produto alvo. Aps isso, a funo prpria DescreverForma() chamada. Ser chamada a funo GerarContorno() para obter uma lista contendo as coordenadas dos pontos que compe a fronteira do segmento de pixels que representa o contorno do produto. Como a lista gerada anteriormente muito grande, ela representada por descritores de Fourier pela chamada funo TDF(), considerando a quantidade de descritores desejados informada pelo usurio. De mos da descrio do produto presente no quadro padro, a este associada uma sada desejada. A sada desejada ser zero para os padres contidos no diretrio de produtos reprovados, e ser um para os produtos contidos no diretrio de produtos aprovados. Desta forma so criados os pares de treinamento que compe o conjunto de treinamento. Aps a criao do conjunto de treinamento, o objeto da rede neural criado atravs do construtor da classe CRede(). No momento da criao da rede so informados parmetros referentes a quantidade de entradas, quantidade de sadas, quantidade de neurnios na camada oculta e quantidade de camadas. A funo TreinarRede() chamada aps a criao da rede, sendo o conjunto de treinamento passado como parmetro. Neste momento, a rede realizar o treinamento baseado nos padres apresentados. A seqncia de eventos a partir da ativao deste mtodo pode ser visualizada no diagrama a seguir. Depois de treinada a rede, o objeto CSubQuadroForma est pronto para proceder as anlises de forma. O diagrama apresentado na figura 27 representa a seqncia de eventos no momento do treinamento da rede neural, realizado pela classe CRede. O presente diagrama d seqncia ao diagrama anterior, a partir da chamada do mtodo TreinarRede().

56

: CSubQuadroForma

: CRede

: CCamadaEntrada

: CCamadaOculta

: CCamadaSaida

: CNeuronioEntrada

: CNeuronioProcessamento

1: TreinarRede() 2: SetEntradas() 3: SetEntrada() 4: Propagar( ) 5: Ativar( ) 6: Ativar( ) 7: GetSaidas() 8: GetSaida( ) 9: SetEntradas() 10: SetEntradas() 11: Ativar( ) 12: Ativar( ) 13: GetSai das () 14: GetSaida( ) 15: SetEntradas() 16: SetEntradas() 17: Ativar( ) 18: Ativar( ) 19: CalcularErroQuadratico()

20: GetSaidas() 21: GetSaida( ) 22: RetropropagarErro()

23: CalcularErroDerivativoQuadrati co() 24: Set ErroDerivat ivoQuadrati co() 25: Get Neuronios( ) 26: Cal cularErroDerivati voQuadrati co() 27: GetErroDerivat ivoQuadratico( ) 28: GetSaida( ) 29: SetErroDerivativoQuadrati co() 30: AjustarPesos() 31: AjustarPesos() 32: Aj us t arPes os() 33: AjustarPesos()

Figura 27 Diagrama de seqncia do treinamento da rede neural

Ativada pelo objeto de anlise da classe CSubQuadroForma, a funo TreinarRede() realiza o treinamento da rede neural baseado no conjunto de treinamento, contido em uma lista de pares de treinamento. O procedimento de treinamento baseia-se no algoritmo apresentado no quadro 10, contido na seo 2.2.2.4.

57

Para cada par da lista do conjunto de treinamento, a entrada ser apresentada rede pela atribuio do mesmo camada de entrada. Esta atribuio ocorre pelo mtodo SetEntradas(). Atribudos os valores de entrada, o processamento da rede inicia com a chamada da funo Propagar(). No procedimento de propagao, para cada camada ocorre a atribuio dos valores obtidos pelo processamento da camada anterior. A camada atual ento ativada, e o resultado obtido utilizado para alimentar a prxima camada. Este procedimento ocorre da camada de entrada at a camada de sada, e realizado pela ativao dos mtodos SetEntradas(), Ativar(), GetSaidas(), para cada camada. Ao final da propagao dos valores da entrada de um par na rede, efetuado pelo objeto CRede o clculo do erro quadrtico apresentado no passo 2 do algoritmo de treinamento, implementado na funo CalcularErroQuadratico(). Caso o erro seja menor do que o valor de tolerncia informado pelo usurio, o treinamento ser realizado com o prximo par, seno ser realizado o ajuste na rede baseado no erro obtido pelo processamento do par atual. Caso seja necessrio ajuste na rede, o objeto CRede executar a funo RetropropagarErro(). Esta funo implementa os passos 4 e 5 do algoritmo de treinamento. Nesta funo, da camada de sada at a primeira camada oculta chamada a funo CalcularErroDerivativoQuadrtico(), para cada objeto de camada. Conforme descrito pelo algoritmo, no clculo do erro das camadas ocultas so utilizados valores de pesos e de erro dos neurnios da camada seguinte. Por este motivo, na chamada da funo CalcularErroDerivativoQuadrtico() para camadas ocultas, enviado como parmetro um ponteiro que aponta para os neurnios contidos na camada seguinte. Tanto nas camadas ocultas como nas camadas de sada, o valor do erro calculado para cada neurnio. Calculados os erros para cada neurnio, chamada a funo AjustarPesos() para todas as camadas ocultas e para a camada de sada. Na execuo desta funo, para todos os neurnios das camadas chamada a funo que implementa o ajuste sinptico definido no 6 do algoritmo de treinamento. Este procedimento de treinamento repetido at que, para todos os pares contidos no conjunto de treinamento, o erro seja menor que o valor de tolerncia informado pelo usurio.

58

O diagrama exibido na figura 28 se refere ao caso de uso Inspecionar produto.

: Sistema de captura

: CInspetorView

: CQua dro

: CSubQuadroForma

: CImagemByte

: CRede

1: OnAnalisarEfetuaranlise( ) 2: Analisar( ) 3: Analisar( ) 4: De tecta rAlvo( ) 5: FiltrarSobel( ) 6: Binarizar() 7: Ge ra rNegati vo ( ) 8: IdentificarComponentesConexos( ) 9: DescreverForma() 10: GerarContorno() 11: TDF()

12: SetEntradas() 13: Propagar( ) 14: GetSaidas()

15 : Get Re s u lta do ( ) 16: GerarInfoAnalise( ) 17: GetInfoAnalise()

Figura 28 Diagrama de seqncia da inspeo

A inspeo iniciada pelo envio de uma mensagem pelo objeto da classe CInspetorView ao objeto CQuadro. Conforme comentado anteriormente, no prottipo implementado, para a classe CInspetorView o evento que encadeia o envio desta mensagem gerado pelo comando de um usurio. Na prtica, para um sistema de inspeo implantado em uma linha de produo para a realizao de inspeo em linha, o evento de ativao seria uma interrupo gerada a partir do sistema de captura associada funo.

59

Uma vez chamada a funo Analisar() do objeto da classe CQuadro, este realiza trocas de mensagens com cada um dos objetos CSubQuadro agregados, solicitando a realizao de cada uma das anlises parciais. Este diagrama representa a situao em que somente uma subanlise foi definida, sendo esta uma anlise de forma. Caso fossem implementados mais tipos de anlise e os mesmos tivessem sido definidos, existiria uma chamada Analisar() para cada objeto CSubQuadro agregado ao objeto da classe CQuadro. Quando o objeto da classe CSubQuadroForma recebe a mensagem para execuo da funo Analisar() o processo de anlise da forma do produto desencadeado. Inicialmente chamada a funo DetectarAlvo() da prpria classe, que deve identificar o produto e destacalo de outros objetos possivelmente presentes na imagem. Para isso, a funo realiza uma chamada funo de FiltrarSobel() do objeto CImagemByte que representa a imagem, objetivando destacar contornos presentes na mesma. Aps isso, chamada a funo IdentificarComponentesConexos() para se obter informaes dos contornos e a partir delas identificar o contorno do produto. Ser chamada a funo GerarContorno() para obter uma lista contendo as coordenadas dos pontos que compe a fronteira do segmento de pixels que representa o contorno do produto. Como a lista gerada anteriormente muito grande, esta representada por descritores de Fourier pela chamada funo TDF(). A lista obtida pelo processamento anterior utilizada para alimentar a rede neural associada, previamente criada e treinada. A funo Reconhecer() chamada, sendo enviado como parmetro os descritores de Fourier obtidos pela descrio da forma do produto, que sero utilizados como entrada. A rede ento executada e devolvido o valor de sada, correspondente ao resultado do processamento da rede diante da entrada apresentada. Baseada no resultado obtido anteriormente, a funo Analisar() da classe CSubQuadroForma decide a qual das classes o produto pertence: aprovados ou reprovados. Baseado no resultado das anlises parciais obtidas de cada objeto CSubQuadro, o objeto CQuadro gera o resultado da inspeo como um todo, determinando a qual das classes o produto pertence: produtos aprovados ou produtos reprovados. Na existncia de um sistema externo de descarte, este seria sinalizado para a retirada do produto caso o mesmo pertencesse classe de produtos reprovados. Finalmente algumas

60

mensagens contendo informaes relativas anlise so repassadas classe CInspetorView, terminando assim o processamento da inspeo. 3.3 IMPLEMENTAO Nesta seo so abordados detalhes relativos implementao do prottipo. 3.3.1 TCNICAS E FERRAMENTAS UTILIZADAS O ambiente de desenvolvimento utilizado para a implementao do prottipo foi o Visual C++ 6.0 (MICROSOFT CORPORATION, 2004). Esta ferramenta de desenvolvimento foi escolhida por oferecer uma diversidade de recursos teis ao desenvolvimento de aplicaes, mas principalmente pela disponibilidade de vrias bibliotecas para aquisio e manipulao de imagens. A biblioteca utilizada para a manipulao de imagens a Vision SDK (MICROSOFT CORPORATION, 2004), que esta ser descrita na seo 3.3.1.1. A biblioteca utilizada para a implementao da interface grfica do usurio a Microsoft Foundation Class Library (MFC), descrita na seo 3.3.1.2. 3.3.1.1 MICROSOFT VISION SDK Conforme descrito pela Microsoft, o kit de desenvolvimento de software Vision uma ferramenta destinada ao desenvolvimento de sistemas de manipulao de imagens. Sendo uma biblioteca de baixo nvel, esta ferramenta no oferece nenhum operador para o processamento de imagens. Apesar disso, torna-se bastante til por definir uma srie de tipos especficos para suportar imagens. Os tipos disponibilizados pela biblioteca so mais completos do que os disponibilizados pelas bibliotecas originalmente oferecidas pelo ambiente Visual Studio. As vantagens oferecidas por estes tipos se encontram nas funcionalidades de manipulao, aquisio atravs de cmeras, exibio, dentre outras. O tipo definido pela biblioteca utilizado no desenvolvimento do prottipo foi o CVisGrayByteImage. Este tipo compatvel com imagens em tons de cinza, onde para cada pixel so utilizados 8 bits para armazenar o valor da intensidade. A classe CImagemByte,

61

definida na especificao do prottipo, especializada a partir deste tipo. O objetivo da especializao foi herdar as vantagens de manipulao implementadas na classe me, e adicionar a ela rotinas de processamento de imagens. Uma vantagem a ser citada sobre a utilizao deste tipo de dados a possibilidade de se criar uma imagem que no possui memria de dados prpria, e sim referencia uma seo de uma imagem maior. Esta funcionalidade utilizada na relao existente entre um objeto CQuadro e um objeto CSubQuadro. Conforme explicado na seo 3.2.2.1.2, a classe CQuadro contm a estrutura para armazenar a imagem capturada. J a classe CSubQuadro e as classes de anlise, referem-se a uma regio da imagem capturada, delimitando assim a rea de interesse para a anlise. Para permitir que os objetos das classes de anlise tenham acesso imagem capturada, contida no objeto da classe CQuadro, uma subimagem da mesma criada e agregada a cada objeto de anlise. Esta ser uma imagem nova, contendo origem, tamanho e coordenadas prprias, porm a memria de dados da imagem ser compartilhada com a imagem agregada ao objeto CQuadro. A funo que possibilita a criao de uma subimagem SubImage(). Outra funcionalidade utilizada na implementao do prottipo o acesso rpido aos pixels que constituem a imagem. Existem vrias maneiras de acessar o pixel de uma imagem. O mais comum atravs do uso das coordenadas x e y referentes posio do pixel. Os tipos da biblioteca disponibilizam um mtodo de acesso mais eficiente, mantendo um vetor de ponteiros que apontam coluna zero para cada linha da imagem. Para uma maior eficincia ao processar os pixels de uma imagem, primeiro deve-se encontrar o ponteiro para a coluna zero da linha desejada e depois deslocar o ponteiro pela coluna de cada pixel. Para encontrar o ponteiro para a coluna zero em uma linha, a funo utilizada RowPointer(). O quadro 13 mostra o cdigo fonte do mtodo da classe CImagemByte do prottipo implementado, onde gerado o negativo de uma rea da imagem utilizando este recurso.

62

Quadro 13 Mtodo utilizando acesso RowPointer()

Dentre as vantagens oferecidas pela utilizao da biblioteca pode-se ainda citar a possibilidade de criar novos tipos de imagens, disponibilidade de tipos com vrios canais de cor e a aquisio de imagens independente de dispositivo. 3.3.2 MICROSOFT FOUNDATION CLASS A MFC uma infra-estrutura de aplicao disponvel no Visual Studio 6 para desenvolvimento na plataforma Windows. Desta maneira a biblioteca disponibiliza muitos componentes necessrios para criar e gerenciar uma aplicao. A MFC trabalha com o conceito de documentos e vises. Neste modelo, um documento representa os dados com que o usurio interage e edita. Ele criado pelo comando Novo ou Abrir e tipicamente salvo em um arquivo. J uma viso uma janela onde o usurio interage com o documento. No prottipo implementado, considerou-se como dados do usurio as definies das anlises feitas pelo mesmo, em relao a um produto. As configuraes para cada tipo de anlise tambm so consideradas como documento. Por exemplo, para o tipo de anlise realizado pela classe CSubQuadroForma, so armazenados a arquitetura da rede neural utilizada, assim como os pesos das conexes sinpticas de cada neurnio. Foi adicionado como membro da classe CDocument, definida pela framework da aplicao, uma varivel membro do tipo CQuadro, sendo que ela centraliza todos os dados citados. J na viso do documento no prottipo, so exibidas as imagens a serem inspecionadas e outros detalhes relativos anlise.

63

3.3.3

OPERACIONALIDADE DA IMPLEMENTAO Nesta seo ser apresentada a operacionalidade da implementao, atravs do

desenvolvimento do estudo de caso Configurar Anlise, seguido do estudo de caso Inspecionar. A tela inicial do prottipo exibida na figura 29. O primeiro passo necessrio para a sua utilizao na inspeo de produtos a definio e configurao das anlises a serem consideradas na inspeo. Para isso, deve ser acessada a caixa de dilogo de definio de anlises, atravs do boto Configurar.

Figura 29 Tela principal do prottipo

A tela exibida na figura 30 utilizada na definio dos subquadros de anlise. O usurio deve pressionar o boto da anlise desejada, e ento definir a rea de atuao da mesma. Para isto basta arrastar uma marquise sobre a rea da imagem a ser analisada.

64

Figura 30 Tela de definio de subquadros

Definida a rea de atuao do subquadro de anlise, o usurio deve editar as variveis pertinentes mesma. Para isso, deve ser pressionado o boto editar.

Figura 31 Tela de definio de subquadros

65

A tela exibida na figura 31 utilizada para configurao da anlise de forma. Quanto rede neural, devem ser informados os parmetros utilizados na criao da mesma, assim como o local onde se encontram os padres a serem utilizados no treinamento da rede. Quanto descrio de forma, devem ser informadas a quantidade de descritores a serem utilizados, assim como as invarincias a serem observadas. Definidos estes parmetros, deve ser pressionado o boto Criar e Treinar para que a anlise seja preparada para uso. Aps a configurao da anlise, o prottipo encontra-se pronto para inspecionar imagens de produtos. Para isso, a partir da janela principal do prottipo, basta carregar a imagem atravs do menu, e pressionar o boto Inspecionar. Os resultados obtidos pela anlise sero exibidos na lista de sada. 3.4 RESULTADOS E DISCUSSO Dois casos de teste foram utilizados para verificar o cumprimento dos requisitos para o prottipo proposto. Cada caso de teste refere-se inspeo de um tipo de produto, contendo diferentes particularidades a serem analisadas, para a distino entre as classes de produtos aprovados e reprovados. Para a captura das imagens dos produtos a serem utilizadas nos testes, contou-se com um sistema completo de aquisio de imagens, disponibilizado pela empresa Artvision. Este sistema composto por cmera de vdeo, placa de aquisio, lentes, dispositivos de iluminao e um computador. O tamanho da imagem capturada pela placa de aquisio de 640 por 480 pixels. Na figura 32 so exibidas as cmeras e o componente de iluminao de fundo. A iluminao de fundo obtida pelo uso de uma lmpada, sobreposta por uma pea de acrlico branca. Esta tcnica tambm utilizada na inspeo manual nas indstrias, onde, para produtos com orientao vertical, um painel luminoso instalado no lado oposto do produto, em relao ao inspetor. Para produtos que permaneam na horizontal, pode ser utilizada uma esteira teflonada, juntamente com uma iluminao inferior.

66

Figura 32 Cmera e painel de iluminao

Diferentes configuraes foram testadas, para determinar a melhor maneira de capturar as imagens dos produtos. Para os produtos escolhidos para serem utilizados como objeto de anlise, a iluminao de fundo mostrou-se mais eficiente para o destaque das caractersticas do produto desejadas.

Figura 33 Imagens capturadas com diferente iluminao

Na figura 33 podem ser vistas uma imagem capturada utilizando-se a luz de fundo, e outra sem o uso desta tcnica de iluminao. Com o uso da iluminao de fundo obtiveram-se imagens com as bordas dos produtos bem definidas, ausncia de reflexos e de sombras. Definidas as variveis de captura, as imagens foram adquiridas e armazenadas em diretrios, separadas pela respectiva classe de produto para posterior uso pelo prottipo. No primeiro caso de teste, foi utilizado como objeto de anlise um frasco empregado como embalagem de produtos para limpeza. Esta embalagem foi escolhida por ser composta por vrias peas, cuja montagem deve ser inspecionada para a identificao de possveis problemas.

67

Para este produto, foram definidos os seguintes itens como sendo potenciais pontos de defeito, e, portanto, de anlise necessria na fase de inspeo: a) presena e correta posio do bico; b) presena e correta posio do gatilho; c) alinhamento, presena e correta posio do sistema de borrifo. A figura 34 mostra a imagem de um produto considerado aprovado.

Figura 34 Amostra de produto aprovado

A figura 35 exibe imagens de produtos reprovados, exemplificando os defeitos citados anteriormente. Aqui no considerada a situao em que o produto transita pela esteira e passe pela cmera com sua base em um ngulo diferente do exibido nas amostras da figura 34 e 35. Isto se d pelo fato de que este controle pode ser conseguido fisicamente, pela utilizao de duas guias, uma em cada lado do produto. Desta maneira pode-se reduzir em muito a quantidade de posies a serem consideradas pelo sistema de inspeo. Outra observao a ser feita que, sendo uma simulao de inspeo para a indstria qumica, no realizada inspeo de forma sobre a parte inferior do frasco. Isto por que esta anlise deve ser realizada ainda na indstria plstica, aps o processo de injeo de plstico para a moldagem do frasco.

68

Figura 35 Amostras de produtos reprovados

Para a descrio do produto foram utilizados 15 descritores de Fourier. Quanto s variaes possveis na estrutura da rede neural implementada, foi utilizada uma camada oculta, contendo 15 neurnios. Este mesmo nmero de neurnios foi utilizado na camada de entrada. Como a sada deve assumir um entre dois estados possveis, foi utilizado na camada de sada apenas 1 neurnio. Para este primeiro caso de teste, foi seguida a recomendao de Tafner (1996, p. 99), onde o conjunto de fatos apresentados rede no momento do treinamento deve ser, no

69

mnimo, igual ao dobro do nmero de conexes entre os neurnios. Considerando que foram utilizadas na camada de entrada e na camada oculta 15 neurnios cada, tem-se a um total de 225 conexes. Somando a este nmero valor igual quantidade de conexes existentes entre a camada oculta e a camada de sada, obtem-se um total de 240 conexes. Calculando-se o dobro, a recomendao para este caso de 480 fatos. Foram utilizadas ento 480 amostras para a fase de treinamento, dentre produtos aprovados e reprovados. Para a formao deste conjunto de treinamento, foram capturadas 50 imagens de produtos atravs do sistema de captura. O restante das amostras foi gerado a partir do processamento em lote de diferentes transformaes geomtricas, a partir das imagens originais. O objetivo da aplicao destas transformaes foi o de gerar pequenas variaes na forma do produto analisado. Na prtica, estas variaes podem ser resultado de variao no processo produtivo ou ainda alteraes de configurao nos dispositivos de captura. Para realizar este processamento, foi utilizado o programa de edio de imagens denominado Photoshop CS (ADOBE SYSTEMS INCORPORATED, 2004). O processo de treinamento mostrou-se demorado, assim como observado por Oliveira e Bauchspiess (2001) em seu trabalho. Para treinar a rede com a configurao citada anteriormente, o processo de treinamento para o conjunto criado foi de aproximadamente 3 horas. Foi utilizado um computador IBM-PC equipado com processador Pentium 4 de 2.5GHz e 256MB de memria. Treinada a rede, foi iniciado o processo de reconhecimento. Nesta fase, 200 novas amostras de produtos aprovados e de produtos reprovados foram apresentadas rede. Novamente foi utilizado o recurso de gerar variaes de imagens a partir de 50 originais, atravs de transformaes geomtricas. A rede reconheceu 200 delas, resultando assim numa taxa de acerto de 100% na classificao dos produtos. Observe que as imagens exibidas rede no haviam sido utilizadas no processo de treinamento. Este fato mostra a capacidade de generalizao da rede. A afirmao de Oliveira e Bauchspiess (2001), quando defendiam que o uso entre 10 e 25 coeficientes para a descrio da borda so suficientes foi confirmada, j que a partir dos 15 coeficientes utilizados, a rede neural conseguiu determinar uma funo de deciso satisfatria no processo de treinamento.

70

Quanto ao requisito de velocidade em relao s anlises, os resultados obtidos foram considerados satisfatrios. Para este caso de teste, o tempo necessrio para a anlise de cada produto girou em torno de 0,1 segundos. Deste tempo, verificou-se que a maior parcela utilizada pelos algoritmos de processamento de imagem, sendo o restante consumido pelo reconhecimento atravs da rede neural. Quanto a este requisito, importante comentar que no foram despendidos maiores esforos para a otimizao do cdigo. Portanto, o tempo gasto pela anlise pode ainda ser reduzido. Diante dos resultados positivos obtidos pela realizao do caso de teste anterior, optouse por criar um novo caso de teste a fim de validar o prottipo sobre outra condio de uso. Neste caso de teste, foi selecionado como objeto de anlise um tubo utilizado como embalagem para creme dental. Esta embalagem foi escolhida por possibilitar a verificao da capacidade do prottipo de analisar produtos com variao na orientao em relao cmera. Para este produto, foram definidos os seguintes itens como sendo potenciais pontos de defeito, e, portanto, de anlise necessria na fase de inspeo: a) presena e correta posio da tampa; b) integridade do tubo. A figura 36 mostra a imagem de um produto considerado aprovado.

Figura 36 Amostra de produto aprovado

A figura 37 exibe imagens de produtos reprovados, exemplificando os defeitos citados anteriormente. importante observar que neste momento so consideradas todas as variaes possveis quanto orientao do tubo.

71

Figura 37 Amostras de produtos reprovados

Para este caso de teste foi utilizada a mesma quantidade de descritores utilizados no caso anterior para a representao da borda, assim como a mesma estrutura para a rede neural. O tamanho do conjunto de treinamento, e o seu processo de gerao, seguiram o processo realizado no caso de teste anterior. Para este caso, o processo de treinamento mostrou-se ainda mais demorado, sendo que somente foi alcanado sucesso depois de 5 horas de treinamento e do aumento do valor de tolerncia em relao taxa de erro da rede. Enquanto para o primeiro caso de teste foi obtido

72

sucesso no treinamento da rede com um erro mximo de 0.1, para este caso foi necessrio um erro mximo de 0.2. Observou-se que isto foi necessrio pelo motivo de a diferena da borda entre os produtos aprovados e reprovados utilizados no primeiro caso de teste ser mais gritante do que a diferena encontrada nos produtos do deste caso. Os resultados positivos obtidos no primeiro caso de uso, quanto taxa de 100% de acerto no reconhecimento dos produtos, a quantidade de descritores necessria para descrio da borda e quanto ao tempo gasto para cada anlise, se repetiram neste caso. Adicionalmente, confirmou-se neste caso a eficincia no uso dos descritores quanto invarincia a translao e rotao, j que o prottipo reconheceu produtos em diferentes ngulos, sendo que na fase de treinamento no foram apresentados padres abrangendo todas as combinaes possveis.

73

4 CONCLUSES
Este trabalho apresentou um mtodo para a anlise de produtos e o desenvolvimento de um prottipo de software para inspeo industrial automatizada. Para realizar tal tarefa foram utilizadas diversas tcnicas de processamento de imagens, alm de uma rede neural para o reconhecimento e interpretao. A escolha das tcnicas empregadas tanto na extrao de informao das imagens quanto na interpretao das mesmas mostrou-se acertada. A combinao do mtodo de descrio de fronteiras por Fourier e da tcnica de interpretao por redes neurais permitiu o desenvolvimento de um prottipo de inspeo automatizada verstil quanto ao produto a ser inspecionado, com velocidade e com resultado satisfatrio na execuo da anlise. A utilizao dos descritores de Fourier para a descrio de formas foi baseada na capacidade do mtodo em representar as formas a partir de uma quantidade pequena de descritores, sendo esta caracterstica muito til etapa de interpretao. Outra propriedade importante considerada no momento da escolha do mtodo foi a possibilidade de obteno de descritores invariantes translao e rotao. Isso amplia as possibilidades de aplicao do prottipo a uma srie de produtos em que existe variao na orientao. J a utilizao de redes neurais do tipo Perceptron Multicamadas baseou-se na capacidade de generalizao da rede e tambm na sua facilidade de implementao. Como a descrio dos produtos pode ser obtida por um nmero pequeno de descritores, possvel utilizar uma rede com quantidade reduzida de neurnios, tornando-a muito eficiente na classificao dos produtos. Apesar disto, o treinamento mostrou-se relativamente lento, principalmente para os casos em que a diferena do contorno entre os produtos da classe aprovado e reprovado no gritante. Finalmente, importante comentar que, apesar do tipo de anlise baseado na forma ser aplicvel a uma grande diversidade de produtos, para muitos destes o mesmo no ser suficiente para a determinao de ausncia de todos os defeitos de produo possveis. Muitos produtos demandam anlises especficas, como, por exemplo, uma garrafa de bebida onde necessria a anlise do volume do lquido. Para este tipo de anlise, o mtodo apresentado no recomendado, pois a variao no volume do lquido no tem reflexo sobre a forma da garrafa.

74

4.1

EXTENSES A complexidade e abrangncia dos sistemas de viso computacional possibilitam que o

presente trabalho seja estendido com diferentes objetivos. Durante o desenvolvimento do prottipo este item foi levado em considerao, tanto no projeto do sistema como na escolha das ferramentas utilizadas na implementao. Primeiramente, pode-se criar, partir do prottipo desenvolvido, um framework de aplicao voltado para sistemas de software para inspeo industrial. Para isto outros tipos de anlises genricas podem ser implementados, sendo implementados em classes estendidas a partir da classe CsubQuadro, definida com este propsito. Estas anlises poderiam realizar verificaes pertinentes s dimenses dos produtos e tambm verificaes estatsticas, dentre outras. Por outro lado, o prottipo pode ser utilizado como ponto de partida para a implementao de um sistema de software para inspeo, especfico a um determinado produto. Neste caso seriam implementadas as anlises fortemente dependentes da aplicao. No prottipo implementado no foram considerados os sistemas externos de captura e de descarte. Podem ser desenvolvidos trabalhos com este fim, objetivando contemplar todos os componentes de um sistema de inspeo automatizada. A biblioteca de manipulao de imagens oferece subsdios para a implementao do sistema de captura, sendo que isto foi levado em conta no momento da escolha da biblioteca.

75

REFERNCIAS BIBLIOGRFICAS

ADOBE SYSTEMS INCORPORATED: Adobe Photoshop CS. [S.l.], 2004. Disponvel em: <http://www.brasil.adobe.com/products/photoshop/newfeatures.html>. Acesso em: 20 novembro 2004. BOWMAN, Elisabeth T.; Soga, Kenichi; Drummond, Tom W. Particle shape characterization using fourier analysis. Geotechnique, Cambridge, v. 51, n. 6, p. 545-554, 2001. CARDOSO, Caque. UML na prtica: do problema ao sistema. 1. ed. Rio de Janeiro: Editora Cincia Moderna, 2003. CSAR JR, Roberto M.; COSTA, Luciano F. Shape analysis and classification. 1. ed. Boca Raton: CRC Press, 2001. FACON, Jacques. Processamento e anlise de imagens. 1. ed. Embalse: EBAI, 1993. FURLAN, Jos D. Modelagem de objetos atravs da UML. 1. ed. Makron Books: So Paulo, 1998. GONZALES, Rafael C.; WOODS, Richard E. Processamento de imagens digitais. 1. ed. So Paulo: Edgard Blucher, 2000. IBM CORPORATION: Rational Rose. [S.l.], 2004. Disponvel em: <http://www306.ibm.com/software/awdtools/developer/datamodeler>. Acesso em: 20 novembro 2004. LOESCH, Cludio; SARI, Solange T. Redes neurais artificiais: fundamentos e modelos. 1. ed. Blumenau: Editora da Furb, 1996. MATHWORKS INTERNATIONAL: Matlab and simulink for technical computing. [S.l.], 2004. Disponvel em: <http://www.mathworks.com>. Acesso em: 20 novembro 2004. MEDEIROS, Luciano F. Redes neurais em Delphi. 1. ed. Florianpolis: Visual Books, 2003. MICROSOFT CORPORATION. Visual C++. [S.l.], 2004. Disponvel em: <http://www.microsoft.com/brasil/msdn/Tecnologias/visualcpp/default.mspx>. Acesso em: 20 novembro 2004. MICROSOFT CORPORATION. Vision SDK. [S.l.], 2004. Disponvel em: <http://www.research.microsoft.com/scripts/VisionSDK>. Acesso em: 29 agosto 2004.

76

OLIVEIRA, Kleyton C.; BAUCHSPIESS, Adolfo. Classificao de imagens codificadas por cadeias direcionais utilizando redes neurais artificiais. In: CONGRESSO BRASILEIRO DE REDES NEURAIS, 5., 2001, Rio de Janeiro. Proceedings... Rio de Janeiro: PUC, 2001. p. 73-79. TAFNER, Malcon A. Redes neurais artificiais: introduo e princpios de neurocomputao. 1. ed. Blumenau: Editora da Furb, 1996.

Potrebbero piacerti anche