Universidade Federal do Rio de Janeiro COPPE Trabalho de Processamento de Imagens Reconhecimento de Símbolos de Componentes Eletrônicos Nome: Fernanda Duarte Vilela Reis de Oliveira Professores: Antonio Oliveira Ricardo Marroquim COS756/COS603 Junho de 2014
Sumário 1 Introdução 3 2 Técnicas Utilizadas 4 3 Resultados 5 4 Conclusão 7 2
1 Introdução Na eletrônica, cada componente é representado com um símbolo. Esses símbolos são utilizados para a representação de circuitos eletrônicos nos diagramas esquemáticos, que mostram como cada componente está conectado no circuito. Alguns exemplos dos símbolos utilizados na eletrônica são mostrados na Figura 1. Figura 1: Símbolos de componentes eletrônicos. Durante a escrita da documentação de um trabalho que necessite de diagramas esquemáticos, a etapa de desenhar as figuras em um computador é trabalhosa e lenta. Por esse motivo, seria muito vantajoso ter um programa que fizesse a passagem de desenho a mão para desenho no computador automaticamente. Além disso, se tivermos reconhecido os componentes e as ligações entre eles, é possível gerar uma netlist, que é o arquivo utilizado poe simuladores para realizar um simulação. Seria muito interessante para o aprendizado e melhor entendimento de circuitos se tivéssemos a facilidade de realizar uma simulação diretamente do desenho feito a mão. Para esse trabalho, no entanto, o foco é a primeira aplicação. Sendo assim, o objetivo do trabalho é reconhecer alguns símbolos eletrônicos em um desenho feito a mão. Uma vez feito isso, deseja-se transformar esse desenho em um desenho feito pelo computador, como exemplificado na Figura 2. Para simplificar o trabalho, somente três símbolos foram considerados, que são os três símbolos superiores da Figura 1. Da esquerda para a direita, temos o indutor, o resistor e o capacitor, respectivamente. Os caminhos de conexão entre os componentes também foram simplificados, eles só podem ser verticais ou horizontais, e as topologias consideradas são limitadas, somente componentes ligados em série são lidos da forma correta. A complexidade do algoritmo de leitura e da estrutura 3
(a) (b) Figura 2: (a) Exemplo de imagem de entrada binarizada e (b) respectiva imagem de saída ideal. de dados aumentaria se outras topologias fossem utilizadas e desejamos focar na parte de reconhecimento dos componentes. O trabalho foi implementado utilizando o MATLAB. A Seção 2 explica as técnicas utilizadas para identificação dos componentes. As Seções 3 e 4 mostram os resultados e as conclusões, respectivamente. 2 Técnicas Utilizadas A primeira etapa do processamento consiste da binarização da imagem. Em seguida, é utilizado um filtro morfológico que transforma cada linha do desenho que continha uma largura de vários pixels pretos em uma linha com somente um pixel preto de largura. Um exemplo desse procedimento é mostrado na Figura 3. (a) (b) (c) Figura 3: (a) Imagem de entrada, (b) resultado da binarização e (c) resultado após o filtro morfológico. Para o reconhecimento dos símbolos do resistor e do indutor, foram calculadas as direções de cada pixel, considerando dois vizinhos, e feito um histograma de direções para representar o componente. A Figura 4 ilustra como cada direção é calculada. A direção do pixel na posição (x 1,y 1 ) dessa figura é representada pela seta cujo ângulo com a horizontal é dado por (θ + 90 o ). O ângulo θ é encontrado calculando o arcotangente de [ (y 2 y 0 )/(x 2 x 0 )], onde os pixels nas posições 4
(x 2,y 2 ) e (x 0,y 0 ) são os vizinhos do pixel na posição (x 1,y 1 ). O menos no numerador daequação surgedevido a formacomo o MATLAB armazena uma imagem, do canto superior esquerdo até o canto inferior direito. Isto é, o eixo y está no sentido oposto ao habitual. (x 2,y 2 ) (x 0,y 0 ) θ (x 1,y 1 ) Figura 4: Direção considerada para cada pixel. O histograma de direções considera 8 possíveis ângulos, entre 0 o e 180 o. A orientação do histograma é determinada pelo caminho anterior ao componente: se existem muitos pixels com direção zero antes do componente, o histograma é rotacionado em 90 o. O reconhecimento do capacitor foi feito de forma diferente, devido a forma do símbolo, que possui a maioria dos pixels com direção 0 o ou 90 o. No caso desse símbolo, foi feita uma análise das conexões dos pixels. Se detectarmos que houve uma bifurcação, isto é, um pixel com três vizinhos, verificamos se o caminho que segue possui chega a um pixel com somente um vizinho. Se for esse o caso, temos um capacitor. A identificação de início e fim de um componente é feita verificando se houve mudança de direção. 3 Resultados A Figura 5 mostra os primeiros resultados obtidos no trabalho, contendo somente resistores e indutores, com todos os componentes na mesma direção. Todas essas imagens também foram testadas rotacionadas de 90 o. Como pode ser visto nas figuras, o reconhecimento é feito da forma correta. 5
Figura 5: Resultado do algoritmo projetado: à esquerda, imagens de entrada binarizadas e à direita resposta do programa A Figura 6 mostra alguns resultados de circuitos com componentes na horizontal e na vertical. Os resultados apresentam os componentes em linha reta, o programa apresentado não gira os componentes para apresentar o resultado. O segundo circuito dessa figura apresenta um erro no resultado, pois o programa não foi capaz de identificar que o caminho antes do último resistor havia mudado de direção. Com isso, o último componente é identificado como um indutor, quando deveria ser um resistor. Para verificar se o problema realmente era a identificação do caminho, a imagem de entrada foi modificada, como mostrado no terceiro circuito da Figura 6. Como esperado, o resistor passa a ser reconhecido corretamente. Figura 6: Resultado para imagens com componentes nas duas direções: à esquerda, imagens de entrada binarizadas e à direita resposta do programa 6
A Figura 7 mostra resultados incluindo o capacitor. As duas figuras apresentam um erro no reconhecimento do resistor, em que o programa identifica como dois resistores ao invés de um. Isso acontece pois em algum segmento do resistor o programa acha que o componente acabou e reconhece como resistor, o restante do componente é identificado como um novo componente, que também será reconhecido como resistor. No caso da primeira imagem, o problema é resolvido ao alterar um limiar do que é considerado um caminho entre componentes, o resultado é mostrado na Figura 8. Para o outro circuito, no entanto, umdos segmentos do resistor émuito vertical, então a mudança do limiar não resolve o problema. Figura 7: Resultado para imagens com resistores, capacitores e indutores: à esquerda, imagens de entrada binarizadas e à direita resposta do programa Figura 8: Resposta do programa à primeira imagem da Figura 7, ao modificar o limiar para o que é considerado um caminho entre componentes. 4 Conclusão O trabalho apresentado no relatório demonstrou que utilizando técnicas básicas de processamento de imagens é possível fazer o reconhecimento de três diferentes símbolos de componentes eletrônicos. Para melhorar o trabalho, seria interessante inicialmente considerar mais símbolos e verificar se é possível distinguí-los e, em seguida, tirar as restrições feitas com relação à topologia. A utilização de algoritmos de treinamento provavelmente melhoraria a taxa de acerto do programa. 7