Está en la página 1de 63

Escuela

Politécnica
Superior

Uso de cámaras de
color y termográficas
para detectar síntomas
compatibles con
COVID19
Máster Universitario en Automática y
Robótica

Trabajo Fin de Máster


Autor:
Daniel Sánchez Martínez
Tutor/es:
Miguel A. Cazorla Quevedo
Francisco Gomez Donoso

Mayo 2021
Uso de cámaras de color y termográficas
para detectar síntomas compatibles con
COVID19

Autor
Daniel Sánchez Martínez

Tutor/es
Miguel A. Cazorla Quevedo
Departamento de Ciencia de la Computación e Inteligencia Artificial
Francisco Gomez Donoso
Departamento de Ciencia de la Computación e Inteligencia Artificial

Máster Universitario en Automática y Robótica

Escuela
Politécnica
Superior

ALICANTE, Mayo 2021


Preámbulo
“La razón por la que se ha llevado a cabo este proyecto es el la necesidad de
encontrar soluciones a problemas de hoy en día como lo son los contagios de
enfermedades y un una reacción a destiempo ante este tipo de situaciones.”
Agradecimientos

Este trabajo no se podría haber llevado a cabo si no fuera por la entera disposicón de mis
tutores Francisco Gomez y Miguel Cazorla, los cuales me proveyeron de todos los materiales
y dispositivos necesarios para que pudiera trabajar.
También me gustaría agradecer la ayuda y participación de mis compañeros y amigos a la
hora de formar parte de las pruebas de este trabajo.
Por último, agradecer a mi familia su apoyo constante a lo largo de, no solo este trabajo,
sino de toda esta etapa.
Errar es humano,
herrar, de herreros.

Dario M. H.

ix
Índice general
1 Introducción 1

2 Estado del Arte. 5

3 Objetivos y motivación 9

4 Metodología 11
4.1 Cámara Termográfica: FLIR E75. . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Cámara RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Servicios web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4 Deteccion de caras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5 Detección de landmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.6 Reidentificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.7 Calibración de la cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 ThermITA: Aplicación de seguimiento inteligente en el espectro termográfico 23


5.1 Aproximación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2 Estructura de las cámaras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3 Cámara termográfica FLIR E75 . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.4 Cámara RGB REOLINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.5 Calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.6 Detección de la cara en el espacio termográfico . . . . . . . . . . . . . . . . . 26
5.7 Reidentificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.8 Servicio Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.9 Interfaz del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6 Experimentación 33
6.1 Detección de caras y landmarks . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Reidentificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3 Calibraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4 Precisión temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7 Conclusiones 45

8 Trabajos futuros 47

Bibliografía 49

xi
Índice de figuras
1.1 Funcionamiento del sistema de monitorización. . . . . . . . . . . . . . . . . . 2

2.1 Sistema SMoCAI ®. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5


2.2 Dispositivo SRVt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Dispositivo de identificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 FeverTIR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.1 FLIR E75. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11


4.2 Imagen térmica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Imagen térmica de una impresora 3D. . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Cámara Reolink RLC-410W. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 Esquema de los servicios web. . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6 Kernels para la obtención de los gradientes horizontales y verticales. . . . . . 15
4.7 Ejemplo SVM 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.8 Numeración de los landmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.9 Arquitectura de la red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.10 Imágenes del elemento de calibración . . . . . . . . . . . . . . . . . . . . . . . 19
4.11 Asignación de puntos 3D sobre los 2D. . . . . . . . . . . . . . . . . . . . . . . 19
4.12 Patrón con LEDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.13 Patrón con cables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.14 Patrón de metal y espuma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.15 Calentamiento del patrón en el que se distinguen claramente las casillas del
patrón de ajedrez. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.1 Diagrama de funcionamiento de ThermITA. . . . . . . . . . . . . . . . . . . . 23


5.2 Trípode con las dos cámaras. . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3 Diagrama de flujo de la detección de caras y landmarks. . . . . . . . . . . . . 26
5.4 Bounding Box y landmarks en las imágenes RGB y térmica. . . . . . . . . . . 27
5.5 Bounding Box verde en el centro del ojo. . . . . . . . . . . . . . . . . . . . . . 28
5.6 Interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.1 Posicionamiento de landmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . 33


6.2 Error de posicionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3 Precisión según la posición de la cara. . . . . . . . . . . . . . . . . . . . . . . 34
6.4 Personas que aparecen a lo largo del vídeo. . . . . . . . . . . . . . . . . . . . 35
6.5 Identidades generadas a lo largo del vídeo. . . . . . . . . . . . . . . . . . . . . 35
6.6 ID 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.7 ID 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.8 ID 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.9 ID 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

xiii
xiv Índice de figuras

6.10 ID 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.11 Patrón irradiado con calor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.12 Patrón irradiado con calor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.13 Modo MSX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.14 Comparación de la medición directa de la cámara con la de la aplicación. . . 43
1 Introducción
A día de hoy vivimos en una situación de incertidumbre debido a la pandemia a nivel global
ocasionada por el virus COVID-19. Uno de los factores que favorecen el contagio es que se
carece de las medidas adecuadas para la detección temprana de los síntomas. Al tratarse de
un virus tan contagioso, conocer sus efectos con antelación, puede evitar la propagación. Uno
de los marcadores principales de esta enfermedad es la fiebre, es decir temperatura corporal
de una persona mayor a 37.2 ºC. Además del COVID-19, existen una gran variedad de
enfermedades y virus cuyos síntomas pueden ser la fiebre, como por ejemplo: la tuberculosis,
el virus Epstein-Barr y la endocarditis. La lista de tipos de enfermedades producidas por
distintas bacterias, virus, hongos o parásitos que cursan con fiebre es muy alta. Debido a
esto, un sistema capaz de detectar de forma temprana este síntoma ayudaría a prevenir el
avance de todas estas enfermedades. La solución ideal pasa por poder monitorizar de forma
exhaustiva a la población pero, en lugares donde hay una alta aglomeración de personas es
imposible medir la temperatura de todas ellas de una en una manualmente.
Por otro lado, existen lugares específicos donde el control de enfermedades es crítico. Por
ejemplo, en las residencias de mayores. Estas instalaciones deben tener un mayor control
sobre las personas que residen, ya que pertenecen a la población de riesgo. Pero, como hemos
comentado anteriormente, no es viable estar midiendo constantemente la temperatura de to-
das las personas manualmente. Aunque el sector de las residencias puede ser uno de los más
vulnerables, no podemos dejar de lado el resto de lugares susceptibles de sufrir aglomeracio-
nes como pueden ser los centros comerciales, centros de educación, aeropuertos y cualquier
entorno cerrado que pueda albergar una gran cantidad de personas.
Como se ha comentado, el costo de tener personas encargadas de ir comprobando la tempe-
ratura de la gente es simplemente inasumible. No obstante, esto cambiaría si se utilizase un
método de monitorización automático. En la Figura 1.1 se muestra de manera esquemática
el funcionamiento de estos sistemas.
Por eso mismo, el empleo de este tipo de sistemas es crucial para evitar saturación y
prevenir a tiempo un posible caso de enfermedad contagiosa, como el COVID-19. Además,
se aprecia claramente que la monitorización en tiempo real es más efectiva que el hecho
comentado anteriormente de que haya un par de encargados tomando la temperatura a las
personas del centro en cuestión, yendo de una en una.
Así pues, la finalidad de este trabajo es lograr un sistema de monitorización automático
en tiempo real que permita detectar la temperatura de las personas para prevenir posibles
casos positivos de enfermedades, como puede ser COVID-19, y de las mencionadas anterior-
mente, y evitar así que la persona pueda contagiar a otros de forma inconsciente. Otro de los
aspectos relevantes de este trabajo va a ser la reidentificación de las personas. Este concepto
se basa en reconocer a personas de las cuales no disponemos imágenes previas, en cualquier
instante de tiempo. Es decir, si aparece una persona en el rango de visión de nuestra cámara,
desaparece y luego vuelve a aparecer, tenemos que saber que es la misma persona. De esta

1
2 Introducción

Figura 1.1: Funcionamiento del sistema de monitorización.

forma podremos realizar un seguimiento de la temperatura corporal de todas las personas de


cualquier instalación.
Para lograr este objetivo, realizaremos un estudio sobre las distintas formas de calibrar
cámaras térmicas y la detección de personas en el espectro termográfico. También aplicare-
mos una traslación de los puntos de interés (landmarks) de las caras que se detecten con una
cámara RGB a la imagen termográfica. De esta forma seremos capaces de medir la tempe-
ratura en zonas concretas. En nuestro caso, el mayor interés se centra en la zona del iris,
en el ojo. También podremos realizar un seguimiento de todas las personas detectadas y sus
temperaturas a lo largo del tiempo en el que estén presentes ante las cámaras.
En concreto, en este trabajo se desarrollan las siguientes contribuciones:

• Método de calibración para cámaras termográficas.

• Método de reidentificacion.

• Método para trasladar detecciones en RGB a datos termográficos.

• Sistema de cálculo automático de temperatura corporal.

