1
Project development, ideas, and suggestions / Decorrelation: real-time ICA on an FPGA
I'm working with Brain Computer Interfaces and there is one thing that I really wish I had:
real time Independent Component Analysis (rt-ICA) implemented in my measurement hardware.
ICA (and it's little sister, principal component analysis, PCA) is a method of decorrelating data received over a number of channels. If you record several signals that are spatially mixed over a number of channels equal or greater then the number of signals, ICA can separate these signals into components, each of those containing (at least in the best-case scenario) a clean signal, minimally correlating with the other components. Now, while my field isn't of that much interest to most of you, there are other, more accessible applications:
Imagine you record audio in a room. You have, say 3 people talking obsessively in parallel, several sources of noise, and more then 3 microphones recording to one audio track each. You save all audio tracks, and then you do an ICA, regarding each audio track as a channel. The ICA will give you as many components as you have audio tracks. The first three components will contain the audio of three speakers, loud, clear and mostly free of noise and interference from the other speakers. The other components will contain the noise, you can disregard them. (Although, one man's noise is the other man's signal, I know...) It's like magic! I have used it successfully to separate the voice of lecturers from noisy vents and background talking, using only stereo recordings of my Smartpen.
The disadvantage is that it takes quite some processing time...
However, I've looked it up and it seems as if real time versions of this have been implemented on FPGAs since 2003 (!!). Just google 'ICA FPGA' and you will find tons of examples.
Anyone else interested in such awesomeness? Ideas about feasibility of a little shield capable of blind source separation from several channels?
Best
Milarepa