Release Notes for Iso2mesh 2013 (1.5.0)

code name: Laba Porridge, released on July 16, 2013

1. Introduction
2. About this release
3. What's new compared to 1.4.9
4. What's new compared to 1.0.1
5. System requirement
6. Known issues
7. Acknowledgement

1. Introduction

Iso2mesh is a free, powerful, yet easy-to-use 3D mesh generator for Matlab and Octave. It is particularly suitable for creating high-quality surface and tetrahedral meshes from 3D medical imaging data, including binary, segmented or gray-scale volumetric images. Iso2mesh is cross-platform, quantitative, versatile, and fully optimized for better speed and low-memory requirement.

Iso2mesh toolbox contains nearly 120 modular Matlab functions, covering 3D volumetric image pre-processing (hole-filling, thinning and thickening), surface mesh modeling (extraction, remeshing, repairing, and smoothing), volumetric mesh creation, plotting and import/export for a range of mesh file formats. For some of the core functions, iso2mesh calls the self-contained meshing utilities built upon CGAL and tetgen to perform Delaunay tetrahedralization, a process known for producing high-quality, self-intersection-free surfaces and volumetric meshes.

2. About this release

Iso2mesh v1.5.0 is a stable release towards the next generation iso2mesh, i.e. the "2.0" milestone. Compared to the previous stable release (v1.0), numerous new features and bug fixes were included. The number of functions in this toolbox grew by 30% from 90 to 119; the size of the full installed package was nearly doubled, from 17 MB to 31 MB. The support for Mac OS, both 32 and 64bit processors, became complete in this release series.

3. What's new compared to 1.4.9

Compared to the beta version released in Jan 2013, the 1.5.0 final release gained the following features:

  1. label-wise mesh density control in CGAL 3D mesher (contributed by Peter Varga)
  2. plotting mesh slices using "{x,y,z}=value" syntax in plotmesh selector

4. What's new compared to 1.0.1

The iso2mesh 1.5.0 update gained the following major features compared to the previous stable release (1.0.1):

  1. we added surface mesh boolean operation support (surfboolean) via the new GTS binaries
  2. we added powerful self-intersecting surface repairing and decoupling features using the meshfix utility
  3. we defined a unified 3D mesh file format (JMesh) based on JSON format for general-purpose data exchange
  4. we added binaries for 32/64bit Intel Mac OS and Raspberry Pi (armhf)
  5. qmeshcut now supports more flexible mesh slicing options
  6. the iso2mesh-generated meshes can now be imported by COMSOL and ABAQUS with the new file format support

With this new release, you will also benefit from many minor updates and bug fixes, including

  1. new function meshrefine for mesh refinement
  2. plotmesh accepts cell array face list for general polyhedra handling
  3. fast mesh intersection testing utilities surfboolean('self')
  4. qmeshcut supports element-based value list
  5. saving surface mesh to STL (ASCII or binary) format for 3D printing
  6. include a general purpose JSON file encoder and decoder, loadjson and savejson

and many more.

The detailed change logs can be found in the ChangeLog and SVN commit history pages.

5. System requirement

To install the iso2mesh version 1.5.0, you need

  1. at least 32MB free disk space for the all-in-one package, and 6~12MB for platform-specific packages
  2. a computer running Windows 95, XP, Vista and 7 (32/64bit), or GNU Linux (32/64bit) or Mac OS (Intel 32/64bit)
  3. a working directory where you have write-permission to save intermediate outputs
  4. Matlab 7.0+ or GNU Octave 3.0+
  5. for efficient mesh processing, 1GB or more memory is recommended

To use fillhole3d or run some of the demo scripts, you need to install the image processing toolbox for Matlab or image toolbox for Octave.

6. Known issues

  1. if you have used meshabox in your program, please revert the face and elem output order. This is the only place that is not compatible with the old releases.
  2. the newly added surfboolean function may fail under certain conditions, for example the demo_merge_surfaces.m failed on windows, complaining the input "is not an orientable manifold". This may be caused by a bug in the GTS library
  3. when using the cgalpoly option with surf2mesh, the input surface nodes are not preserved in the output mesh
  4. to set opt.autoregion=1 can make the meshing 3x to 5x slower due to use of finddisconnsurf
  5. automatically detecting face vs elem in plotmesh is not 100% robust
  6. iso2mesh can not automatically process surfaces that intersect each other. One can use remeshsurf to repair a single self-intersecting mesh, but more than 2 such surfaces can be a trouble
  7. if your mesh contains multiple disjointed components, iso2mesh (cgalsurf) may sometimes miss a few, you may add the volumetric image by 1 and remesh the domain

7. Acknowledgement

We deeply appreciate the contribution from the CGAL team, which has done a marvelous work for developing state-of-the-art image-based mesh generation utilities. We also want to thank Hang Si for his great work for writing tetgen, which is heavily involved in iso2mesh's meshing work-flow. Thanks also goes to Marco Attene, Mirko Windhoff, and Axel Thielscher for developing the "meshfix" utility, and to Donghyeon Kim, Blake Johnson, Niclas Borli and Peter Varga for their help in improving the toolbox.

For those of you who has used iso2mesh in your work, the author of this toolbox appreciates if you can cite the following paper in your publication, this will help tremendously for the future development of this software:

Qianqian Fang and David Boas, "Tetrahedral mesh generation from volumetric binary and gray-scale images," Proceedings of IEEE International Symposium on Biomedical Imaging 2009, pp. 1142-1145, 2009

Powered by Habitat