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通知2024/07/27, 10am 黄鑫

Wanling Zhu
10 sec read

第五十三期fNIRS Journal Club视频 李洪

Youtube:优酷: 个体在处理不同
Wanling Zhu
12 sec read

第五十三期fNIRS Journal Club通知2024/06/22, 10am 李洪

Wanling Zhu
8 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

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