What's the recommended workflow to convert DICOM files into slices?

First the bragging
I am the proud owner of a Faxitron MX-20 X-ray cabinet, equipped with a 20μm spot size micro-focus tube, with a fixed beam current at 300μA, a voltage anywhere between 10 and 35kV and an exposure time from 0.1 to 300 seconds. It is equipped with a Hamamatsu 120x120mm digital imager with a 20μm pixel size and 14-bit intensity resolution. And the best of it all is that this instrument is inherently safe to operate. Leaks are checked for regularly.
This instrument creates beautifully detailed images, but it was never intended for CT.

Then about me
I am a professional embedded software engineer, specialized in Linux kernel development, microcontroller firmware and electronic interfacing. I have a broad interest in physics, especially where physics meet electronics and software.

Now about my 'problem’
Putting my cabinet on its side and equipping it with a turn-table, I would like to use it to make CT scans.
Doing my research, I discovered I needed to create sinograms and apply an inverse radon transformation on each of those to end up with slices. I traveled to SciPy, Astra and TomoPy. I learned that most standard implementations assume a parallel beam geometry, while my instrument has its source relatively close to the imager, hence its conical geometry can not be neglected. But I have no ambition in learning Python. Properly motivated this could change, but I could not imagine I was the only person trying this, so I looked further and found Slicer 3D.

Finally the questions
My instrument produces flat-field and dark-field corrected images, each in its own Dicom formatted file. These files do not contain any geometry information.
If I create 99 images of a single object, each with the object turned 1.8 degree further, what would be the recommended work-flow to transform these 99 Dicom files into a set of cross sections?
I realize that geometry matters: imager perpendicularity to the source, imager center alignment to source center, distance between source and imager, imager diameter, and I’m not even getting started about the turntable.
Which of these geometry parameters really matter, which do I need to get right, and which ones can be calibrated out relatively easy by for example scanning a cube?

Thank you for reading. Eagerly waiting for wisdom!

Sounds like a cool project!

There is an inverse projection open source toolkit, from Kitware I thought, but I can’t put my fingers on the link right now. Maybe @thewtex knows?

Your project reminds me of this guy’s garage CT scanner. You can see at the end he uses Slicer to view the reconstructed volume slices.

D’oh, I remember now! This is what you want: https://www.openrtk.org/

Thanks for your response!

Hm, I was well aware of this and all other cool projects of Ben, but it didn’t occur to me to re-watch his CT scanner video, because I thought he did everything in MathLab. But you’re right, he is indeed using 3D slicer! Thank you for the hint. I’ll drop him a message. I’ve emailed him before and he’s a very friendly guy.

I’m going through the documentation right now. Especially the page on geometry is very useful. Thank you!

1 Like