Así pues, en el Capítulo 2 se habla del estado del arte de los sistemas de monitorización,
toma de temperatura y relacionados, explicando varios ejemplos de proyectos cuyo objetivo
es similar al de este. En el Capítulo 3 se proponen todos y cada uno de los objetivos que se
pretenden alcanzar en la realización de este trabajo, tanto personales, como el aprendizaje y
la mejora de lenguajes de programación, como del trabajo en sí a la hora de hacer funcionar
el sistema. En el Capítulo 4 hablamos sobre la metodología empleada, es decir, los elementos
que utilizamos para llevar a cabo este trabajo. El siguiente, Capítulo 5, exponemos de como
hemos utilizado esos elementos y herramientas aplicados al proyecto. Después, pasamos a el
Capítulo 6, donde haremos diferentes pruebas del sistema en funcionamiento para comprobar
sus límites y cuándo funciona mejor. Una vez explicado todo, en el Capítulo 7 realizaremos
3

una serie de conclusiones, haciendo referencia a todo el transcurso del proyecto. Para terminar,
en el Capítulo 8, expondremos las ideas de futuro que se han pensado llevar a cabo teniendo
en cuenta el estado final del proyecto. Y por último, mostraremos la bibliografía con todos
los enlaces útiles que han ayudado en el desarrollo del trabajo.
2 Estado del Arte.
Dadas las circunstancias actuales, la sociedad científica y empresarial han realizado es-
fuerzos para crear sistemas comerciales que permitan evitar contagios del COVID-19. Ya sea
midiendo la calidad del aire de una zona, su temperatura u otros factores. Por lo que en este
capítulo se hablará de varios sistemas que tratan este tema.
En primer lugar, el sistema de monitorización de calidad del aire: SMoCAI ® (Figura 2.1)
(SISTEMA DE MONITORIZACIÓN DE CALIDAD DE AIRE (SMOCAI®) (s.f.)).

(a) Dispositivo de detección. (b) Interfaz de ususario.

Figura 2.1: Sistema SMoCAI ®.

Las principales funciones de este sistema se centran en conocer y medir las diversas variables
de calidad del aire para zonas interiores. Además, permiten informar en tiempo real a través
de una aplicación móvil. Se compone de una serie de sensores, como los de la Figura 2.1a cuyo
funcionamiento se basa en un algoritmo de Big Data. Por lo que nos permite tomar diversas
medidas del aire, como por ejemplo: CO2, PM2.5, PM10, TVOCs, temperatura y humedad.
Otra forma de intentar prevenir más contagios es el control de las aguas residuales, ya que se
puede detectar el COVID-19 en ellas. Por eso, SUEZ, la única empresa en España acreditada
para llevar a cabo esta investigación. Su sistema se basa en un plan de muestreo adaptado
(RT-qPCR), filtrado y validación de los datos obtenidos mediante Inteligencia Artificial,
además de poseer un sistema de monitorización. Este sistema se llama City Sentinel (City
Sentinel | COVID-19 (s.f.)).
Su funcionamiento se divide en 3 fases:

• Fase 1: Recogida de muestras en la red de alcantarillado. Se recogen a mano


cada dos semanas por norma general. De esta forma solo se puede saber la zona donde
se encuentra el posible foco.

• Fase 2: Análisis de las muestras en el laboratorio. Al tratarse de residuos, no se


trata del virus activo, tan solo es material genético. Por lo que se busca en estas aguas
el RNA o su carga genética. En pocas palabras, sus restos.

5
6 Estado del Arte.

• Fase 3: Volcado y presentación de los datos Los resultados se presentan a los


ayuntamientos en una plataforma. Sin embargo, se actualiza de forma manual una vez
han verificado que los resultados son correctos.

Por otro lado, la empresa Aicor, tiene una serie de dispositivos para intentar prevenir los
focos de infección. Entre ellos podemos destacar el sistema SRVt (Figura 2.2) (Sensor óptico
– control temperatura (s.f.)). Este dispositivo es un sensor óptico que proporciona además,
un control de temperatura. Nos permite detectar la temperatura de un grupo de personas en
un entorno y de objetos a distancia. El sensor contiene un software basado en algoritmos de
IA que miden la temperatura con un margen de error menor a 1ºC. Por último, también es
capaz de detectar movimientos a través de la radiación térmica, permitiendo así, saber si se
trata de una persona o no.

Figura 2.2: Dispositivo SRVt.

Por otro lado, tenemos los sistemas de re-identificación. A día de hoy no existen produc-
tos que garanticen el funcionamiento de un sistema tan complejo como este. Sin embargo,
podemos encontrar similares (Figura 2.3)

Figura 2.3: Dispositivo de identificación.

Este tipo de dispositivos son muy utilizados en las empresas. Su funcionamiento es muy
7

simple, guardamos una serie de imágenes de la cara de un empleado para que la máquina
aprenda a reconocerla. Esto es de mucha utilidad en los ambientes controlados, es decir, en
los entornos en los que sabes quien entra y quién sale. Concretamente, este dispositivo tiene
las siguientes características: realiza el reconocimiento facial con una terminal WiFi, además
de realizar una detección de la mascarilla y de la temperatura de la persona en cuestión. Se
compone de una cámara dual HDR, que permite detectar el nivel de iluminación ambiental
y ajustar de forma automática la intensidad de los LEDs infrarrojos. Todo esto es posible
debido al algoritmo patentado que posee basado en inteligencia artificial.
Si hablamos sobre la detección de síntomas, como lo puede ser la fiebre, existen dispositivos
específicos para llevar a cabo esta tarea. Un ejemplo puede ser el FeverTIR de la empresa
VisionTIR (FeverTIR – Sistema de detección de fiebre (s.f.)). Este sistema es capaz de medir
la temperatura con una precisión de ± 0.3 ºC y una resolución de 384x288. Proporcionan un
software para el control y la configuración de temperaturas, alarmas y funciones de grabación,
además pueden realizar análisis de datos medidos. Además, este sistema integra una cámara
termográfica junto a una cámara Full HD, de esta manera permitimos la identificación de la
persona. Por otro lado, tenemos otras muchas características a tener en cuenta:

• Alta sensibilidad: 60mK

• Alta precisión: ± 0.5 ºC en funcionamiento normal y ± 0.3 ºC si se incluye otro


dispositivo de calibración.

• Rango de temperatura especial para la cara.

A día de hoy existen muchos sistemas similares a los mencionados anteriormente, ya que se
ha convertido en una necesidad y aunque son muy efectivos, tienen sus desventajas también.
Podemos observar como los sistemas similares al SMoCAI ® no son capaces de darnos datos
de manera individual, por lo que no pueden informarnos sobre el estado de las personas
que residen en esa zona interior. Además, hay factores que afectan a las mediciones que
estos sensores nos proporcionan, como poner la calefacción o el aire acondicionado. Por eso,
nuestro sistema es más efectivo en ese aspecto, ya que al tomar la temperatura directamente
de las personas, las condiciones externas no influyen de manera tan agresiva como con el
sistema. Lo mismo ocurre con la detección en aguas residuales, no es posible obtener datos
de manera individual, además, el proceso supera las 48 horas, tiempo suficiente para que
las personas contagiadas en cuestión propaguen el virus. Cabe mencionar también, que City
Sentinel actúa a posteriori, mientras que nuestro sistema pretende actuar antes de que se
produzcan los contagios. Por otro lado, el sensor SRVt funciona de manera similar, ya que
nos proporciona datos de temperatura corporal, sin embargo, no realiza un seguimiento de
cada persona, únicamente realiza una medición puntual en el instante actual, a diferencia de
este trabajo, que se pretende llevar a cabo ese seguimiento individual. En cuanto al sistema
de identificación, es muy útil poseer uno de estos dispositivos, sin embargo, no nos sirve en
absoluto en entornos no controlados, es decir, donde la gente entra y sale constantemente,
como por ejemplo las tiendas, ya que no sería viable que todas y cada una de las personas
tuvieran que pararse delante de ella para registrar las imágenes. El tipo de sistema que se
necesita es uno capaz de registrar de forma automática las imágenes en el momento en el que la
persona aparezca en el campo de visión. Finalmente, llegamos al sistema de medición de fiebre
8 Estado del Arte.

(a) Dispositivo. (b) Con trípode.

(c) Software.

Figura 2.4: FeverTIR.

(FeverTIR), que, de entre todos los demás ejemplos, es el que más se asemeja a los objetivos
de este trabajo. Sin embargo, tiene un gran inconveniente, y es la falta de escalabilidad, es
decir, es un sistema cerrado que nos permite detectar la fiebre, pero si en algún momento
quisiéramos añadir más funcionalidades, no podríamos. Y esto hoy en día supone un gran
problema, ya que es inviable tener un dispositivo para cada efecto que queramos detectar. Así
pues, este proyecto se puede aplicar a otros efectos de manera muy sencilla, no es necesario
utilizar otro dispositivo o software diferente. De todos estos inconvenientes nace la necesidad
de crear el sistema que se pretende con este proyecto.
3 Objetivos y motivación
Como se ha visto anteriormente en el Capítulo 1, la motivación última de este trabajo es
la de crear un sistema automático que ayude a prevenir focos de contagio en lugares donde
se produzca gran afluencia de gente como aeropuertos, supermercados o centros comerciales.
Asimismo, también en lugares que, por sus características, resulte crítico realizar este control.
Por ejemplo, en hospitales, residencias de ancianos o centros de día.

Así pues, los objetos concretos de este trabajo son los siguientes:

• Desarrollo de un método de calibración para cámaras termográficas

• Implementación de un pipeline de reidentificacion

• Desarrollo de un método para trasladar detecciones en RGB a datos termográficos

• Desarrollo de un sistema de cálculo automático de temperatura corporal

• Validación e implementación con dispositivos reales

9
4 Metodología
En este capítulo hablaremos de cada uno de los componentes y herramientas que son usados
por nuestro sistema.

