dngoins/Kinectv2HeartRate

语言: C#

git: https://github.com/dngoins/Kinectv2HeartRate

README.md (中文)

Kinectv2HeartRate

适用于Windows v2心率库的Kinect

此应用程序是一个.Net WPF应用程序,它使用R统计编程语言引擎版本> 3.12。此应用程序需要在运行应用程序的系统上安装R引擎。 R可以从这里安装:http://cran.r-project.org/ WPF应用程序利用Kinect RGB,IR和Face数据流来确定面部周围的区域,并计算随时间变化的空间平均亮度。然后将平均值除以它们各自的标准偏差以提供单位方差值。这些值是输入ICA算法所必需的。这些值将保存到csv文件中,以便使用其他机器学习技术和算法进行处理。

基本方法很简单。当一个人的心脏泵血时,血液的体积会被推动通过各种静脉和肌肉。当血液泵送通过肌肉,特别是面部时,吸收的光越多,并且网络相机传感器拾取的亮度越低。亮度值的这种变化非常微小,可以使用相似的技巧来提取。亮度的变化是周期性的。换句话说,信号或波。如果我们可以将信号/波与血脉搏相匹配,我们就可以计算出心率。

为了使亮度变化与血液脉冲相匹配,我们使用独立分量分析(ICA)概念。这个概念是鸡尾酒会的概念,是在一组混合信号中找到隐藏信号的基础。如果你有两个人在一个拥挤的房间里说话,并且你在房间周围的不同位置放置了麦克风,那么ICA算法可以让您采集混合的信号样本,例如声波,并计算估计的分离混合成分。如果您将单独的组件与发言人的原始信号相匹配,则表明您已在拥挤的房间内找到该人。

这种ICA概念也称为盲源分离,该项目使用RADE的JADE算法,为R,G,B,IR混合数据提供组合分离矩阵。然后,使用快速傅立叶变换提取单独的分量以找到心率的匹配频率范围。

本文使用googletrans自动翻译,仅供参考, 原文来自github.com

en_README.md

Kinectv2HeartRate

Kinect for Windows v2 Heart Rate Library

This application is a .Net WPF application which uses the R Statistical programming language engine version > 3.12. This application requires the R engine to be installed on the system running the application. R can be installed from here: http://cran.r-project.org/ The WPF application utilizes the Kinect RGB, IR, and Face streams of data to determine a region around the face and calculate a spatially averaged brightness over time. The averaged values are then divided by their respective standard deviations to provide a unit variance value. These values are required for feeding into ICA algorithms. The values are saved into a csv file for processsing with other Machine Learning techniques and algorithms.

The basic approach is simple. When a person's heart pumps blood, the volume of blood is pushed through various veins and muscles. As the blood pumps through the muscles, particularly the face, the more light is absorbed, and the less brightness the a web camera sensor picks up. This change in brightness value is very minute and can be extracted using matematical tricks. The change in brightness is periodic. In otherwords, a signal or wave. If we can match the signal/wave to that of a blood pulse, we can calculate the heart rate.

In order to match the change in brightness to a blood pulse we use the Independent Component Analysis (ICA) concept. This concept is the cocktail party concept and is the basis for finding hidden signals within a set of mixed signals. If you have two people talking in a crowded room, and you have microphones placed at various locations around the room, ICA algorithms let you take a mixed sample of signals, such as sound waves, and calculates an estimated separattion mixture of components. If you match the separate components to the orignal signal of a person speaking you have found that person in the crowded room.

This ICA concept is also known as blind source separation, and this project uses the JADE algorithm for R, to provide the separation matrix of commponents for the R,G, B, IR mixture of data. The separate components then have their signals extracted using a fast Fourier transform to find a matching frequency range of a heart rate.