rodness & plateness

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

rodness & plateness

Michael Doube
Hi all,

One of the big questions in trabecular bone morphology is how much of
the bone network resembles plates versus rods (I call it platiness /
roddiness, but it has a few names). Some images of trabecular networks
are here:

http://www.brsoc.org.uk/gallery/

There are a few methods out there for determining platiness/roddiness,
but I haven't yet found one that both makes sense and is implemented (or
easily implemented) in Java.  I tried the Tubeness plugin, which makes
some very attractive images (especially when rendered in the 3D viewer)
but it doesn't quite give the result I'm looking for.

I imagined that finding the axes of ellipses fit to 3D star volumes
might be helpful; ellipses fit in rods would have one long axis and 2
short ones while those in plates would have 2 longer axes and one short
one.  Something like the Local Thickness plugin (which is great), but
with ellipses rather than spheres was another thought, but Bob's maths
is a bit beyond me.

Does anyone know of an already-implemented method that I could use, or
failing that, have any suggestions about a good one to implement?

Cheers,

Mike
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Thomas Boudier
Hi Michael,

Within my 3D filters plugin there is a 3D axes entry that approximates a
binarised 3D object by a 3D ellipsoid, it will give you the axes and the
radii of the ellipsoid. Hope this helps.

Thomas

http://imagejdocu.tudor.lu/doku.php?id=plugin:morphology:3d_binary_morphological_filters:start

> Hi all,
>
> One of the big questions in trabecular bone morphology is how much of
> the bone network resembles plates versus rods (I call it platiness /
> roddiness, but it has a few names). Some images of trabecular networks
> are here:
>
> http://www.brsoc.org.uk/gallery/
>
> There are a few methods out there for determining platiness/roddiness,
> but I haven't yet found one that both makes sense and is implemented
> (or easily implemented) in Java.  I tried the Tubeness plugin, which
> makes some very attractive images (especially when rendered in the 3D
> viewer) but it doesn't quite give the result I'm looking for.
>
> I imagined that finding the axes of ellipses fit to 3D star volumes
> might be helpful; ellipses fit in rods would have one long axis and 2
> short ones while those in plates would have 2 longer axes and one
> short one.  Something like the Local Thickness plugin (which is
> great), but with ellipses rather than spheres was another thought, but
> Bob's maths is a bit beyond me.
>
> Does anyone know of an already-implemented method that I could use, or
> failing that, have any suggestions about a good one to implement?
>
> Cheers,
>
> Mike
>
>


--
/*****************************************************/
 Thomas Boudier, MCU Université Pierre et Marie Curie
 UMR 7101 / IFR 83. Bat A 328, Campus Jussieu
 Tél : 01 44 27 35 78  Fax : 01 44 27 25 08
/*****************************************************/


 
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

David Webster
You can get your axis information from the eigenvalues of the covariance
matrix for the set of points in question, without actually fitting then to
ellipses or ellipseoids. I don't know if there are any eigenvalue plugins in
imageJ, though.

Eavid

On Thu, Mar 5, 2009 at 2:14 AM, Thomas Boudier <
[hidden email]> wrote:

> Hi Michael,
>
> Within my 3D filters plugin there is a 3D axes entry that approximates a
> binarised 3D object by a 3D ellipsoid, it will give you the axes and the
> radii of the ellipsoid. Hope this helps.
>
> Thomas
>
>
> http://imagejdocu.tudor.lu/doku.php?id=plugin:morphology:3d_binary_morphological_filters:start
>
>
> Hi all,
>>
>> One of the big questions in trabecular bone morphology is how much of the
>> bone network resembles plates versus rods (I call it platiness / roddiness,
>> but it has a few names). Some images of trabecular networks are here:
>>
>> http://www.brsoc.org.uk/gallery/
>>
>> There are a few methods out there for determining platiness/roddiness, but
>> I haven't yet found one that both makes sense and is implemented (or easily
>> implemented) in Java.  I tried the Tubeness plugin, which makes some very
>> attractive images (especially when rendered in the 3D viewer) but it doesn't
>> quite give the result I'm looking for.
>>
>> I imagined that finding the axes of ellipses fit to 3D star volumes might
>> be helpful; ellipses fit in rods would have one long axis and 2 short ones
>> while those in plates would have 2 longer axes and one short one.  Something
>> like the Local Thickness plugin (which is great), but with ellipses rather
>> than spheres was another thought, but Bob's maths is a bit beyond me.
>>
>> Does anyone know of an already-implemented method that I could use, or
>> failing that, have any suggestions about a good one to implement?
>>
>> Cheers,
>>
>> Mike
>>
>>
>>
>
> --
> /*****************************************************/
> Thomas Boudier, MCU Université Pierre et Marie Curie
> UMR 7101 / IFR 83. Bat A 328, Campus Jussieu
> Tél : 01 44 27 35 78  Fax : 01 44 27 25 08
> /*****************************************************/
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