4.1 Cámara Termográfica: FLIR E75.


En primer lugar necesitamos una cámara termográfica, por lo que se decidió usar una de la
marca FLIR, en concreto el modelo E75 (Figura 4.1). Esto nos permite captar varios rangos
de temperatura gracias a la cámara de infrarrojos que posee: de -20 a 120, de 0 a 650 y de
300 a 1000 (ºC). Lo que sumado a su campo de visión de 160º nos facilita la tarea.

Figura 4.1: FLIR E75.

Este modelo presenta varios métodos de captación de la imagen. De forma que podemos
ver la imagen digital tal cual, la imagen basada en los infrarrojos y una combinación de las
dos anteriores.

• Cámara IR: La imagen se mostrará con colores rojos en las zonas más calientes (blanco
la máxima) y con tonos azules (negro la mínima) donde capte temperaturas bajas. La
resolución es de 320x240 (76.800 píxeles). De esta forma obtendremos las imágenes
como en la figura anterior (Figura 4.1). Sin embargo, esa es la visualización en la propia
cámara, que mapea el rango de los valores obtenidos a unos tonos de color según la
temperatura. La realidad es una imagen en la escala de grises, donde el valor del píxel
es la temperatura captada (Figura 4.2).

11
12 Metodología

Figura 4.2: Imagen térmica.

• Cámara digital: Básicamente capta la imagen real, sin información de temperaturas.


Esta tiene una resolución de 640x480.

• Imagen MSX®: Se trata de una combinación de la imagen de color con la de IR.

• Imagen Picture-in-Picture: Se muestra la imagen digital con un recuadro super-


puesto con la imagen térmica en el centro.

Este modelo de cámara tiene una precisión de ± 2ºC o ± 2% de la lectura para temperaturas
ambiente de 15 a 35 ºC y objetos a menos de 0ºC. Además, tiene varias funciones extra, como
por ejemplo: realizar grabaciones de voz para que se acoplen a las capturas realizadas, que
nos puede servir para hacer aclaraciones y creación de alarmas para que nos avise cuando
algún punto de la imagen supere cierto umbral de temperatura.
Dadas todas estas funciones, este tipo de cámaras son muy útiles a nivel industrial ya que se
puede evitar el sobrecalentamiento de cualquier componente. Además, se utilizan mucho para
realizar estudios de temperatura sobre un sistema para averiguar cuáles son las zonas más
castigadas o que más sufren debido al calor o el frío. Un ejemplo claro sería en la impresión
3D, ya que en estas impresoras, queremos que el extrusor se encuentre a la temperatura
indicada (normalmente entre 180 y 220 ºC), pero no queremos que se transmita al resto
de los componentes. Así pues, podríamos comprobar el correcto funcionamiento de nuestra
máquina.
Como podemos ver en la Figura 4.3, tenemos en tonos azules las zonas más frías y en rojo las
calientes. La zona A se trata del extrusor de la máquina, que tiene que estar a temperaturas
elevadas para derretir el material. Pero a la parte de arriba no tiene que llegar todo ese calor,
ya que sería perjudicial para el resto de componentes. La zona B es la capa de la pieza que
acaba de hacer la impresora, por lo que se trata de plástico caliente todavía, a diferencia de
la parte de bajo, que está en azul porque el plástico ya se ha enfriado. Por último, vemos la
zona C, que se trata de la base sobre la que imprimimos la pieza, que se tiene que calentar
4.2. Cámara RGB 13

Figura 4.3: Imagen térmica de una impresora 3D.

también. Se aprecia cómo se va dispersando el calor de la base conforme se aleja del centro
de ella.

4.2 Cámara RGB


Para la parte de la vigilancia utilizamos una cámara inalámbrica, concretamente una
Reolink RLC-410W (Figura 4.4). Se trata de una cámara de alta resolución (2560x1440),
con WiFi de banda dual (2,4 y 5 GHz) y dos antenas para disminuir la pérdida de red.
Esta cámara tiene muchas prestaciones, ya que puede detectar cualquier peligro potencial y
enviar un correo al dueño a su dispositivo móvil en tiempo real. También contamos con una
aplicación para acceder de forma remota a toda la información que la cámara esté captando
(imagen, audio, etc). Está dotada con 18 luces LED y radiación infrarroja para realizar una
visión nocturna de hasta 30 metros y un ángulo de visión de 80º de calidad.

Figura 4.4: Cámara Reolink RLC-410W.


14 Metodología

De esta forma podemos estar seguros de que la información que recibimos de la cámara es
fiable y es un buen dispositivo para integrarlo en nuestro sistema.

4.3 Servicios web


Nuestro sistema se compone de distintos dispositivos, por lo que tenemos que comunicarlos.
En este caso haremos uso de los servicios web, que se basan en una tecnología que utiliza un
conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.

Figura 4.5: Esquema de los servicios web.

Según el esquema de la Figura 4.5, podemos diferenciar los siguientes elementos:

• Client: Es el que realiza la petición al maestro.

• Web Service: Es el maestro de la comunicación, el cual recive las peticiones y genera


las respuestas.

• Request Message: La petición que se envía del cliente al maestro.

• Response Message: Respuesta que el maestro le envía al cliente tras aber procesado
su petición.

• Internet: Red a través de la cual se realiza la comunicación.

En este proyecto se utiliza este tipo de comunicación debido a la imposibilidad de juntar en


un mismo sistema operativo el funcionamiento de la cámara termográfica con el que usamos
para realizar el procesamiento de las imágenes. Además, es un protocolo que nos permite
acceder a él mediante distintos lenguajes de programación diferentes, como es nuestro caso.

4.4 Deteccion de caras


En el mundo de la visión artificial, un problema clásico ha sido la detección de caras en las
imágenes. A día de hoy existen muchos métodos capaces de realizar esta tarea. Nosotros vamos
a hacer uso de DLIB (Facial landmarks with dlib, OpenCV, and Python (s.f.)), una librería
que contiene herramientas de machine learning que implementan diferentes algoritmos para
realizar esta tarea. Se ha elegido esta librería porque es la que mejor balance entre precisión
y tiempo de cálculo provee actualmente.
4.4. Deteccion de caras 15

Como bien hemos dicho, existen muchas formas de afrontar este problema. Pero en este
caso para la detección de caras utilizaremos un modelo ya entrenado de HOG + SVM.
• Histogram of Oriented Gradients (HOG): HOG es un descriptor de caracterís-
ticas de la imagen (Histogram of Oriented Gradients explained using OpenCV (s.f.)).
Su tamaño es el de la imagen multiplicado por 3 (Canales RGB). Lo que realiza este
método es el cálculo de los gradientes de la imagen, horizontales y verticales. Esto se
puede realizar filtrando la imagen con los kernels correspondientes (Figura 4.6). Pero
existen otros métodos para obtener los gradientes.
Una vez los hemos calculado, dividimos la imagen en celdas más pequeñas. En cada
una de ellas obtendremos la magnitud y la dirección del gradiente. Así, recorremos
todas las celdas para crear en cada una un histograma. Finalmente, crearemos un único
histograma al concatenar todos los de las celdas.

Figura 4.6: Kernels para la obtención de los gradientes horizontales y verticales.

• SVM: Una vez tenemos los descriptores, necesitamos un método para diferenciar unos
de otros, para ello empleamos un clasificador para obtener la salida final.
Nuestro clasificador se basa en un SVM (Support Vector Machines) (Máquinas de vec-
tores de soporte (s.f.)). Es muy típico para problemas de clasificación, como es este caso.
Es un método de aprendizaje supervisado, es decir, para entrenar utilizamos muestras
etiquetadas (aunque en este caso ya estaba entrenado). Así pues, SVM busca un hi-
perplano que separe de forma óptima una clase de otra. En el concepto de “separación
óptima” es donde reside la característica fundamental de los SVM y es el siguiente:
Busca el hiperplano que tenga la máxima distancia con los puntos que más cerca estén
de él mismo, eliminando así la posibilidad de que existan infinitos planos posibles. Así
pues, cada lado que separe el hiperplano será una clase diferente.
Según este ejemplo (Figura 4.7), vemos que el hiperplano en cuestión es una recta (1D).
Tenemos 3 diferentes:
– H1: Una aproximación a la separación del algoritmo. Sin embargo no es correcta,
ya que deberían estar todos los puntos negros en un lado de la recta y los blancos
en el otro.
– H2: El algoritmo ha entrenado lo suficiente como para separar correctamente las
clases, sin embargo, no es el hiperplano óptimo.
16 Metodología

Figura 4.7: Ejemplo SVM 2D.

– H3: Esta recta que separa las dos clases de forma óptima para este ejemplo.

De esta forma, aprendemos a separar entre caras y no-caras en base a los descriptores
HOG y utilizando un clasificador SVM.

4.5 Detección de landmarks


La detección de landmarks (puntos característicos) de la cara es el paso siguiente al pro-
blema comentado anteriormente. En este caso, ya tenemos la cara localizada en la imagen,
pero ahora queremos calcular puntos clave en ella, por ejemplo: los ojos, cejas, etc.
Para ello emplearemos de nuevo DLIB, ya que nos ofrece el pipeline completo de detección
de caras y landmarks. Concretamente, nos proporciona puntos de las siguientes zonas (Figura
4.8):

• Boca

• Cejas

• Ojos

• Nariz

• Mandíbula

Para lograr esta detección, se entrena una red neuronal con un dataset que consta de
imágenes de caras y las coordenadas x-y de cada landmark.
4.6. Reidentificación 17

Figura 4.8: Numeración de los landmarks.

4.6 Reidentificación
La reidentificación es un problema muy complejo. Partimos de que no tenemos imágenes
previas de ninguna persona, pero aun así debemos de ser capaces de distinguir entre unas
y otras. Además de poder diferenciarlas dentro de una misma imagen, tenemos que saber
separarlas en distintos instantes de tiempo. Es decir, si aparece la persona ”A”, esa persona
va a ser siempre la persona ”A”, por lo que si desaparece de la cámara y pasado un tiempo
vuelve a ser detectado, debe seguir siendo la persona ”A”.
Para realizar este proyecto haremos uso de una red existente (Figura 4.9) en base a una
investigación realizada por la Universidad de Maryland (Ejaz Ahmed,Michael Jones and Tim
K. Marks Mitsubishi Electric Research Labs. (s.f.)).
Se comparan dos imágenes. En las capas iniciales se extraen las características de forma
individual. Sin embargo, en las más profundas, se relacionan las dos fotos. Entrando en de-
talle, vemos como la primera capa es un Max pooling, por lo que reducimos el tamaño de
la imagen, la segunda capa es igual, así que se reduce otra vez el tamaño. En cuanto a la
capa ”Cross-Input Neighborhood Differences”, comparamos las dos imágenes pasadas
por las capas de pooling. Se crea una matriz (K) que almacena la diferencia entre las imá-
genes. Comparamos la primera matriz, que es una copia de la imagen, con otra matriz, que
se compone del píxel que se compara y los píxeles que le rodean (neighborhood). Después,
tenemos una capa ”Fully connected”, por lo que se relacionan todas las neuronas de esa capa
con la siguiente. Finalmente, obtenemos una salida en base a la función SoftMax. De esta
forma, podemos comparar dos imágenes de personas y la salida será si es la misma perso-
na, o no. Este algoritmo ha sido creado a partir de uno ya existente, pero poco funcional
(Person-Re-identification (s.f.)).

4.7 Calibración de la cámara


En primer lugar, vamos a diferenciar los parámetros intrínsecos y extrínsecos:
18 Metodología

Figura 4.9: Arquitectura de la red.

• Intrínsecos: Son parámetros específicos para cada cámara, como la distancia focal,
centros ópticos, etc. Se suelen expresar en forma de una matriz 3x3 llamada K:

 
f x s Cx
K =  0 f y Cy  (4.1)
0 0 1

– fx: Componente X de la distancia focal de la cámara.


– fy: Componente Y de la distancia focal de la cámara.
– Cx: Componente X del centro de la imagen.
– Cy: Componente Y del centro de la imagen.
– s: Este valor suele ser 0, pero representa el skew. Es el ángulo que toma el eje Y
en el sistema de coordenadas de la imagen cuando no es perpendicular al eje X.
• Extrínsecos: Estos parámetros definen la posición de la cámara en el sistema de re-
ferencia del mundo real. A diferencia de los anteriores, estos no son fijos, sino que
dependen de la posición y la rotación de la cámara. Se representa mediante una matriz
de rotación y otra de desplazamiento.
Una vez definidos los parámetros, vamos a explicar el procedimiento que se ha de llevar a
cabo para calibrar nuestra cámara:
1. Capturar imágenes de un elemento de calibración: Para comenzar, debemos
disponer de muchas imágenes de un patrón, como, por ejemplo, un tablero de ajedrez.
4.7. Calibración de la cámara 19

Se usa este porque hace más fácil el cálculo de los puntos sobre el plano, debido a las
intersecciones de este.

Figura 4.10: Imágenes del elemento de calibración

2. Computar puntos 2D: Se computan estos puntos obtenidos sobre el plano de la


imagen. Como no se puede calcular la pose 3D respecto a la cámara de estos puntos
2D, lo que hacemos es establecerlos a mano, ya que el patrón es conocido. Así pues
sobre esos puntos 2D (x,y), creamos puntos 3D (X,Y,Z), donde Z será 0, ya que están
sobre el patrón y la diferencia entre puntos consecutivos será lo que mida el lado del
cuadrado del tablero (Figura 4.11.

Figura 4.11: Asignación de puntos 3D sobre los 2D.

3. Minimizar el error: Una vez obtenidas las correspondencias, se ejecuta un algoritmo


que reduce el error de los parámetros obtenidos y nos devuelve la matriz K, la de
rotación R, la de desplazamiento t y coeficientes de distorsión.
Este algoritmo es el LMA (Levenberg-Marquardt). Provee una solución numérica al
problema de minimización de una función que suele ser no lineal. Se basa en una técnica
20 Metodología

iterativa que encuentra un mínimo local de la función que se expresa como la suma de los
cuadrados de funciones no lineales, las cuales, tienen ciertos parámetros de inicialización.
Así pues, se utiliza la matriz Hessiana (matriz cuadrada de segundas derivadas parciales)
y se realiza un ajuste sobre esta. Como la matriz Hessiana depende del Jacobiano,
utilizaremos un parámetro que modifica el Jacobiano para indicar su tendencia, es
decir, si queremos que avance dando saltos más grandes, o que vaya más lento.

Finalmente, almacenamos en un archivo XML los parámetros intrínsecos y extrínsecos de


la cámara. Normalmente, no es necesario almacenar los valores extrínsecos, pero como en
nuestro caso queremos obtener la posición de una cámara respecto a la otra, lo haremos.
Este es un método estándar para calibrar cámaras RGB normales, por lo que nos sirve
para nuestra cámara REOLINK. Sin embargo, nosotros tenemos también una termográfica,
por lo que se tenía que aplicar otros pipelines.
A continuación, vamos a explicar los diferentes métodos que existen para calibrar cámaras
termográficas.

Patrón con LEDS


Al tratarse de una cámara termográfica, no somos capaces de distinguir entre el blanco y
negro de las casillas del patrón de ajedrez, por lo que no podemos utilizar el método anterior.
Sin embargo, podemos colocar una serie de LEDs sobre el patrón (Yannick Zoetgnande,
Alain-Jérôme Fougères, Geoffroy Cormier, Jean-Louis Dillenseger. (s.f.)). Para que de esta
forma, al encenderlos, el calor que emiten sea detectado por la cámara y tener así una serie
de puntos distinguibles, como podemos ver en la imagen siguiente. De esta forma tendríamos
el equivalente a las esquinas del patrón de ajedrez del pipeline de calibración tradicional.

Figura 4.12: Patrón con LEDs.

Patrón con cables


Otra manera de crear esas intersecciones es colocar cables para que, al enchufarlos, la
transmisión de corriente sea detectada en forma de calor por la cámara (Ruixuan Liu, Hengrui
4.7. Calibración de la cámara 21

Zhang, Sebastian Scherer. (s.f.)). De forma que obtendríamos una imagen como la siguiente:

Figura 4.13: Patrón con cables.

Patrón de metal

Dadas las propiedades de conducción de la temperatura en los metales, este método se basa
en crear un patrón hecho de metal y espuma, para después someterlo a temperaturas muy
bajas y que el metal la retenga, mientras que la espuma no (Ruixuan Liu, Hengrui Zhang,
Sebastian Scherer. (s.f.)). Por lo que a través de la cámara obtendríamos la siguiente salida:

Figura 4.14: Patrón de metal y espuma.


22 Metodología

Patrón calentado
El anterior método nos hizo pensar en la forma de hacer que la cámara detectara un patrón
de ajedrez normal en base a la temperatura. Dado que los colores oscuros absorben más calor
que los claros, comprobamos que al dejar al sol el patrón o bien colocándolo delante de una
fuente de calor como una estufa, se observaba la forma del patrón claramente (Figura 4.15).

Figura 4.15: Calentamiento del patrón en el que se distinguen claramente las casillas del patrón de
ajedrez.

En el Capítulo 6 se comentará las ventajas y desventajas de utilizar estos distintos métodos


según las pruebas realizadas.
5 ThermITA: Aplicación de seguimiento
inteligente en el espectro termográfico
El objetivo de este trabajo es el de desarrollar un sistema de medición de temperatura fiable
y automático en vistas a ser usado para la detección temprana de enfermedades compatibles
con fiebre. A este sistema se le ha llamado ”ThermITA” (Thermographic Intelligent Tracking
Application). En este capítulo vamos a explicar cómo utilizamos los elementos y herramientas
explicadas anteriormente y de qué forma los integramos para lograr el funcionamiento de todo
el sistema.

5.1 Aproximación
El funcionamiento completo de este proyecto se muestra de forma estructural en la Figura
5.1, separando cada uno de los procesos más determinantes para su funcionamiento. Como se
puede apreciar en dicha figura, disponemos de diversos elementos, los cuales componen este
proyecto. Además, el bucle de control sigue el orden establecido por las flechas.

Figura 5.1: Diagrama de funcionamiento de ThermITA.

En primer lugar, captamos el entorno con la cámara termográfica FLIR y la RGB Reolink.
Obtenemos sus imágenes correspondientes mediante la librería Atlas para la cámara FLIR

23
24 ThermITA: Aplicación de seguimiento inteligente en el espectro termográfico

y por protocolo http para la Reolink, todo con el lenguaje de programación C#. Una vez
disponemos de ellas, se envían al servicio web que se ha creado. De manera simultánea, en
otro programa en python, accedemos a ese servicio web para obtener las imágenes y poder
llevar a cabo la detección de las caras y los landmarks con DLIB. Después, segmentamos el ojo,
que es donde más fiable es la medida de la temperatura. Una vez segmentado, enviamos las
coordenadas al servicio web para que el programa de la cámara termográfica pueda calcular
la temperatura y realizar un seguimiento dependiendo de la persona que sea, gracias a la
reidentificación.
Así pues, disponemos de dos programas principales que se ejecutan al mismo tiempo, uno
en lenguaje Python y otro en C#. El primero es el que crea el servicio web y tras recibir las
imágenes, realiza el procesado para detectar las caras y los landmarks. El segundo es el que
crea el interfaz de la aplicación y recibe las imágenes de las dos cámaras para así enviarlas al
servicio web.

5.2 Estructura de las cámaras


En este proyecto es determinante dónde y cómo colocar las cámaras, por lo que gracias a
un trípode se creó la estructura mostrada en la Figura 5.2.

Figura 5.2: Trípode con las dos cámaras.

Como vemos, se ha colocado una barra de metal sobre el trípode para poder poner las dos
cámaras sobre la misma estructura. Además, para encajar la cámara RGB se creó un soporte
mediante impresión 3D. De esta forma, tenemos la estructura que contiene las dos cámaras
de nuestro proyecto. Es muy importante que estén cerca la una de la otra, para que lo que
capten las dos sea lo más similar posible. Igualmente es crítico que las cámaras permanezcan
fijas una con respecto de la otra para que no afecte al proceso de calibración. Colocadas de
5.3. Cámara termográfica FLIR E75 25

forma correcta se puede decir que únicamente se diferencian en el eje paralelo a la barra de
metal, lo que facilita los cálculos posteriores.

5.3 Cámara termográfica FLIR E75


En cuanto a la cámara termográfica, la única forma de poder acceder a ella mediante
programación fue gracias a la librería Atlas. Sin embargo, esta librería únicamente se podía
usar en el sistema operativo Windows. Esta librería se compone de diferentes clases para
acceder a la cámara, conectarse, recibir imágenes, cambiar parámetros, y otras funcionalidades
relacionadas.
En primer lugar, debemos tener la cámara encendida y conectada a través de un USB al
ordenador. Después de eso, mediante la librería Discovery de Atlas, podemos especificar el
protocolo por el cual tenemos conectada la cámara, por lo que al establecer ”USB”, realiza
la conexión. Además de eso, hay que indicar también el modo de imagen que queremos según
la lista indicada en el Capítulo 4.1. Una vez conectada, podemos cambiar parámetros como
el zoom, la paleta de colores de representación de la imagen, etc.
Una vez obtenemos la imagen termográfica, podemos acceder a dos formatos diferentes
dentro de ella. Por un lado, tenemos la imagen con los datos de la temperatura y por otro,
la imagen que se puede mostrar al usuario a través de la interfaz.

5.4 Cámara RGB REOLINK


La cámara RGB no necesita estar conectada por cable al ordenador, ya que podemos
acceder a las imágenes por protocolos como http o rtsp. Para configurar estas cámaras hay
que seguir una serie de pasos:

• Conectar a corriente: La cámara viene con una serie de cables, uno de ellos es el de
alimentación, por lo que lo conectamos en un lugar que nos permita colocarla cerca de
la cámara térmica.

• Conectar al router: Para configurarla la primera vez es necesario conectar mediante


un cable ethernet la cámara al router, para que este le asigne una IP.

• Aplicación REOLINK: Mediante la aplicación móvil o de ordenador, podemos ac-


ceder a las cámaras conectadas a la misma red, por lo que al conectar el ordenador
(WiFi o por cable) al router, nos saldrá disponible la cámara. Una vez en nuestra lista,
podemos generar una contraseña y un nombre para el dispositivo.

• Conexión WiFi: La aplicación de REOLINK nos permite conectar las cámaras a redes
WiFi, por lo que simplemente hay que entrar en la pestaña de ”Ajustes de Red” y nos
conectamos.

Una vez conectada, podemos acceder a la información mediante los siguientes protocolos:

• rtsp://(user name):(password)@(IP address):554


26 ThermITA: Aplicación de seguimiento inteligente en el espectro termográfico

• http://(ip address)/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=(any com-


bination ofnumbers and letters)&user=(user name)&password=(user pass-
word)

