top of page

RPPG-COVID19

Blog  del proyecto ganador del Hackathon Minciencias 2020

1. Investigación

2. Técnica Propuesta

3. Códigos

Los desarrollos recientes en informática y procesamiento de imágenes digitales han permitido la extracción de las pulsaciones cardíacas, el nivel de saturación arterial y la frecuencia de la respiración de un individuo a partir de cambios de píxeles en imágenes de video grabadas de superficies de la piel humana. Este método se denomina fotopletismografía remota (rPPG) y se puede lograr con cámaras de nivel de consumidor (por ejemplo, una cámara web o una cámara móvil).

RPPG, también conocido como imágenes PPG (iPPG o PPGI) o PPG sin contacto (ncPPG), se basa en el mismo principio que PPG. La diferencia es que rPPG registra de forma remota los cambios en la perfusión sanguínea. Básicamente consiste en grabaciones de cámaras digitales de variaciones en la luz reflejada del tejido de la piel. Su primera aplicación se describe en Wieringa, Mastik y van der Steen (2005). Usando una cámara remota y diodos emisores de luz de rojo a infrarrojo, encontraron variaciones pulsátiles en la luminancia a la misma velocidad que el pulso del corazón a través de los marcos de imagen grabados de la superficie de las muñecas de la piel humana. Un par de estudios siguieron rápidamente, replicando y mejorando el método con aparatos personalizados relativamente complejos (Cennini, Arguel, Akşit y van Leest, 2010) y cámaras sensibles al infrarrojo (Humphreys, Ward y Markham, 2007; Zheng , Hu, Chouliaras y Summers, 2008). Solo después de que Verkruysse, Svaasand y Nelson (2008) demostraron que se pueden lograr mediciones precisas de la frecuencia cardíaca con una cámara asequible a nivel del consumidor y condiciones de luz ambiental "normales", el rPPG se hizo más popular. Francamente, es un fenómeno atractivo que las pulsaciones del corazón en la piel no son visibles para el ojo humano, pero pueden grabarse con una simple cámara web. Desde este hallazgo, numerosos estudios han probado el rPPG en condiciones de luz ambiental, por ejemplo, mostrando que el rPPG en combinación con el seguimiento facial permite mediciones de frecuencia cardíaca de varias personas al mismo tiempo con distorsiones de movimiento mínimas (Poh, McDuff y Picard, 2010; Wang, Stuijk y De Haan, 2015).

   a) Un proyecto de medición de pulso de código abierto.

 

Notas importantes:
 

- Se utilizó una cámara web a nivel de consumidor, porque este hardware está disponible para la mayoría de las personas.

 

- El software debe ser aplicable a cualquier tipo de superficie de la piel en cualquier parte del cuerpo. Hasta donde sabemos, la precisión de rPPG con cámaras de nivel de consumidor, de las cuales definimos las especificaciones máximas como resolución de 1080p y 60 cuadros por segundo, solo se ha informado para grabaciones de video de caras.

-Las personas pueden tener frecuencias cardíacas variables durante las grabaciones, especialmente cuando están en un estado de excitación debido a experiencias de estrés u otras demandas psicológicas y físicas. Debido a que la variabilidad puede afectar la precisión de rPPG, sus efectos deben tenerse en cuenta.

-Cuando los participantes alcanzan frecuencias cardíacas superiores a aproximadamente 100 latidos por minuto (BPM), la frecuencia respiratoria puede aumentar a un nivel similar a la frecuencia cardíaca en reposo. Cuando no se dispone de conocimiento previo sobre el estado físico del individuo, puede ser difícil disociar las señales de frecuencia cardíaca de las señales de respiración, especialmente cuando la frecuencia respiratoria domina la variación de la señal o cuando las variaciones pulsátiles están muy distorsionadas por el ruido. Los estudios a menudo informan la presencia de señales de respiración dentro de las señales de frecuencia cardíaca registradas, pero hasta ahora no se ha proporcionado una solución simple y accesible para filtrar la señal y seleccionar la frecuencia cardíaca en lugar de la respiración para el análisis.

Metodo: 

Los videos se grabaron en una habitación con luz ambiental de fondo mediante tubos fluorescentes TL. Los participantes se sentaron en una silla frente a una cámara (Fig. 1d).

 

 

 

 

 

 

 

