4 D bone CTs/ volume registration

I have a 4 D CT set with joint movement. I am trying to analyse the 3 dimensional movement of bones as the joints move. I am using image registration and transform sequence to compute the displacement. My problem is I cannot use rigid registration - then the all the bones move as one block. If I use B spline- then its as if a soft tissue registration- the bone do not behave as rigid bodies.

How can I develop constraints that bone get registered as rigid bodies and the space inbetween bones get registered with B spline or similar way.

Thanks a lot

Hi @SamGamage

Welcome to the forum.

This is a tricky, but interesting problem. I’d expect that the easiest way to get what you want is to segment the bones that you’re interested in, and register each one independently using a rigid body transformation. Good news is that you can use a simpler transform, bad news is it adds a new problem - segmentation.

Also, one more thing: what plugins / tools in imageJ are you using for registration currently?

Good luck,

Hi John @bogovicj

Thanks a lot for the reply. I haven’t used any yet but I am reading.
My bones are small and each frame has 5-7 small bones that I need to track motion. Each movement cycle has about 50-60 frames.

So manual segmenting is going to be next to impossible.
Is there a way to do an automated segmentation like if I segment 7 bones in the first frame and it can propagate through the sequence.



Hi @SamGamage,

Absolutely. Automatic is also better for reproducibility / bias reduction :+1:

It’s surely possible, but how easy or hard it is depends on lots of factors, i.e. there is likely plugin ImageJ / Fiji that does exactly what you need, but I’d bet that a short script could do what you need.

If you’re willing to post an uncompressed, representative image that you’re working on, then I’m sure you’d get lots of ideas from the community.


Hi @bogovicj

This is a screenshot, but this is just one slice. I have 50 frames of 3 D volumes for each frame. Also which plug in in Image J should I use for automatic segmentation please.

Also can we not develop intensity based constraints for registration to avoid segmentation.



1 Like

Hey @SamGamage,

I’d encourage you to check out the segmentation page on the wiki.

You know your data better than I do, and so I can’t tell you, just offer suggestions.
Lots of people seem to have success with trainable segmentation.

I’d also expect that you could do a good job with a combination of thresholding, hole filling, watershed, and Analyze Particles.


If it’s a CT then you should be able to threshold on the CT number for bone to show only the bones.

Then if you can collect it into a set of separate regions (segmentation? particle analyser? …I’m not sure what would be the best there), then you could create a mask for each bone independently, then use turboreg registration in rigid body mode (or whichever mode you need) with the mask, so that it only will register that bone.

I’ve done something similar in the past, and had good luck with using turboreg with masks to constrain what it matches. plus turboreg is relatively easy to put into macros.

Thank you very much @yahbai . I actually have no experience in coding/software. I am a medical person. Do you think I can import 4D CT/ a volume sequence in to imageJ. I tried but failed


What file format are your CT volume(s)? DICOM?

Did an error message appear? Could you describe what you tried and what the outcome was in more detail?