Blind Source Separation for OpenViBE

Blind Source Separation or BSS is a very interesting field of signal processing. It consists in transforming a multidimensional signal to a space built of separated “sources”. Blind Source Separation is a generalization of Independent Component Analisys or ICA which supposes the sources are statistically independent. A nice illustration of this is the Cocktail Party problem where many people are talking altogether. You, has a member of the Cocktail Party, can hear everyone at the same time… and can focus on one particular person to hear and possibly listen to him only. When doing this, you are doing independent component analysis.

So how does that help in processing EEG or brain related signals ? Well, the idea is to transform a signal from the sensor space to the source space using a demixing matrix. This can be basically seen as a well chosen (or trained) spatial filter which will concentrate each source in only one of the output components. If you display this new representation of your signal, you will possibly identify a component containing mostly eye blinks, one or a few component containing mostly muscle artifacts, one or a few components containing mostly the particular brain activity you’re trying to detect and so on. Based on the information you can grab of the signals shapes, you should be able to decide which of the sources you are interested in and which you are not interested in, and decide to work with a subset of the sources, focusing on the features you want to extract on one hand, or on the artifacts you want to remove on the other hand. Ultimately, you could also go back to the sensor space with a cleaned signal using a mixing matrix (which is just the inverse of the demixing matrix) !

I won’t give more details about BSS or ICA but interested readers could refer to signal processing books to find out more information on these techniques… There are also many studies on efficient applications of ICA and BSS for EEG. Just look for these keywords in pubmed or Google Scholar to have an idea.

So what can we do now with OpenViBE ? Actually for now, there is no BSS or ICA algorithm implemented. Of course, there are a couple of very efficient spatial filter trainers such as for instance Common Spatial Pattern or xDAWN. But there is no general purpose BSS or ICA yet.


The OpenViBE community is building up :) and some indirect contributions are progressively appearing. For instance, I want to point out Marco Congedo‘s ICoN tool.

ICoN snapshot

The ICoN software at work - This software is able to output OpenViBE ready BSS spatial filters

ICoN stands for Independent Component Neurofeedback. Marco is using this software of his own to setup some neurofeedback experiment. Interesting fact is that he added the possibility to export the trained BSS filters from his software to external OpenViBE configuration files devoted to our Spatial Filter box. So this opens up a very interesting opportunity to :

  • Acquire signals with OpenViBE
  • Train spatial filters with ICoN
  • Extract and process features of interest in realtime with OpenViBE thanks to ICoN generated filters

ICoN is very intuitive software to use. You can download it for free from Marco’s site along to a couple of other tools I’ll discuss in later posts. Give this a try.

My feeling is that this is where the community begins… when people adapt their tools so that two specialized tools get interoperable and finally open new doors for even more powerful applications…

Comments are closed.