Buscar

Projeto Preliminar - Medição de Temperatura através de Visão Computacional

Prévia do material em texto

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE 
SANTA CATARINA CAMPUS CHAPECÓ/SC 
 
 
 
 
 
ENGENHARIA DE CONTROLE E AUTOMAÇÃO 
 
 
 
 
FELIPE KISSMANN 
GUILHERME A. SEGAT 
RENAN F. DO VALLE 
 
 
 
 
MEDIÇÃO DE TEMPERATURA ATRAVÉS DE VISÃO COMPUTACIONAL 
 
 
 
 
 
 
 
 
 
 
CHAPECÓ, JULHO DE 2017 
1. Projeto Preliminar 
Esta etapa consistiu em sintetizar todas as ideias levantadas durante o processo 
de desenvolvimento do projeto como um todo, com um intuito de chegar a um resultado 
final que atenda todos os requisitos levantados da melhor forma possível. 
Serão abordados os métodos utilizados para a resolução dos problemas do projeto e o 
detalhamento de cada um dos mesmos, justificando sua utilização. 
1.1 Microsoft Visual Studio 
O ambiente de desenvolvimento integrado (IDE) utilizada para o 
desenvolvimento desse projeto foi o Microsoft Visual Studio. Segundo a própria 
Microsoft, o visual Studio oferece serviços e ferramentas profissionais para 
desenvolvedores para a criação de qualquer aplicativo para qualquer plataforma. 
Por ser uma IDE extremamente completa e de conhecimentos dos 
desenvolvedores deste projeto, este recurso foi utilizado para a elaboração de todo 
código, além da interface gráfica do software. 
1.2 C# 
 Segundo a Microsoft, C# é uma linguagem de programação projetada para criar vários 
aplicativos executados no .NET Framework. A linguagem C# é simples, poderosa, segura e 
orientada a objeto. As diversas inovações do C# permitem o desenvolvimento rápido de 
aplicativos e a manutenção da expressividade e elegância das linguagens em estilo C. 
A linguagem C# foi utilizada para o desenvolvimento do código por ser compatível com 
a biblioteca Emgu CV e ser capaz de atender todos os requisitos de projeto. 
1.3 Emgu CV 
Como esse projeto se trata de processamento de imagens, foi necessária a 
utilização de uma biblioteca apropriada para isso, neste caso a Open CV, por meio de 
sua camada EmguCV, que segundo Shin Shi (2013), é uma biblioteca de processamento 
de imagem multiplataforma. Ele está sempre relacionado ao OpenCV porque é um 
wrapper (envelopador) para o OpenCV. 
Alguns recursos que o Emgu CV oferece e que foram interessantes nesse projeto 
são a detecção de bordas, levantamento das informações RGB da imagem, filtros de 
imagens, entre outras, além da compatibilidade com o Visual Studio e a linguagem de 
programação utilizada, C#. 
1.4 Captura de imagens 
O software desenvolvido neste projeto trabalha com imagens térmicas, para isto 
foi necessário realizar a captura de algumas destas. As imagens iniciais para serem 
utilizadas no software seriam bastante simples, contando com um círculo isolado 
aquecido a uma temperatura significativamente maior que a ambiente. 
Foi utilizada a câmara termográfica FLUKE TI90, uma chapa circular e em 
alguns casos uma chapa retangular, ambas de aço 1020 aquecidas à temperaturas que 
variavam de 30 à 160°C. Para captura das imagens, as chapas foram posicionadas em 
pedestais ficando apenas em contato com o ar e aquecendo minimamente o ambiente ao 
seu redor, assim gerando imagens com forma mais definida. Na figura a seguir, é 
possível ver a forma circular e retangular em seu espectro visível. 
Figura 1: Câmera para captura das imagens e formas retangular e circular. Fonte: Dos autores (2017). 
Quanto aos ajustes realizados na câmera, foram de emissividade, que foi 
definida em (0,75), baseada em tabelas de emissividade e testes realizados com auxílio 
de termopar para comprovação de temperatura. Outro parâmetro foi a escala, que 
poderia ser utilizada tanto em manual quanto em automática. Além desses, ângulo e 
distância de captura foram os últimos ajustes, onde a câmera estava sempre posicionada 
perpendicular ao objeto e cerca de um metro de distância. 
1.5 Interface 
A interface final do software foi baseada na estrutura apresentada no projeto 
conceitual, porém com alguns recursos modificados. 
Ela conta com um botão “carregar” para carregamento de imagem a partir das 
imagens do sistema, a imagem escolhida é carregada em um PictureBox e a partir daí é 
possível acionar o botão “processar”. Ao processar, mais duas imagens surgem em 
outros dois PictureBox, um mostra o resultado do processo “canny”, que faz a detecção 
de bordas da imagem, e a outra mostra o resultado do circulo detectado ignorando o 
restante da imagem. 
Quanto as configurações, estão todas presentes na janela raiz do software. No 
canto inferior esquerdo da janela, é possível mudar a escala da temperatura conforme a 
imagem a ser processada, possibilitando assim, processar imagens capturadas com 
escala automática. Logo ao lado, estão presentes os parâmetros de detecção de círculo, 
onde cada um pode ser alterado individualmente para melhorar os resultados obtidos. E 
por último, no canto inferior direito são mostrados os valores RGB do círculo detectado 
e sua temperatura média em graus célsius. 
A seguir, uma imagem da interface completa, com uma imagem carregada e 
processada, com todos os parâmetros de configuração ajustados: 
 
