Code and softwares

During my work, I was involved in the development of softwares and/or librairies dedicated to Brain-Computer Interface research and applications.
So far, our objective was to make these developments available to the community, by distributing these softwares under free and open-source licences.

OpenViBE: An Open-Source Software Platform to Easily Design, Test and Use Brain-Computer Interfaces

OpenViBE is a free and open-source software platform for the acquisition, processing, classification and display of brain signals (e.g., EEG, MEG, ECoG, ...). The platform consist in a set of software modules that can be integrated easily and efficiently, in order to design real-time applications for neuroscience including Brain-Computer Interfaces (BCI) and neurofeedback.
It is made to be easy, in the sense that by using OpenViBE, it becomes possible to rapidly create a BCI without writing a single line of code.
Indeed, OpenViBE enables users to design a BCI by using only graphical programming, simply by adding and assembling together boxes, each box corresponding to a given processing module (see pictures below)


Fig. 1: Graphical design of a BCI or neurofeedback system using OpenViBE


OpenViBE already proposes various features and processing modules in order to design a BCI, such as:
  • Processing modules: temporal filters, spatials filters, ICA, windowing, FFT, time-frequency analysis, inverse solutions, etc.
  • Classification modules: linear discriminant analysis, classifier combination, fuzzy inference systems, etc.
  • Visualization modules: raw signal, 2D topography, 3D topography, spectrums, etc.
  • Easy interaction with virtual reality applications
  • Acquisition from various EEG devices
  • Ready-to-use BCI: motor imagery based BCI (binary of multiclass, synchronous or self-paced), P300-based BCI, neurofeedback, ...
Fig. 2: Some modules for real-time visualization of brain activity in OpenViBE


For more details and to download (for free) the OpenViBE platform, you may go there: http://openvibe.inria.fr/


BLiFF++: A BCI Library For Free in C++

BLiFF++ is a C++ library which aims at providing classes that could be used to quickly design, test and assess (mainly off line) Brain-Computer Interfaces (BCI). It is a free and open-source library.
The C++ classes provided by BLiFF++ for processing and analyzing brain signals and data include:
  • Brain signal processing and classification classes
    • pre-processing: temporal filtering, spatial filtering (lapacian, Common Spatial Patterns, inverse solutions, ...), wavelet denoising, winsorizing, ...
    • feature extraction: signal amplitude, logarithmic band power, FuRIA (inverse-solution based features), ...
    • feature selection: t-test or ANOVA based feature selection, PCA, sequential forward floating search, ...
    • classification: LDA, SVM, neural networks, fuzzy inference systems, mahalanobis distance, classifier combinations (bagging, one-versus-the-rest, stacking, etc.), pattern rejection, ...
  • Data analysis classes
    • clustering: K-means, unsuperpervized optimal fuzzy clustering (Gath & Geva), Mean Shift, subtractive clustering
    • statistical analyses: t-test, paired t-test, ANOVA, bootstrap, ...
    • performance evaluation: accuracy, true/false positive, confusion matrix, ROC curves, mutual information, kappa coefficient, ...
BLiFF++ is currently being used in the OpenViBE software platform (see above).

To download the BLiFF++ library (for free), you may go there: http://gforge.inria.fr/projects/bliff/



THESE SOFTWARE ARE PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Comments