Hello everyone,

I am having a hard time making sense of the output data from BoneJ2 Anisotropy, and would love to get some input on it’s meaning.

I see some conflict in what I have read elsewhere (both from a previous post and from BoneJ2 documentation). And my own attempts have not helped me in any ways.

From the previous post, I understood that eigenvectors are presented in a 3x3 matrix as columns (meaning the first column would be x,y,z components of the first eigenvector, associated with the lower eigenvalue, and thus the biggest radius).

BoneJ2 has been developped and distributed ever since this post so I thought I would check the documentation for any change, but it is unclear (in my opinion) regarding that subject. It states that “the values m00, m01, m02, …, m22 correspond to the xyz components of the three eigenvectors of the fitted ellipsoid” which could be interpreted either as the previous explanation or as “m00, m01, m02 correspond to the xyz components of the first eigenvector; m10, m11, m12 to the xyz of the second eigenvector, etc”.

I tried to test the output with a known structure and the results I get don’t match either possibilities, so I am at a loss. To test things out, I created an ellipsoid of known dimensions and orientation in CAD software, voxelised it and ran BoneJ2 anisotropy. The MIL point cloud closely matches the expected result (as you can see on the following image), but I can’t make sense of the eigenvectors and eigenvalues.

This radii of the ellipsoid are a=5mm, b=10mm, c=15mm which would translate to eigenvalues of D3=0.04, D2=0.01, D1=0.0044 respectively.

The orientation is rotated 30° around the z-axis, so I would expect the eigenvectors to be (-sin(30), cos(30), 0), (cos(30), sin(30), 0) and (0, 0, 1) (in order of increasing eigenvalues).

The output from BoneJ2 Anisotropy is the following

DA / a / b / c / m00 / m01 / m02 / m10 / m11 / m12 / m20 / m21 / m22 / D1 / D2 / D3 :

0.84 / 5.9 / 10.6 / 15.1 / 0 / 0 / -1 / 0.84 / 0.54 / 0 / 0.54 / -0.84 / 0 / 0.0044 / 0.0089 / 0.0286

As you can see, the eigenvalues are close, but the eigenvectors are not. They could be, if they were arranged as xyz components in order of increasing radius (meaning the first vector would be (0, 0, -1) associated with radius a=5mm, etc.) but that is not what either sources I have found mention.

So please, if anybody has any insight that could help me understand those results, I would be very interested ! Maybe @mdoube or @alessandrofelder can enlighten me ?

If anyone is curious about the context, I am looking at ways to compute fabric tensors from stress tensors and would like to compare the estimated fabric tensor (computed from FEA stress tensor on trabecular samples) to the mesured fabric tensor on the same trabecular sample. I already have pretty close matching for eigenvalues (following a formula from Hazrati Marangalou et al., 2015) and would love to measure angular differences in eigenvectors.

Sorry for the lengthy post and for the formatting of the output data (I didn’t find any better solution)

Thank you all in advance !

Nicolas