Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement local thickness transform #23

Open
Besler opened this issue Jun 5, 2018 · 13 comments
Open

Implement local thickness transform #23

Besler opened this issue Jun 5, 2018 · 13 comments

Comments

@Besler
Copy link

Besler commented Jun 5, 2018

The current implementation for thickness (Tb.Th, Tb.Sp, etc.) uses the derived measures [1]. Although these are metric-free indices, they are not direct indices.

Instead, it would be great to have the thickness transform [2] for direct assessment.

It takes a traditional distance transform and "blows up" the distances in spheres.

I would be OK to implement this (have a basic ITK class right now). Just want feedback (i.e. Yes/No) before I do.

[1]: Boutroy, Stephanie, et al. "In vivo assessment of trabecular bone microarchitecture by high-resolution peripheral quantitative computed tomography." The Journal of Clinical Endocrinology & Metabolism 90.12 (2005): 6508-6515.
[2]: Hildebrand, Tor, and Peter Rüegsegger. "A new method for the model‐independent assessment of thickness in three‐dimensional images." Journal of microscopy 185.1 (1997): 67-75.

@phcerdan
Copy link
Contributor

phcerdan commented Jul 9, 2018

Hi @Besler, I am sure contributions and new features are welcome, please do! @thewtex @bpaniagua

@thewtex
Copy link
Member

thewtex commented Jul 9, 2018

@Besler sorry we missed this issue -- yes, @phcerdan is right -- collaboration on the direct indices would be more than welcome!

@T4mmi
Copy link

T4mmi commented Feb 6, 2019

Just adding to the discussion with a contribution : ITKThickness3D
Local thickness transform is an objective of this module, not yet implemented.

My workaround for such issue is using the actual "distance from the medial axis to the outside"...
Such transform can be averaged/tabulated to get the actual Tb.Th (or Tb.Sp, inverting phases).

It is in my opinion more relevant than regular "local thickness transform" averaging since the 'larger number of pixels in larger trabecuale' would overestimate the actual Tb.Th...
(but I'd like your opinion on that point)

@Besler
Copy link
Author

Besler commented Mar 26, 2019

@T4mmi Loving the ITKThickness3D ! I never got around to an efficient implementation.

The main reason for blowing up the medial axis transform back to the original data is two fold. First, you can render the thickness image. This is very common for publication images. Second, there is too much lock in now. So many academics understand the "sphere filling" method that it's a massive up hill battle. Their response is going to be "at least we're all biased".

I totally agree that there are better ways to compute thickness. But, for the purposes of bone morphometry, being wrong may just be the best way to get buy in. And since there are python interfaces, this package can have huge implications for academic purposes.

Where this stuff is ultimately going is towards techniques like individual trabecular segmentation [1]. I really can stress how important I think the itkBoneMorphometry package is going to be.

I have access to the Scanco implementations and can run a comparison study if you're interested.

[1] Liu, X. Sherry, et al. "Complete volumetric decomposition of individual trabecular plates and rods and its morphological correlations with anisotropic elastic moduli in human trabecular bone." Journal of Bone and Mineral Research 23.2 (2008): 223-235.

@T4mmi
Copy link

T4mmi commented Mar 27, 2019

Just to add up some material to the discussion,

I'm not saying that the maximal sphere approach is wrong (actually it would provide the same results as the medial thickness approach if used correctly) ... only that its use is usually done wrong (averaging the whole transform instead of volume-adjusted average [1]).

In line with this statement I completely agree that an opensource solution like ITK and the itkBoneMorphometry module could give an extremely valuable baseline/reference for such measurements (especially since implementations like Scanco or Bruker ones are proprietary and not reproducible) ....
For now I only see BoneJ as a valid tool, but it lacks important features as scripting/bindings, low level customization...

I also agree with the use of thickness render for visualisation purpose but there are some methods to do it without a local thickness transform as detailed here.

Finally, for the local thickness transform implementation, a starting point might be to look at the FIJI implementation, but I personally don't feel the need nor have the time for it right now...

[1] Hildebrand, T. & Ruegsegger, P. A new method for the model-independent assessment of thickness in three-dimensional images. J. Microsc. 185, 67–75 (1997).

@Besler
Copy link
Author

Besler commented Mar 27, 2019

Okay, I take it back! Thanks for correcting me, @T4mmi! The Link you provided for visualizing with the local thickness transform is really amazing... I had never seen this.

I'll see if I can find some time to implement it here.

@dzenanz
Copy link
Member

dzenanz commented Oct 14, 2019

Has there been any news since March?

@T4mmi
Copy link

T4mmi commented Oct 15, 2019

Hi, unfortunately I hadn't much time to dedicate to new implementation ....

For now, ITKThickness3D is a viable solution for Bone morphometry (I actually use it for my projects).
It only provides a 3D medial thickness and lacks the "local thickness transform" which only requires a retro-propagation of the medial thickness to neighbors ...
Since this transform is mostly used for "cool paper figures" (the hard computation are based on the medial thickness, or should be in my experience in the case of bone morphometry), a temporary solution is to go by Slicer3D.
Haven't look at the Probe volume with model and how it could be used directly in ITK...

Full disclosure, I'm changing job at the end of the month so not so available these days...

@thewtex
Copy link
Member

thewtex commented Dec 21, 2022

CC @sbonaretti

@soupault
Copy link

Hi all! FWIW, I have recently written an anisotropic implementation in Python. The medial axis is still 2.5D (concatenation of 2D axes), the rest is fully volumetric - https://github.com/MIPT-Oulu/SubregionalCartilageAnalysis/blob/main/scartan/metrics/local_thickness.py . My version already works better in practice than the ImageJ version, since that one is isotropic.

I am working in the background to make my implementation properly 3-dimensional (https://pageperso.lis-lab.fr/~edouard.thiel/print/2005-ivc-remy-thiel.pdf), but it is going rather slow. If anyone is willing to collaborate, that would be fantastic.

@soupault
Copy link

@sbonaretti I would also appreciate if it possible to have your input on how to properly validate such algorithms, i.e. what are the best test samples that would cover the majority of corner cases. I am assuming you may have some intuition from the prior study - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6042828/, but, please, correct me if I am wrong.

@thewtex
Copy link
Member

thewtex commented Dec 22, 2022

Hi @soupault ,

Thanks for reaching out. And excellent to see more relevant open source work in MIPT-Oulu!

Discussing offline with @sbonaretti, she has some simulations in development for validation. We could also look at generation of additional trabecular-like volumes where we have a known ground truth.

Building on the work of @T4mmi , there are additional improvements that can be made to the accuracy of medial thickness based on the distance estimation method. And, skeletonization can be improved building on the work of @phcerdan.

In 2023, we could have an ORMIR community discussion on the topic.

@sbonaretti
Copy link

@sbonaretti I would also appreciate if it possible to have your input on how to properly validate such algorithms, i.e. what are the best test samples that would cover the majority of corner cases. I am assuming you may have some intuition from the prior study - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6042828/, but, please, correct me if I am wrong.

Hi @soupault,
As @thewtex said, we are looking into some shapes to compare thickness algorithms. I will let you know more after Xmas!
Serena

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants