CBC3D I2M Conversion Software

Summary:  CBC3D is an open source implementation of an adaptive Image-to-mesh (I2M) conversion software particularly targeted for Medical Image Computing FE-based applications.  While many medical imaging applications require robust mesh generation, there are few codes available. Moreover, most of the practical implementations are commercial. The algorithm we have implemented at CRTC has been previously evaluated for simulations of highly deformable objects, and our preliminary results are encouraging for  its applicability to FE-based  applications. The implementation we describe is open source and will be available withinSlicer and SOFA and as a stand-alone soctware easy to integrate with ITK-based applications. 

Description:  CBC3D generates a tetrahedral mesh from an input labeled image. The method consists of two modules:

  • Body Centric Cubic (BCC) Mesh Generation Method
  • Mesh Compression (MC)

The BCC  module generates a Body Centric Cubic  mesh from a labeled image. Initially the generated mesh is homogeneous, that means does not distinguish different tissues. Later the module specifies which tissue each tetrahedron belongs to. Each tissue is capable of automatically adjusting its resolution based on its geometric complexity and the predefined subdivision criterion.

The CM module deforms a tetrahedral mesh towards the boundaries of the labeled image. Two point sets are extracted for the mesh deformation. The first (source point set) consists of the exterior surface vertices of the input mesh. The second (target point set) consists of the exterior surface edge points in the input labeled image. Then the input mesh is deformed by registering the source to the target point set using a Physics-Based Non-Rigid Registration method.

Example Cases:

I2M BCC Brain  I2M BCC CM Brain after  I2M BCC CM Brain after section

I2M BCC CM Nidus before  I2M BCC CM Nidus after  I2M BCC CM Nidus after section

I2M BCC CM Ventricles before  I2M BCC CM Ventricles after  I2M BCC CM Ventricles after section

The Body Centric Cubic (BCC) Mesh Generation Algorithm: 


  • Input Labeled Image <std::string>
  • Resample Resolution <int> .It controls the image resampling. Suggested value is 0 (no-resampling) for large tissues and 1 or 2 for smaller tissues (default: 0).
  • Fidelity <double> .It controls the subdivision of the elements that belong to more than one image labels. The larger the value the better the conformity of the mesh on the image label interfaces (default: 0.8).
  • Size <double> . It controls the size of the mesh. The smaller the value the larger the mesh. (default: 6)


  • Mesh (.vtk)


  • Resample the input label image to a unit voxel image.
  • Generate a structured Body Centric Cubic (BCC) mesh of the specified input size. The BCC mesh fills the entire labeled image.
  • Remove tetrahedra which are completely inside the background. A tetrahedron is completely inside the background if all the image voxels that fall inside the element have zero labels.
  • Refine the BCC mesh until  fidelity criteria are satisfied 
  • The BCC refinement is performed by a red-green strategy . Initially all BCC latice tetrahedra are labeled with red color. A red tetrahedron can be subdivided into eight children (1:8 refinement), and each child is labeled with a red color.
  • The red subdivision will lead to T-junctions at the newly-created edge midpoints where neighboring tetrahedra are not refined to the same level. To remove the T-junctions, a green subdivision, including the following three cases, is performed:
  • There is one edge with T-junction.
  • There are two opposite edges with T-junctions.
  • There are three edges of a face with T-junctions.
  • Discard the refined tetrahedra that totally fall inside the background.


Mesh Compression (MC) Algorithm:


  • Mesh (.vtk),
  • Labeled image
  • Trade off between the regularization energy of the model and the similarity energy .
  • Number of iterations


  • Deformed mesh (.vtk)


  • Extract source and target point sets S and T, respectively.  
    • S consists of the exterior and the interior surface vertices of the input mesh. 
    • T consists of edges for each tissue in the image 
  • Use either  Robust Point Matching (RPM) and/or Point-based Registration (PBR) to move (displace) the source points on the surface of the tissues in the image. 
  • Check for inverted elements. If inverted elements occur we restore the mesh displacements of the previous iteration and break the loop.
  • Write the output vtk mesh.



  • Mesh Deformation-based Multi-tissue Mesh Generation for Brain Images. Yixun Liu, Panagiotis Foteinos, Andrey Chernikov and Nikos Chrisochoides. Engineering with Computers, Volume 28, pages 305-318, 2012.
  • Multi-tissue mesh generation for brain images, Yixun Liu, Panagiotis Foteinos, Andrey Chernikov and Nikos Chrisochoides. Published in 19th International Meshing Roundtable, pages 367 -- 384, October, 2010. 

  • Tetrahedral Mesh Generation for Medical Imaging. Fedorov A., Chrisochoides N., Kikinis R., Warfield S., The Insight Journal - 2005 and presented in MICCAI Open-Source Workshop, 2005. 


Funding:  This work was partially supported by NIH R44 OD018334-03A, NSF grant CCF-1139864, John Simon Guggenheim Memorial Fundation, and by the Richard T. Cheng Endowment. 


Contributors:  Fotis Drakopoulos, Yixun Liu, Andriy Fedorov, Nikos Chrisohcoies