本文整理自论文《Non-contact, automated cardiac pulse measurements using video imaging and blind source separation》及ICA相关资料。
独立成分分析(Independent Component Analysis,ICA),是一种数据驱动的信号分析方法,常用于盲源分离(Blind Source Separation,BSS)。
盲源分离是指在信号的理论模型和源信号无法精确获知的情况下,如何从混迭信号(观测信号)中分离出各源信号的过程。盲源分离和盲辨识是盲信号处理的两大类型。盲源分离的目的是求得源信号的最佳估计,盲辨识的目的是求得传输通道的混合矩阵。
最典型的盲源分离问题是鸡尾酒会问题(Cocktail Party Problem):给定混合信号,分离出鸡尾酒会中同时说话的每个人的独立信号。
ICA原理
预处理
在进行ICA之前通常对数据进行去均值和白化,使用PCA处理,以保证混合矩阵为正交矩阵,且可将采集信号数目降到与源信号数目相等。
算法目标
源信号
经过线性组合得到采集信号
,其混合矩阵记为
,即
。假设
为满秩矩阵,则存在
使
,ICA的目标就是求出矩阵
,从而从
中还原出源信号
。
基本假设
- 各源信号间独立
- 至多有一个信号服从高斯分布,混合后信号不服从高斯分布
- 变换为线性变换,且变换矩阵非时变
主要思路
ICA方法没有参照目标,需要自组织学习过程。其主要思路为:
- 建立以 为变量的目标函数 ,当 取到极值时的 即为所求结果。
- 使用优化方法找到 的极值,得到最终的 。
常使用的算法主要分为基于信息论方法和基于统计学方法。基于信息论方法主要有FastICA,Infomax,最大似然估计等方法,基于统计学方法主要有二阶累积量,四阶累积量等方法。下面简要介绍最大似然估计方法。
最大似然估计法
假设单个源信号
的概率密度为
,则全体源信号
的联合分布为:
则经过
变换后
的概率分布为:
由基本假设得知不能选用高斯累积分布函数,令
的累积分布函数为sigmoid函数
,则
。可得关于
的似然函数,式中m表示时间序列。
将
关于W求导后可得到对于每一个x的梯度更新规则:
式中
为学习率,当
收敛后可根据
由观测信号复原出源信号。
存在的问题
- 分离结果幅度不确定
- 分离信号排序不确定
- 当观测信号数小于源信号数时无法分离
利用ICA方法进行视频分析心跳检测
基于ICA的方法,论文《Non-contact, automated cardiac pulse measurements using video imaging and blind source separation》提出了一种通过分析视频中人脸变化从而估计心跳频率的方法,该方法准确率较高,且对于一定程度的缓慢移动具有鲁棒性,并且可以同时检测多人,可以用于远程医疗等。
该方法基本原理为,人心跳时产生的血液输送会使面部大小发生轻微变化,从而对自然光照产生不同的反射结果,并且对于不同波长光的变化情况不同,因此在RGB三通道中表现出的变化情况也不相同。通过记录彩色视频RGB通道的不同变化情况,使用ICA方法进行分析,得到最接近真实心跳频率的信号源。
基本步骤
- 使用opencv提供的人脸检测器对视频进行人脸区域检测并记录区域位置。
- 将人脸区域图像分离为RGB三通道,分别计算区域内灰度均值。
- 经过一段时间后可得到随时间变化的三个观测信号R,G,B。
- 对R,G,B三个信号进行ICA分析,得到三个相互独立的源信号,进行傅里叶频谱分析,取其中最接近真实心跳频率范围的波峰作为测量结果。
相关实验结果
静止检测结果:
缓慢运动检测结果:
多人检测结果:
参考资料:
- Ming-Zher Poh, Daniel J. McDuff,and Rosalind W. Picard .Non-contact, automated cardiac pulse measurements using video imaging and blind source separation[J].OPTICS EXPRESS,10 May 2010 ,Vol. 18, No. 10.
- ICA及其在数字图像处理中的应用
- 机器学习笔记—独立成分分析
- 极大似然估计详解