Mediante cualquiera de estos dos protocolos podíamos acceder a las imágenes de la cámara.
RTSP significa Protocolo de transmisión en tiempo real y HTTP Protocolo de transferencia
de hipertexto. Finalmente nos decantamos por el HTTP ya que el RTSP producía demasiados
fallos de conexión. Con este protocolo lo que obtenemos es un frame, es decir, cada vez que
llamemos a ese URL, obtendremos una imagen diferente.

5.5 Calibración
Una vez tenemos las dos imágenes (termográfica y RGB), debemos establecer la relación
entre una y otra. Es decir, calcular la transformación en base a qué puntos de la primera
imagen corresponden a los de la segunda. Para eso se llevaron a cabo varios métodos como
los comentados anteriormente. Sin embargo, como veremos en el Capítulo 6, la mayoría no
obtuvieron buenos resultados. Finalmente, se optó por estimar las correspondencias colocando
las cámaras a la misma altura y separadas poca distancia la una de la otra. De esta forma
el offset que se crea es sobre un solo eje y se puede estimar de forma empírica en píxeles. Es
decir, el punto con las coordenadas (x,y) de la cámara 1, corresponderá a las coordenadas
(x+offset,y) de la cámara 2.

5.6 Detección de la cara en el espacio termográfico


Llegados a este punto, tenemos ya las dos imágenes y la relación de la transformación entre
ellas. Así pues, enviamos las dos imágenes al servicio web para que el otro programa pueda
acceder a ellas y realizar la detección correspondiente.

Figura 5.3: Diagrama de flujo de la detección de caras y landmarks.

En el esquema (Figura 5.3) se explica de forma simple cómo detectamos las caras en las
dos imágenes, pero a continuación vamos a explicar en detalle cada bloque.
En primer lugar, los bloques de ”Detectar” significan que pasamos por el detector de DLIB
las dos imágenes, la RGB y la térmica. Ya que, aunque la representación de la imagen ter-
mográfica sea distinta de las imágenes normales, somos capaces de detectar en este espectro.
5.6. Detección de la cara en el espacio termográfico 27

Una vez salimos de esos dos bloques, tenemos una cantidad de Bounding Box para la imagen
RGB y otra para la térmica. Aunque se trate de la misma imagen, al tratarse de dos espa-
cios de color distintos, puede ser que en una de ellas no detecte alguna cara, o haya algún
falso positivo. Como la imagen RGB es más fiable, tomaremos el número de detecciones de
esta imagen como el correcto. Así que comparamos los Bounding Box obtenidos en las dos
imágenes para saber cuál corresponde a cada uno. Para realizar esta comparación, utilizamos
la fórmula de la distancia euclídea entre dos puntos (Ecuación 5.1). De esta forma, compa-
rando las esquinas superiores de cada Bounding Box con la del resto, podremos averiguar las
correspondencias. Esto se debe a que al estar colocadas las cámaras tan cerca la una de la
otra, las dos imágenes son prácticamente la misma.

d= (Xp2 − Xp1 )2 + (Yp2 − Yp1 )2 (5.1)

Si tenemos la misma cantidad de Bounding Box en las dos imágenes, cada detección tendrá
su correspondencia. Sin embargo, esto no siempre pasa. En el caso de que tengamos más en
una o en otra, no tendremos en cuenta las detecciones que no tengan correspondencia. Es
decir, si en la imagen RGB tenemos la detección ”A” y en la térmica tenemos ”A’” y ”B”.
Al hacer la comparación obtendremos que la ”A” de la RGB corresponde a la ”A’” de la
térmica. La ”B” al no tener correspondencia, no será representada.
En cuanto a la detección de las caras en la imagen termográfica, el Bounding Box resultante
es bastante fiable. Sin embargo, los landmarks se posicionan en zonas que no corresponden,
por lo que tenemos mucho error. Por lo que en el bloque final traspasamos las coordenadas de
los landmarks de la imagen RGB a los de la térmica de manera muy sencilla. Calculamos la
posición de cada landmark respecto al Bounding Box en la imagen RGB, después colocamos
esos puntos en la imagen térmica, pero respecto a su Bounding Box. Aclaramos de nuevo que
esto se puede realizar debido a que conocemos la transformación que separa ambas cámaras.
Finalmente, obtenemos el resultado mostrado en la Figura 5.4.

Figura 5.4: Bounding Box y landmarks en las imágenes RGB y térmica.

Ahora que ya tenemos los landmarks sobre la imagen térmica, podemos segmentar el ojo
para enviar las coordenadas del Bounding Box al otro programa a través del servicio web,
para que mediante la librería Atlas podamos acceder a la información de la temperatura en
esas coordenadas.
28 ThermITA: Aplicación de seguimiento inteligente en el espectro termográfico

Figura 5.5: Bounding Box verde en el centro del ojo.

5.7 Reidentificación
En cuanto a la reidentificación, debemos generar las identidades para las personas que van
apareciendo en el campo de visión de las cámaras, por eso utilizamos una red neuronal para
que compare las personas que vemos en el frame actual, con las personas que hemos visto
anteriormente. Una vez tenemos los Bounding Box de las personas detectadas con DLIB, se los
introducimos a la red para que genere una ID para cada uno de los recuadros. Posteriormente,
se envía al servicio web de igual forma que con las coordenadas del ojo.
El funcionamiento es el siguiente:

• Vector de imágenes: Recibimos un vector que contiene los Bounding Box proporcio-
nados por DLIB.

• Creación de base de datos: Cuando empieza el programa no tenemos información


previa de las personas que hemos visto, por lo que la primera detección se guarda
automáticamente con la ID 0 y guardamos su imagen. Cuando obtenemos las siguientes
detecciones, tenemos que compararlas con el resto de IDs que hemos visto anteriormente,
por lo que recorremos las carpetas de personas que hemos visto anteriormente y las
comparamos con la red neuronal. De esta forma obtenemos un porcentaje de pertenencia
o no a cada una de las IDs generadas anteriormente.

• Resultado: El resultado que obtenemos pueden ser 2 opciones. La primera, no es nadie


de los anteriores, por lo que creamos una nueva ID o, coincide con alguna anterior, por
lo que guardamos la foto en esa carpeta. La forma que tenemos de decidir si es alguien
que hemos visto previamente o no es el siguiente:

R1(i, j) = Comparation[i, j] (5.2)


5.8. Servicio Web 29

Establecemos i como el Bounding Box actual que queremos comparar con el resto y
j como la ID con la que comparamos. De esta forma obtenemos un porcentaje, si ese
resultado (R1) supera cierto umbral, diremos que la imagen i, corresponde al ID de la
imagen j. Pero como debemos compararla con todas y cada una de las IDs de las que
disponemos, seguimos la siguiente fórmula, teniendo como N el número de carpetas
actuales (IDs detectadas en total):


N −1
Resultado = R1(i, j)/(N − 1) (5.3)
j=0

Si el resultado es muy bajo, quiere decir que en la mayoría de comparaciones ha obtenido


poco porcentaje de pertenencia. Lo que significa que es una ID nueva. Sin embargo, si el
resultado final es mayor que cierto umbral, es porque en alguna comparación ha obtenido
un gran porcentaje de pertenencia, por lo que en este caso añadimos la imagen a la ID
existente.

5.8 Servicio Web


El servicio web está creado en lenguaje Python. Se basa en un programa que crea un
servidor gracias a la librería Flask. Este servidor se compone de varias funciones o métodos
a los cuales podemos acceder desde equipos remotos. A estos métodos se les especifica una
ruta y una serie de opciones de acceso. A continuación, vamos a explicar en qué consiste cada
uno de ellos.

• GET: Si la forma en la que accedemos al método es con esta opción, lo que hará el
método es devolvernos un dato.

• POST: En esta opción podemos enviar nosotros datos al método (también puede
devolverlos)

• HEAD: Es igual que el GET, pero sin recibir una respuesta del servidor.

• PUT: Reemplazamos las representaciones del destino con contenido cargado previa-
mente.

• DELETE: Elimina las representaciones actuales.

En nuestro caso haremos uso únicamente de las opciones GET y POST. Ya que el resto son
para otro tipo de aplicaciones. Un mismo método puede tener varias opciones, es decir, una
función puede ser GET y POST, sin embargo, depende de como se acceda a él, se ejecutará
un segmento del código u otro.
A la hora de la implementación, utilizamos las opciones POST para enviar datos al servicio
web. Estos datos son las imágenes RGB y termográficas. También cuando hemos calculado
las coordenadas del ojo y se las enviamos. Por otro lado el GET lo usamos para acceder
a los datos que el otro programa ha enviado (imágenes y coordenadas). Es decir, desde un
programa hacemos POST de las imágenes, desde el otro programa hacemos GET de ellas,
30 ThermITA: Aplicación de seguimiento inteligente en el espectro termográfico

calculamos las coordenadas del ojo y hacemos POST. Finalmente, en el primer programa
hacemos GET de esas coordenadas y calculamos la temperatura.
Sin embargo, no podemos enviar al servidor cualquier tipo de dato. Debemos utilizar
”JSON”, por lo que en primer lugar crearemos un diccionario y acto seguido lo transfor-
maremos en ese tipo de dato. Un diccionario se compone de 3 elementos: El nombre de la
variable (D), el nombre del atributo y el valor de este.
D = { ”Atributo”:Valor_Del_Atributo ,”Atributo_2”: Valor_Del_Atributo_2
}
De esta forma, el diccionario se compondrá de un atributo llamado ”Imagen” y su valor
será el valor de cada uno de los píxeles de las imágenes. Mientras que el otro programa enviará
un diccionario compuesto por las coordenadas y las IDs.

5.9 Interfaz del usuario


A continuación, vamos a explicar la interfaz de usuario que se ha creado para esta aplicación
(Figura 5.6). Para empezar, se ha creado en el entorno de Visual Studio y en C#, al igual
que el resto del programa de las cámaras.

Figura 5.6: Interfaz.

Vemos como en la primera columna de elementos tenemos la imagen de la cámara RGB


y la térmica. En la columna de en medio una serie de botones y displays y finalmente otra
columna de las dos imágenes.
El primer botón ”Stream” hace que al pulsarlo, podamos ver las imágenes de la primera
columna en tiempo real. El segundo ”Capture” realiza una captura de la imagen actual y
la guarda, además, la muestra en la tercera columna. El tercer y cuarto botón se usan para
calibrar la cámara RGB, ya que de serie la imagen está distorsionada. Con el botón ”Cali-
brate” realizamos el pipeline explicado en el capítulo anterior y guardamos los resultados. De
5.9. Interfaz del usuario 31

esta forma, solo tenemos que realizar la calibración una vez, porque el botón ”Load params”
carga esos parámetros de calibración. Finalmente, el botón ”ThermITA” (Thermographic In-
telligent Tracking Application) es el que pone a funcionar todo el sistema y empieza a enviar
al servicio web las imágenes que adquiere.
6 Experimentación
En este capítulo vamos a entrar en detalle de cuándo funciona mejor o peor nuestro sistema
y qué elementos intervienen en él.

6.1 Detección de caras y landmarks


Como hemos comentado anteriormente, la obtención de los landmarks sobre la imagen
termográfica se obtienen a partir de los de la imagen RGB, por lo que si falla en la primera,
en la segunda repetiremos esos fallos también.

(a) Detección RGB. (b) Landmarks traspasados.

Figura 6.1: Posicionamiento de landmarks.

Si prestamos atención a la Figura 6.1, a priori podemos ver cómo los landmarks en la
imagen térmica están colocados de igual manera que en la RGB. Pero si nos fijamos en la
Figura 6.2, que es la misma que la Figura 6.1b, vemos cómo el recuadro rojo es donde se han
posicionado los landmarks y el negro es donde realmente está. Esto conlleva una acumulación
del error en la toma de temperaturas.
En la Figura 6.3 podemos observar los casos donde DLIB funciona mejor y peor. Como
podemos ver en la Figura 6.3a, la persona está totalmente de frente y obtenemos los landmarks
situados perfectamente, el error es mínimo. Este sería el caso ideal, pero desafortunadamente
esta situación no ocurre siempre, por lo que eventualmente se obtienen imágenes como las
de las Figuras 6.3b y 6.3c. En la primera de estas vemos como la cara está en una posición
cercana al perfil de la persona y los landmarks que pertenecen al lado oculto de la cara están
”en el aire”. Sin embargo, el Bounding Box está situado de forma correcta, abarcando toda la
cara. Lo que no sucede en la última imagen, ya que, al estar girada la cabeza, es más difícil
recuadrar y por eso también falla en colocar muchos de los landmarks. Otra limitación tiene
que ver con la sincronización de las cámaras. Puesto que cada una funciona a un framerate

33
34 Experimentación

Figura 6.2: Error de posicionamiento.

diferente, existen pequeñas diferencias entre las imágenes de color y termográficas debido al
movimiento de la persona.

(a) Posición 1. (b) Posición 2. (c) Posición 3.

Figura 6.3: Precisión según la posición de la cara.

A la luz de los experimentos se puede concluir que esta aproximación es válida para trans-
ferir los landmarks detectados en una imagen RGB a la correspondiente imagen termográfica
teniendo en cuenta los fallos eventuales de detección o de sincronización.

6.2 Reidentificación
En cuanto al sistema de reidentificación, tenemos que definir un umbral para poder di-
ferenciar cuándo es una persona que ya hemos visto antes y cuándo es una persona nueva,
como ya explicamos con la fórmula del capítulo anterior (Ecuación 5.3). Este umbral es el que
definirá el comportamiento de nuestro sistema, ya que si el umbral es muy bajo, tenderá a
crear más identidades, mientras que si es muy alto, tenderá a agrupar varias IDs en una sola.
Esto se debe a que utilizamos los porcentajes de predicción que nos indica que no pertenece
a ninguna clase. Es decir, al comparar dos imágenes, obtenemos el porcentaje de que las dos
personas sean la misma, y el de que no lo sean. Entre los dos deben sumar el 100%. Así que
recopilamos todos los porcentajes falsos y si superan el umbral quiere decir que ha obtenido
sobretodo falso en todas las comparaciones, por lo que será una persona nueva.
A continuación, vamos a mostrar una serie de resultados en función del umbral definido.
6.2. Reidentificación 35

Para ello, utilizaremos un vídeo en el que vayan apareciendo personas y veremos el resultado
de la red. Este resultado es ver cuántas IDs ha creado y que imágenes ha introducido en esas
carpetas. En el vídeo en cuestión aparecen las personas mostradas en la Figura6.4.

(a) Persona 1. (b) Persona 2. (c) Persona 3. (d) Persona 4.