Figura 2: Interface em funcionamento. Fonte: Dos autores (2017). 
1.6 Detecção do objeto 
Partiu-se da ideia de detectar três tipos de objetos: quadrados, triângulos e 
círculos. Conversando com pessoas que tentaram desenvolver o software em outros 
projetos integradores, viu-se que a maior dificuldade de padrão à ser encontrado se dava 
nos circulares, sendo assim, esse foi o primeiro objeto a ser trabalhado. 
Utilizando a plataforma de desenvolvimento Visual Studio, a biblioteca 
EmguCV e programando em C#, iniciou-se a fase de desenvolvimento do software. 
Após fase de pesquisa, viu-se que anteriormente ao uso de ferramentas que 
detectam padrões circulares, tratar a imagem com alguns filtros facilitaria a detecção do 
objeto. Com a imagem em mãos foram aplicados alguns filtros, onde após analisados os 
resultados, foram mantidos ou descartados do programa final. Nos tópicos a seguir 
serão explicados os filtros utilizados que apresentaram bons resultados e foram 
mantidos no programa final. Posteriormente, se dá uma breve explicação na ferramenta 
que detecta os círculos bem como seus parâmetros. 
Tendo em vista que a equipe executora teve o propósito de encontrar um padrão 
e se dedicar em fazer a correta relação entre os valores do conjunto de pixels com 
determinada temperatura, apenas o padrão circular está sendo utilizado e será explicado 
na sequência. 
 
