Group Abstract Group Abstract

Message Boards Message Boards

noise removal question (when ground truth distribution is known)

Posted 10 years ago

hello, i'm trying to denoise EEG data acquired inside an MRI scanner, which is quite the hostile environment for the EEG signal. the details are not important, but i have the following question:

assume i have 2 signals, signal A and signal B. signal A was acquired in a noise free environment (ie, outside the scanner) while signal B was acquired in a noisy environment (ie, inside the scanner) but both signals are coming from the same source (ie, my brain). my question is: is there a way to use the information in the clean signal (signal A) to remove the noise from signal B? thanks, Russell

POSTED BY: Russell Butler
11 Replies

I think this is where a Wiener Filter might work. In essence you want to take advantage of the fact that the cross-correlation between your EEG signal and the MRI noise is very small. You also know the auto-correlation of of an EEG signal without the MRI which could be helpful. From that info you should be able to construct a powerful filter to get rid of the MRI noise. Here are some references: http://mathworld.wolfram.com/WienerFilter.html
http://www.owlnet.rice.edu/~elec539/Projects99/BACH/proj2/wiener.html

POSTED BY: Kay Herbert

ListPlot of the absolute value of Fourier on the two signals shows some regularity for the "good" signal that is not so obvious in the bad one. So a possibility is as follows. Important: This relies on them having the same length. Else the idea can be made to work but will require some adjustments.

Take the Fourier transform of the good signal. Construct a mask for frequencies that have large amplitudes. Apply this mask on the FT of the noisy signal. Use the IFT of that masked signal.

Here is code I used. I first downloaded the files to my /tmp directory.

iin = Import["/tmp/inside.txt", "CSV"];
sigin = iin[[1]];

fin = Fourier[sigin];
fin2 = Map[If[Abs[#] > 40, #, 0] &, fin];
mask = Sign[Abs[fin2]];

iout = Import["/tmp/outside.txt", "CSV"];
sigout = iout[[1]];

fout = Fourier[sigout];
fout2 = mask*sigout;
out2 = Re[InverseFourier[fout2]];

I don't know if this will do what you want but it might give some ideas.

POSTED BY: Daniel Lichtblau
Posted 10 years ago

Yes -- I can see the problem. ;-)

Perhaps some algorithm could be used to describe an artifact in terms of a few detectable parameters, like the positions and amplitudes of the positive and negative peaks which are clustered closely enough to be assigned to an individual artifact, then construct the assumed artifact, and subtract it out. But assuring that what's left is really the signal seems a bit of a stretch.

I'm still hoping for a few really brave souls to join this discussion!

POSTED BY: David Keith
Posted 10 years ago

yeah, pretty much. thats probably the reason there's over 50 articles published on it and no adequate solution in the past 15 years, haha

POSTED BY: Russell Butler
Posted 10 years ago

You mean that the red line is representative of the signal only, and that the blue line shows the signal with added noise? And the noise is much larger than the signal? And the noise occupies the same frequency band? And is not reproducible from run to run?

enter image description here

POSTED BY: David Keith
Posted 10 years ago

i'm attaching 3 files,

outside.txt => signal only (time series) inside.txt => signal + noise (time series, same electrode as outside.txt) artifact.pdf => qualitative description

keep in mind that inside.txt and outside.txt are not time-aligned, ie, they were acquired at different times.

by distribution i just mean the histogram

thanks!

Attachments:
POSTED BY: Russell Butler
Posted 10 years ago

Do you have any example data you can share? Useful would be signal+noise, signal only, and noise only.

What do you mean by the "distribution" of a signal?

POSTED BY: David Keith
Posted 10 years ago
POSTED BY: Russell Butler
Posted 10 years ago

hey Dave, thanks for the reply but unfortunately the noise is in the same band as my signal...

POSTED BY: Russell Butler
Posted 10 years ago
POSTED BY: David Keith
Posted 10 years ago
POSTED BY: David Keith
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard