Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
Escuela
Politécnica
Superior
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
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
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
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
• Método de reidentificacion.
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.)).
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:
5
6 Estado del Arte.
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.
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)
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:
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.
(c) Software.
(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:
9
4 Metodología
En este capítulo hablaremos de cada uno de los componentes y herramientas que son usados
por nuestro sistema.
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
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
también. Se aprecia cómo se va dispersando el calor de la base conforme se aleja del centro
de ella.
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.
• Response Message: Respuesta que el maestro le envía al cliente tras aber procesado
su petición.
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.
• 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
– 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.
• 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
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.)).
• 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
Se usa este porque hace más fácil el cálculo de los puntos sobre el plano, debido a las
intersecciones de este.
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.
Zhang, Sebastian Scherer. (s.f.)). De forma que obtendríamos una imagen como la siguiente:
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:
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.
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.
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.
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.
• 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.
• 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:
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.
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.
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
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.
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
• 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.
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.
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.
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
diferente, existen pequeñas diferencias entre las imágenes de color y termográficas debido al
movimiento de la persona.
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.
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.
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
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
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:
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
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
Para comprobar lo fiable que es la medida final de temperatura obtenida a través del
programa se realizó la siguiente prueba:
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:
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/
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
49