Ver lo invisible

Hace un par de años Habré deslizó dos artículos que mencionan un algoritmo interesante. Artículos, sin embargo, fueron escritos nechitabilno. En el estilo de "noticias» ( 1 , 2 ), pero el vínculo con el sitio estaba presente, fue posible para averiguar detalles sobre (algoritmo de autoría MIT). Y hubo magia. Absolutamente algoritmo mágico que permite ver lo invisible. Ambos autores Habré no se dio cuenta y se centran en el hecho de que el algoritmo nos permite ver el pulso. Después de haber perdido lo más importante.

El algoritmo nos permite fortalecer el movimiento, ojo invisible, para mostrar las cosas que nunca se han visto con vida. Vídeo ligeramente superior - presentación c cfqnf MIT segunda parte del algoritmo. Microsacadas, que se enumeran comenzando desde el 29 de segundo, observó anteriormente sólo como un reflejo de los espejos montados en los alumnos. Y aquí se ven a través de los ojos.
Hace un par de semanas, me encontré de nuevo los artículos. Inmediatamente me entró curiosidad: lo que la gente hizo en esos dos años para prepararse? Pero ... el vacío. Se ha definido la siguiente semana divertido y medio. Quiero hacer el mismo algoritmo y averiguar lo que puede hacer con ella y por qué todavía no está en todos los teléfonos inteligentes, al menos por un pulso.
El artículo será de una gran cantidad de vídeos, imágenes, estera un poco de código y las respuestas a las preguntas.

Vamos a empezar con las matemáticas (no voy a pegarse a cualquier artículo en particular, y voy a interferir en diferentes partes de los diferentes artículos, por una narrativa más suave). Un grupo de investigación tiene dos importantes obras en la parte algorítmica:
1) para revelar los cambios sutiles en el Mundial
2)
movimiento de vídeo Procesamiento -Based_Video.pdf"> href="http://people.csail.mit.edu/billf/publications/Phase Basado Fase-.

empezar? H4> ¿Cuál es la ganancia de movimiento? Fortalecimiento de movimiento, es cuando podemos predecir en qué dirección la señal se mezcla y colóquela más en esa dirección.

Supongamos que tenemos un receptor de una sola dimensión. En el receptor, se ve que la señal I (x, t) = f (x). En la imagen dibujada en un negro (hasta cierto punto t) .En la siguiente señal de tiempo I (x, t + 1) = f (x + Δ) (azul). Amplificar esta señal, lo que significa recibir una señal I '(x, t + 1) = f (x + 1 + α) Δ (). Aquí α - ganancia. La expansión en serie de Taylor que se puede expresar como:
Vamos:
¿Qué es B? En términos generales es I (x, t + 1) - I (x, t). Draw:

Por supuesto, esto es inexacto, sino como un descenso aproximación (forma pokazyaet tal señal gráfica azul "priblizhenongo"). Si multiplicamos por B (1 + α) y que será "fortalecimiento" de la señal. Get (gráfico rojo):

En marco de verdadera puede contener varios movimientos, cada uno de los cuales irán a diferentes velocidades. El método anterior - predicción lineal, sin entrar en detalles, que se rompe. Pero, hay un enfoque clásico para resolver este problema, que se utilizó en el trabajo -. Para difundir el movimiento de la respuesta de frecuencia (tanto espacial como temporal)

En la primera etapa de descomposición de imagen de frecuencia espacial. Esta etapa también implementa recibir ∂f diferencial (x) / ∂x. En primera no trabajamos dicen cómo lo implementan. En segundo trabajo , mediante el uso de un enfoque de fase, los filtros de amplitud y fase Gabbora considerarse un orden diferente:

Acerca de lo que hice, teniendo el filtro:
Y el valor normalizado para
Aquí l - la distancia del píxel del centro del filtro. Por supuesto, estoy un poco fingido tener un filtro para un solo valor de σ ventana. Esto ha acelerado la computación. Esto da una imagen un poco más borrosa, pero decidió no luchar por la precisión.
Volviendo a las fórmulas. Supongamos que queremos amplificar la señal, dando una respuesta característica en la frecuencia ω en la secuencia de marco temporal. Ya hemos recogido el filtro espacial característico con una σ ventana. Esto nos da un diferencial aproximado en cada punto. Como se desprende de la fórmula - no es sólo una función temporal dando información sobre nuestro progreso y la ganancia. Multiplicado por el seno de la frecuencia que desea reforzar (y que funcionará dando el tiempo de respuesta). Obtenemos:
Por supuesto, mucho más fácil que en el artículo original, pero un poco menos de un problema con la velocidad.

Código y el resultado H4> fuente para el primer artículo se establece en el acceso abierto a Matlab.:. Al parecer, ¿por qué reinventar la rueda y escribir su propio? Pero había una serie de razones, en gran medida vinculados a Matlab:

  1. Si a continuación, vienen a la mente para hacer algo razonable y aplicable al código de Matlab mucho más difícil de usar que C # + OpenCV, portado en un par de horas con ++.
  2. El código original fue guiado para trabajar con vídeo guardado que tiene una tasa de bits constante. Para poder utilizar la cámara está conectada a un ordenador que tiene una necesidad de velocidad de bits variable para cambiar la lógica.
  3. El código original implementa el más fácil de sus algoritmos sin bollos. Implementar una versión ligeramente más sofisticada con bollos - ya la mitad del trabajo. Por otra parte, a pesar del hecho de que el algoritmo fue el original, sus parámetros de entrada no son esos artículos.
  4. El código original llevado periódicamente a un ordenador colgar muertos (incluso sin la pantalla azul). Tal vez sólo yo, pero incómodo.
  5. En el código original era sólo el modo consola. Hacer todo en Matlab visual, que sé que es mucho peor VS, que sería mucho más largo que reescribir todo. < / a> He publicado en github.com y comenté en detalle. El programa implementa la captura de vídeo de la cámara y su análisis en tiempo real. La optimización se volvió ligeramente hacia la izquierda, pero usted puede conseguir encerrado, ampliar las opciones. Eso circuncidados en el nombre de la optimización:
  6. Use un marco con un tamaño reducido. Muy acelera el trabajo. En el formulario, no hubo manera de deducir el tamaño del marco, pero si abre el código, la línea:... & Quot; _capture.QueryFrame () Convierte & lt; Bgr, flotar & gt; () PyrDown () PyrDown (); & quot; eso es todo
Use sólo uno de los filtros espaciales. Para situaciones donde el movimiento se conoce la pérdida deseada acrítica. La gestión de parámetro de forma del filtro (la longitud de onda del filtro Gabor). Usar una sola frecuencia, hace hincapié en las series temporales. Por supuesto, era posible hacer convolución con pre-calculado con el espectro de la ventana con casi ninguna pérdida de rendimiento, pero este método también funciona bien. Con cualquier forma de control deslizante controlada, o mediante la introducción de los valores límite. Una pequeña nota. Todos los resultados se obtuvieron en una cámara web convencional en casa. Cuando utilice la cámara con buenos parámetros + Trípode + adecuada iluminación + calidad supresión de interferencias 50Hz mejoró significativamente. Mi objetivo no era obtener hermosas fotografías o mejorado algoritmo. El objetivo - para obtener resultados en casa. Bueno, como un bono, yo todavía hacer un pulso de registro cuando juego Starctaft 2 ... Curiosamente, en lo que sigue los deportes e-deportivas.
Como resultado, se obtiene la operación lógica:
Es muy sencillo de indignante. Por ejemplo sumatoria incrementales con el marco por lo general, se dio cuenta:
 & lt; código & gt; for (int x = 0; x & lt; Ic [CCP] .I.Width; x ++) for (int y = 0; y & lt; Ic [CCP] .I.Height; y ++) { FF2.Data [y, x, 0] = alfa * FF2.Data [y, x, 0] / contador; ImToDisp.Data [y, x, 0] = (byte) Math.Max ​​(0, Math.min ((FF2.Data [y, x, 0] + ImToDisp.Data [y, x, 0]), 255) ); } & Lt; / código de & gt;  pre> (Sí, ya sé que con OpenCV no es la mejor manera) 
En algún lugar en el 90% del código no es el kernel, I Kit alrededor de ella. Pero la realización del núcleo ya da un buen resultado. Se ve como el pecho inflado por unas pocas decenas de centímetros de la respiración, es visto como hincha de Viena como mueve la cabeza en el tiempo con el pulso.




Aquí se explica en detalle por qué la cabeza bobble del pulso. De hecho, se vuelve de relleno de la sangre en el corazón:


Un poco sobre la belleza h4> curso en el MIT amor hermosos resultados. Y, por lo tanto, tratar de hacerlos como la manera más hermosa. Como resultado, el espectador tiene la impresión de que este particular, es un número entero. Lamentablemente no. Hincha la vena se puede ver sólo cuando se establece correctamente la iluminación (sombra debe dibujar el patrón de la piel). Cambiar el color de la cara - sólo una buena cámara sin auto-corrección, con la luz adecuada y puso al hombre en el que hay problemas claros con el corazón (en el video es un hombre grande y parto prematuro). Por ejemplo, en el ejemplo con el negro, cuyo corazón está bien, ¿no ves las fluctuaciones de brillo de la piel, y la ganancia cambia la sombra de micromovimientos (sombra se encuentra perfectamente de arriba hacia abajo).

características cuantitativas h4> Naturaleza. En el video de respiración y pulso claramente visible. Vamos a tratar de conseguirlos. La cosa más simple que viene a la mente - la diferencia entre los fotogramas adyacentes resumió. ¿Desde cuándo la respiración fluctúa casi todo el cuerpo - esta característica debe ser visible
. El pasaje gráfico resultante a través de la transformación de Fourier, teniendo en cuenta el espectro (en el gráfico para recopilar estadísticas en algún lugar de 5 minutos sumando los espectros calculados a intervalos de 16 segundos).



Pico claro Visible a una frecuencia de 0,6-1,3, no es característico del ruido. Desde la respiración no es sinusoidal proceso, y el proceso de tener dos pico distinto (con respiraciones), las imágenes de diferencia de frecuencia debe ser igual a la doble frecuencia de la respiración. Frecuencia respiratoria que estaba en algún lugar de 10 respiraciones en 30 segundos (0,3 Hz). Su duplicación - 0,6 Hz. Esto es aproximadamente igual a la máximo de la traza revelado. Pero, por supuesto, el valor exacto no puede hablar. Además de la respiración sacó un montón de habilidades motoras finas del cuerpo, lo que echa a perder en gran medida la imagen.
Hay un pico interesante en 2.625HZ. Al parecer, se abre paso a la matriz de nivelación de la energía. La banda de fluencia matriz que producir con éxito un máximo a esta frecuencia.
Dicho sea de paso, la frecuencia de pulso doble debe estar aproximadamente en el mismo rango, y por lo tanto el método no debe trabajar en él. Y, en efecto:



Este espectro no puede encontrar el pulso.
En una de sus obras se le da el MIT es otra forma de medir la frecuencia cardiaca, calcular fluir en la cara y determinar su frecuencia de este flujo. Así que lo hice (en el horario demasiado espectros):






Se ve mejor en la tabla en la que puse el número de máximos del espectro:



¿Por qué la tasa máxima del corazón * 3 No sé cómo explicarlo, pero esto precisamente es lo máximo y está ligada a la del pulso :)
Me gustaría mencionar solamente que, para el pulso de esta manera tiene que sentarse con la espalda recta y no te muevas. En un juego de Starcraft no es posible, no se quita la frecuencia. Ah ... Y esta idea! Vamos a tener que conseguir un monitor de frecuencia cardiaca, es interesante ahora convertido!

Por lo tanto, el resultado h4> Como resultado, estoy muy claramente formado una opinión sobre los límites del algoritmo, se hizo evidente lo que sus limitaciones:
¿Por qué no se hizo popular para medir la frecuencia del pulso? B> de calidad para cámaras Web equipo agarra en la frontera, o incluso inexistente. En Android no es claramente suficiente rendimiento. Permanecer equipos especiales para la medición profesional. Pero son muy caros y no es estable a las condiciones externas (iluminación, el parpadeo de luz, oscuridad, agitación), y la calidad va a ser inferiores a las herramientas probadas de tiro de pulso.
¿Por qué no es el algoritmo que se utiliza para evaluar las fluctuaciones de casas, puentes, grúas? B> de nuevo. Dispositivos especiales son más baratos y ofrecen una mayor precisión.
¿Y dónde se puede utilizar y si es posible en absoluto? B> Creo que se puede. Visibilidad Siempre que sea necesario. Rodaje de una película científica, los programas educativos. La formación de los psiquiatras, psicólogos, recoger artista (ver el más pequeño de movimiento humano, el aumento de las expresiones faciales). Para el análisis de las negociaciones. Por supuesto, no es necesario el uso de una versión más sencilla del algoritmo, y la versión que lo han hecho en el último trabajo y se basa en un enfoque por etapas. En este tiempo real, todo esto va a ser difícil de ver, el rendimiento no será suficiente, salvo que todo rasparalelit vidyuhi. Pero se puede ver después de los hechos.

Nada nuevo bajo el sol h4> Al leer el trabajo de los compañeros y ver vídeos a escondidas sospecha. En algún lugar vi todo. Aquí se mira y piensa, piensa. Y a continuación, muestran un video de cómo utilizando el mismo algoritmo tomar y estabilizar el movimiento de la Luna, la eliminación de ruido ambiente. Y luego, en un instante: "Sí, este es el algoritmo de supresión de ruido, sólo con la retroalimentación positiva !!". Y en lugar de suprimir el movimiento espurio, que los fortalece. Si tomamos α & lt; 1, entonces la conexión de nuevo y movimiento negativo de distancia
! Por supuesto, en el algoritmo de supresión de movimiento y sacudiendo ligeramente diferente matemáticas y enfoque ligeramente diferente. Pero, de hecho exactamente el mismo análisis espectral de tubo de espacio-tiempo.
Aunque dijo que no svisnul algoritmo tonto. En el MIT realmente notado una pequeña característica interesante, desarrollado y tiene toda una teoría con tales imágenes hermosas y mágicas.

Y por último: el programador, tenga cuidado H4> algoritmo, de acuerdo con las notas en el sitio de una patente. El uso permitido para fines educativos. Por supuesto, en Rusia no hay algoritmos de patentamiento. Pero ten cuidado, si se puede hacer algo basado en él. Fuera de Rusia, puede ser ilegal.

Sótano h4>


Z.YU. Y me dice el monitor de frecuencia cardíaca, lo que podría deshacerse de los datos en el PC y, preferiblemente, una interfaz de rosca para Android tenía? I>

Fuente:

Tags

Vea también

Nueva y Notable