towards an inexpensive open-source desktop ct scanner _ the tricorder project
DESCRIPTION
Portable CTTRANSCRIPT
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 1/19
Towards an inexpensive open-source
desktop CT scanner
Posted on October 22, 2013
A bit of a story, and then a lot of pictures — by far the most interesting class I’ve ever taken
was Advanced Brain Imaging in grad school. As a hands on lab class, each week we’d have a
bit of a lecture on a new imaging technique, and then head off to the imaging lab where one of
the grad students would often end up in the Magnetic Resonance Imager (MRI) and we’d see
the technique we’d just learned about demonstrated. Before the class I was only aware of the
structural images that most folks think of when they think of an MRI, as well as the functional
MRI (or fMRI) scans that measure blood oxygenation levels correlated with brain activity and
are often used in cognitive neuroscience experiments. But after learning about Diffusion
Tensor Imaging, spin-labeling, and half a dozen other techniques, I decided that the MRI is
probably one of the most amazing machines that humans have ever built. And I really wanted
to build one.
MRI is a spatial extension to nuclear magnetic resonance spectroscopy (NMR), and requires
an extremely homogeneous high-intensity magnetic field to function — far more uniform than
you can achieve with permanent magnets or electromagnets. For MRI, this uniformity is often
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 2/19
accomplished using a superconducting magnet that’s cooled to near absolute zero using
liquid helium. This, of course, makes it extremely technically difficult to make your own
system. While folks have been able to use large electromagnets for NMR (they average out
the magnetic field intensity over the sample by spinning the sample very rapidly while it’s
inside the magnet), I haven’t seen anyone demonstrate building an imaging system using an
electromagnet. There are some experimental systems that try to use the Earth’s magnetic
field, but the few systems I’m aware of are very low resolution, and very slow.
Volumetric biological imaging has two commonly used tools — MRI and Computed
Tomography (or CT), sometimes also called Computed Axial Tomography (or “CAT”) scanning
— although ultrasound, EEG, and a bunch of other techniques are also available. Fast forward
about two years from my brain imaging class (to about three years ago), I had started my first
postdoc and happened to be sitting in on a computational sensing / compressed sensing
course.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 3/19
About the same time I happened to be a little under the weather, and stopped into a clinic. I
thought I’d torn a muscle rock climbing, but after examining me the doctor at the clinic
thought that I might have a serious stomach issue, and urged me to visit an emergency room
right away. As a Canadian living abroad, this was my first real contact with the US health care
system, and as exciting as getting a CT was (from the perspective of being a scientist
interested in medical imaging), from a social perspective it was a very uncomfortable
experience. Without really going into details or belaboring the point, universal health care is
very important to me, and (what many consider) a basic human right that most of the folks in
the developed world have access to. My mom was diagnosed with cancer when I was young,
and we spent an awful lot of time in hospitals. Her and my dad still do, after 15 years and
more surgeries than anyone can count. It’s frightening to think of where we’d all be if her
medical care wasn’t free. And so when a bill showed up a month or so after my emergency
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 4/19
room visit for nearly $5,000 (most of which was covered by a health insurance company), I
nearly needed a second trip to the emergency room, and I thought a lot about the many folks I
knew, including my girlfriend at the time, who didn’t have any form of health insurance and
basically couldn’t go to the doctor when they were ill for fear of massive financial damage.
With all of this in mind, knowing the basics of medical imaging, and having just discussed
computed tomography and the Radon transform in the class I was sitting in on, I decided that
I wanted to try and build an open source CT scanner, and to do it for a lot less than the cost
of me getting scanned, by using rapid prototyping methods like laser cutting and 3D printing.
It’s been a few years since I’ve had access to a laser cutter, and they’re one of my favorite
and most productive rapid prototyping tools. In the spirit of efforts like the Reprap project, I
enjoy exploring non-traditional approaches to design, and designing machines that can be
almost entirely 3D printed or laser cut. Fast-forward almost two and a half years to last
month, and the local hackerspace happened to have a beautiful laser cutter generously
donated. This is the first cutter I’ve had real access to since grad school, and with the CT
scanner project waiting for a laser cutter and a rainy day for nearly two years, I immediately
knew what I wanted to have a go at designing. On to the details.
From a high-level technical standpoint, a computed tomography or CT scanner takes a bunch
of absorption images of an object (for example, x-ray images) from a variety of different
angles, and then backs out 3D volumetric data from this collection of 2D images taken from
different angles. In practice, this is usually done one 2D “slice” at a time, first by rotating an x-
ray scanner around an object, taking a bunch of 1D images at tens or hundreds of angles, and
then using the Radon transform to compute a given 2D slice from this collection of 1D images.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 5/19
One can then inspect the 2D slices directly to see what’s inside something, or stack the
slices to view the object in 3D.
Mechanically, this prototype scanner is very similar to the first generation of CT scanners. An
object is placed on a moving table that goes through the center of a rotating ring (or “gantry”).
Inside the ring there’s an x-ray source, and on the other side a detector, both mounted on
linear stages that can move up and down in unison. To scan an object, the table moves the
object to the slice of interest, the gantry rotates to a given angle, then scans the source and
detector across the object to produce a 1D x-ray image. The gantry then rotates to another
angle, and the process repeats, generating another 1D image from a slightly different angle.
After generating tens or hundreds of these 1D slices from different angles, one backs out the
2D image of that slice using the Radon transform. The table then moves the object slightly,
and the process is repeated for the next slice, and the hundreds of other slices that are often
taken in a medical scan. Modern scanners parallelize this task by using a fan-shaped beam
of x-rays and hundreds of simultaneous detectors to scan someone in about a minute, but the
first generation of scanners could take several minutes per slice, meaning a scan with even
tens of slices could take an hour or more.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 6/19
Designing an almost entirely laser-cuttable CT scanner with four axes of motion, one being a
large rotary gantry, was a lot of fun and an interesting design challenge. I decided that a good
way to rotate the gantry would be to design it as a giant cog that sat atop a system of drive
and idler cogs, that could slowly index it to any angle.
One of the issues with laser cutting a giant cog is finding something to mate with it that can
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 7/19
transfer motion. I’ve press-fit laser cut gears onto motor shafts before (like with the laser cut
linear CNC axis, but in my experience they can slip or wear rather quickly, and I like being
able to disassemble and reassemble things with ease. I decided to try something new, and
designed a laser-cuttable 2.5D timing pulley that mates with the main rotary cog, and
securely mounts on a rotary shaft using a captive nut and set screw. On either side of the
shaft there’s space for a bushing that connects to the base, and inside the base there’s a
NEMA17 stepper from Adafruit that transfers motion to the drive shaft using a belt and timing
pulleys.
A small lip on the base acts as the other edge of the timing pulley, and helps keep the main
rotary axis aligned.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 8/19
Inside the rotary gantry are two linear axes 180 degrees apart — one for the source and the
other for the detector. The gantry is about 32cm in diameter, with the bore about 15cm, and
the gantry itself is about 8cm thick to contain the linear axes.
Each linear axis has a small carriage that contains mounts for either the source or detector,
some snap bushings for two aluminum rails, and a compression mount for the timing belt.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 9/19
Each axis also has an inexpensive NEMA14 stepper and an idler pulley. Here, I’m using a
very small solid state high-energy particle detector called the Type-5 from Radiation Watch,
which can be easily connected to an external microcontroller. This is really very easy to work
with, and saves me from having to use a photomultiplier tube and scintillation crystal that I
found on eBay from an old decommissioned PET/CT scanner.
I’m certain if the symmetry were any more perfect, it would move one to tears. The rotary
gantry has to be symmetric to ensure proper balance and smooth rotation. After rotating the
gantry 180 degrees, here you can see the other linear axis intended for the source. It currently
just contains a mount pattern with 4 bolts, that a source will eventually mount to.
Safety is very important to me. In medical diagnostic imaging it’s often important to have an
image as soon as possible, but that’s not the case for scanning non-living objects purely for
scientific or educational interest. This chart from XKCD shows the radiation that folks typically
absorb from every day adventures like banana-eating and sleeping beside someone to hopping
on planes or having a diagnostic x-ray. I’ve designed this scanner to operate on levels slightly
above the natural background level, well into the blue (least intense) section of the xkcd
graph, and make use of a “check source”, which is an extremely low intensity source used to
verify the functionality of a high-energy particle detector. The trade-off for this safety is
acquisition time, and it will likely take a day or more to acquire data for even a small object.
This aspect of the design is scalable, such that if the scanner were to be used in a research
environment in a shielded room, folks braver than I should be able to acquire an image a good
deal faster.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 10/19
The sandwich of four plates on either end of the linear axes contain precision mounts for the
aluminum shafts, as well as a setscrew with captive nut to hold the shafts in place.
The table itself is about 40cm long, and offers nearly 30cm of travel. It uses a light-weight
nylon lead screw to index the table, with a NEMA14 drive motor located in the base.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 11/19
To test out the motion and detector, I put together an Arduino sheild with a few Pololu stepper
controllers and a connector for the detector. The seeed studios prototype board I had on hand
only had space for three stepper controllers, but it was more than enough to test the motion.
Each axis runs beautifully — I was sure the rotational axis was going to have trouble moving
smoothly given that most of the moving parts were laser cut, but it worked wonderfully on the
first try, and moves so fast I had to turn down the speed lest the neighbours fear that I was
building a miniture Stargate…
When I solidify all the bits that have to be in the controller, I’ll endeavor to lay out a proper
board much like this prototype, but with four stepper controllers, and an SD card slot to store
the image data for long scans.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 12/19
For size, here you can see the Arduino and shield together on the scanning table. I’m hoping
to start by scanning a carrot, move up to a bell pepper (which has more non-symmetric
structure), and work up to an Apple. Since time on commercial machines is very expensive, I
think one of the niche applications for a tiny desktop CT scanner might be in time-lapse scans
for slowly moving systems. If the resolution and scan speed end up being up to the task, I
think it’d be beautiful to plant a fast-sprouting seed in a tiny pot and continually scan it over a
week or two to build a 3D volumetric movie of the plant growing, from watching the roots in the
pot grow, to the stalk shooting up and unfurling its first leaves. I’m sure the cost of generating
that kind of data on a medical system would be astronomical, where the material cost of this
prototype is in the ballpark of about $200, although I’m expecting that a source will add about
$100 to that figure.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 13/19
13 THOUGHTS ON “TOWARDS AN INEXPENSIVE OPEN-SOURCE DESKTOP CT SCANNER”
Share this:
And finally, here’s a quarter-size acrylic prototype that I designed and cut in an afternoon a
few weekends ago, that started the build and brainstorm process. My recently adopted rescue
cat ironically loves to hang around the “cat” scanner, and has claimed nearly all of the open
mini spectrometers I’ve built as toys to bat around…
Laser cutters are really amazing machines, and it’s really incredible to be able to dream up a
machine one morning, spend an afternoon designing it, and have a moving functional
prototype cut out and assembled later that evening that you can rapidly iterate from. Since
laser cutters are still very expensive, this work wouldn’t have been possible without kind folks
making very generous donations to my local hackerspace, and I’m extremely thankful for their
community-minded spirit of giving.
thanks for reading!
This entry was posted in Uncategorized and tagged openct by peter. Bookmark the
permalink [http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-
desktop-ct-scanner/] .
Email Facebook 1K+ Twitter 176 Reddit Digg
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 14/19
BlackHawk
on October 24, 2013 at 9:46 am said:
Hi! very nice project!
I am a future radiologist and quite interested on this kind of topics.. some questions
for you:
1) you say you use very low radiation, could you bee more precise?
2) this prototype makes DICOM images already?
thank you!
peter
on October 24, 2013 at 1:08 pm said:
Thanks!
I have a 1uCi Cadmium-109 check source on its way (as well as a pound of
lead shielding to help put together a rough collimator). Cd-109 is the lowest-
energy radioisotope that I could find, that emits around 22keV if I remember
correctly — which is absorbed about 50% by 2cm of tissue, so I think there
should be usefully contrastive absorption for things like vegetables. I was also
considering a Barium-133 source, which is higher energy (80-120keV, I think),
so perhaps more suitable for things that have some small amount of metal,
but Ba-133 is not monochromatic. These radioisotope check sources are
sealed in epoxy, and are of such low intensity that they’re not licensed,
generally considered pretty safe unless you eat them or tape them to your
body for long periods, and can apparently be disposed of in the trash.
In order for the imaging to work, the source has to be completely shielded
such that it only emits in about a 1-2mm dia cylinder outward, facing the
detector — something like the shape of an uncooked noodle of spaghetti. This
dramatically reduces the intensity of an already very low intensity source. If
the numbers I’ve read are correct, this should give around one high energy
photon per second in that 1mm cylinder to the detector at 30cm away, and
zero everywhere else. That should give a signal-to-noise ratio of about 10:1 if
you sample each point for a minute, as background is about 5 counts per
minute on my desk. Hopefully that will be enough to give an okay image.
So, to answer your question, the radiation level should be zero above
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 15/19
background outside of the bore, and so slightly above background in an area
the size of a spaghetti noodle within the bore that you could measure it in
bananas-worth of exposure. The trade off is of course extremely long imaging
times.
james1095
on November 20, 2013 at 11:31 pm said:
Having had a fair amount of experience working on/with dental and
veterinary xray machines, I think you’ll find that a small radioactive
check source is woefully inadequate for any kind of imaging. The
intensity drops with the inverse square of the distance and more than a
few inches away you’re not much above background levels. You
*might* get a vaguely recognizable image with a source to sensor
distance of an inch or two, an extremely sensitive sensor and a very
long exposure but it will be extremely challenging to get a usable
signal to noise ratio.
Realistically a dental xray head is the bare minimum for useful xray
imaging. A dental tube run at a few mA coupled with an intraoral digital
xray sensor ought to make for an acceptable desktop CT scanner but
you will want to be careful with the shielding. The heads themselves
are very well shielded but there will be some scatter and you will have
to be very careful to block the beam behind the sensor. There are
some very real safety considerations but anything powerful enough to
create an image will be powerful enough to be hazardous.
programmer1200
on October 24, 2013 at 12:02 pm said:
Wow great work and really cool right up! Any chance of seeing a video of it working?
peter
on October 24, 2013 at 6:25 pm said:
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 16/19
Thanks! Once the source arrives and it’s generating images, I definitely plan
on making a video. The operational part will have to be a time lapse, perhaps
even over days! Can you imagine taking a CT of a bell pepper that takes so
long that it wilts while you’re scanning it? In your data, one side of the pepper
might look young, and the other might look wilted. And I don’t think there’s
enough room in my fridge for a CT scanner…
thedeepfriedboot
on October 27, 2013 at 2:02 am said:
Could could try to install it in Steve’s BarBot and see if he notices. He
already has a RPi in there that could run it.
Barney
on October 26, 2013 at 9:53 am said:
Great project!
Could it be used for reverse engineering of products as well to create digital models of
physical forms? As 3d Scanners are used for now but a lot more cost effective…
Will you be sharing the source any time soon? I’d love to have a play with it myself
peter
on October 28, 2013 at 2:13 am said:
Thanks! In theory you could use a CT to make extremely accurate volumetric
3D renderings of an object — much more than just the surface, you’d sample
the inner volume as well. In practice, with this machine operating just above
the background SNR, it will likely take many hours per slice for an apple-sized
object, so likely several days for a bunch of slices. That being said if it was
modified by folks with much more radiography safety experience than myself
to include a much more intense source, and installed into a shielded
environment, it’s theoretically possible that you could bump up the source
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 17/19
intensity to make scans much quicker. Alternatively, if someone were to
design an inexpensive 1D linear radiation detector about 15cm long with (say)
100 or more pixels, then you could acquire the projections for one rotation all
in parallel, and eliminate the need for mechanical scanning inside the gantry.
This is the acquisition method of the current generation of CT scanners, where
they use a fan-beam of x-rays to reach all the detectors simultaneously.
I am definitely planning on releasing the source shortly, after I’ve had the
chance to put together the proper Arduino shield (half done, I worked on it a bit
last night), make some small changes to the design for neater cabling, limit
switches, and such, as well as (hopefully) acquire the first images when the
source arrives. With any luck it’ll show up sometime this week! I also have to
consider how to deal with the safety aspects — having a background in
physics and a bit of medical imaging I’m fairly comfortable with this, but I’d
feel very uncomfortable for folks without a good background in science and
radiology and a deep understanding and respect for radiological safety building
their own. Then again the source will likely be undetectable even a few feet
away, so perhaps I’m being overcautious, but it’s best to err on the side of
caution.
That being said, I’m excited about what folks might want to do with a generic
low-cost platform for computed tomography. If it makes it incredibly easy for
someone to stick on a terahertz source and detector and make a terahertz CT
scanner, for example, that would make me very excited.
tekvax
on October 26, 2013 at 10:23 pm said:
have you seen this?
http://benkrasnow.blogspot.ca/2013/01/diy-x-ray-ct-scanner-controlled-by.html
peter
on October 28, 2013 at 2:19 am said:
Yes,, and it frightened me senseless. I also would have thought that you’d
need a license and proper shielding for such an intense x-ray source.
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 18/19
programmer1200
on January 3, 2014 at 3:51 pm said:
Any updates ?(Sorry ,I’ve been going to your site like every week hoping for an
update)
peter
on January 3, 2014 at 5:28 pm said:
Sorry to be slow with updates, it’s been a busy few months!
1) 1uCi Cadmium-109 source arrived, which primarily emits 22keV photons, for
which the detector should be ~30% efficient. I observed a factor of ~2200x
less detections than I was expecting, and posted the data on the
manufacturers forum. They said the detector’s threshold is calibrated for
Cesium (88keV emissions), and I need to verify the detections for the 22keV
photons are present on a scape then swap out some resistors. The number of
detections that I’m seeing is on par with Cadmium-109′s few ~>88keV
emissions, suggesting that’s the case.
2) I gave away my old oscilloscope a while ago to make room for a move, so a
bunch of us down at the hackerspace have ordered a proper one that should
be here shortly, if it hasn’t already arrived (I just returned from the holidays).
That means I’ll be able to do the verification and swap out the resistors
shortly. I may also end up moving the source and detector to the inside of the
ring, rather than the outside — that will shorten the distance between them
from 30cm to 15cm.
3) While this has all been going on in the background, I completely redesigned
the Mark 5 Science Tricorder to remove the Gumstix due to wifi issues, and all
the parts came in while I was on holidays. I started assembly last night, and
I’ll be making more posts about it shortly as it comes together!
18/5/2014 Towards an inexpensive open-source desktop CT scanner | the Tricorder project
http://www.tricorderproject.org/blog/towards-an-inexpensive-open-source-desktop-ct-scanner/ 19/19
ksaiyo
on April 8, 2014 at 1:37 pm said:
Saw the article in Make: Volume 38. Quite interested in the project. I would like to see
what could be done with a more powerful X-ray source. I have seen projects where an
X-ray source and phosphorescent screen are held stationary, and the object is rotated
with a step motor and a digital photo is taken of the screen. Software is used to build
a the 3D image, but the images tend to have a lot of artifacts. I am looking forward to
your first images.