Simulation
Simulated cylinders dataset (SCD) of forearm follows a group of heuristics we derived from observing experimental images.
Acoustic Pressure Maps
The acoustic pressure map generation consists of initially drawing the curve that represents the laser pulse absorption on the skin surface mainly due to melanin. Given that experimental data is acquired with making sure that forearm is roughly at a certain distance range from the arrays, we also limit the drawn skin curve distance. We define the skin curve as a 2nd degree polynomial that is fitted to 3 points randomly sampled at the two horizontal edges and the center of the image at varying heights. As a post-processing step to mimic experimental data, the curve is first smoothed with a Gaussian filter. Then an exponential decay of randomized length is applied under the curve along vertical axis. Finally, a non-structured uniform normal noise is multiplied with the aforementioned exponential decay region. For vessel generation, the number of cylinders to be drawn is sampled based on a coin flip. Based on the outcome, either 2 cylinders drawn or the number of cylinders is sampled from Poisson distribution. Each vessel is initially represented by a cylinder orthogonal to the image plane (z-axis) with a randomly sampled radius. We then randomly rotate the cylinder around x- and y- axes. The vessel is determined as the cross-section of the cylinder at the imaging plane, yielding ellipses based on the final angle of the cylinders. As a post-processing step, we flip a coin to determine whether vessel has a homogeneous intensity profile or has a linearly decreasing intensity from its center. We then apply a Gaussian filter on the vessel to smooth its edges. Finally, based on a coin flip, we decide whether or not to multiply the intensity profile of the vessel with uniform normal noise. Same process is iteratively repeated until desired number of non-overlapping vessels are generated. All parameters used for the aforementioned steps are empirically selected based on our observation of the experimental datasets. We provide the script to simulate acoustic pressure map that we used for SCD in the oa-armsim.
Forward Model
Given the geometry of the transducers we want to simulate, we then apply forward transform that gives the raw signals. The forward model is defined based on the speed of sound, size of the imaged area and number of pixels. After simulating the optoacoustic waves propagating through imaging medium, the forwards model matrix is obtained. Application of forward model (multiplying with the model matrix) on the acoustic pressure maps generates raw signals acquired by the each transducer elements. Forward model code can be found in pyoat.
Backprojection
Finally, we reconstruct simulated raw signals using backprojection algorithm to generate the images. The details about backprojection is given in reconstruction section. Basically, the reconstruction code takes raw signals as input and generates optoacoustic images. Reconstruction code can be found in pyoat and installed with “pip” package manager.