Using the anti-correlation between oxy and deoxy hemoglobin for NIRS data quality

46 sec read

Back in 2009 we published a paper titled “Functional near infrared spectroscopy (NIRS) signal improvement based on negative correlation between oxygenated and deoxygenated hemoglobin dynamics“. In a nutshell, we found the oxy- and deoxy-Hb are negatively correlated when noise level is low. When noise level increases, their correlation becomes more and more positive.

Correlation between oxy and deoxy-Hb
Correlation between oxy and deoxy-Hb

Based on this phenomenon we can check the noise level of a channel using the correlation. Below is the script. You simply input the hbo and hbr data (both matrix), and the output is the bad channels.

function badChannels = checkDataQuality(hbo,hbr)

% function badChannels = checkDataQuality(hbo,hbr)
% Check data quality using correlation between hbo and hbr as indicator
% if the correlation is strictly -1, then bad channel
% if the correlation is > 0.5, then bad channel
% Input: hbo and hbr are NxM matrix, N is number of scan, and M number of
% channels
% output: array of bad channels
% Xu Cui
% 2009/11/25

n = size(hbo,2);
for ii=1:n
    tmp = corrcoef(hbo(:,ii), hbr(:,ii));
    c(ii) = tmp(2);

pos = find(c==-1);
if ~isempty(pos)
    disp(['Channels with -1 correlation: ' num2str(pos)])

pos2 = find(c>0.5);
if ~isempty(pos2)
    disp(['Channels with >0.5 correlation: ' num2str(pos2)])

badChannels = [pos pos2];


Want to receive new post notification? 有新文章通知我

第四十五期fNIRS Journal Club通知2023/9/23, 10am 张宗博士,侯鑫博士

Xu Cui
9 sec read

第四十四期fNIRS Journal Club视频 牛海晶教授

Youtube: Youku: 牛海
Xu Cui
5 sec read

第四十四期fNIRS Journal Club通知2023/8/26, 10am 牛海晶教授

在儿童和早期青春期期间,大规模功能网络中的脑信号复杂度(BSC)是如何涌现和演变的,以及是什么因素塑造了这些动态?来自北京师范大学的牛海晶教授将分享他们利用静息态近红外技术研究儿童发育的相关工作。 时
Xu Cui
6 sec read

10 Replies to “Using the anti-correlation between oxy and deoxy hemoglobin for…”

  1. @Gu Yue
    Good question! I however do not know the answer. You can try it and see if it increase your data quality. I’d love to know the result.

  2. Dear Cui,

    I’m wondering how to deal with these bad channels. Can I use the interpolation method which has been frequently employed in processing EEG data? I mean used the average value of whole channels to replace the bad channels Or just delete data on the bad channels?

    I’m looking forward to hearing from you!

    Yafeng Pan

  3. Dear Pan,
    Have you used the average value of whole channels to replace the bad channels of fNIRS? could you tell me your article name? thank you

    wenfeng Wu

  4. Dear Xu Cui,

    How/why did you choose the threshold of 0.5 (if if the correlation is > 0.5, then bad channel)? I read your paper but I could not figure out why 0.5 should be the right value, but I am very curious to know! Thank you.

    Kind regards,

    1. Carly,

      The threshold 0.5 is arbitrarily chosen based on our observation. There is no theoretical basis. Please feel free to use your own threshold.


  5. I was wondering if the code you gave is used then should we use the original signal or the filtered and de-headed signal?

      1. Hi Xu Cui,

        I believe the questions is whether any preprocessing should be performed before calculation of the correlation. For example, should the data be band-pass filtered and then we calculate the correlation?

        As a second question, I was wondering if having a longer block would affect the negative correlation bet oxy and deoxy hemoglobin, considering that during the plateau blocks, the anticorrelation decreases. Up to what block length would you expect that the negative correlation assumption holds true?

        Kind regards,

Leave a Reply to wenfeng wu Cancel reply

Your email address will not be published. Required fields are marked *