Hi David,<br><br><br>Thanks for the list of algorithms.<br><br><br>Please find some comments below.<br><br><br>1) This one is a challenging one. I agree with you that Octrees<br>     or a KdTree will be helpful here.<br><br>
<br>2) We do search for closest points in the code<br>    recently posted to the Insight Journal:<br><a href="http://www.insight-journal.org/browse/publication/645">http://www.insight-journal.org/browse/publication/645</a><br>
<a href="http://hdl.handle.net/10380/3063">http://hdl.handle.net/10380/3063</a><br><br>This is done in the source code of the MeshInterpolator.<br><br>You will also find the code at:<br><a href="http://svn.na-mic.org/NAMICSandBox/trunk/QuadEdgeMeshRigidRegistration/Source/">http://svn.na-mic.org/NAMICSandBox/trunk/QuadEdgeMeshRigidRegistration/Source/</a><br>
<br>You will see that the code uses a KdTree internally.<br><br><br>3) Agree<br><br>4) Agree<br><br>5) It wouldn&#39;t be too hard to extend Region Growing algorithms <br>    to work on Meshes. They will have to be independent classes<br>
    but will be easily build once we port a Mesh version of the <br>    FloodFill iterator.<br><br><br>Coming up with a hybrid data structure sounds like a good<br>idea. In this way the different needs could be balanced <br>
without having to force the functionality of an existing data<br>structure.<br><br>Have you had a chance to study the VTK classes ?:<br><br>              vtkStructureGrid<br>              vtkUnstructureGrid<br><br><br>They will be a good reference.<br>
<br><br>         Luis<br><br><br>------------------------------------------------------<br><div class="gmail_quote">On Sat, Aug 8, 2009 at 9:01 PM, David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria%2Bitk@gmail.com">daviddoria+itk@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><span style="line-height: 15px; white-space: pre-wrap;"></span><div><div class="gmail_quote">
<div class="im">On Sat, Aug 8, 2009 at 5:25 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>Hi David,<br><br>I would think that it all depends on what you are going to do next<br>with this data.<br><br>The image 2D storage will be more compact and will be convenient<br>for performing processing that relies on neighborhoods. However its<br>



notions of Origin, Spacing and Direction will be useless, and even <br>worse, actually misleading.<br><br>The storage as a Mesh seems to be a better option... but then we have<br>less Mesh-based filters than Image-based filters.<br>



<br>Again, it all depends on what kind of operations or algorithms are you<br>planning to apply to your LiDAR data.<br><br>    Please let use know about them,<br><br><br>         Thanks<br><br><br>             Luis</blockquote>

</div><div><br>I thing both types of operations can be necessary. Here is a small list:<br><br>1) <span style="line-height: 15px; white-space: pre-wrap;">Ray-mesh intersections - an itkMesh would be the way to go here (are there efficient intersection methods available? I saw that there is an octree class (</span><a href="http://www.itk.org/Doxygen/html/classitk_1_1Octree.html" target="_blank">http://www.itk.org/Doxygen/html/classitk_1_1Octree.html</a> ) but I grepped for &quot;octree&quot; in the examples and came up with nothing. In VTK, the <a href="http://www.vtk.org/doc/release/4.0/html/classvtkOBBTree.html" target="_blank">http://www.vtk.org/doc/release/4.0/html/classvtkOBBTree.html</a> class has a SetDataSet(PolyData) method that you can stick a whole mesh into the octree and then call Ocree-&gt;IntersectWithLine(P0, P1), is something like this available in ITK? (Luis - this would be the main conversion necessary to bring the synthetic LiDAR scanner to ITK...)<br>

<span style="line-height: 15px; white-space: pre-wrap;"><br>2) &quot;all points in a 3d radius&quot; lookup</span><span style="line-height: 15px; white-space: pre-wrap;"> - itkMesh should be used - as with the octree, I didn&#39;t see anything about how to put a mesh into a kdtree for these nearest-neighbor type lookups?<br>

<br>3) 4-neighborhood connected neighbors for &quot;quick&quot; normal estimation or simple depth discontinuity detection - an itk Vector Image would be well suited here.<br><br>4) Traversing a scan a &quot;strip&quot; (i.e. column) at a time - seems like an itkImage would be good here<br>

<br>5) Region growing on the mesh - i.e. finding parts of the mesh that are similar according to some metric (probably involving the normals) - an itkImage is crucial here.<br><br>It looks like both types of functionality are required sometimes, so maybe I just need to write functions to load the data into both data structures and use the appropriate one when necessary? Or maybe derive a class from itkMesh that is called itkGridMesh that stores the connectivity information and has &quot;getUpperNeighbor&quot;, &quot;getRightNeighbor&quot; etc type functions. I&#39;m not sure this is generalizable to N-d though...<br clear="all">

</span><span style="line-height: 15px; white-space: pre-wrap;"><br></span>Thanks,<br><br>David <br></div></div></div>
<br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at: <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br>