David Webster
For a structure tensor feature plugin, follow the link form the image J
homepage, to
"Plugins/More Sites with Plugins/FeatureJ". This has a "structure" bullet
which contains info on structure tensor plugin.

David Webster

On Thu, Mar 5, 2009 at 9:52 AM, David Webster <[hidden email]> wrote:

> You can get your axis information from the eigenvalues of the covariance
> matrix for the set of points in question, without actually fitting then to
> ellipses or ellipseoids. I don't know if there are any eigenvalue plugins in
> imageJ, though.
>
> Eavid
>
>   On Thu, Mar 5, 2009 at 2:14 AM, Thomas Boudier <
> [hidden email]> wrote:
>
>> Hi Michael,
>>
>> Within my 3D filters plugin there is a 3D axes entry that approximates a
>> binarised 3D object by a 3D ellipsoid, it will give you the axes and the
>> radii of the ellipsoid. Hope this helps.
>>
>> Thomas
>>
>>
>> http://imagejdocu.tudor.lu/doku.php?id=plugin:morphology:3d_binary_morphological_filters:start
>>
>>
>> Hi all,
>>>
>>> One of the big questions in trabecular bone morphology is how much of the
>>> bone network resembles plates versus rods (I call it platiness / roddiness,
>>> but it has a few names). Some images of trabecular networks are here:
>>>
>>> http://www.brsoc.org.uk/gallery/
>>>
>>> There are a few methods out there for determining platiness/roddiness,
>>> but I haven't yet found one that both makes sense and is implemented (or
>>> easily implemented) in Java.  I tried the Tubeness plugin, which makes some
>>> very attractive images (especially when rendered in the 3D viewer) but it
>>> doesn't quite give the result I'm looking for.
>>>
>>> I imagined that finding the axes of ellipses fit to 3D star volumes might
>>> be helpful; ellipses fit in rods would have one long axis and 2 short ones
>>> while those in plates would have 2 longer axes and one short one.  Something
>>> like the Local Thickness plugin (which is great), but with ellipses rather
>>> than spheres was another thought, but Bob's maths is a bit beyond me.
>>>
>>> Does anyone know of an already-implemented method that I could use, or
>>> failing that, have any suggestions about a good one to implement?
>>>
>>> Cheers,
>>>
>>> Mike
>>>
>>>
>>>
>>
>> --
>> /*****************************************************/
>> Thomas Boudier, MCU Université Pierre et Marie Curie
>> UMR 7101 / IFR 83. Bat A 328, Campus Jussieu
>> Tél : 01 44 27 35 78  Fax : 01 44 27 25 08
>> /*****************************************************/
>>
>>
>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Michael Doube
Hi David

Thanks for the link; I'm going to check out the structure tensor and see
whether it will answer my question.  I use the Jama linear algebra
package for eigendecomposition and other matrix maths needed in my plugins.

Does anyone have a comment on the relative value of getting eigenvectors
& eigenvalues using the covariance matrix versus moments of inertia
versus ellipsoid-specific methods?

Mike

David Webster wrote:

> For a structure tensor feature plugin, follow the link form the image J
> homepage, to
> "Plugins/More Sites with Plugins/FeatureJ". This has a "structure" bullet
> which contains info on structure tensor plugin.
>
> David Webster
>
> On Thu, Mar 5, 2009 at 9:52 AM, David Webster <[hidden email]> wrote:
>
>> You can get your axis information from the eigenvalues of the covariance
>> matrix for the set of points in question, without actually fitting then to
>> ellipses or ellipseoids. I don't know if there are any eigenvalue plugins in
>> imageJ, though.
>>
>> Eavid
>>
>>   On Thu, Mar 5, 2009 at 2:14 AM, Thomas Boudier <
>> [hidden email]> wrote:
>>
>>> Hi Michael,
>>>
>>> Within my 3D filters plugin there is a 3D axes entry that approximates a
>>> binarised 3D object by a 3D ellipsoid, it will give you the axes and the
>>> radii of the ellipsoid. Hope this helps.
>>>
>>> Thomas
>>>
>>>
>>> http://imagejdocu.tudor.lu/doku.php?id=plugin:morphology:3d_binary_morphological_filters:start
>>>
>>>
>>> Hi all,
>>>> One of the big questions in trabecular bone morphology is how much of the
>>>> bone network resembles plates versus rods (I call it platiness / roddiness,
>>>> but it has a few names). Some images of trabecular networks are here:
>>>>
>>>> http://www.brsoc.org.uk/gallery/
>>>>
>>>> There are a few methods out there for determining platiness/roddiness,
>>>> but I haven't yet found one that both makes sense and is implemented (or
>>>> easily implemented) in Java.  I tried the Tubeness plugin, which makes some
>>>> very attractive images (especially when rendered in the 3D viewer) but it
>>>> doesn't quite give the result I'm looking for.
>>>>
>>>> I imagined that finding the axes of ellipses fit to 3D star volumes might
>>>> be helpful; ellipses fit in rods would have one long axis and 2 short ones
>>>> while those in plates would have 2 longer axes and one short one.  Something
>>>> like the Local Thickness plugin (which is great), but with ellipses rather
>>>> than spheres was another thought, but Bob's maths is a bit beyond me.
>>>>
>>>> Does anyone know of an already-implemented method that I could use, or
>>>> failing that, have any suggestions about a good one to implement?
>>>>
>>>> Cheers,
>>>>
>>>> Mike
>>>>
>>>>
>>>>
>>> --
>>> /*****************************************************/
>>> Thomas Boudier, MCU Université Pierre et Marie Curie
>>> UMR 7101 / IFR 83. Bat A 328, Campus Jussieu
>>> Tél : 01 44 27 35 78  Fax : 01 44 27 25 08
>>> /*****************************************************/
>>>
>>>
>>>
>>>
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

David Webster
Mike,

Hmm!   for what it's worth, I think covariance and moments of inertia are
the same thing.

Also, quite a bit of work has been done by Van Vliet's group at TU Delft and
Medioni at USC.

David

On Fri, Mar 6, 2009 at 1:41 AM, Michael Doube <[hidden email]>wrote:

> Hi David
>
> Thanks for the link; I'm going to check out the structure tensor and see
> whether it will answer my question.  I use the Jama linear algebra package
> for eigendecomposition and other matrix maths needed in my plugins.
>
> Does anyone have a comment on the relative value of getting eigenvectors &
> eigenvalues using the covariance matrix versus moments of inertia versus
> ellipsoid-specific methods?
>
> Mike
>
>
> David Webster wrote:
>
>> For a structure tensor feature plugin, follow the link form the image J
>> homepage, to
>> "Plugins/More Sites with Plugins/FeatureJ". This has a "structure" bullet
>> which contains info on structure tensor plugin.
>>
>> David Webster
>>
>> On Thu, Mar 5, 2009 at 9:52 AM, David Webster <[hidden email]>
>> wrote:
>>
>> You can get your axis information from the eigenvalues of the covariance
>>> matrix for the set of points in question, without actually fitting then
>>> to
>>> ellipses or ellipseoids. I don't know if there are any eigenvalue plugins
>>> in
>>> imageJ, though.
>>>
>>> Eavid
>>>
>>>  On Thu, Mar 5, 2009 at 2:14 AM, Thomas Boudier <
>>> [hidden email]> wrote:
>>>
>>> Hi Michael,
>>>>
>>>> Within my 3D filters plugin there is a 3D axes entry that approximates a
>>>> binarised 3D object by a 3D ellipsoid, it will give you the axes and the
>>>> radii of the ellipsoid. Hope this helps.
>>>>
>>>> Thomas
>>>>
>>>>
>>>>
>>>> http://imagejdocu.tudor.lu/doku.php?id=plugin:morphology:3d_binary_morphological_filters:start
>>>>
>>>>
>>>> Hi all,
>>>>
>>>>> One of the big questions in trabecular bone morphology is how much of
>>>>> the
>>>>> bone network resembles plates versus rods (I call it platiness /
>>>>> roddiness,
>>>>> but it has a few names). Some images of trabecular networks are here:
>>>>>
>>>>> http://www.brsoc.org.uk/gallery/
>>>>>
>>>>> There are a few methods out there for determining platiness/roddiness,
>>>>> but I haven't yet found one that both makes sense and is implemented
>>>>> (or
>>>>> easily implemented) in Java.  I tried the Tubeness plugin, which makes
>>>>> some
>>>>> very attractive images (especially when rendered in the 3D viewer) but
>>>>> it
>>>>> doesn't quite give the result I'm looking for.
>>>>>
>>>>> I imagined that finding the axes of ellipses fit to 3D star volumes
>>>>> might
>>>>> be helpful; ellipses fit in rods would have one long axis and 2 short
>>>>> ones
>>>>> while those in plates would have 2 longer axes and one short one.
>>>>>  Something
>>>>> like the Local Thickness plugin (which is great), but with ellipses
>>>>> rather
>>>>> than spheres was another thought, but Bob's maths is a bit beyond me.
>>>>>
>>>>> Does anyone know of an already-implemented method that I could use, or
>>>>> failing that, have any suggestions about a good one to implement?
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Mike
>>>>>
>>>>>
>>>>>
>>>>> --
>>>> /*****************************************************/
>>>> Thomas Boudier, MCU Université Pierre et Marie Curie
>>>> UMR 7101 / IFR 83. Bat A 328, Campus Jussieu
>>>> Tél : 01 44 27 35 78  Fax : 01 44 27 25 08
>>>> /*****************************************************/
>>>>
>>>>
>>>>
>>>>
>>>>
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Kenneth Sloan-2
On Mar 6, 2009, at 12:28 PM, David Webster wrote:

> Mike,
>
> Hmm!   for what it's worth, I think covariance and moments of  
> inertia are
> the same thing.
>

Agreed.  One (subtle?) point often overlooked: the axes produced by  
the boundary points are not
the same as those produced by all of the points (including the  
interior).  The latter are generally preferred (and likely to be what  
is produced by any standard ImageJ method - so perhaps this is a non-
issue?)

and...it is easy enough to get directions and RELATIVE lengths of the  
3 axes, but be careful about over-interpreting the ABSOLUTE lengths  
of the axes.

I'm a bit curious about the 3rd catagory: "ellipsoid-based methods"  
mentioned by the OP.  Perhaps he can elaborate?

--
Kenneth Sloan
[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Michael Doube
Kenneth Sloan wrote:

> On Mar 6, 2009, at 12:28 PM, David Webster wrote:
>
>> Mike,
>>
>> Hmm!   for what it's worth, I think covariance and moments of  
>> inertia are
>> the same thing.
>>
>
> Agreed.  One (subtle?) point often overlooked: the axes produced by  
> the boundary points are not
> the same as those produced by all of the points (including the  
> interior).  The latter are generally preferred (and likely to be what  
> is produced by any standard ImageJ method - so perhaps this is a non-
> issue?)
>

I guess it depends on the shape of the data you are fitting; if you want
the mechanics of a solid, then moments of inertia are most appropriate.
  A difference between moments of inertia (or area) and covariance
methods is that the moments method accounts for the voxels' volume and
mass so to properly calculate the inertia tensor you have to add the
moments of each voxel around its own x, y and z axes to the moments of
the voxel around the x, y and z axes through the centroid.  As I
understand it, the covariance method assumes coordinates (~ voxels) are
massless and infinitesimal.


> I'm a bit curious about the 3rd catagory: "ellipsoid-based methods"  
> mentioned by the OP.  Perhaps he can elaborate?

Sure Ken, I'm testing an implementation of this method:

Qingde Li, Griffiths J (2004) Least squares ellipsoid specific fitting.
Geometric Modeling and Processing, 2004. Proceedings. pp. 335-340.
doi:10.1109/GMAP.2004.1290055

It finds a best-fit ellipse; I suppose the most appropriate situation to
use this is when the data approximate an ellipsoidal surface (rather
than a 3D solid).
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

David Webster
Mike,

The question seems to be how accurate do you need to make your moment
computation to get platenes or rodness. I'm guessing that for a large or
extended set of points, it really doesn't make any difference whether you
just use point masses or use a more accurate method for computing moment
integrals. Also, ellipse fitting is going to be related mathematically to
moments or covariances, so you may not get anythng better using the more
complex methods than you would get using the simplest.

David Webster

On Sun, Mar 8, 2009 at 2:55 AM, Michael Doube <[hidden email]>wrote:

> Kenneth Sloan wrote:
>
>> On Mar 6, 2009, at 12:28 PM, David Webster wrote:
>>
>> Mike,
>>>
>>> Hmm!   for what it's worth, I think covariance and moments of  inertia
>>> are
>>> the same thing.
>>>
>>>
>> Agreed.  One (subtle?) point often overlooked: the axes produced by  the
>> boundary points are not
>> the same as those produced by all of the points (including the  interior).
>>  The latter are generally preferred (and likely to be what  is produced by
>> any standard ImageJ method - so perhaps this is a non- issue?)
>>
>>
> I guess it depends on the shape of the data you are fitting; if you want
> the mechanics of a solid, then moments of inertia are most appropriate.  A
> difference between moments of inertia (or area) and covariance methods is
> that the moments method accounts for the voxels' volume and mass so to
> properly calculate the inertia tensor you have to add the moments of each
> voxel around its own x, y and z axes to the moments of the voxel around the
> x, y and z axes through the centroid.  As I understand it, the covariance
> method assumes coordinates (~ voxels) are massless and infinitesimal.
>
>
> I'm a bit curious about the 3rd catagory: "ellipsoid-based methods"
>>  mentioned by the OP.  Perhaps he can elaborate?
>>
>
> Sure Ken, I'm testing an implementation of this method:
>
> Qingde Li, Griffiths J (2004) Least squares ellipsoid specific fitting.
> Geometric Modeling and Processing, 2004. Proceedings. pp. 335-340.
> doi:10.1109/GMAP.2004.1290055
>
> It finds a best-fit ellipse; I suppose the most appropriate situation to
> use this is when the data approximate an ellipsoidal surface (rather than a
> 3D solid).
>
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Kenneth Sloan-2
On Mar 8, 2009, at 2:29 PM, David Webster wrote:

> Mike,
>
> The question seems to be how accurate do you need to make your moment
> computation to get platenes or rodness. I'm guessing that for a  
> large or
> extended set of points, it really doesn't make any difference  
> whether you
> just use point masses or use a more accurate method for computing  
> moment
> integrals. Also, ellipse fitting is going to be related  
> mathematically to
> moments or covariances, so you may not get anythng better using the  
> more
> complex methods than you would get using the simplest.
>

This takes us back to the (subtle?) point I raised earlier.  If you  
consider ONLY
boundary points, a least-squares method might out-perform an eigen-
vector method IF the boundary points are strangely sampled AND the  
eigen-vector method does NOT consider the interior.  By "strangely  
sampled", I mostly mean samples that are not uniform along the  
boundary.  An extreme case here would be occlusion.  I can imagine  
least-squares methods that might be more robust against occlusion  
than eigen-vector methods.  If the complete boundary is sampled, but  
the sample density varies, you will see a difference between boundary-
only and interior-inclusive eigen-vector computations,

I guess I would be surprised if a least-squares method produced  
answers that were better than an eigen-vector method that considered  
the interior points (in the absence of occlusion).   I would expect  
that it would provide the SAME answers, and if I'm wrong about that I  
would NOT expect least-squares to do better.  Least-squares is a  
class of methods more well known for its nice looking mathematics  
than for its correct results.

But, that's just my intuition.  I confess that it's been a good 20  
years since I actually wrote any code for any of these methods.

Back to the original question: if I wanted to differentiate "rodness"  
from "plateness", my FIRST choice would be to form a co-variance  
matrix, find the eigenvectors/values, and call <Big, Big, Small> a  
plate and <Big, Small, Small> a rod.  The devil would be in the  
details of deciding how to tune the system to deal with the middle  
cases.  This, of course, depends critically on the particular  
application and any domain specific knowledge you happen to have handy.

It doesn't strike me that EITHER rods or plates are particularly well  
described as ellipsoids.

I agree with the point of view that assigning a point-mass at every  
voxel is "good enough".  In fact, I'm skeptical of any claim that any  
other method would be "more accurate".  "More complicated", yes -  
"more accurate", no.   Be very careful and look very closely at the  
physics or the mathematics that gave you the voxels in the first  
place, and not the diagrams that you draw.  Voxels are (almost) NEVER  
discrete, mutually exclusive, hard-edged little boxes.

In this particular application, you are looking at gross, macro-level  
differences.  Worrying about the details of moments OF THE VOXELS  
can't possibly matter.  And, if it does...I wouldn't trust it.

--
Kenneth Sloan
[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Michael Schmid
Hi Kenneth,

yes, I agree that the covariance matrix of the volume pixels should  
be the best option in almost all cases.
Considering the problem:
> ...form a co-variance matrix, find the eigenvectors/values, and  
> call <Big, Big, Small> a plate and <Big, Small, Small> a rod.  The  
> devil would be in the details of deciding how to tune the system to  
> deal with the middle cases.
My first guess would be that Math.sqrt
(largest_eigenvalue*smallest_eigenvalue) would be a good limit for  
the middle eigenvalue, whether to call it 'Big' or 'Small'.

Michael
________________________________________________________________

On 9 Mar 2009, at 04:23, Kenneth Sloan wrote:

> On Mar 8, 2009, at 2:29 PM, David Webster wrote:
>
>> Mike,
>>
>> The question seems to be how accurate do you need to make your moment
>> computation to get platenes or rodness. I'm guessing that for a  
>> large or
>> extended set of points, it really doesn't make any difference  
>> whether you
>> just use point masses or use a more accurate method for computing  
>> moment
>> integrals. Also, ellipse fitting is going to be related  
>> mathematically to
>> moments or covariances, so you may not get anythng better using  
>> the more
>> complex methods than you would get using the simplest.
>>
>
> This takes us back to the (subtle?) point I raised earlier.  If you  
> consider ONLY
> boundary points, a least-squares method might out-perform an eigen-
> vector method IF the boundary points are strangely sampled AND the  
> eigen-vector method does NOT consider the interior.  By "strangely  
> sampled", I mostly mean samples that are not uniform along the  
> boundary.  An extreme case here would be occlusion.  I can imagine  
> least-squares methods that might be more robust against occlusion  
> than eigen-vector methods.  If the complete boundary is sampled,  
> but the sample density varies, you will see a difference between  
> boundary-only and interior-inclusive eigen-vector computations,
>
> I guess I would be surprised if a least-squares method produced  
> answers that were better than an eigen-vector method that  
> considered the interior points (in the absence of occlusion).   I  
> would expect that it would provide the SAME answers, and if I'm  
> wrong about that I would NOT expect least-squares to do better.  
> Least-squares is a class of methods more well known for its nice  
> looking mathematics than for its correct results.
>
> But, that's just my intuition.  I confess that it's been a good 20  
> years since I actually wrote any code for any of these methods.
>
> Back to the original question: if I wanted to differentiate  
> "rodness" from "plateness", my FIRST choice would be to form a co-
> variance matrix, find the eigenvectors/values, and call <Big, Big,  
> Small> a plate and <Big, Small, Small> a rod.  The devil would be  
> in the details of deciding how to tune the system to deal with the  
> middle cases.  This, of course, depends critically on the  
> particular application and any domain specific knowledge you happen  
> to have handy.
>
> It doesn't strike me that EITHER rods or plates are particularly  
> well described as ellipsoids.
>
> I agree with the point of view that assigning a point-mass at every  
> voxel is "good enough".  In fact, I'm skeptical of any claim that  
> any other method would be "more accurate".  "More complicated", yes  
> - "more accurate", no.   Be very careful and look very closely at  
> the physics or the mathematics that gave you the voxels in the  
> first place, and not the diagrams that you draw.  Voxels are  
> (almost) NEVER discrete, mutually exclusive, hard-edged little boxes.
>
> In this particular application, you are looking at gross, macro-
> level differences.  Worrying about the details of moments OF THE  
> VOXELS can't possibly matter.  And, if it does...I wouldn't trust it.
>
> --
> Kenneth Sloan
> [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Michael Doube
In reply to this post by Kenneth Sloan-2
Hi Listers,

Thanks for the discussion, it's really valued:

>> The question seems to be how accurate do you need to make your moment
>> computation to get platenes or rodness.

I was just asking in a general sense about people's thoughts on the
different methods; seems like a covariance method will be fine for this
particular application (finding the 'dimensions' of a star volume).

 >> you may not get anythng better using the
>> more
>> complex methods than you would get using the simplest.

OK, thanks.  It's certainly easier to write simpler methods.

>
> This takes us back to the (subtle?) point I raised earlier.  If you  
> consider ONLY
> boundary points, a least-squares method might out-perform an eigen-
> vector method IF the boundary points are strangely sampled AND the  
> eigen-vector method does NOT consider the interior.

Boundary points are exactly what you get when you do a star volume; a
bunch of vectors radiating from the same point, so the coordinates to
fit are the distal ends of the vectors.  In my method, the vectors have
random distribution so the sample density will vary a bit.

> Back to the original question: if I wanted to differentiate "rodness"  
> from "plateness", my FIRST choice would be to form a co-variance  
> matrix, find the eigenvectors/values, and call <Big, Big, Small> a  
> plate and <Big, Small, Small> a rod.

Great, looks like we are converging and this is pretty much where I'm
now heading.

> It doesn't strike me that EITHER rods or plates are particularly well  
> described as ellipsoids.

Any other ideas?  At the moment, one of the standard methods is the
structure model index (SMI), which (and my maths is pretty rough here) I
think is a partial derivative method, not unlike Tubeness.  The concept
is that the radius of curvature of a rod would change if you increase
its thickness, whereas a plate (which is flat) has a very large radius
of curvature that is not affected by increasing thickness.
Unfortunately, both the SMI and Tubeness will label the boundaries of
holes in plates as rod-like, since the radius of curvature in these
regions is quite small.

>
> I agree with the point of view that assigning a point-mass at every  
> voxel is "good enough".  In fact, I'm skeptical of any claim that any  
> other method would be "more accurate".  "More complicated", yes -  
> "more accurate", no.  

I used to think that the point-mass approach was 'good enough', but then
tried it out on synthetic test objects; in 2D (2nd moments of area) you
will be consistently several % too low if you don't account for pixels'
own moments.

> Be very careful and look very closely at the  
> physics or the mathematics that gave you the voxels in the first  
> place, and not the diagrams that you draw.

A worthy piece of advice, Ken, one I like to repeat myself...

>  Voxels are (almost) NEVER  
> discrete, mutually exclusive, hard-edged little boxes.

I totally agree, but you have to account for the fact that the real
object (what you represent as a grid of voxels) has both mass and
volume.  I think it's important to remember that what we shove into a
parallelipiped voxel might be a squishier-shaped Airy function, or some
volume (not infinitesimal point) of interaction between X-rays (...,
electron beam, etc.) and specimen.
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Kenneth Sloan-2
On Mar 9, 2009, at 5:29 AM, Michael Doube wrote:
>>
>
> Boundary points are exactly what you get when you do a star volume;  
> a bunch of vectors radiating from the same point, so the  
> coordinates to fit are the distal ends of the vectors.  In my  
> method, the vectors have random distribution so the sample density  
> will vary a bit.


In that case, you have a *potential* problem - but perhaps not a  
serious one.  I would start with eigenvectors of the covariance  
matrix of the boundary points, and evaluate the results.  If the  
results are not satisfactory, my next try would be to triangulate the  
boundary points to construct a volume (very easy, because it's a star-
volume), form tetrahedra (boundary triangles to center point), and so  
on.  If it's easier, you can build a voxel-ized volume instead of a  
set of tetrahedra

>
>> Back to the original question: if I wanted to differentiate  
>> "rodness"  from "plateness", my FIRST choice would be to form a co-
>> variance  matrix, find the eigenvectors/values, and call <Big,  
>> Big, Small> a  plate and <Big, Small, Small> a rod.
>
> Great, looks like we are converging and this is pretty much where  
> I'm now heading.
>
>> It doesn't strike me that EITHER rods or plates are particularly  
>> well  described as ellipsoids.
>
> Any other ideas?

I apologize - I wasn't clear.  What I meant was that the eigenvectors  
will work just fine (for rods vs plates) - but that the fine-scale  
details of the surface of an ellipsoid may be misleading.  That's why  
I'm skeptical of "least squares methods".  I'm willing to be  
convinced - it's just not my first choice.   [in other words, I'd be  
eager to READ someone's investigation of this question - but I'm not  
about to spend my time looking into it myself.  It just doesn't feel  
like a good bet.]

...

>> I agree with the point of view that assigning a point-mass at  
>> every  voxel is "good enough".  In fact, I'm skeptical of any  
>> claim that any  other method would be "more accurate".  "More  
>> complicated", yes -  "more accurate", no.
>
> I used to think that the point-mass approach was 'good enough', but  
> then tried it out on synthetic test objects; in 2D (2nd moments of  
> area) you will be consistently several % too low if you don't  
> account for pixels' own moments.

Too low compared with what?  And...aren't you interested here in the  
RATIOS of the eigenvalues?  Forgive me, but I wonder if the "several  
%" was introduced in the production of your "synthetic objects".  
I've seen MANY examples of investigators who have fallen into this  
trap.  I'll agree that there will be a DIFFERENCE - my twin questions  
are: a) does it matter? and b) are you sure you know which answer is  
"right"?  The first question is the most important.

