Skip to content

SaraLab-Group/M25_Acqusition_Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DOI

M25 Acquisition Engine for Basler and FLIR Cameras

The M25 acquisition engine is a C++ multithreaded program that controls the acquisition of the 25-plane camera array multifocus microscope (M25) for fast and simultaneous 3D imaging. The engine captures simultaneously from 25 machine vision cameras (FLIR or Basler Ace) to run at >160FPS without loss of frames to capture fast and live 3D dynamics of biological organisms.

Check out our journal_article and napari plugin to see the capabilities and applications of the engine.

Summary

The M25 acquisition engine is a multithreaded program that spawns individual read and write threads per camera to offload the data into a disk. This program uses the Windows OS Windows SDK File Handler library for rapid storage into NVMe SSD Raid 0 arrays. Using this library we can bypass the default read and write functions by buffering with a pre-allocated RAM memory aligned to the file-system offsets. The NVMe drives are 512B sector aligned which allows us to do direct disk writing to known locations doing pointer arithmetic. We create individual acquisition threads for each camera and copy the sensor data into the sector-aligned buffer. The read-and-write process is done dynamically by implementing the RAM ping-pong buffer that allows the writing directly to RAM and then writing to disk into a binary file. Once the acquisition is done, the binary file is converted to desired file format (i.e .raw or .tif).

m25 acuqisition engine diagram

Installation

Required Libraries and Settings

C++20

Usage

This engine can be used as CLI or Napari Plugin. Depending on what cameras the you have setup the scope use the following folders to compile the .exe

Folders

  • basler - Basler cameras
  • flir - FLIR cameras

Branches

  • dev - development (deprecated)

License

This project is licensed under BSD-3-clause License -- see the LICENSE for more details.