Supplementary Material: Use of fast realistic simulations on GPU to extract CAD models from microtomographic data in the presence of strong CT artefacts
Description
Supporting material for our paper published by Elsevier in Precision Engineering, see https://doi.org/10.1016/j.precisioneng.2021.10.014 for the paper To run our code, you must install: 1. Python 2. A C++ compiler with CMake 3. gVirtualXRay (code provided) Python dependencies: 1. numpy 2. pandas 3. imageio 4. scikit-image 5. sklearn 6. scipy 7. SimpleITK 8. OpenCV 9. cma 10. tifffile import 11. tigre/tomopy (optional) Contents 1. code: - gVirtualXRay-1.1.5-Source.zip: Source code of gVirtualXRay - tutorial.py: the Python code of the registration pipeline in 2D - lsf.py: Detector response - utils.py: needed by pseudo3d.py - pseudo3d.py: Pseudo 3D registration 2. data: contains the input sinograms - proj-33keV.tif: projections after flatfield correction. Projections are of 1024 pixels. Pixel spacing: 1.9um. 900 angles over 180 degrees. Primary energy : 33 keV. Source-object distance: 145m. Object-detector distance: 80mm. - proj-0000-80keV.tif: projections of the first slice after flatfield correction. Projections are of 2702 pixels. Pixel spacing: 1.22um. 1750 angles over 360 degrees. Primary energy: 80 keV. Source-object distance: 92m. Object-detector distance: 270mm. - proj-1023-80keV.tif: projections of the last slice after flatfield correction. 3. Jupyter_Notebooks: contains our tutorial and some videos - From_CT_acquisition_to_CAD_models.ipynb: Jupyter Notebook in Python - From_CT_acquisition_to_CAD_models.pdf: Jupyter Notebook as a PDF file - cube_registration.mp4: successive best results during the optimisation of the matrix properties - fibre1_registration.mp4: successive best results during the optimisation of the fibre and core radii (before recentring) - fibre3_registration.mp4: successive best results during the optimisation of the fibre and core radii (after recentring) - spectrum_registration.mp4: successive best results during the optimisation of the beam spectrum - laplacian1_registration.mp4: successive best results during the optimisation of the phase contrast and of the fibre and core radii - laplacian2_registration.mp4: successive best results during the optimisation of the phase contrast and the response of the detector 4. results: registered images - output33keV: 2D registration - output80keV: pseudo-3D registration 5. user_study: - online-form.pdf: the online form - responses.csv: answers from volunteers 6. visualisations: contains our interactive parallel coordinate plots and a video showing how to use them - how_to_use_visualisations.mp4: video showing how we used it to analyse the data - parallel_coordinates_all_data.html: interactive parallel coordinate plots of the fibre and core raii, and the linear attenuation coefficients of the cores, fibres and matrix - parallel_coordinates-ZNCC.htmll: interactive parallel coordinate plots of the successive ZNCC values during a registration
Files
Steps to reproduce
1. Install a C++ compiler 2. Install CMake 3. Install Python 3 and LibPython 4. Compile gVirtualXRay and install the Python wrapper 5. Install Python dependencies The 2D registration: Run the Jupyter notebook (From_CT_acquisition_to_CAD_models.ipynb) or run the Python script as follows: $ mkdir output33keV $ python3 code/registration2d.py --input data/proj-33keV.tif --output output33keV --metrics RMSE --normalisation --sinogram > output33keV/run.out 2> output33keV/run.err The pseudo-3D registration: $ mkdir output80keV $ python3 ./registration3d.py --input_sinogram_dir data/ --input_recons_dir output80keV/ref_recons3d --output_sinogram_dir output80keV/test_sinogram --output_recons_dir output80keV/test_recons3d --output_params_dir output80keV/params --increment 1023 --metrics RMSE --normalisation --sinogram > output80keV/run.out 2> output80keV/run.err