1.6.1 Gray 
Transforma a imagem em escala de cinza, convertendo a imagem em apenas um 
canal, que assume valores de 0 à 255. Onde 0 é o a cor puramente preta e 255 é a cor 
puramente branca, como pode ser vista na figura a seguir. 
Figura 3: Escala de cinza. Fonte: Dos autores (2017). 
Este filtro ajuda a eliminar ruídos da imagem e também auxilia para detectar 
bordas, visto que a imagem terá apenas um canal, diferentemente da RGB que possui 
três. 
1.6.2 Canny 
Após aplicar o filtro gray, foi utilizado o filtro de Canny para detectar todas as 
bordas das geometrias presentes na imagem com baixíssima taxa de erro. Aplicar Canny 
foi um diferencial do projeto aqui desenvolvido para os projetos de semestres anteriores. 
Este filtro foi de grande utilidade para detectar a geometria presente na imagem, visto 
que ressalta as bordas da mesma, facilitando assim o seu reconhecimento. A seguir 
serão expostas duas imagens, onde a primeira está em espectro infravermelha e a 
segunda consiste na mesma imagem, porém com a aplicação do filtro Gray e Canny. 
Figura 4: espectro infravermelho e filtro Gray e Canny. Fonte: Dos autores (2017).Nota-se que após a aplicação dos filtros, fica em evidência as bordas da 
geometria circular. 
Dentro desse filtro há dois parâmetros importantes, que podem ser alterados para 
um melhor resultado das bordas que são o “Threshold” e o “Threshold Linking”. 
1.6.2.1 Canny Threshold e Threshold Linking 
Trata-se dos limiares para o processo de histerese. Para cada imagem haverá 
valores que podem auxiliar na detecção da imagem, como podem atrapalhar. Os valores 
desses filtros variam de 0 à 255, onde 0 irão tratar qualquer conjunto de pixels como 
limiares e 255 irão reconhecer apenas limiares muito bem definidos. Para melhor 
esclarecimento, nas imagens a seguir irei calibrar dois valores diferentes para a mesma 
imagem. 
Nessa imagem consta a imagem em espectro infravermelho original. 
Figura 5: espectro infravermelho. Fonte: Dos autores (2017). 
Essa imagem é o resultado da aplicação do filtro com valores relativamente 
baixos. 
Figura 6: aplicação do Canny com valores baixos. Fonte: Dos autores (2017). 
Agora, na figura à seguir, a calibração está com valores mais condizentes para 
encontrar os limiares corretos do padrão circular. 
Figura 7: aplicação do Canny com valores apropriados Fonte: Dos autores (2017). 
Depois de aplicados os devidos filtros, pode-se iniciar a fase de utilização de 
comandos específicos da biblioteca Emgu CV para a detecção de padrões. 
 
1.6.3 Hough Circles 
Dentro da biblioteca Emgu CV, há diversas ferramentas que auxiliam na 
detecção de padrões, dentre elas, está a ferramenta denominada Hough Circles. 
Esta ferramenta tem como objetivo encontrar todos os padrões circulares 
presentes numa imagem e armazená-los em um vetor denominado circles. Dentro desta 
ferramenta, há alguns parâmetros calibráveis onde é possível especificar quais círculos e 
de quais tamanhos devem ser encontrados. Também é possível descrever o quão 
distante deve estar um círculo de outro, prevenindo assim, que os círculos se 
sobreponham. Na figura abaixo é possível ver todos os parâmetros ajustáveis da função 
Hough Circles, que ficarão disponíveis para calibração de cada imagem. 
Figura 8: parâmetros Hough Circles. Fonte: Dos autores (2017). 
Para um melhor entendimento do usuário, será explicado aqui qual a função de 
cada parâmetro. 
1.6.3.1 Acumulador 
Dentre as funções da Hough Circles talvez seja este o parâmetro mais confuso 
para explicação. De forma resumida, quanto mais baixo, mais fácil de encontrar círculos 
falsos pela função Hough Circles. Na bibliografia utilizada, os autores recomendam 
testar valores para cada imagem, não apresentando um padrão específico para seguir. 
Nas figuras abaixo é possível ver que para pequenas mudanças neste parâmetro, há 
grandes diferenças nos círculos encontrados. 
 Neste primeiro caso foi colocado 10 no acumulador e o mesmo encontrou vários 
círculos inexistentes. 
 
Figura 9: Acumulador 10. Fonte: Dos autores (2017). 
Já nesse segundo caso, para a mesma imagem, foi incrementado um valor de 4 
no acumulador, totalizando 14. Nota-se um resultado totalmente diferente do caso 
anterior. 
 
Figura 10: Acumulador 14. Fonte: Dos autores (2017). 
 
1.6.3.2 Resolução de Centro 
Trata da relação inversa da resolução do acumulador para a resolução da 
imagem. Por exemplo, se for parametrizado como 1, o acumulador terá a mesma 
resolução da imagem original, caso seja parametrizado como 2, o acumulador tem 
metade da altura e largura. Neste caso, o software irá trabalhar apenas parametrizado em 
1. 
1.5.3.3 Distância Mínima 
Este parâmetro se refere à distância entre o centro de dois círculos. Visto que as 
imagens retiradas para testes no software possuem apenas um círculo, a distância pode 
ser máxima (255). 
1.5.3.4 Raio mínimo 
Como o próprio nome já diz, se refere ao raio mínimo do círculo à ser 
encontrado. 
1.5.3.5 Raio máximo 
Esse parâmetro tem como função limitar os círculos que devem ser encontrados 
em um raio máximo. Caso o valor seja 0, não há valor máximo de raio. 
1.6 Detecção de temperatura 
A partir da detecção do objeto são obtidas algumas informações como a posição 
do centro do círculo nas coordenadas X e Y dentro da imagem e o tamanho do raio. 
Com isso é executado um algoritmo que armazena a cor de cada pixel dentro da região 
detectada. 
Este algoritmo se baseia na execução de dois laços de repetição e um teste 
condicional, os laços de repetição utilizam a informação do centro do círculo e do raio 
para percorrer um quadrado nas coordenadas X e Y, pixel a pixel. Já o teste condicional 
visa delimitar a região onde a cor de cada pixel será armazenada, para isso parte-se da 
equação do círculo abaixo: 
 
Equação: Equação do círculo 
 [1] 
Onde: 
r: raio 
x: coordenada x 
y: coordenada y 
Desenvolvendo e aplicando as variáveis disponíveis na aplicação é possível 
dizer que está dentro do círculo qualquer pixel que puder ser descrito pela inequação 
abaixo, onde é considerado dentro do objeto o pixel cuja a raiz quadrada da soma das 
coordenadas em x e y ao quadrado são menores do que o raio detectado. 
Equação: Inequação que delimita os pixels dentro do objeto 
 √ [2] 
Onde: 
 : raio do objeto detectado 
x: coordenada x do pixel 
y: coordenada y do pixel 
Desta forma o algoritmo percorre uma região retangular, pixel a pixel, e quando 
o teste condicional identifica que o pixel está dentro do círculo, este tem sua cor 
armazenada no padrão RGB, conforme é demonstrado na imagem abaixo. 
Figura11: Fonte: Dos autores (2017). 
 
Após mapear e armazenar cor de cada pixel dentro da figura detectada, o sistema 
extraí a média aritmética simples de cada componente identificado, desta forma obtendo 
a tonalidade média da figura. 
O princípio básico da câmera trata-se de aplicar uma escala de cor de acordo 
com a temperatura das regiões da imagem que está sendo vista ou capturada. Essa 
escala pode ser vista na figura abaixo e nota-se que ela é unidimensional e atribui cores 
mais vermelhas para temperaturas mais quentes, mais verdes para intermediárias e mais 
azuis para temperaturas mais baixas. As temperaturas máxima e mínima podem ser 
arbitradas manualmente ou definidas automaticamente pela câmera 
Figura 12: escala de temperatura. Fonte: Dos autores (2017). 
Uma característica importante é que está escala é unidimensional, o que gera um 
problema pois a criação de cores em sistemas computacionais digitais se dá em 
múltiplas dimensões, como no modelo RGB, onde uma cor é formada por uma parcela 
de vermelho, uma parcela de verde e uma parcela de azul. Por isso, foi preciso encontrar 
um modelo de correlação que consiga transformar um modelo multidimensional (cor) 
em um modelo unidimensional (temperatura) com precisão. 
O modelo desenvolvido se baseia na observação do comportamento do padrão 
RGB ao longo da escala. Percebeu-se que dentro da variação de temperatura sempre há 
uma cor dominante, a qual se trata da vermelha no último terço do span (faixa de 
variação da temperatura) da medição, verde no terço central e azul no terço inferior. 
Há também um canal de cor que varia aumentando ou diminuindo junto com a 
temperatura indicando a transição e forçando a mudança de tonalidade, este canal de cor 
é o segundo de maior intensidade e com base nele se obtém a variação de temperatura. 
Por fim o canal restante no modelo RGB é nulo (zero) ou intensidade e variação nula e 
pode ser desconsiderado durante a mudança de cor. 
A variação de cor se dá entre 0 e 255, logo se faz uma escala simples dentro de 
cada patamarlevando em consideração a média da cor e como se dá a relação de 
variação dentro daquele patamar 
No esquemático demonstrado na figura abaixo percebe-se a cor dominante, 
variante e nula para cada faixa da escala de cor correlacionando com a temperatura. 
 