Be careful about your goal.  What, precisely, are you going to use  
"moments" for (other than as shape descriptors)?  Are you planning  
some bio-mechanical simulation of the behavior of these objects?  I  
didn't get that impression.  You want "rod vs. plate".  I repeat  
myself, but...from what I know so far I think that point masses will  
give the same answer as any volume-sensitive method, AND where they  
differ I would tend to believe the point-mass answer until it is  
DEMONSTRATED with real data (not "proven") otherwise.  Again - just  
my intuition.


>
>> Be very careful and look very closely at the  physics or the  
>> mathematics that gave you the voxels in the first  place, and not  
>> the diagrams that you draw.
>
> A worthy piece of advice, Ken, one I like to repeat myself...
>
>>  Voxels are (almost) NEVER  discrete, mutually exclusive, hard-
>> edged little boxes.
>
> I totally agree, but you have to account for the fact that the real  
> object (what you represent as a grid of voxels) has both mass and  
> volume.  I think it's important to remember that what we shove into  
> a parallelipiped voxel might be a squishier-shaped Airy function,  
> or some volume (not infinitesimal point) of interaction between X-
> rays (..., electron beam, etc.) and specimen.

Personally, I try not to deal with "parallelipiped voxels" (if I can  
avoid it), any more than (in a previous life) I dealt with  
"rectangular pixels".  I have consistently found it better (easier,  
more reliable, more "right answers") to treat the samples as point  
samples (after suitable low-pass filtering) arranged on a grid.  At  
least, that's where I start.  I hesitate to move beyond point samples  
until and unless I *know* the distribution of values in the vicinity  
of that point.  Even if you start to consider the volume represented  
by the sample, MOST of the time that volume is spherically symmetric  
about the point, and the volume ALMOST NEVER has any hard edges or  
sharp corners.