Figura 6.4: Personas que aparecen a lo largo del vídeo.

Tenemos por un lado una persona que va de amarillo y negro que aparece de un lateral de la
escena y avanza hasta el contrario. Después, una persona que aparece en coche y desaparece
rápidamente. Luego, aparece otra persona de blanco y azul que realiza la trayectoria contraria
a la primera. Finalmente, aparecen dos personas juntas que avanzan como la primera persona.
Este último caso no podemos separar las dos personas que aparecen juntas ya que se ocluyen
prácticamente por completo durante el tiempo que permanecen delante de la cámara, por lo
que lo tomamos como una única persona.

• Umbral = 65.0: Al final del vídeo se han generado 8 identidades. A continuación


vamos a profundizar sobre cada una de ellas:

(a) ID 1. (b) ID 2. (c) ID 3. (d) ID 4.

(e) ID 5. (f) ID 6. (g) ID 7. (h) ID 8.

Figura 6.5: Identidades generadas a lo largo del vídeo.


36 Experimentación

Tras ejecutar el sistema obtenemos una carpeta con una serie de imágenes que corres-
ponden a dicha persona. La primera detección es la que se usa para compararse con
el resto de personas que van apareciendo, por lo que es muy importante conseguir una
imagen significativa, pero por desgracia, esta no lo es (Figura 6.5a), ya que solo se ve la
mitad de la persona en cuestión. A raíz de esto, el resto de las imágenes de su carpeta
están recortadas. Esto se debe a oclusiones, ya que si un coche pasa por delante va
tapando poco a poco a la persona y las detecciones varían y puede clasificar de forma
errónea.
En esta situación (Figura 6.5b) podemos ver como, en base a la primera detección
significativa de la persona, hemos generado toda una base de datos de esta. Pese a que
puede haber algún falso positivo, porque el sistema no es perfecto, la amplia mayoría
de imágenes de este ID corresponden a la misma persona. En el caso ideal, las imágenes
de la anterior carpeta, estarían dentro de esta también.
En el siguiente caso (Figura 6.5c) tenemos una parte de la persona que aparece muy
brevemente y además, lo hace tapado por un cartel, por lo que únicamente aparece
durante un par de frames. Sin embargo, el sistema es capaz de saber que esa parte
pertenece a una persona y que no coincide con ninguna de las anteriores. En la base de
datos generada podemos observar que acierta, ya que no habíamos visto anteriormente
a ninguna persona con esa vestimenta.
En esta ocasión (6.5d) tenemos una persona que cruza en coche la cámara. Realmente,
hay dos personas en el coche, pero la que está detrás no aparece lo suficiente como para
detectarla. Sin embargo, en las carpetas de imágenes vemos como clasifica perfectamente
a esta persona. Además, vemos como solo se muestra la parte superior del torso, debido
a la oclusión de la puerta. Esto podría ser un inconveniente, pero el sistema lo solventa
fácilmente.
En el caso de la Figura 6.5e tenemos una misma carpeta con distintas personas, el
sistema se ha equivocado claramente y ha mezclado dos personas. Esto se debe a que la
imagen de la primera detección (la que usamos para comparar con el resto) no es muy
significativa, ya que es una persona cortada por la mitad. Debido a esto, el sistema se
equivoca en esta ocasión.
En la siguiente situación (Figura 6.5f), el sistema ha generado un ID para un único fra-
me, esto se debe a que en un momento puntual, esta persona que vemos que claramente
pertenece a la ID 2 que hemos mostrado anteriormente, no se correspondía con ninguna.
Este error se podría haber solucionado cambiando el umbral de la clasificación, ya que
si se reduce, el sistema tiende a juntar más las IDs.
En base al siguiente resultado (Figura 6.5g), vemos cómo vuelve a acertar en la clasi-
ficación de una persona. No introduce ninguna otra ID, pero vemos como esta persona
es la que se corresponde con la detectada en la ID 3. Sin embargo, en esa detección,
únicamente mostrábamos los pantalones, por lo que era muy complicado clasificar estas
dos muestras como la misma.
Finalmente, el sistema nos ha generado otra nueva ID con una única imagen (Figura
6.5h). Este caso es muy complicado también, porque vemos como se solapan dos per-
sonas en el mismo bounding box y esto hace que el sistema no pueda reconocer a esas
6.2. Reidentificación 37

dos personas de forma correcta.


Viendo esta serie de resultados podemos observar cómo el sistema de reidentificación
funciona correctamente. Sin embargo, comete errores de generar identidades cuando
debería introducirlas dentro de una existente y en ocasiones introduce personas en IDs
que debería colocarlas en otra.

• Umbral = 70.0: En comparación con la prueba anterior, subiendo el umbral obligamos


a que las comparaciones obtengan un porcentaje de no similitud mayor para poder
clasificar a esa persona como una nueva. Por lo que se solucionarán problemas de que
se generen identidades con una o dos imágenes únicamente, ya que las introducirá con
la que realmente le corresponde. Sin embargo, también tenderá a juntar identidades que
no se corresponden:

Figura 6.6: ID 1.

Como podemos comprobar (Figura 6.6), esta ID generada ha agrupado distintas imáge-
nes que no se corresponden entre sí. Esto antes no sucedía ya que tendía a separar más
las correspondencias. Además, tenemos el mismo problema de que la primera imagen
es una que esta cortada, lo que dificulta realizar clasificaciones más precisas.

Figura 6.7: ID 2.

En esta ID vemos cómo agrupa todas las apariciones de esta persona (Figura 6.7),
38 Experimentación

evitando que se dispersen las imágenes en otras carpetas de identidades.

Figura 6.8: ID 3.

Volvemos a ver cómo ha agrupado en una misma identidad distintas personas (Figura
6.8). Esta serie de resultados nos dan indicios de que el umbral no debe ser tan alto.
Hay que buscar el valor para el que ni nos genere demasiadas identidades repetidas, ni
que agrupe distintas en una sola.

Figura 6.9: ID 4.

Aquí podemos ver cómo ha generado correctamente la ID para esta persona (Figura
6.9), incluso a la hora de verse ocluida por la persona de amarillo, es capaz de clasificar
de forma correcta a esta persona a lo largo del tiempo.
6.3. Calibraciones 39

Figura 6.10: ID 5.

Por último, tenemos otra ID donde aparece, en mayor parte, una única persona (Figura
6.10). Volvemos a tener la situación de oclusión, que termina de solucionar correcta-
mente el sistema.

Hemos podido comprobar como en ambos casos ha podido diferenciar la mayoría de las
identidades. Sin embargo, en el primer caso ha generado demasiadas identidades con pocas
imágenes y en el otro caso ha mezclado alguna de las personas en la misma ID. Aun así,
repetimos, la persona 1 (Figura 6.4a) y la persona 3 (Figura 6.4c) en la mayoría de casos ha
sido clasificada correctamente. El resto de personas es más complicado, debido a las oclusiones
que sufren las 2.

6.3 Calibraciones
En este apartado vamos a explicar las distintas pruebas que se han realizado para lograr
la calibración entre las dos cámaras de las que disponíamos, la RGB y la térmica. Como bien
hemos explicado anteriormente, la calibración nos permite saber tanto los parámetros internos
de las cámaras como los externos. Normalmente los externos no tienen mucha importancia,
ya que cambian una vez mueves la cámara. Pero en este caso, los necesitamos para saber
la relación de transformación entre las dos cámaras y poder saber la correspondencia entre
píxeles. Es decir, necesitamos saber, dado las coordenadas (X,Y) de un píxel en la cámara
RGB, cuales son las equivalentes (X’,Y’) en la térmica.
Si las dos cámaras se trataran del mismo tipo, podríamos realizar una calibración en estéreo.
Sin embargo, las cámaras no coinciden en nada, además de que no captan los mismos datos,
por lo que se le añade un escalón de dificultad más.
A continuación, vamos a explicar los distintos métodos empleados para realizar la calibra-
ción de las dos cámaras.
Se llegó a la conclusión que debíamos utilizar el mismo patrón para ambas cámaras, pero
como explicamos en la Sección 4.7, para la cámara térmica se necesitan patrones especiales.
40 Experimentación

Por lo que la primera solución factible a la que se llegó fue calentar un patrón de ajedrez
normal debido a que el color negro del patrón absorbería más calor que el blanco y podríamos
distinguir las celdas y realizar la calibración. De esta forma tendríamos unas imágenes como
las de la Figura 5.6. Sin embargo, el calor que se le aplicaba al patrón no estaba distribuido
uniformemente, por lo que podemos observar como hay un foco de luz en las imágenes. Esto
nos lleva a fallos de precisión a la hora de aplicar el pipeline de calibración, ya que hay
esquinas que no están muy bien definidas debido a la disipación del calor en las zonas más
alejadas al foco que lo emitía. En la figura siguiente se aprecia mejor este efecto:

Figura 6.11: Patrón irradiado con calor.

