Phase computed laminography (CL) - filtered backprojection

Version 1.0.2 (3.05 KB) by Karol Vegso
I post here the computed laminography code for phase data.
Updated 31 Aug 2023

View License

I post here the computed laminography m-script for the phase data. The input data are differential phase images measured by phase stepping (or fringe scanning) technique and X-ray Talbot or grating inteferometry. The input data for reconstruction are 720 differential phase images. Therfore number of projections in variable no_proj is 720 per 360 degrees sample rotation. Herre, the sample is rotated from 0 degrees to 360 degrees with step 0.5 degrees (720 projections). In the code, the variable theta contains current sample rotation in the computed laminography.
The size of differential phase images in horizontal direction is 2048 and in vertical direction is 1000. In the computed laminography, you do not work with sinograms, but the entire differential phase images are input data for reconstrcution. The input differential phase images are encoded as 64 bit real values or double values, and liitle endian byte order is used here.
The computed laminography differs from the standard computed tomography in such way that the sample is inclined with respect to the X-ray beam by the inclination angle. Here, the inclination angle is alpha. It has value of -30 deg or negative value. The negative value was verified on the real phase data.
In the computed laminography, you convert coordinates in the sample (x,y,z) into the coordinates on the detector (u,v,w). The coordinates in the sample are xpr, ypr, zpr. The horizontal coordinate on the detector is u. The vertical coordinate on the detector is v. The transformation of xpr, ypr, zpr into the u,v is done in the lines 137-143. The u coordinates are centered at zero. Therfore, the u coordinates are shifted by middle_index_u value of 1041. This is the centering the lateral coordinates on the detector. Later in the code, the filtered backrpojection is applied on the data. The algorithm reconstruct slices in the sample from z-th coordinate z_start to z-coordinate z_step with step z_step. The update of z slice position is done by zpr=index_z;.
The algorithm is called filtered backrpojection. Therefore, I should tell something about filtering. The filter used here is typical for phase computed laminography. The filter is in the form (cos(alpha) * sign(omega_u))/(i*4*pi). The sign has +1 values for positive omega_u spatial frequencies and -1 values for negative omega_u spatial frequencies. The cos(alpha) is for the inclination of the sample by the nagle alpha. In the computed laminography, you rotate sample from 0 degrees to 360 degrees. Therefore the term 4*pi. The filter is applied on the image in matrix image_current(:,:). Firstly, the two dimensional fourier transformation (fft2) is applied on the image to get image into the omega_u (horizontal) and omega_v (vertical) spatial frequncies. Then, the filter is applied on each horizontal line of the fourier transformed image. Finally, the filtered image is inverse fourier trasformed (ifft2) from omega_u and omega_v into the u and v. The real values of ifft2 are taken. It happens on the lines 130-137.
I hope this computed laminography filtered backprojection code will help you to solve your own project. Unfortunatelly, I could not attach to the m-script the real data or differential pahse images, because of their big size.

Cite As

Karol Vegso (2024). Phase computed laminography (CL) - filtered backprojection (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2021b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

The improved code was uploaded.


The clarity of explanation was improved.