so, I reject your claim that "(I) represent [a volume] as a grid of  
voxels".  I represent volumes as a set of point samples, arranged on  
a grid.  Occasionally, I hallucinate voxels surrounding the samples  
(samples at the center of the voxels) and sometimes I hallucinate  
voxels as cubes with samples at the vertices.  I rarely view the  
"voxels" as anything other than bookkeeping structure for my  
samples.  If these are density samples and I need a mass, then I  
weight each sample by an appropriate SIZE volume - but I avoid trying  
to be overly precise about the SHAPE of the volume.

but again - your stated problem is a macro-level shape problem.  
Depending on  micro-level details of the voxels just can't be right.  
If nothing else, noise in your samples probably swamps the difference  
between a point sample and a sharp cube (or Airy blob).

All of this holds for the case where "voxels" are the finest detail  
samples generated by your sensors.  If you have software that builds  
coarser voxels in a pyramid-like data structure, then it becomes more  
and more likely that you are really dealing with something  
approximating a hard-edged parallelipiped voxel.   But, if you are  
doing this, we might find other issues to discuss...

[by the way...when you compute your star volume, are the "distal  
ends" positioned at the CENTER of the boundary voxel (if so, is that  
boundary voxel an IN voxel or an OUT voxel) or  at the boundary  
between voxels?]