Se usaron las configuraciones predeterminadas para brillo, contraste, saturación, nitidez y balance de blancos, y se desactivaron todas las correcciones dinámicas automatizadas. La exposición, un parámetro que establece la duración durante la cual la luz es capturada por el CCD de la cámara web por fotograma, se estableció en - 10.La cámara se colocó a 20 cm de las partes del cuerpo. Una caja de luz, colocada a la misma distancia, iluminó las partes del cuerpo con 1.370 cd / m2. Estos ajustes aseguraron condiciones de iluminación adecuadas y evitaron regiones saturadas en los cuadros de imagen. Los valores de píxeles faciales fueron 208, 150 y 136, promediados en todos los píxeles faciales, luego promediados en fotogramas de video y luego promediados en todos los videos, por canal RGB, respectivamente.

 

Para las mediciones de frecuencia cardíaca de referencia se usó un dispositivo de pinza de dedo estándar de oximetría de pulso (contacto PPG), el CMS50E fabricado por Contec (Qinhuangdao, China). El oxímetro de pulso estaba conectado al dedo índice derecho y conectado a una computadora de escritorio a través de un cable USB. El software MATLAB (MathWorks, Natick, MA, EE. UU.) Hecho a medida grabó los pulsos de frecuencia cardíaca del oxímetro en paralelo con las grabaciones de video. El oxímetro de pulso no estaba conectado durante el ejercicio.

Software 

Análisis

 

El rPPG basado en cámara web se basa en una serie de pasos de procesamiento de imágenes para extraer la pulsación de sangre de los videos grabados y determinar la frecuencia cardíaca (FC). Estos pasos consistieron en (i) recorte espaciotemporal de videos, (ii) selección de piel facial, (iii) señales de promediación y filtrado, (iv) análisis de componentes independientes, (v) transformación rápida de Fourier, (vi) espectros de potencia de filtrado y ( vii) rechazo de la señal de respiración / movimiento. A continuación, proporcionamos información detallada por paso de procesamiento individual.

Selección espacio-temporal

Las fluctuaciones de reflectancia inducidas por el latido cardíaco solo se pueden detectar en la superficie de la piel. Por lo tanto, cada video se recortó en una región fija de interés, eliminando objetos de fondo irrelevantes. Las caras se detectaron automáticamente con un detector de objetos en cascada de la caja de herramientas del sistema de visión por computadora de MATLAB. Los videos también se recortaron a tiempo al eliminar los primeros y últimos 3 s, porque la primera parte del video a menudo contenía un aumento en la sensibilidad a la luz de la cámara y la segunda parte tendía a contener más movimientos corporales, ya que los participantes anticipaban el final de la grabación.

 

El fondo, la ropa, los dientes, el cabello y otras partes irrelevantes se filtraron de cada marco con un procedimiento de selección del color de la piel. Nuestro script ofrece métodos para detectar la piel: (1) selección automática basada en grupos de colores, y (2) selección manual de rangos de tono y saturación. La selección automática consistió en un enfoque de agrupamiento de k-medias (distancia euclidiana al cuadrado, cuatro grupos, máximo de 100 iteraciones) en las dimensiones ayb del espacio de color CIE LAB dividió el área dentro de un cuadro delimitador alrededor de la cara en grupos de colores separados. El grupo de colores con la mayoría de los píxeles en el centro de la cara se seleccionó como los píxeles de la máscara. La selección manual consistió en la selección de píxeles que se encontraban dentro de un rango de tonos de piel y saturaciones. Este rango se estableció para el primer cuadro y luego se usó para los siguientes cuadros de cada video. Los rangos de matiz y saturación fueron establecidos manualmente por el investigador K.v.d.K. ajustando el tamaño y el ángulo de una cuña de selección dentro del mapa de color de saturación de tono (Fig. 2a). Por ejemplo, vea la Fig. 2b para los píxeles seleccionados del primer cuadro de una cara con matices y niveles de saturación que cayeron dentro de la cuña.

Promedio y filtrado de señales El promedio de todos los píxeles seleccionados se calculó por cuadro de video y canal de color RGB. El valor de píxel promedio resultante en función del tiempo era ruidoso (línea verde en la Fig. 3a) y estaba sujeto a variaciones considerables de baja frecuencia. Para eliminar cualquier influencia del movimiento y otros factores que inducen cambios de baja frecuencia en la señal, se aplicó un filtro Butterworth de sexto orden de fase cero con un ajuste de frecuencia de corte de 0.04 Hz a la señal sin procesar, para calcular la señal de baja frecuencia ( línea azul en la figura 3a). Esta señal se calculó por canal RGB y se resta de la señal sin procesar. Las señales resultantes fluctuaron alrededor de cero y no contenían fluctuaciones de baja frecuencia (Fig. 3b).

