Warning
This project is currently under development and not yet ready for use. Please check back later.
Volumetric synthetic aperture focusing technique (SAFT) for acoustic resolution optoacoustic microscopy and (soon) scanning acoustic microscopy.
This repository contains an implementation of the synthetic aperture focusing technique purely written in C++ and CUDA. You need a CUDA capable device and Linux installed on your PC to run the fast GPU version of it. A "slow" CPU version is implemented as well. Installation instructions will soon be provided for ArchLinux as well as dataset specifications.
- Loading files from a standardized
hdf5
file format - Defining transducer geometries
- Supports both ultrasound pulse echo and optoacoustic mode
- Graphical user interface including preview of preprocessed datasets and reconstructed datasets
- Fully open source and free of charge
- CUDA accelerated reconstruction procedure on GPU if requested
Required packages:
cmake
to build compiling chain- a capable C++ compiler which can be consumed by
CMake
CUDA
for GPU acceleration (can be disabled, not required)hdf5
for dataset import and exportlibxrandr
,libxinerama
,libxcursor
,libxi
,libgl1-mesa-dev
: used for GUI framework
Package installation command ArchLinux:
pacman -S hdf5 libxrandr libxinerama
Package installation command Ubuntu:
apt-get install libhdf5-serial-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev
Many other dependencies are directly managed through CMake based on FetchContent
.
Cloning and compiling
git clone https://github.com/hofmannu/opensaft
cd opensaft
mkdir build
cd build
cmake .. && make all
The last command will generate an executable called main_exp
.
- Bandpass filtering directly within GUI and separate reconstruction into different normalized frequency bands as done in RSOM processing software
- Include sensitivity field building and weighting as done in WSAFT based on a GPU calculated model of the spherically focused detector
- Add a simple simulation toolbox to generate test datasets
SAFT induces a strong absorption bias over depth. Absorbance "reconstructed" at different depths can therefore never be compared in a quantitative manner. It also tends to amplify low frequency signals which is the reason why most groups so far reconstruct different frequency bands independently (feature requires implementation). In planes very distant from the focus blurring is unavoidable due to the large shape of the reconstruction arcs.
The documentation should be running with vitepress
and is compiled into a static website that is also published to github pages. All documentation is written in markdown and can be found in the doc folder.
If this is the first time that you have a look at the documentation, you need to run
npm install
Afterwards, to display the documentation run
npm run docs:dev
To build the static website, run
npm run docs:build
The documentation is published on every merge to main
to github pages.
- J. Turner et al.: Improved optoacoustic microscopy through three-dimensional spatial impulse response synthetic aperture focusing technique in Optics Letters 39 (12), pp. 3390 - 3393 (2014), 10.1364/OL.39.003390
- J. Turner et al.: Universal weighted synthetic aperture focusing technique (W-SAFT) for scanning optoacoustic microscopy in Optica 4 (7), pp. 770 - 778 (2017), 10.1364/OPTICA.4.000770
- M.-L. Li et al.: Improved in vivo photoacoustic microscopy based on a virtual-detector concept in Optics Letters 31 (4), pp. 474 - 476 (2006), 10.1364/OL.31.000474
- Urs A. T. Hofmann et al.: Rapid functional optoacoustic micro-angiography in a burst mode ion Optics Letters 45 (9), pp. 2522 - 2825 (2020), 10.1364/OL.387630
If there is an error occurring about a version mismatch of the hdf5
library while loading a dataset from a file, it is most likely not the dataset itself that has an outdated format but rather the version of the installed hdf5
library and the library you linked during compilation (e.g. your PC updated the hdf5
library in the meantime). Simply recompile the program and the error should be gone.
I have no more access to optoacoustic microscopy images and therefore I am currently relying on simulation data to validate the performance of the algorithm. If you have experimental datasets which I can test the procedure against, feel free to contact me.