LibBioImage is a C++ library for access and process biological 3D images. It supports many input and output formats and basic image processing operations. The library is structured in several layers:

  1. image formats (image/video I/O)
  2. Format Manager for uniform access to all formats and
  3. Image processing API (image/stack/pyramid/histogram/lut/etc...)

Higher level API allows loading/saving and manipulation on images in a simple manner. The basic image type is using memory sharing so it's very fast to place it to the list and do other processing.

Format manager allows for simple access to formats as well as session based, for improved speed accessing large multi-page files.

Browse library's source code on-line

Example of 3D stack interpolation

bim::ImageStack stack;

stack.fromFile( "file_name" );
stack.normalize( 8, enhance_separate_planes );

volume_size[0] = stack.width();
volume_size[1] = stack.height();
volume_size[2] = stack.length();

voxel_size[0] = stack.get_metadata_tag_double( "pixel_resolution_x", 0.0 );

stack.resize( 64, 64, 64, TDimImage::szBiCubic, true );


Example of reading multi-page image, page by page changing color depth

  bim::MetaFormatManager fm;

  if ( (res = fm.sessionStartRead(fileName)) == 0) {

    int pages = fm.sessionGetNumberOfPages();

    for (int page=0; page<pages; ++page) {

      bim::Image img;
      fm.sessionReadImage( img, page );
      img = img.convertToDepth( 8, bim::Lut::ltLinearDataRange );

      // do stuff with img