• Parcellation
  • Scalp mesh
  • 10-5 landmarks
  • Surface edge sampling at 5%
  • Full head mesh
  • Surface combine
  • Voxel vs mesh modeling
  • Downsampled cortex mesh
  • Surface combine
  • GM mesh
  • Mesh topology

OpenJData logoBrain2Mesh

A one-liner brain mesh generator

Brain2Mesh is a MATLAB/Octave based 3D mesh generation toolbox dedicated to the creation of high-quality multi-layered brain mesh models.

Download

2021.02.10Brain2Mesh toolbox is now in Debian 11/Ubuntu/PPA
2020.02.05Brain2Mesh paper is published on Neurophotonics
03.01Brain1020 - a fast portable 10-20 landmark generator
02.01We presented this work at Photonics West 2020
2019.10.14Brain2Mesh is now an official Fedora package
08.21Brain Mesh Library adopts the JData specification
08.08Brain2Mesh training in our MCX'19 Workshop
2018.10.14Brain2Mesh preview release

Brain Mesh Library
guide

Brain Mesh Library

Brain Mesh Library (BML) is an open-source database to facilitate model-based analyses in neuroimaging and neuroscience research. It contains standardized high-quality multi-layered brain surface and tetrahedral meshes generated by Brain2Mesh over a growing set of public brain atlas datasets.

Basic Data:Scalars

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_float: 0.5, an_integer: 125, a_string: 'test', };
Basic Data:BigInt (64-bit integers)

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_bigint64: 9007199254740991n };
Basic Data:Special constants

Input DataText JData (JSON)Binary JData (UBJSON)
data={ logical: [true, false], empty: null, special: [NaN, 0/0, 1/0, Infinity, -Infinity] };
Basic Data:Structured data

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ name: "Andy", school: "Hood", classes: { math: { teacher: "Grant", weekday: ["Monday","Tuesday"] }, art: { teacher: "Cole", weekday: ["Wednesday","Friday"] } } };
Basic Data:1-D Vectors

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_row_vector: [1,2,3,5,NaN], a_col_vector: [ [1], [2], [3], [5], [NaN] ], a_mixed_array: ["1","2",[1.0,2.0],[[1],[2]]] };
Basic Data:1-D Vectors

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_string: "test string", a_string_with_escape: "a\t\tb" };
Basic Data:Byte stream

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
// Javascript does not have built-in blob-object data={ _ByteStream_: "eJxjZMQEAADmABU=" };
ND Arrays:Direct-form

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_1d_vector: [1,2.5, 10], a_2d_matrix: [[1,2,3],[4,5,6]], a_3d_matrix: [[[1,2,3],[4,5,6]] ,[[11,12,13],[14,15,16]]] }
ND Arrays:Annotated-form

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={}; // a typed-array (1D only) data['a_1d_vector']= new Float32Array([12.5,10]); // a typed 2D array, using numjs ndarray data['a_2d_vector']= nj.array([[1,2,3],[4,5,6]],'uint8'); // a typed 3D array, using numjs ndarray data['a_3d_vector']= nj.array([[[1,2,3],[4,5,6]], [[11,12,13],[14,15,16]]],'int8');
ND Arrays:Complex-valued arrays

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
/* *Javascript does not have built-in complex data type, *but you can use the below JData construct to store *a complex value/vector. In this case, the 1x2 *complex value data=[1+2*i, 3+4*i] */ data={ _ArrayType_: "int32", _ArraySize_: [1,2], _ArrayIsComplex_: true, _ArrayData_: [[1,3],[2,4]] };
ND Arrays:Sparse arrays

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
/* *Javascript does not have built-in sparse array type, *but you can use the below JData construct to store *a sparse 2-D array. In this case, the 5x5 sparse *matrix with 2 values: data[1,1]=2.1 and data[2,3]=2.2. */ data={ _ArrayType_: "single", _ArraySize_: [5,5], _ArrayIsSparse_: true, _ArrayData_: [[1,2],[1,3],[2.1,2.2]] };
ND Arrays:Array compression

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={}; opt={compression: 'zlib'}; // a typed 3D array, using numjs ndarray data['a_5x4_all_one']=nj.ones([5,4],'uint8');
ND Arrays:Array shape (diagonal, triangular, band, Toeplitz ...)

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
// Javascript does not have built-in special matrices // a 5x5 identity matrix data={ _ArrayType_: "single", _ArraySize_: [5,5], _ArrayShape_: "diag", _ArrayData_: [1,1,1,1,1] };
Advanced Data-types:Maps

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data=new Map([ [0/0, 'one'], [2, 'two'], ["k", 'three'], ]);
Coming Soon
We are adding the preview images and download links for each mesh model. The available mesh data can be accessed at on Github
guide

References

Brain2Mesh Paper

-- in which we describe our meshing pipeline, sample mesh data and impact assessment for fNIRS modeling

Anh Phong Tran, Shijie Yan, Qianqian Fang*, (2020) "Improving model-based fNIRS analysis using mesh-based anatomical and light-transport models," Neurophotonics, 7(1), 015008

Browse

Go to About
Project maintainer:
Qianqian Fang, PhD
Current developers:
Qianqian Fang
Shijie Yan
Yaoshen Yuan
Morris Vanegas
Past developers:
Anh Phong Tran

About

Iso2Mesh/Brain2Mesh Developers

  • Our team is dedicated to advancing medical-image based 3D mesh generation techniques.

    Click on each member to read more.
  • Qianqian Fang PhotoDr. Fang is currently an Assistant Professor in the Dept. of Bioengineering, Northeastern University. He is the original author of Iso2Mesh and JSONLab. He is the current maintainer of the project. He enjoys programming, and interactions with the users.
  • Shijie is a PhD student in Dr. Fang's lab since 2017. He is currently working on mesh-based MC and Iso2Mesh software development.
  • Yaoshen is a PhD student in Dr. Fang's lab since 2016. He is currently helping on develop advanced mesh-based light tansport models.
  • Morris is a PhD student in Dr. Fang's lab since 2016. He is currently develping Javascript codes in displaying mesh models within web pages.