Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
edyoshikun authored Jul 28, 2023
1 parent 948a3f6 commit b087369
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# M25 Acquisition Engine for Basler and FLIR Cameras
The M25 acquisiton engine is a C++ multithreaded program that controls the acquisition of the 25-plane camera array multifocus microscope (M25) for fast and simultanous 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.
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]()(coming soon) and [napari plugin](https://github.com/SaraLab-Group/m25-napari) to see the capabities and applications of the engine.
Check out our [journal_article]() and [napari plugin](https://github.com/SaraLab-Group/m25-napari) 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 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 bufferring 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`).
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`).

<img src="https://github.com/SaraLab-Group/M25_Acqusition_Engine/blob/main/docs/images/timing_diagram.png" alt="m25 acuqisition engine diagram" width="500"/>

Expand All @@ -17,14 +17,14 @@ C++20


## Usage
This engine can be used as CLI or [Napari Plugin](pending).
This engine can be used as CLI or [Napari Plugin](https://github.com/SaraLab-Group/m25-napari). 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
- `dev` - development (deprecated)

## License
This project is licensed under BSD-3-clause License -- see the [LICENSE](LICENSE) for more details.
Expand Down

0 comments on commit b087369

Please sign in to comment.