Figura13: Modelo RGB desenvolvido. Fonte: Dos autores (2017). 
1.7 Resultados 
O sistema foi testado através da comparação dos resultados revelados por ele e 
pelos que são fornecidos na câmera termográfica da Fluke bem como no software da 
mesma. Pode-se afirmar que o software desenvolvido consegue apresentar resultados 
satisfatórios, bastante fiéis aos que são mostrados pelo sistema profissional. 
Abaixo é possível visualizar uma imagem tirada com a câmera termográfica e 
temperatura que ela identificou. 
 
Figura 14: imagem real da câmera termográfica. Fonte: Dos autores (2017). 
A seguir, uma captura de tela do software desenvolvido processando uma 
imagem tirada segundos após a anterior, apenas com a função de informações 
desabilitada. Nota-se que a temperatura média observada é muito fiel a temperatura 
identificada pela câmera. 
 
Figura 15: medição de temperatura pelo software. Fonte: Dos autores (2017). 
Em testes percebeu-se que o sistema apresenta uma diferença de até 10°C em 
relação a imagem da câmera, isso se mostra por alguns fatores como: diferença de 
tempo entre a captura da imagem com informações e sem informações o que faz o 
objeto ter sua temperatura alterada, nas imagens da câmera a temperatura apresentada se 
trata de um ponto ou pequena região do objeto enquanto no software desenvolvido se 
calcula a temperatura média de todo o objeto, além disso, pela tecnologia da câmera não 
ser aberta é difícil precisar o funcionamento do algoritmo que calcula a temperatura 
logo é bastante complexo garantir uma fidelidade completa. 
Na imagem a seguir apresenta uma captura do software da Fluke onde é possível 
fazer a detecção da temperatura média da região demarcada. 
 
Figura 16: temperatura média pelo software da Fluke. Fonte: Dos autores (2017). 
Abaixo a captura de tela da ferramenta desenvolvida processando a mesma 
imagem em questão. 
 
Figura 17: temperatura média pelo software desenvolvido. Fonte: Dos autores (2017) 
Nota-se que mais uma vez a ferramenta apresentou um resultado bastante fiel ao 
obtido com a tecnologia da Fluke, apresentando uma pequena diferença. 
Por vezes é necessário mudar os parâmetros de detecção de objetos para 
conseguir realizar o processamento da imagem em virtude da qualidade de captura e 
nitidez das bordas o que é uma tarefa um pouco trabalhosa e inviável para produto final, 
porém, completamente aceitável para um projeto em desenvolvimento como este. 
Contudo, é possível afirmar que o software apresenta um resultado bastante 
satisfatório dentro das condições de desenvolvimento do trabalho, a técnica de detecção 
de temperatura a partir da cor se mostrou bastante eficiente e robusta, trazendo 
resultados fiéis ao real. A interface é amigável e de fácil utilização. 
 
1.8 Referências 
 
BRASIL. J Viana. Universidade Federal Rural do Rio de Janeiro. 
Processamento da Imagem. Disponível em: 
<http://www.ufrrj.br/institutos/it/de/acidentes/sr4.htm>. Acesso em: 16 mar. 2017. 
 
QUEIROZ, José Eustáquio Rangel de; GOMES, Herman Martins. Introdução 
ao Processamento Digital de Imagens. Campina Grande: Ufcg, 2001. 
 
SHI, Shin. Emgu CV Essentials. Packt Publishing, 2013. 
 
JÄHNE, B. Digital Image Processing. Springer-Verlag, 2002. 
ACHARYA, T., RAY, A. K. Image Processing- Principles and Applications. 
John Wiley & Sons, Inc. 2005. 
GONZALEZ, R., WOODS, P. Digital Image Processing. Prentice Hall, 2002, 
2nd ed. 
CESAR JR, R. M., COSTA, L. F. Shape Analysis and Classification Theory 
and Practice. CRC Press, 2001.

Continue navegando