Escolar Documentos
Profissional Documentos
Cultura Documentos
CT Engeln 2012 1 02
CT Engeln 2012 1 02
CURITIBA
2012
ANDR DE CASTILHO COSTA PINTO
CURITIBA
2012
Folha destinada incluso da Ficha Catalogrfica (elemento obrigatrio somente
para as dissertaes) a ser solicitada ao Departamento de Biblioteca do Campus
UTFPR (prazo: 3 dias) e posteriormente impressa no verso da Folha de Rosto (folha
anterior).
AGRADECIMENTOS
Ao nosso orientador, Prof. Dr. Gustavo Borba, pelo entusiasmo, bom humor e
apoio tcnico, que foram sempre muito alm do estritamente necessrio, e sem os
quais no conseguiramos ter atingido nossos objetivos no curto perodo de tempo que
possuamos.
Ao Prof. Dr. Fernando Castaldo, por fornecer material, tempo e pacincia para
que fosse possvel testar o algoritmo em placas de verdade.
Ao Chico.
Pois vista todos tm;
viso que so elas.
Millr Fernandes
RESUMO
COSTA PINTO, Andr C.; LOLIS, Mariana M.; OTANI, Marcos V. Z.. Analisador
de Placas de Circuito Impresso. 2012. 112 fls. Trabalho de Concluso de Curso
(Engenharia Industrial Eltrica nfase em Eletrnica e Telecomunicaes) -
Universidade Tecnolgica Federal do Paran. Curitiba, 2012.
MVC: Model-View-Controller
1. INTRODUO ......................................................................................................... 16
1.1. OBJETIVO E JUSTIFICATIVA ............................................................................... 16
1.2. METODOLOGIA .................................................................................................... 17
3. DESENVOLVIMENTO .............................................................................................. 28
3.1. VISO GERAL ....................................................................................................... 28
3.2. ALGORITMO PARA DETECO DE FALHAS EM PCIS ....................................... 28
3.2.1. Estudos em MATLAB ......................................................................................... 28
3.2.2. Estudos em Outros Softwares............................................................................ 39
3.2.3. Implementao com o OpenCV ......................................................................... 41
3.2.4. Anlise do Algoritmo .......................................................................................... 44
3.3. SISTEMA DE AQUISIO DE IMAGENS .............................................................. 46
3.3.1. Estudo preliminar para o projeto da estrutura fsica ........................................... 46
3.3.2. Concepo do Sistema de Aquisio ................................................................. 50
3.3.3. Construo do Sistema de Aquisio de Imagens ............................................. 53
3.3.4. Escolha da Cmera Fotogrfica ......................................................................... 55
3.3.5. Anlise do desempenho do sistema .................................................................. 56
3.4. SOFTWARE EMBARCADO ................................................................................... 59
3.4.1. A Biblioteca Qt ................................................................................................... 60
3.4.2. Ncleo do Sistema (State Machine) ................................................................... 61
3.4.3. Modelos (interao com Banco de Dados) ........................................................ 62
3.4.4. Views (Interface com o Usurio) ........................................................................ 63
3.4.5. Comunicao com a Cmera ............................................................................. 64
3.4.6. GUI ..................................................................................................................... 64
3.5. PLATAFORMA EMBARCADA ............................................................................... 65
3.5.1. Estudos Iniciais da Plataforma ........................................................................... 65
3.5.2. Implementao da Toolchain ............................................................................. 68
4. GESTO .................................................................................................................. 70
4.1. ESCOPO................................................................................................................ 70
4.2. CRONOGRAMA .................................................................................................... 70
4.3. CUSTOS ................................................................................................................ 72
4.4. RISCOS ................................................................................................................. 73
4.5. CONSIDERAES ............................................................................................... 74
1. INTRODUO
1.2. METODOLOGIA
A interface com o usurio foi desenvolvida com uma biblioteca prpria para
esse fim, sempre levando em conta a usabilidade do programa para que a
experincia do usurio fosse a melhor possvel.
2. FUNDAMENTAO TERICA
Subtrao de imagem
Inspeo referencial
Comparao de fase
Arvore
Tcnicas baseadas em
modelo
Sintatico Grafos atribuidos
Inspees Visuais
Automaticas
Mtodos baseados em
grafos Hipergrafo de padro
atribuido
Inspeo no-referencial
Processamento morfologico
Imagem de raio-X e outras
Inspeo de PCB
Analise de bordas
Tcnicas de codificao
tecnologias
Codificao run-legth
Mtodo genrico
Mtodos hibridos de
inspeo
Deteco de padro
utilizando analise de
bordas
Mtodo de comparao
Inspeo Manual
Executa uma comparao ponto a ponto com uma referncia, que pode ser
uma imagem ou um desenho de uma placa sem defeitos.
Processamento morfolgico
22
Tcnicas de codificao
Mtodo genrico
Mtodos de aprendizagem
(a) (b)
(c) (d)
Figura 2 - Figura 2 - (a) Imagem da PCI segmentada; (b) Imagem aps operao de 'fill'; (c)
Imagem dos furos aps a operao (a) (b); (d) centroides dos furos.
Fonte: Autoria prpria
Figura 3 - (a) furos da placa de referncia enumerados; (b) regies de Voronoi da placa de
referncia; (c) Trilhas da placa de referncia enumeradas
Fonte: Autoria prpria
Figura 4 - (a) placa de teste binarizada; (b) centroide dos furos da placa testada (c) trilhas
enumeradas da placa testada. Devido aos defeitos do circuito aberto, a enumerao agora
diferente daquela obtida na placa de referncia (Figura 3(a)).
Fonte: Autoria prpria
Trilhas
Labels
(Binario)
Tabela relacional
Furos
Centroide
(Binario)
Tabela de regies
Referencia
Tabela de regies
Trilha
Centoide Tabela relacional
(Binario)
Vizualizao
Furos
Labels
(Binario)
Placa testada
3. DESENVOLVIMENTO
segmentadas pela operao de threshold (Otsu, 1979). Otsu prova que isso equivale
a achar o valor de k que maximiza a equao da varincia interclasse (Erro! Fonte
de referncia no encontrada.):
( ) ( )
( ) ( )
(1)
Figura 10 - Resultados k-means com 4 regies e sem valores iniciais (a) RGB (b) Log (c) Gray
Fonte: Autoria prpria
Figura 11 - Resultados k-means com 3 regies e sem valores iniciais (a) RGB (b) Log (c) Gray
Fonte: Autoria prpria
Figura 12 - Resultados k-means com 3 regies e com valor inicial (a) RGB (b) Log (c) Gray
Fonte: Autoria prpria
33
Tendo em vista essa limitao, uma nova ideia foi desenvolvida utilizando o
mesmo fundamento do algoritmo acima apresentado. Nesse algoritmo, ao invs de
utilizar os furos como referncia para separar a imagem em regies, as prprias
trilhas so utilizadas. Dessa forma, a robustez do algoritmo quanto ao alinhamento
da placa aumentada e no necessrio que todas as trilhas sejam perfuradas.
Apenas com essas duas tabelas possvel verificar se uma trilha est aberta
ou curto-circuitada. Isso porque se, na primeira tabela, duas ou mais trilhas na placa
que est sendo testada estiverem relacionadas a uma mesma trilha na placa de
referncia, essa trilha esta aberta. Agora se, por sua vez, na segunda tabela, duas
ou mais trilhas na placa de referncia estiverem relacionadas a uma trilha na placa
que est sendo testada, verificado que essas trilhas esto curtadas. A Figura 17 e
as Tabela 2 - Relao de cada trilha na placa de teste a uma trilha na placa de
refernciaTabela 2 e Tabela 3 ilustram um exemplo.
38
Tabela 2 - Relao de cada trilha na placa de teste a uma trilha na placa de referncia
Trilha (placa Trilha (placa de
testada) referncia)
1 1
2 1
3 3
Fonte: Autoria prpria
Tabela 3- Relao de cada trilha na placa de referncia a uma trilha na placa de teste
Trilha (placa
Trilha (placa testada)
referncia)
1 2
2 3
3 3
Fonte: Autoria prpria
Segundo a Tabela 2, a trilha 1 est aberta, pois na placa testada ela se divide
em duas. J segundo a Tabela 3, as trilhas 2 e 3, que deveriam estar separadas,
esto unidas na placa de teste, o que indica um curto-circuito dessas duas trilhas. A
regio que est ligando - no caso de um curto-circuito - ou separando - no caso de
um circuito aberto - duas trilhas a borda que separa as duas regies da coluna
direita das tabelas acima na imagem de interseco.
39
O primeiro teste foi feito com o gradiente, que detecta bordas pela derivada
de primeira ordem da imagem nas duas direes, horizontal e vertical. O resultado
mostrado na Figura 19.
40
[ ] [ ]
Outra tentativa foi a de usar o filtro Laplaciano 5x5, que realiza a convoluo
da imagem com uma matriz da forma:
[ ]
A binarizao, como foi mostrado nos estudos feitos no Matlab, uma tarefa
simples se houver contraste suficiente na imagem. Ao limitar a aplicao placas
42
determinar qual nmero de trilha aprece mais vezes, foi utilizada a funo
cvCalcHist, que divide a imagem em um histograma de valores. Nesse histograma, o
valor que se repetir mais vezes o nmero da trilha correspondente trilha da
mscara.
exposio. Caso o quadrado esteja inclinado com relao a apenas um eixo, ele
aparecer na foto como um trapzio, cujo lado menor o lado do quadrado mais
afastado da cmera, e o lado maior o lado do quadrado mais prximo da cmera.
Caso haja rotao em dois eixos, o quadrado pode acabar sendo representado na
fotografia como um quadriltero irregular. Por isso, para que seja possvel inclusive
chegar a concluses sobre a largura das trilhas e dos espaamentos entre as trilhas
na fotografia, necessrio que no haja rotao entre esses planos. Caso existisse,
seria necessrio desenvolver um algoritmo mais complicado para transformar a
imagem de modo que as distores fossem compensadas. Um problema dessa
abordagem seria ter de corrigir a resoluo espacial dos pixels obtidos aps a
transformao, possivelmente tendo de recorrer a interpolaes complexas. Uma
alternativa seria recorrer geometria epipolar e tcnicas de viso estreo, que so
muito bem descritas em (Hartley, et al., 2004), que envolvem mais de uma cmera e
complicados mtodos de calibrao, ou ento fluxo de imagem, o que s pode ser
feito quando se tem a liberdade de variar alguma caracterstica espacial da cmera
(rotacion-la ou translad-la). , portanto, importante que essa caracterstica varie o
mnimo possvel.
Esta foi uma varivel cuja anlise inicial apontava a necessidade apenas de
se manter uma iluminao constante entre sucessivas exposies fotogrficas.
Pensou-se, a princpio, que se a iluminao fosse constante, seria possvel utilizar o
mesmo mtodo de segmentao da imagem em diferentes imagens, ou pelo menos
se poderia calibrar o algoritmo para que ele fosse capaz de segmentar de maneira
robusta fotografias diferentes da mesma placa. Isso se mostrou um problema maior
que o esperado: a qualidade da segmentao depende diretamente da qualidade da
iluminao da placa. Em algumas placas iluminadas de maneira no uniforme, no
foi possvel conceber um algoritmo capaz de segment-las; principalmente nos
casos em que pontos pertencentes a regies distintas possuam coordenadas de cor
muito parecidas. Pensou-se em utilizar mtodos de clustering para possibilitar a
segmentao dessas placas problemticas, mas isso inseriria complicao adicional
e mais uma fonte de incerteza no sistema. Se houvesse um mtodo simples e mais
confivel de segmentar a imagem, variando o aparato de iluminao do sistema, ela
seria muito bem vinda.
Necessidade de ser
n. Varivel Impacto no algoritmo
Controlada
Afeta diretamente a
Iluminao controlada e
segmentao, um ponto Alta
uniforme.
crtico do algoritmo.
5
Tabela 4- Requisitos para a estrutura fsica do sistema de aquisio de imagens
Fonte: Autoria prpria
Tendo em mos uma lista das variveis que deveriam ser controladas,
puderam-se avaliar as opes existentes para sistemas de iluminao e aquisio
das imagens.
Aliado a isso, esse sistema mais propenso a erros j que o usurio deveria
saber, de alguma forma, qual foi a posio da cmera utilizada para se fotografar a
placa de referncia.
Uma caixa rgida, de madeira ou metal, com apenas um orifcio com dimetro
pouco maior que o dimetro da lente empregada, na qual se pudesse fixar a cmera,
e que possusse um sistema de iluminao interna, seria um sistema que se
adequaria a todos os requisitos levantados na seo anterior. O posicionamento da
placa poderia ser feito com pequenas marcaes no fundo da caixa, a posio
relativa entre a cmera e a PCI seria constante, e a iluminao seria perfeitamente
53
Como visto na tabela, a soluo que melhor atende aos requisitos, conquanto
que mais trabalhosa, a construo de uma caixa projetada especialmente para a
tarefa. Como pontos positivos, essa tambm a soluo mais barata de todas, e
com maior facilidade de alterao no decorrer do projeto.
(a) (b)
Figura 26 - Sistema de Aquisio de Imagens
Fonte: Autoria Prpria
Figura 28 - Duas fotografias tiradas com o sistema criado, da mesma placa, s que em (a) com
a lente EF 50mm f/1.8 e em (b) com a lente macro profissional MP-E 65mm f/2.8
Fonte: Autoria prpria
A figura (c) foi tirada com iluminao lateral e com difusores. Claramente foi a
fotografia que apresentou menor contraste entre as regies de trilha e de fundo. O
resultado da binarizao por Otsu, (d), no aproveitvel, e para conseguir
segmentar este tipo de imagem seria necessrio um algoritmo mais sofisticado.
Alm disso, por conta da iluminao no uniforme vinda das laterais da foto, a borda
da imagem ficou mais escura que o centro, o que pode ser notado com um pouco de
dificuldade na fotografia original, mas fica bem evidente na imagem binarizada, em
que a borda direita mais escura.
A fotografia (e) foi tirada com iluminao frontal, s que sem o difusor. O
resultado da binarizao foi bem superior ao da fotografia com iluminao lateral,
mas ainda assim, devido ao reflexo da lmpada na placa, existem regies muito
claras que prejudicaram a binarizao. Neste caso especfico, o canto superior
esquerdo da imagem no foi corretamente segmentado (como pode ser visto em (f)).
58
(a) (b)
(c) (d)
(e) (f)
Figura 29 - Resultados da anlise do sistema de aquisio de imagens
Fonte: Autoria prpria
Interface
(views) Interface com a
cmera
Ncleo
(controlador)
Algoritmo
Interface com
Banco de Dados
(modelos)
A verso final do cdigo possui mais de 6 mil linhas de cdigo, e por isso,
neste relatrio, optou-se por resumir as partes relevantes do funcionamento do
programa ao invs de detalhar e entrar nas mincias de implementao do cdigo.
3.4.1. A Biblioteca Qt
1. // stinitial.h
2. #ifndef STINITIAL_H
3. #define STINITIAL_H
4. #include "genericstate.h"
5.
6. class StInitial : public GenericState
7. {
8. Q_OBJECT
9. public:
10. explicit StInitial(CoreStates *st, Core *c, QState *ps = 0, MainWindow *w = 0);
11.
12. virtual void createTransitions();
13. signals:
14. void analysisCreated();
15. void analysisLoaded();
16. public slots:
17. void createNewAnalysis(void);
18. void openAnalysisPopUp(void);
19. private:
20. virtual void onEntry(QEvent* event);
21. };
22.
23. #endif // STINITIAL_H
24.
25. // stinitial.cpp
26. #include "stinitial.h"
27.
28. #include "InfoBar/ibinitial.h"
29.
30. StInitial::StInitial(CoreStates *st, Core *c, QState *ps, MainWindow *w):
31. GenericState(st, c, ps, w)
32. {
33. }
34.
35. void StInitial::onEntry(QEvent *event)
36. {
37. win->changeInfoBar(tibvInitial);
38. win->changeActionBar(tabvInitial);
39.
40. connect(win->ibInitial, SIGNAL(registerBoard()), this, SLOT(createNewAnalysis()));
41. connect(win->ibInitial, SIGNAL(startAnalysis()), this, SLOT(openAnalysisPopUp()));
42. }
43.
44. void StInitial::createTransitions()
45. {
46. this->addTransition(this, SIGNAL(analysisCreated()), states->RegisterBoard);
47. this->addTransition(this,SIGNAL(analysisLoaded()), states-
>PerformAnalysisAdjustPosition);
48. }
49.
50. void StInitial::createNewAnalysis (void)
51. {
52. core->createNewAnalysis();
53. emit(analysisCreated());
54. }
55.
56. void StInitial::openAnalysisPopUp()
57. {
58. OpenAnalysisDialog d(core, win);
59. d.exec();
60. d.result();
61. emit(analysisLoaded());
62. }
dos dados salvos para garantir que o banco de dados nunca ser posto em um
estado invlido, e fornecem funes que permitem s views exibirem dados contidos
nos modelos.
Como pode ser visto da estrutura do banco de dados criada, o software foi
construdo em torno do conceito de anlise. Uma anlise o ato de verificar se
uma placa de circuito impresso possui um ou mais tipos de erros. A configurao da
anlise a estrutura lgica que agrupa todas as caractersticas de um tipo especfico
de anlise. O resultado da anlise o resultado retornado pelo algoritmo; esta
tabela guarda informaes sobre a posio e o tipo dos erros encontrados.
3.4.6. GUI
Consideravelmente maior, levando em conta Reduzido a uma placa, de at 15x15cm e uma fonte de
Tamanho
fonte, memrias, placa-me. alimentao pequena.
Figura 34 - Beagleboard xM
Fonte: BeagleBoard-xM Rev C System Reference Manual, Revision 1.0
3.5.1.2. SO embarcado
4. GESTO
4.1. ESCOPO
4.2. CRONOGRAMA
Descrio Custo
BeagleBoard xM R$ 369,00
Frete R$ 40,00
Teclado R$ 39,90
Adaptador HDMI R$ 19,00
Total hardware R$ 467,90
Madeira R$ 15,00
Cola de madeira R$ 3,00
Parafuso R$ 6,00
Cola R$ 6,00
Sapatas R$ 5,72
Fita R$ 2,34
Papel contact R$ 4,00
Borracha R$ 27,00
Lixas R$ 4,00
Total Estrutura R$ 73,06
4.4. RISCOS
4.5. CONSIDERAES
5. PLANO DE NEGCIOS
A empresa Valar, objeto desse plano de negcios, ser uma empresa atuante
no segmento de produo de equipamentos de inspeo industrial. Seu primeiro
produto, um inspetor ptico automatizado de falhas de produo em placas de
circuito impressos, j est em fase final de desenvolvimento e j h inclusive um
prottipo funcional.
A Valar, cuja sede ser Curitiba, ser formada por trs Engenheiros
Eletricistas formados da Universidade Tecnolgica Federal do Paran, com
experincia na rea de foco de desenvolvimento da empresa: viso computacional.
5.3. OBJETIVOS
5.4.1. O Abutre
O Abutre, como o nome j implica, capaz de, por meio de viso, reconhecer
placas de circuito impressos incapazes de serem comercializadas. Os defeitos
reconhecidos pelo Abutre so: curto entre trilhas, trilha aberta, trilha pouco corroda
(over etch), trilha muito corroda (under etch).
que a Valar pode dar aos clientes. Isso uma grande vantagem competitiva
principalmente para as pequenas e mdias empresas brasileiras.
5.4.3. Tecnologias
O primeiro novo produto seria uma melhoria no Abutre, para que ele seja
capaz de reconhecer falhas de montagens de componentes em placas. Isso
abrangeria um mercado muito maior que o de produo das PCIs, j que a
81
Ainda assim, ela ainda fortemente afetada pelo cenrio externo, como pode
ser observado nos grficos abaixo.
Uma projeo dos principais indicadores do setor feita pela ABINEE para
2012, tabela 3, mostra que a expectativa de crescimento.
84
Automao industrial;
Componentes eltricos e eletrnicos;
Equipamentos industriais;
Gerao e transmisso de energia;
Informtica;
Material eltrico de instalao;
Telecomunicaes;
Utilidades domsticas e eletroeletrnicas;
5.6. ESTRATGIA
Nos primeiros meses, um Abutre ser emprestado, sem custos, a uma mdia
empresa produtora de PCIs de Curitiba. A utilizao do produto ser acompanhada
de perto pela Valar. O estudo de caso dessa empresa ser, caso o empresrio
assim permitir, utilizado como estudo de caso para outros potenciais clientes.
89
5.6.2. Vendas
Aps cada venda ser efetuada, a Valar fornecer treinamento e instruo para
os funcionrios da empresa, no s sobre a utilizao adequada do produto, mas
tambm sobre a criao de uma cultura de qualidade nos processos da empresa, e
como o Abutre pode ajudar a empresa nessa questo.
5.6.3. Preo
5.6.4. Promoo
5.6.5. Distribuio
5.6.6. Futuro
incio de 2014, foi considerado o pior dos casos, em que a inflao chega a 6,5%
a.a. ou 3,20% no semestre. O aumento salarial est diretamente ligado taxa de
inflao e ocorre todo incio de ano. A taxa de financiamentos e emprstimos
estimada para o ano considerando a maior taxa de juros SELIC em 2012, de
11,25% a.a. e de 5,5% a.s, enquanto que o retorno de aplicaes financeiras de
8% a.a. ou 3,92% a.s.
Descrio
Quantidade Valor Unitario Valor total
(Valores em R$)
Placa de processamento de dados 1 500,00 500,00
Carcaa 1 1 000,00 1 000,00
Camera 1 600,00 600,00
Teclado 1 32,00 32,00
TOTAL 2 132,00 2 132,00
Fonte: Autoria prpria
94
Por estas tabelas possvel perceber que a maior parte do investimento est
em equipamentos de informtica, j que o foco inicial da empresa trabalhar com
programao.
5.8.7. Depreciao
5.8.12. Payback
7. CONCLUSO
REFERNCIAS BIBLIOGRFICAS
Bradski, G. 2000. The OpenCV Library. Dr. Dobb's Journal of Software Tools.
2000.
Brasil. 2007. Lei n 11484, de 31 de maio de 2007. [Online] 2007. [Citado em:
28 de 05 de 2012.] http://www.planalto.gov.br/ccivil_03/_ato2007-
2010/2007/lei/l11484.htm.
Everingham, M., et al. 2010. The Pascal Visual Object Classes (VOC)
Challenge. International Journal of Computer Vision. 2010, Vol. 88, 2.