Análisis de componentes independientes. Las señales filtradas de cada canal de color RGB se utilizaron como entrada para un análisis de componentes independiente (ICA; Comon, 1994), para extraer la señal de componente más prominente presente en todos los canales de color (es decir, muy probablemente la frecuencia cardíaca), aumentando así la relación señal-ruido. Realizar el ICA es útil para mejorar la extracción de la señal de frecuencia cardíaca (Holton, Mannapperuma, Lesniewski y Thomas, 2013). El ICA buscó tres componentes, utilizando un máximo de 2.000 iteraciones, con activación detallada y estabilización activada.

 

 

 

Fast Fourier Transformation (FFT)

 

Las señales componentes fueron transformadas rápidamente por Fourier. Una FFT convierte las señales componentes en una estimación de espectros de potencia (magnitud cuadrática) que indica qué frecuencias de onda sinusoidal oscilatoria se representaron con mayor potencia en cada señal componente (Fig. 3c). Un pico alto de potencia a una frecuencia determinada significa que el componente estaba compuesto principalmente por una onda sinusoidal a esa frecuencia específica. Esta frecuencia es en la mayoría de los casos un reflejo de la frecuencia cardíaca detectada. Por conveniencia, representamos el poder en función de la frecuencia cardíaca en lugar de la frecuencia. Estudios anteriores habían aplicado un análisis de frecuencia de tiempo para mostrar cómo cambia el espectro de frecuencia en función del tiempo de grabación (Hu, Peris, Echiadis, Zheng y Shi, 2009), pero la transformación de Fourier de corto tiempo no proporcionó una señal clara de frecuencia cardíaca con los datos actuales, probablemente debido a las grabaciones relativamente cortas y la baja relación señal / ruido en muchos videos.

Espectros de potencia filtrante La frecuencia cardíaca tiende a disminuir hacia una frecuencia de descanso basal después del ejercicio. Esto hace que el pico de potencia que representa la frecuencia cardíaca en los espectros de frecuencia se difumine o aparezca como pequeños picos individuales cerca de un rango de frecuencias de frecuencia cardíaca. Para poder seleccionar el pico de potencia correcto a la frecuencia cardíaca media correspondiente, y no un pico de potencia irrelevante, los espectros de potencia se filtraron con un filtro de frecuencia Butterworth (LFF) de paso bajo de tercer orden de fase cero con un ajuste de frecuencia de corte de 0.2 Hz (vea las líneas punteadas en las Fig. 3c yd).

 

 

Respiración / rechazo de la señal de movimiento La frecuencia cardíaca en el pico de potencia más alto entre los componentes se seleccionó como la frecuencia cardíaca rPPG final. Sin embargo, se observó que a menudo dos picos de potencia relativamente altos eran visibles en los espectros de frecuencia de los componentes después del ejercicio. A menudo, un pico de alta potencia estaba presente por debajo de una frecuencia de 90 latidos por minuto (BPM), y un segundo pico de menor potencia estaba por encima de 90 BPM (ver, por ejemplo, Fig. 3d). En tales casos, el pico alto en la frecuencia más baja probablemente fue causado por la respiración o el movimiento corporal, mientras que el pico más pequeño en la frecuencia más alta fue causado por las pulsaciones del corazón (Hu et al., 2009). Para extraer de forma autónoma la señal de frecuencia cardíaca en lugar de otras señales irrelevantes, implementamos una regla de selección de pico de potencia personalizada que consta de dos declaraciones IF / THEN / OTHERWISE: (i) Si había más de dos picos en un solo espectro de potencia, incluido uno pico grande por debajo y un pico más pequeño por encima de la tasa de corte de 90 BPM, y (ii) si el pico más bajo no era menor al 70% de la altura del pico más alto, seleccione la frecuencia del pico más bajo como la frecuencia cardíaca. De lo contrario, seleccione la frecuencia del pico de potencia más alto para la frecuencia cardíaca correspondiente. Nos referimos a esta regla de selección como rechazo de la respiración (Resp). Se exploraron múltiples tasas de corte y mínimas diferencias de pico, y los parámetros descritos anteriormente dieron como resultado la mejor correspondencia entre las frecuencias cardíacas de referencia basadas en oximetría de pulso

 

 

 

 

 

 

 

Conclusión (resumen).

rPPG fue altamente preciso para grabaciones de video de la cara, las grabaciones de la muñeca disminuyeron la precisión a tal grado que rPPG solo pudo detectar si una persona había realizado ejercicio moderado versus ligero o ningún ejercicio. El RPPG dirigido a la pantorrilla no era confiable. Una explicación de las diferencias en la precisión de rPPG en las partes del cuerpo es que las caras tienen una gran cantidad de redes microvasculares en las capas superficiales de la piel (Spalteholz, Spanner, Nederveen y Crawford, 1967). Las muñecas también tienen muchas venas visibles en la superficie de la piel, pero las pantorrillas carecen de tales características anatómicas.