Podemos ver lo que estábamos comentando: en la parte inferior se distinguen mejor los
cuadrados, mientras que en la parte superior no. Con este tipo de imágenes el pipeline no es
capaz de diferenciar las intersecciones entre los cuadrados y no podemos realizar ningún tipo
de calibración.
Finalmente, se logró conseguir una serie de imágenes cuya distribución de calor fuera unifor-
me y se procedió a calibrar las cámaras. El algoritmo necesita aproximadamente 10 imágenes,
por lo que las primeras imágenes en la cámara térmica estaban bien definidas, pero con el
tiempo el calor se disipaba y las últimas eran incapaces de ser detectadas por el algoritmo.
Por lo que cada 3 imágenes que se captaban, se debía parar para volver a calentar el patrón
y después seguir capturando.
De esta forma se pudieron obtener una serie de parámetros internos y externos de las dos
cámaras. En cuanto a los de la cámara RGB eran bastante precisos y se parecían a los de las
especificaciones. Sin embargo, en la térmica no era así. Los puntos que debían estar sobre las
intersecciones acumulaban demasiado error. Aun así, se comprobó el resultado mediante las
matrices de transformación de la siguiente manera:
Dado un punto P (x,y,z) sobre el mundo real. La transformación que existe entre la primera
cámara y ese punto se basa en una matriz de rotación R y una de traslación Tr. Definimos
así la matriz de transformación que se compone de esas dos matrices T. Teniendo en cuenta
que tenemos 3 sistemas de referencia: el de la cámara RGB, el del punto del mundo real, que
6.3. Calibraciones 41

en este caso es el patrón de ajedrez y el sistema de la cámara térmica.


El problema viene dado por la necesidad de saber la transformación entre las dos cámaras,
pero aplicando las propiedades de las matrices podemos obtener esa relación de la siguiente
manera:

TAC = TAB ∗ TBC (6.1)


Lo que quiere decir la expresión anterior es que, si sabemos la relación entre el sistema de
referencia A y B, y sabemos la de B y C, podemos obtener la relación directa de A a C.
Así que si prestamos atención a este esquema:

Figura 6.12: Patrón irradiado con calor.

Mediante las calibraciones de las cámaras obtenemos tanto TAB como TCB . Por lo que
podemos obtener TAC si en la Fórmula 6.1 cambiamos TBC por la inversa de la matriz de
transformación entre la cámara térmica y el punto ((TCB )−1 ).
Una vez despejado TAC lo que tenemos es una matriz con los valores de rotación y traslación
de la cámara RGB respecto a la térmica. Y aunque los valores de rotación sí coincidían, los
de traslación no. Por lo que este método no nos proporcionó los resultados esperados. Esto
se puede deber al error que hay a la hora de realizar la calibración de la cámara térmica.
Por otro lado, se intentó usar el otro modo de la cámara térmica que mezcla la información
térmica y la de color. Este modo es el ya explicado en la Sección 4.1 (MSX).
Como podemos observar, las esquinas se ven perfectamente y podríamos hacer una mejor
calibración. Sin embargo, debido a la mezcla de los modos IR y de color, los parámetros
cambian, como por ejemplo, la resolución, el campo de visión, etc.
Estos cambios hacen que no sirva de nada calibrarla de esta forma, ya que a nosotros nos
interesa el uso del modo IR y conseguir los parámetros en ese modo.
Finalmente, se optó por colocar la cámaras de forma que las dos estuvieran a la misma
altura y profundidad, por lo que únicamente tendríamos desplazamiento en un solo eje. Por
lo que de forma manual se establece un offset de diferencia entre las dos cámaras y a la hora
de trasladar los puntos de una cámara a la otra, únicamente debemos aplicar ese offset y ya
tendríamos la correspondencia en la segunda cámara.
42 Experimentación

Figura 6.13: Modo MSX.

6.4 Precisión temperatura

Para comprobar lo fiable que es la medida final de temperatura obtenida a través del
programa se realizó la siguiente prueba:

Se estableció un punto constante en la cámara termográfica. La cámara nos proporcionará


la temperatura en dicho punto, por lo que colocamos a una persona delante y hacemos que
el ojo de esta persona coincida con el punto establecido. De esta forma, se nos mostrará
por pantalla la temperatura del ojo de la persona en cuestión. Una vez colocada la persona,
debemos grabar un vídeo de los valores que nos va mostrando la cámara para compararlos
con los que vamos a obtener de la aplicación.

Pasado un tiempo desde el inicio de la aplicación o cuando hayamos recogido suficientes


muestras, detenemos la ejecución y procedemos a comprobar los valores de temperatura. En
primer lugar, vemos cuántos valores de temperatura hemos obtenido en la aplicación, esta-
blecido como ”N ”. Por lo que para hacer una comparación aproximada, debemos obtener el
número de frames que tiene el vídeo que hemos hecho a la pantalla de la cámara termográfica,
establecido como ”F ”. Apuntaremos los valores del vídeo de la cámara cada ”F /N ” frames.
De esta forma obtendremos ”N ” medidas de la aplicación y de la cámara.
6.4. Precisión temperatura 43

Figura 6.14: Comparación de la medición directa de la cámara con la de la aplicación.

En la Figura 6.14 tenemos representadas dos funciones, la roja es el muestreo de las tem-
peraturas obtenidas mediante la aplicación y la azul la obtenida mediante el vídeo de la
propia cámara. Si obtenemos la media de cada una de las funciones obtenemos los siguientes
resultados:

• Roja (Aplicación): 34.81 ºC

• Azul (Cámara): 34.72 ºC

En esta prueba hemos utilizado 30 muestras. Podemos ver cómo el resultado obtenido es
muy similar, por lo que podemos decir que la aplicación es muy precisa, y proporciona valores
acorde con un apuntado manual de la cámara. Sin embargo, podemos ver dos picos en los que
obtenemos 33.8 ºC en la función de la aplicación. Esto se debe a un fallo de la colocación de
los landmarks ya que, como se ha visto, existen situaciones en las que el posicionamiento de
los puntos de los ojos sobre los que realizamos la medida no están bien situados. Esto lleva
a la aplicación a medir en zonas donde realmente no está el ojo y en este caso ha tomado la
medida de un objeto del fondo.
Finalmente, podemos ver el sistema completo en funcionamiento en este enlace.
7 Conclusiones
Finalmente, como conclusión, podemos decir que hemos logrado los objetivos propuestos,
ya que hemos logrado implantar un sistema de reidentificación y de detección de altas tem-
peraturas basado en la coordinación de una cámara térmica y una RGB para poder prevenir
a tiempo síntomas como la fiebre en espacios muy transitados por personas y poder generar
un seguimiento de todas ellas.
En cuanto a las motivaciones para realizar este proyecto, gracias a él, se han podido desa-
rrollar conocimientos y habilidades de las cuales, antes no se tenían. Gracias a que todos los
programas se han realizado en el lenguaje C#, hemos podido conseguir lo que mencionába-
mos, ya que antes de realizar este proyecto, no lo había utilizado nunca. Además, el hecho
de trabajar con imágenes que no son de color, como lo son las termográficas, ha ampliado el
espectro de conocimiento en cuanto al tratamiento de imágenes.
Por lo que, finalmente, podemos decir que el propósito del proyecto, que reúne los objetivos
propuestos y las motivaciones del trabajo, se ha llevado a cabo con éxito.

45
8 Trabajos futuros
Por último, vamos a exponer una serie de trabajos que se podrían llevar a cabo en un
futuro a modo de ampliación. Como ya se ha mencionado, este sistema se utiliza para detectar
temperaturas altas en ciertas zonas donde coloquemos las cámaras, pero sería muy interesante
integrar estos dispositivos en un robot móvil, para explorar zonas donde una cámara estática
no alcanza.
Por último también se planteó poder integrar todo el sistema en un micro-controlador, pero
debido al software tan limitado de la cámara térmica se abandonó esa idea. Por eso mismo
sería un camino muy interesante para retomar, ya que facilitaría mucho la implementación
de dicho sistema.

47
Bibliografía
City sentinel | covid-19. (s.f.). Descargado de https://www.suez.es/es-es/seccion
-comercial/nuestras-referencias/referencias-comerciales/city-sentinel

Ejaz Ahmed,Michael Jones and Tim K. Marks Mitsubishi Electric Research Labs.
(s.f.). An improved deep learning architecture for person re-identification. Descar-
gado de https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/
Ahmed_An_Improved_Deep_2015_CVPR_paper.pdf

Facial landmarks with dlib, opencv, and python. (s.f.). Descargado de https://www
.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/

Fevertir – sistema de detección de fiebre. (s.f.). Descargado de https://


visiontir.com/es/productos/fevertir-sistema-de-deteccion-de-fiebre/
?descarga=catalogo_FeverTIR_ES

Histogram of oriented gradients explained using opencv. (s.f.). Descargado de https://


learnopencv.com/histogram-of-oriented-gradients/

Máquinas de vectores de soporte. (s.f.). Descargado de https://es.wikipedia.org/wiki/


Máquinas_de_vectores_de_soporte

Person-re-identification. (s.f.). Descargado de https://github.com/Nirvan101/Person-Re


-identification

Ruixuan Liu, Hengrui Zhang, Sebastian Scherer. (s.f.). Multiple methods of geometric calibra-
tion of thermal camera and a method of extracting thermal calibration feature points. Descar-
gado de https://henryzh47.github.io/Thermal-Camera-Calibration/#pdf-version

Sensor óptico – control temperatura. (s.f.). Descargado de https://solucionescovid.aicor


.es/producto/sensor-termico/

Sistema de monitorizaciÓn de calidad de aire (smocai®). (s.f.). Descarga-


do de https://www.airelimpio.com/calidad-aire/sistema-de-monitorizacion-de
-calidad-de-aire-smocai/

Yannick Zoetgnande, Alain-Jérôme Fougères, Geoffroy Cormier, Jean-Louis Dillenseger. (s.f.).


Robust low resolution thermal stereo camera calibration. Descargado de https://hal
.archives-ouvertes.fr/hal-01919897/document

49

También podría gustarte