Hello everyone,
I am looking to combine two micro-CT scans in such a way that I get a new image stack that might have reduced noise.
I have two scans of the same specimen in the exact same position and aquisition protocols. I am looking to reduce image noise and create a new image stack.
I have tried this approach : GitHub - maitek/image_stacking: Automatic Image Stacking in OpenCV
but I am running into issues with cv2 on my python install for some reason and wondering if there is a more elegant way of doing this in slicer.
I don’t think there is such an averageVolumes module, but If they are already aligned, and have the exact same dimensions what you want to do is quite simply taking an average of two numpy arrays using arrayFromVolume
method and saving as a new volume.
You can see example of python scripts interacting 3D volumes as numpy arrays here: Script repository — 3D Slicer documentation
But increasing the signal to noise ratio at the acquisition time is more meaningful then trying to rescan. This is usually done by frame averaging (acquiring multiple frames -anywhere from 2 to 20- at the same rotation step, and average them).
If the original projections were not high quality, averaging two reconstructions from two acquisitions are not likely to give you a much better result. I suspect what you are trying to do would be roughly equivalent to running a median filter on one of the volumes.
Thank you very much for your reply! I will look into the array averaging method.