Conclusión personal:  Este paper es muy importante porque explica los fundamentos de la técnica, también permite descargar los algorítmos y hacer desarrollo sobre los mismos. Sin embargo se limita a pulso y mediciones del corazón, debe ser usado como referencia y como guía para desarrollo de los algoritmos-interfaz del sistema.

        b) Un proyecto de RPPG para la medición de respiración con aval de Phillips (no hay código disponible)

 

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5175543/

El monitoreo continuo de la respiración es esencial para la detección temprana de enfermedades críticas. Los métodos actuales requieren sensores conectados al cuerpo y / o no son resistentes al movimiento del sujeto. Se han presentado soluciones alternativas basadas en cámaras utilizando vectores de movimiento y fotopletismografía remota. En este trabajo, presentamos un método basado en cámara sin contacto para detectar la respiración, que puede funcionar tanto en condiciones de luz visible como oscura al detectar las diferencias de color de la piel inducidas por la respiración. Hacemos uso de la estrecha similitud entre las variaciones de color de la piel causadas por los latidos del corazón y las causadas por la respiración, lo que lleva a una calidad de señal mucho mejor en comparación con los enfoques de un solo canal. Esencialmente, proponemos encontrar la combinación lineal de canales de color que suprima las distorsiones mejor en una banda de frecuencia, incluida la frecuencia del pulso, y posteriormente utilizamos esta misma combinación lineal para extraer la señal respiratoria en una banda de frecuencia más baja. Los resultados de la evaluación obtenidos de grabaciones en sujetos sanos que realizan escenarios desafiantes, incluido el movimiento, muestran que la respiración se puede detectar con precisión en todo el rango de frecuencias respiratorias, con un coeficiente de correlación de 0,96 en luz visible y 0,98 en infrarrojo, en comparación con 0,86 con el algoritmo de referencia sin contacto de mejor rendimiento. Además, la evaluación en un conjunto de videos grabados en una Unidad de Cuidados Intensivos Neonatales (UCIN) muestra que esta técnica parece prometedora como una alternativa futura a los sensores de contacto actuales que muestran un coeficiente de correlación de 0.87.

 

 

 

Metodo

Rastreo

 

La primera etapa del marco es la etapa de seguimiento, donde se rastrean los movimientos de la Región de interés (ROI) seleccionada, indicada con el cuadro delimitador. Para esta tarea, se emplea el rastreador Kanade-Lucas-Tomasi (KLT) basado en características [25] debido a su precisión, simplicidad y suposiciones limitadas sobre la imagen subyacente. Los puntos característicos (indicados con cruces blancas) se calculan utilizando el algoritmo de valor propio mínimo [26]. La transformación geométrica de los puntos característicos entre dos cuadros consecutivos se calcula y aplica al cuadro delimitador. Este cuadro delimitador se muestra posteriormente en subregiones de igual tamaño. Para cada cuadro, se calcula el promedio espacial de los píxeles dentro del ROI y de cada subregión, lo que permite descartar subregiones distorsionadas y poco confiables, como se discutirá más adelante.

(las ecuaciones e información detallada se encuentran en:

La razón práctica para usar la cara es que es una de las pocas partes del cuerpo humano que generalmente no está cubierta por la ropa y, por lo tanto, la piel está directamente expuesta a la cámara para medir las variaciones del volumen sanguíneo. Una razón fisiológica para usar la cara es que las variaciones del volumen sanguíneo se pueden medir bien desde esta ubicación anatómica. En su estudio, Tur et al. [27] reveló una colección de regiones (dedo, palma, cara, oreja) para las cuales la perfusión cutánea es mucho más alta que todas las demás ubicaciones. Otra razón fisiológica es que los RIIV están bien presentes en las señales fotopletismográficas de la cara porque la distancia al corazón es pequeña en comparación con las ubicaciones en las extremidades que generalmente tampoco están cubiertas, p. la mano. Nilsson [28] midió las energías respiratorias en las señales PPG de múltiples sensores conectados a partes del cuerpo, incluidas la mano y la frente, y descubrió que la energía respiratoria en la frente es aproximadamente un factor de seis más grande en comparación con la del dedo. Para el seguimiento de la cara, decidimos inicializar manualmente el ROI y no usar un detector de cara, p. el detector Viola-Jones de uso común, ya que estos están típicamente entrenados para caras verticales frontales de vista completa, mientras que nuestro conjunto de datos también contiene caras que no cumplen con este criterio.

2.2.2. Procesando Después de obtener las diferencias de píxeles normalizadas con compensación de movimiento, nuestro objetivo es encontrar la combinación lineal óptima para construir la señal de pulso cardíaco y, en adelante, la señal respiratoria. La etapa de procesamiento consta de dos operaciones: 1) cálculo de pesos y 2) selección de pesos.