--
Kenneth Sloan
[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: rodness & plateness

Michael Doube
> Too low compared with what?  And...aren't you interested here in the
> RATIOS of the eigenvalues?

Yes, to measure anisotropy.  In the past I wanted to know the second moments of area and moments of inertia of some images of bone, so getting a mechanically correct result was important.  Having some kind of estimation of mass and volume for each datum was important for the calculation.  For the current application, mean linear intercept, it's more of a mathematical (rather than mechanical) result that I need and the data represent massless, volumeless points in space.  So it is a case of horses for courses.

>  Forgive me, but I wonder if the "several
> %" was introduced in the production of your "synthetic objects".

Probably not, because the synthetic objects were things like rectangles and ellipses, for which the second moments of area are known:

http://en.wikipedia.org/wiki/List_of_area_moments_of_inertia

A calculation based on iterating over pixels should give a similar result to a calculation based on the dimensions of the shape; if you don't give the pixels area then you will be consistently much too low.

>  I rarely view the "voxels" as anything other than bookkeeping structure for my
> samples.

Fair enough; perhaps one day we will be able to visualise directly these point samples as a set of little sampling functions.

> but again - your stated problem is a macro-level shape problem.
> Depending on  micro-level details of the voxels just can't be right.

The 'micro-level details' seem irrelevant until you have a million or billion of them when the error in making assumptions about the details has been multiplied somewhat.

To summarise, this is how I see the eigenvector-finding question:

For getting the eigenvectors of a mean linear intercept analysis or star volume the data are infinitesimal points in space. Covariance will probably be fine, though it might be interesting to fit an ellipsoid too.

For getting the mechanical axes of a solid as represented by a 2D or 3D image, it's worth considering the mass, volume and shape of the samples (~voxels).

Thanks for the philosophical discussion Ken.  Could I gently suggest that you refrain from SHOUTING in emails?