BCI is basically the idea of using brain signals for communication and control. There are three components in BCI: (1) Signal acquisition (e.g., EEG, fNIRS), (2) Signal Processing (i.e., feature extraction, classification), (3) Command Translation (e.g., mapping the signal to particular commands). As we can see, BCI is an interdisciplinary field concerning signal processing, machine learning, human-computer interaction, cognitive/neuroscience. And similar to most computer science fields, problems in BCI are similar to computer vision, speech recognition, time-series analysis, control systems, and robotics.
The field of BCI has been established since the 1960s - 1970s with a lot of promise. However, contrary to the belief that "most obvious areas" are done, BCI is still in its infancy. Most of the time, BCI suffers from quality data. For example, the data we gather from EEG, most of the time, contains a lot of noise. In addition, BCI use is still very limited in the lab or for medical use, given the cost of expensive equipment and lengthy training time. Although there is some commercial BCI available such as Emotiv, since the quality has been traded for its low cost, it is difficult to get reliable performance.
Note: For a full introduction, see my PDF here: Introduction to EEG and BCI (PDF)
Why is BCI hard?
- Variability - individuals' variability in brain signals. This variability is task-specific and user-specific. Thus all BCI systems must be calibrated before they can be used. Current research focuses on developing a transferable model of BCI that works across users.
- Signal-to-noise ratio - concerns the removal of artifacts while preserving the "weak" EEG signal. Effective signal processing and machine learning are key here. All approaches here are fundamentally statistical and computational.
Research areas that tackle this challenge
- Machine learning and signal processing - by utilizing effective and sophisticated machine learning and signal processing techniques, brain signals can be classified into accurate intent of the users
- Interface design - by designing a new interface under the scientific ground of neuroscience (e.g., exploiting how signals are evoked by the brain), one can improve the accuracy and speed of BCI
There are mainly three subtypes of BCI (Zander et al. 2009)
- Active BCI: A BCI of which users consciously control/manipulate their thoughts to control an application
- Reactive BCI: A BCI of which output from brain activity arise from external stimulation, independent of users' conscious thoughts
- Passive BCI: A BCI of which focused on utilizing our daily brain signals (without users' conscious thoughts) to enrich our daily life/interaction
The field of BCI remains very active and productive. These are some areas of BCI:
- BCI for communication - focuses on developing speller (P300, Hybrid, Hex) for locked-in patients so they can communicate with their caregivers
- BCI for control - focuses on using BCI to control neuroprostheses devices, for home automation, for gaming and etc.
- BCI for clinical purpose - an area concerning the use of BCI for clinical purposes. Neurofeedback is one area of BCI for training users' attention regulation. Invasive BCI is another important area of BCI concerning the implantation of an actual device inside the brain. The spatial resolution is much better compared to non-invasive techniques (e.g., EEG) but is often only used for patients who are already paralyzed on the inside and require urgent treatment.
- BCI for monitoring - an area concerning effect/intent/cognitive state detection using the brain signals. Workload, fatigue, breaking intent, lie detection is some example states. Often, this brain signal has been used to understand human emotion and cognition, to improve the user experience, or to provide adaptive interfaces. This area, coupled with other physiological sensors, can provide very powerful biological representations of human emotions and behaviors.
- BioSig - oldest open-source BCI toolboxes for offline processing (no GUI)
- BCI2000 - written in C++ and mainly for online processing (acquisition, running experiments) but lack offline processing (e.g., algorithms)
- OpenViBE - written in C++; gives a block programming (for non-programmers). Requires Lua knowledge to extend/customize.
- BCILAB - Matlab-based; lots of algorithms. Requires Matlab knowledge to extend/customize. Little support for acquisition systems but can tie to Lab Streaming Layer (LSL), a low-level technology that allows the exchange of time series data between devices.
- EEGLAB - Matlab-based; lots of algorithms. Requires Matlab to extend/customize
- MNE-python + other python libraries - python-based; for programmers. Lots of examples online. Work well with other python libraries. Requires python knowledge to extend/customize.
For a more in-depth intro, read here (PDF)