2.2.3. Escalada Para eliminar la influencia de la fuerza momentánea de la señal PPG en la amplitud de la señal respiratoria, se calcula un factor de ganancia, k, por la relación entre las energías en la banda de frecuencia respiratoria, p. 10–40 respiraciones / min, y la energía de la señal de pulso. Es justo suponer que cuando la amplitud del pulso se duplica, también se duplica la amplitud respiratoria.

2.3. Configuración experimental Para la grabación de secuencias de video en luz visible e infrarroja, se utilizan dos configuraciones experimentales separadas. En ambas configuraciones, se les pide a los participantes en los experimentos que sigan un patrón de respiración particular visualizado en una pantalla frente al participante. Las secuencias de video en luz visible se graban con una cámara RGB CCD con obturador global (tipo USB UI-2230SE-C de IDS) y se almacenan en un formato de datos sin comprimir, a una velocidad de cuadro de 20 cuadros por segundo (fps), con Una resolución de 768 × 576 píxeles y con 8 bits de profundidad. Las grabaciones se realizan en una sala con condiciones de luz estables. Los participantes usan un sensor de dedo (oxímetro de pulso), cuyos datos se sincronizan con los cuadros de video. Para incluir tanto la cara como la región del pecho, la cámara se coloca a una distancia de 1 metro.

.4. Conjunto de datos El rendimiento de nuestro método propuesto se evalúa en dos conjuntos de datos diferentes: A) respiración guiada de adultos sanos en un entorno de laboratorio, y B) respiración espontánea de neonatos en un entorno de cuidados intensivos. El estudio fue aprobado por el Comité Interno de Experimentos Biomédicos de Philips Research, y se obtuvo el consentimiento informado para cada sujeto adulto. Además, el comité de investigación ética médica en el Centro Médico Maxima (MMC) aprobó el estudio neonatal y se obtuvieron los consentimientos informados de los padres antes de la adquisición de datos. Los escenarios de respiración guiada permiten simular escenarios desafiantes en todo el rango de frecuencias de respiración, que pueden no estar presentes durante la respiración espontánea. En la vida real, durante la respiración espontánea, tanto el RR como el esfuerzo respiratorio varían continuamente. Para evaluar el rendimiento de estos escenarios, se crea un conjunto de datos que consiste en videos grabados en una UCIN.

2.5. Algoritmo de referencia Para comparar nuestro método propuesto, comparamos la salida con el estado del arte utilizando el método de Karlen et al. [4] como nuestro algoritmo de referencia. Este método es el algoritmo de detección de respiración basado en PPG de mejor rendimiento de los 314 algoritmos respiratorios evaluados por Charlton et al. [3] Karlen y col. use una fusión inteligente de las tres modulaciones respiratorias. Dado que nuestro método solo usa la modulación de línea de base de la señal PPG, comparamos el rendimiento de nuestro método con dos versiones del algoritmo de referencia: 1) el marco completo que incluye las tres características (BMF) y 2) con solo el RIIV como característica (IMC) Como el algoritmo solo puede aplicarse en una sola forma de onda, seleccionamos la longitud de onda con la SNR más alta; el canal de color verde en luz visible y 840 nm en infrarrojo. 2.6. Evaluación Para evaluar el rendimiento del método propuesto, se calculan las frecuencias respiratorias instantáneas. Aquí se aplica un algoritmo de detección de picos en la señal respiratoria interpolada y se compara con la verdad fundamental: el patrón de respiración para escenarios de respiración guiada y la señal respiratoria derivada de ECG para las grabaciones de NICU. Preferimos el patrón de respiración guiada sobre un posible cinturón de respiración, ya que este último sufre demasiado del movimiento del sujeto como para ser una referencia confiable. Se calculan el coeficiente de correlación de Pearson r, la pendiente del ajuste lineal B, el error absoluto medio (MAE), el error cuadrático medio (RMSE) y la desviación estándar (σ). Además, se incluyen gráficos de correlación y se realiza un análisis de Bland-Altman para evaluar el sesgo de magnitud en las diferencias de frecuencia respiratoria. Aquí, los límites de acuerdo del 95% fueron determinados por [−1.96σ, + 1.96σ].

5. Conclusión

 

Hemos demostrado que la respiración se puede detectar con una cámara tanto en condiciones de luz visible como oscura utilizando la similitud cercana entre el pulso y las variaciones de color de la piel inducidas por la respiración. El método propuesto se ha evaluado exhaustivamente utilizando 52 videos desafiantes que contienen adultos sentados que realizan respiración guiada y recién nacidos en posición supina que respiran espontáneamente. Para la respiración guiada, se pueden detectar todas las frecuencias respiratorias típicas en el rango de 10 a 40 respiraciones / min, incluso cuando los cambios en la frecuencia son rápidos y transitorios. Además, se puede detectar la respiración durante los movimientos de la cabeza y también eventos potencialmente peligrosos para contener la respiración, p. durante la apnea central, puede identificarse claramente. En general, el error absoluto medio para los escenarios de respiración guiada es 1.74 BPM y 2.27 BPM en luz visible e infrarrojo, respectivamente, en comparación con 3.55 BPM y 3.65 BPM para el algoritmo de referencia de mejor rendimiento. Para la respiración espontánea, la frecuencia respiratoria se puede detectar con un error de 4.72 BPM en comparación con 7.40 BPM para el punto de referencia. Este resultado demuestra un paso importante hacia una alternativa sin contacto para los sensores de contacto de uso común, que puede provocar un trauma en la piel frágil de los recién nacidos. Nuestro método propuesto mostró una gran mejora con respecto a los métodos anteriores basados ​​en PPG para el monitoreo de la respiración.

Conclusiones personales: interesante la evaluacion con dataset, es importante entender los algoritmos de regresion lineal para poder ver como funcionan las tecnicas de medicion de SPO2. 

      c) un metodo alternativo para la medición de respiración.

https://ieeexplore.ieee.org/document/8856387

Derivación de señales respiratorias de videos RGB En este estudio, buscamos derivar señales de respiración utilizando los siguientes métodos: (1) mediante parámetros estimados a partir de rPPG realizados en regiones faciales, (2) mediante variaciones de color de los valores de píxeles sin procesar en regiones faciales (es decir, señales de movimiento) , y (3) por medio de movimientos del cofre. El último método sirve como referencia para demostrar la viabilidad de las estimaciones de frecuencia respiratoria basadas en variaciones de color sin procesar causadas por el movimiento del cuerpo. La tubería de procesamiento completa se representa en la figura 2. Las señales se derivaron de la siguiente manera. Primero, se seleccionó un área rectangular de la cara de los sujetos y el pecho superior como la principal región de interés (ROI). Esta área se dividió en sub-ROI de forma cuadrada con una longitud de borde de 10 píxeles. Los sub-ROI que no pertenecen a la cara del sujeto (por ejemplo, fondo, cabello) se excluyeron de un análisis posterior mediante segmentación manual de fondo. Para extraer las señales respiratorias basadas en el movimiento de las regiones de la cara y el pecho, se promediaron los valores de píxeles de cada canal de color en cada sub-ROI válido. Estos valores promedio se filtraron posteriormente con paso bajo (filtro FIR, fcut = 4 Hz) para suprimir el ruido de alta frecuencia. Los sub-ROI ubicados en la cara proporcionan información sobre los movimientos faciales debido a la respiración. Del mismo modo, los sub-ROI en el área del cofre proporcionan las señales del cofre. Tenga en cuenta que no empleamos un método basado en el seguimiento para detectar movimientos en el área del cofre ya que no esperamos que dichos métodos funcionen en las áreas faciales. Sin embargo, se deseaba una comparación directa de la derivación del movimiento tanto en la cara como en el pecho.

Resultado

muestra la desviación de la frecuencia respiratoria estimada en función de los valores de píxeles sin procesar y la señal de rPPG de la verdad del suelo. La extracción de la frecuencia respiratoria del cofre basada en valores de píxeles sin procesar, que sirvió como referencia, arrojó resultados casi perfectos Los mejores resultados en regiones faciales se obtuvieron para rPPG. Las señales basadas en el movimiento de los canales de color verde y azul tienen un error medio similar al de los resultados basados ​​en rPPG, pero también una varianza significativamente mayor. Los canales rojos mostraron la varianza de error más baja de todos los canales de color. Sin embargo, los valores de error en la cara fueron generalmente mayores que en el cofre y oscilaron entre −0.25 lpm y 0.5 lpm. Para investigar más a fondo las fuentes de la señal respiratoria, calculamos la SNR de la señal respiratoria incrustada en los valores de píxeles sin procesar y la señal rPPG. La figura 4 muestra los valores de SNR para las regiones torácica y facial por separado. Se puede ver que las señales de color en el cofre exhibieron la SNR más alta con una mediana de -2.5 dB. Esto se debe al hecho de que los movimientos asociados con la respiración son más pronunciados en el pecho.

