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 |
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 /*****************************************************/ |
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 > /*****************************************************/ > > > > |
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 >> /*****************************************************/ >> >> >> >> > |
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 >>> /*****************************************************/ >>> >>> >>> >>> |
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 >>>> /*****************************************************/ >>>> >>>> >>>> >>>> >>>> |
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] |
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). |
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). > |
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] |
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] |
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. |
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] |
> 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? |
Free forum by Nabble | Edit this page |