Realistic head model: BEM with OpenMEEG

Authors: Francois Tadel, Alexandre Gramfort


This forward model uses a symmetric boundary element method (symmetric BEM) and was developed by the French public research institute INRIA (website). It uses three realistic layers (scalp, inner skull, outer skull). The goal of this forward solution is mostly for EEG users, to provide more accurate results than the spherical models. It is not necessary for MEG users, as the "overlapping spheres" method gives similar results but much faster. This method is illustrated using the tutorial EEG and epilepsy.


OpenMEEG is distributed under the French opensource license CeCILL-B. It is intended to give users the freedom to modify and redistribute the software. It is therefore compatible with popular opensource licenses such as the GPL and BSD licenses. The CeCILL-B license imposes to anybody distributing a software incorporating OpenMEEG the obligation to give credits (by citing the appropriate publications), in order for all contributions to be properly identified and acknowledged.

The references to be acknowledged are:


On Windows 64bit systems, you need to install an extra Microsoft software package to run OpenMEEG: Microsoft Visual C++ 2010 Redistributable Package (x64).

BEM surfaces

For computing a realistic BEM forward model we need the subject's anatomy to include surfaces representing the boundaries between the tissues used in the model: scalp (head/air interface), outer skull (scalp-skull interface), and inner skull (skull/brain+CSF interface). These layers must be very smooth for OpenMEEG. Brainstorm offers two solution to create smooth approximations of the skull surfaces appropriate.

Let's consider a subject including the files needed for the computation of an analytical forward model: MRI, head surface, cortex surface (= source space). From the anatomy view of the protocol, right-click on a subject folder > MRI segmentation > Generate BEM surfaces. Two methods are available, using Brainstorm or FieldTrip.



Brainstorm can generate rough approximations based on the subject's cortex and head surfaces and ICBM152's inner and outer skull surfaces. The surfaces created with Brainstorm are by construction non-intersecting.



This solution only needs the T1 MRI in input, but requires FieldTrip to be installed, as a plugin or as an independent toolbox - see the Plugins tutorial. It creates a volume segmentation in at most 5 tissues, and tesselates the boundaries between these tissues.


In the example below, the inner skull surface is more realistic than with the Brainstorm approach. However, it would cause problems with OpenMEEG because it intersects the cortex surface in many places. The cortex surface needs to be edited to force all the vertices (ie. all the dipoles) inside the innermost layer.


The FieldTrip tissue segmentation can be reused for other purposes. It labels everything within the innermost layer in the same way, in the example below, all the brain is labelled as CSF. This does not cause any particular problem, it would be interpreted as "brain+CSF".


Number of vertices per layer

Forward model

  1. Switch to the view "Functional data (sorted by subjects)", 2nd button above the database explore.
  2. Right-click on the channel file > Compute head model. Select OpenMEEG BEM in the list.


  3. Explanations of the options:
    • BEM Layers & conductivities: You can select how many layers you want to use for the BEM model. The possible options in our case are Scalp (=head), Skull (=outer skull), and Brain (=inner skull). The values on the right are the relative conductivities of each layer.

      • For EEG: Use all the layers
      • For MEG: Use only the inner skull layer
    • Use adjoint formulation: Decrease significantly the amount of memory that is necessary in memory and on the hard drive, but much longer.

    • Use adaptive integration: This produces a more accurate solution, mostly in the cases of dipoles (vertices of the cortex surface) that are very close to the inner skull layer. Keep this option selected.

    • Process dipoles by blocks: If you consistently run into crashes, it could be because you don't have enough memory available. You can try to process the dipoles by smaller blocks. It would be longer but could work. Select this option only if you have memory errors.

  4. Download OpenMEEG software? Yes.
    This will download the latest version of the OpenMEEG binaries for your operating system from the INRIA website, and install it as a Brainstorm plugin.


  5. Then the calculation of the head model will automatically start. You may wait for a long time. Be patient, it's worth it...


  6. You have now a new head model for this subject.


Warning: Dipoles outside

OpenMEEG BEM solver may be unstable when the dipoles (= the vertices of the cortex surface) are outside or too close to the innermost layer (= the brain/inner skull surface). Brainstorm tries to detect for which dipoles OpenMEEG could return wrong values, and displays a warning if any:


This doesn't mean that these points would necessarily cause problems in the BEM forward model, but it is important to be aware that they might, and check this carefully. First, evaluate visually the intersections between the cortex and the innerskull surfaces: display both in a 3D view by double-clicking on them, then from the Surface tab, set a bright color for the cortex and 0% transparency for the innerskull. This image may reveal that some parts of the cortex are sticking out of the inner skull surface.


To fix the surfaces, two solutions:

Note that this is only a WARNING: even with many suspicious points, the BEM forward model might be entirely valid. You may decide to keep the surfaces unmodified, and go back to fixing them only if you observe abnormal lead fields or source values at these locations.

To display the forward fields, right-click on the BEM head model > View lead field vectors. Abnormal displays may look like the one below: one or a few arrows are much longer than all the others. You may need to adjust the relative size of the lead field arrows in order to see something - press H for help. In this case, one of the occipital dipoles that was initially detected as a possible problem shows an abnormality that may impact your source analysis: the surfaces should be fixed and the forward model recomputed.


The example used to illustrated this section is the EEG/Epilepsy tutorial, using BEM surfaces with 642/482/482 vertices. Everything can be reproduced easily.


OpenMEEG may crash for various reasons: we tried to list the possible causes here.




All systems

Solution not found

If you cannot find a solution, please post a bug report on the Brainstorm user forum:

Additional documentation

Feedback: Comments, bug reports, suggestions, questions
Email address (if you expect an answer):

Tutorials/TutBem (last edited 2021-04-01 09:47:26 by FrancoisTadel)