Conclusiones personales: las mediciones Rppg de SPO2 funcionan, pueden ser hechas en varias regiones del cuerpo, tal vez sea util implementar deteccion de movimiento para hacer mas precisa la tecnica.

   d) Una medición combinada de código abierto: Pneumocheck

Pneumocheck es un algoritmo de deteccion remota basado en la camara web que detecta el pulso y la oxigenacion en la sangre. Emula el funcionamiento de un medidor Spo2 comun.

Usando una secuencia de video corta el algoritmo es capaz de hacer una estimacion del puso y del nivel de oxigenacion en la sangre

El proyecto está hecho de 5 componentes basicos: Video Input / Separacion de los canales de color / Filtrado / Extraccion de picos DC-AC / Estimacion

 

 

 

 

 

 

 

 

 

 

 

El video de interes se divide en frames, se analiza un frame a la vez dividiendo el video en RGB )rojo verde azul. Cada frame se divide en una malla de 20 x 20  )eligiendo una zona de interes. Posteriormente se almacene el promedio de esta zona en cada frame. Esto se convierte en la señal cruda.

 

Mediante filtros de matlab se intentan aisalar las señales biometricas. seleccionar los picos y valles en la señal para hacer la medición biometrica más precisa posible (básicamente entre los datos crudos encuentra ondas que tengan unos patrones que reconoce como mediones biometricas). El filtrado empieza con un filtro pasabandas qque atenua todas las seuñales que no se parezcan a las correspondientes ppg )de 0.5 a 5 herzios. Despues se hace un smoothing para reducir el ruido exterior, se usa un algoritmo de detrending para limpiar distorsiones  y se pasa un filtro pasabandas para finalizar.

 

Luego se hace una estimacion. Para el pulso es tan sencillo como tomar el valor de los picos del canal verde y dividirlos por 60 para tener los beats por minuto.

Para el SpO2 hay que caulcular  el procentaje  del total de sangre oxigenado a deoxigenado. Eso lo hacemos teniendo en cuenta el canal verde y azul. Tenemos que tener encuenta los valordesDC de esos canales y el pico de los AC.

SpO2 depende de la calibracion, que se basa en regresión líneal. La mayoria de sensores usan coeficientes estandad que estan disponibles en datasheets. Sin embargo las tablas de calibracion para camaras no estan disponibles, asi que hace falta hacer uno. Entonces basado en el dataset con el que se esta trabajando se hizo un algoritmo de regresion lineal para sacar los porcentajes.

Para probar el algoritmo se uso el dataset PURE de la Universidad Técnica de Alemania. Este dataset tenia datos de Spo2 y pulso de 10 pacientes. Este algoritmo permite hacer priuebas sin tener que tener una poblacion de pacientes iniciales.

 

 

 

 

 

Los resultados de las mediciones de SPO2 muestran una correlacion muy alta con las mediciones standard.

 

 

 

 

 

Conclusion Personal: Este es el algoritmo mas completo y similar a lo que se quiere hacer, sin embargo no hace medicion  de iluminacion ni trackeo, es importante mejorar la tecnica con estas dos caracteristicas y añadir un dataset más grande para más precisión.

Por ultimo algunos avances personales y experimentación alrededor de estos algoritmos:

Esta es una implementación simple de rPPG, una forma de medir la frecuencia cardíaca sin contacto con la piel. Utiliza una grabación de video o una transmisión en vivo de la cara para analizar cambios sutiles en el color de la piel. Así es como funciona: La cara se detecta y se rastrea continuamente La serie de señales se obtiene determinando el color facial en cada cuadro La frecuencia cardíaca se estima mediante análisis de frecuencia y filtrado de la serie.  Los siguientes modelos estan basados en  https://github.com/prouast/heartbeat 

Esta aplicacion utiliza el metodo de Phillipp Rouast para hacer la estimación de BPM, integra módulos de CV para poder hacer trackeo y seguimiento en tiemppoo real y posteriormente, a través de websockets envía una señal que es procesada en MMAX MSP y alimentada a un algoritmo de DTW en Wekinator, software de uso libre que utilizo para mis practicas creativas. El objetivo es entrenar al algoritmo para reconocer perfiles  de riesgo. El objetivo de esta aplicación era ver el potencial de Machine learning para crear perfiles, clasificarlos y reconocerlos. El código lo pueden encontrar en la parte final de este blog.

2. Metodología Propuesta.

Durante una reunión con   Juan F. Granada, M.D  pudimos definir un mapa de ruta para la aplicación que pudiera ayudar para el avance de la pandemia

Perfil del doctor: https://www.dicardiology.com/article/cardiovascular-research-foundation-appointed-juan-granada-new-president-ceo

Puntos importantes de la reunión

1)Dos de los factores mas importantes que podemos medir son temperatura , frecuencia respiratoria- oxigenación

2)La oxigenación no siempre esta relacionada con el color de piel. Es posible que existan investigaciones de otras partes del cuerpo susceptibles a cambios durante el proceso de oxigenación.

3)Lo que hay que tener en cuenta de la frecuencia cardiaca es que es un factor individual- situacional que puede cambiar en diversas situaciones - pacientes ansiosos. etc

Seria importante desarrollar un algoritmo de clasificación de riesgo teniendo en cuenta los risk scores - parámetros medicos ya establecidos con los cuales se puede co-relacionar la información. Esos perfiles deben tener en cuenta condiciones socio-economicas para poder ayudar a hacer el triage mediante la aplicación.

Triage: El triage es interesante porque busca clasificar bajo estandares de riesgo al paciente. Tener esto en el árbol de decision permitiría saber en que momento es importante que el paciente que esta en casa vaya al medico.

RISK SCORES PARA COVID19

https://qxmd.com/calculate/calculator_731/covid-19-prognostic-tool

https://academic.oup.com/cid/advance-article/doi/10.1093/cid/ciaa414/5818317

Diagrama de Flujo

Software y recursos

Nota: El primer algoritmo, de código abierto fue desarrollado por Mel Balestrat. El segundo es de Phillip Rouast con módulos que escribí junto a Antonia Brock con el apoyo de Juan Pablo Buriticá.

El segundo algoritmo corre en el localhost 8080 a traves de algun servidor como apache. Es importante bajar Wekinator y pasar los datos a int para poder hacer DTW.

Actualización Mayo 14 de 2020

Mediante una carta inter-institucional logramos acceder a la base de datos PURE de la universidad de Ilmenau en Alemania. Esta base, para fines puramente académicos, nos permite hacer mediciones y calibrar el algorítmo que estamos usando frente a data real de pacientes  con condiciones pulmonares. De ahora en adelante contamos con la participacion del ingeniero Edisson Maldonado, experto en el campo de visión con experiencia en IA.

Edisson hizo varias implementaciones en el algoritmo SPO2 de Michelle Balestrat,  principalmente para mejorar la captura de datos y el muestreo que hace el algoritmo.

Las siguientes son mediciones y comprobaciones frente a un Pulsómetro / Oxímetro comprado en una farmacia local en Colombia.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Las mediciones iniciales corroboran los indices de precisión del algoritmo frente a SpO2 pero dejan entrever errorer de calibración frente a la estimación de pulso, es necesario revisar y re calibrar los filtros de análisis y medición para esta variable.

Screen Shot 2020-04-11 at 3.10.14 PM.png
Screen Shot 2020-04-11 at 1.57.01 PM.png
Screen Shot 2020-04-11 at 1.56.54 PM.png
Screen Shot 2020-04-13 at 11.05.03 AM.pn
Screen Shot 2020-04-13 at 11.11.56 AM.pn
Screen Shot 2020-04-13 at 11.14.22 AM.pn
Screen Shot 2020-04-13 at 11.17.52 AM.pn
Screen Shot 2020-04-13 at 11.18.41 AM.pn
Screen Shot 2020-04-13 at 11.20.12 AM.pn
Screen Shot 2020-04-13 at 11.23.57 AM.pn
Screen Shot 2020-04-13 at 11.26.53 AM.pn
Screen Shot 2020-04-13 at 11.30.50 AM.pn
Screen Shot 2020-04-13 at 11.39.11 AM.pn
Screen Shot 2020-04-13 at 11.44.29 AM.pn
d1ab0729-a725-4450-a3b9-a3113310d15d.jpe
ad96d171-0c0f-4458-b029-cef354d5ec2d.jpe
bdf5ec02-e4bd-4d05-8e99-05f11ea20201.jpe
09e45321-bcb0-4caf-ae93-b533a69b5966.jpe
Screen Shot 2020-04-13 at 12.55.15 PM.pn
bottom of page