<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">More efficient would be to construct a closed (capped) polygonal cylinder, transform it into binary mask (<a href="http://www.itk.org/Doxygen/html/classitk_1_1TriangleMeshToBinaryImageFilter.html" style="font-family:arial">http://www.itk.org/Doxygen/html/classitk_1_1TriangleMeshToBinaryImageFilter.html</a> or its VTK equivalent) and then iterate that mask (some subregion, like you already do) and check mask&#39;s intensity. 0=outside, 1=inside, 0&lt;x&lt;1=&gt;edge</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Here is an example conversion:</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

<br></div><div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">////voxelization using ITK implementation (bugged)</font></div><div class="gmail_default"><font face="verdana, sans-serif">//VisualizingImageType::Pointer getMask()</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">//{</font></div><div class="gmail_default"><font face="verdana, sans-serif">//    MeshType::Pointer mesh=makeCylinder();</font></div><div class="gmail_default">
<font face="verdana, sans-serif">//    typedef itk::TriangleMeshToBinaryImageFilter&lt;MeshType,VisualizingImageType&gt; MeshFilterType;</font></div>
<div class="gmail_default"><font face="verdana, sans-serif">//    MeshFilterType::Pointer meshFilter = MeshFilterType::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">//    meshFilter-&gt;SetInfoImage(visualizingImage);</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">//    meshFilter-&gt;SetInput(mesh);</font></div><div class="gmail_default"><font face="verdana, sans-serif">//    meshFilter-&gt;Update();</font></div><div class="gmail_default">

<font face="verdana, sans-serif">//    mask=meshFilter-&gt;GetOutput();</font></div><div class="gmail_default"><font face="verdana, sans-serif">//    return mask;</font></div><div class="gmail_default"><font face="verdana, sans-serif">//}</font></div>

<div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">////voxelization using VTK implementation (workaround)</font></div><div class="gmail_default">

<font face="verdana, sans-serif">VisualizingImageType::Pointer getMaskFromImageInformation(</font></div><div class="gmail_default"><font face="verdana, sans-serif">                                    VisualizingImageType::RegionType region,</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">                                    VisualizingImageType::SpacingType spacing,</font></div><div class="gmail_default"><font face="verdana, sans-serif">                                    VisualizingImageType::PointType origin,</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">                                    VisualizingImageType::DirectionType direction)</font></div><div class="gmail_default"><font face="verdana, sans-serif">{</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    VisualizingImageType::Pointer whiteITK=VisualizingImageType::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    whiteITK-&gt;SetRegions(region);</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    whiteITK-&gt;Allocate();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    whiteITK-&gt;FillBuffer(1);</font></div><div class="gmail_default">

<font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    typedef itk::ImageToVTKImageFilter&lt;VisualizingImageType&gt; itkVtkConverter;</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    itkVtkConverter::Pointer conv=itkVtkConverter::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    conv-&gt;SetInput(whiteITK);</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    conv-&gt;Update();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkImageData&gt; whiteVTK=conv-&gt;GetOutput();</font></div><div class="gmail_default">

<font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkPolyData&gt; poly=makeCylinder();</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br>

</font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkMatrix4x4&gt; Mitk=vtkSmartPointer&lt;vtkMatrix4x4&gt;::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    for (int i=0; i&lt;3; i++)</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">        for (int k=0; k&lt;3; k++)</font></div><div class="gmail_default"><font face="verdana, sans-serif">            Mitk-&gt;SetElement(i,k, direction(i,k));</font></div>

<div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkMatrix4x4&gt; Ms=vtkSmartPointer&lt;vtkMatrix4x4&gt;::New();</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    Ms-&gt;SetElement(0,0,spacing[0]);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    Ms-&gt;SetElement(1,1,spacing[1]);</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    Ms-&gt;SetElement(2,2,spacing[2]);</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkMatrix4x4::Multiply4x4(Mitk,Ms,Mitk);</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    for (int i=0; i&lt;3; i++)</font></div><div class="gmail_default"><font face="verdana, sans-serif">        Mitk-&gt;SetElement(i,3, origin[i]);</font></div>
<div class="gmail_default">
<font face="verdana, sans-serif">    Mitk-&gt;Invert();</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkTransform&gt; t=vtkSmartPointer&lt;vtkTransform&gt;::New();</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    t-&gt;SetMatrix(Mitk);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkTransformFilter&gt; tf=vtkSmartPointer&lt;vtkTransformFilter&gt;::New();</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    tf-&gt;SetInputData(poly);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    tf-&gt;SetTransform(t);</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    tf-&gt;Update();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    poly-&gt;SetPoints(tf-&gt;GetOutput()-&gt;GetPoints());</font></div><div class="gmail_default">

<font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt; voxelizer =</font></div><div class="gmail_default"><font face="verdana, sans-serif">        vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt;::New();</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    voxelizer-&gt;SetInputData(poly);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    voxelizer-&gt;SetOutputWholeExtent(whiteVTK-&gt;GetExtent());</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    voxelizer-&gt;Update();</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    vtkImageStencil *stencil=vtkImageStencil::New(); //crashes with smart pointer</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    //vtkSmartPointer&lt;vtkImageStencil&gt; stencil=vtkSmartPointer&lt;vtkImageStencil&gt;::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    stencil-&gt;SetInputData(conv-&gt;GetOutput());</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    stencil-&gt;SetStencilConnection(voxelizer-&gt;GetOutputPort());</font></div><div class="gmail_default"><font face="verdana, sans-serif">    stencil-&gt;SetBackgroundValue(0);</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    stencil-&gt;Update();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    whiteVTK=stencil-&gt;GetOutput();</font></div><div class="gmail_default">

<font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">    typedef itk::VTKImageToImageFilter&lt;VisualizingImageType&gt; vtk2itkConverter;</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    vtk2itkConverter::Pointer conv2=vtk2itkConverter::New();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    conv2-&gt;SetInput(whiteVTK);</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    conv2-&gt;Update();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    mask=conv2-&gt;GetOutput();</font></div><div class="gmail_default"><font face="verdana, sans-serif">    mask-&gt;DisconnectPipeline();</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    mask-&gt;SetDirection(direction);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    mask-&gt;SetSpacing(spacing);</font></div><div class="gmail_default">

<font face="verdana, sans-serif">    mask-&gt;SetOrigin(origin);</font></div><div class="gmail_default"><font face="verdana, sans-serif">    return mask;</font></div><div class="gmail_default"><font face="verdana, sans-serif">}</font></div>

</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 1, 2013 at 12:09 PM, Arindam Bhattacharya <span dir="ltr">&lt;<a href="mailto:arindamb86@gmail.com" target="_blank">arindamb86@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">hello all, <div>Given a 3D  scalar volume.</div><div>A particular grid point say P</div><div>A direction say V1 ( a unit vector)</div>

<div>A direction say V2 ( an orthogonal  unit vector to v1)<br></div><div>

<br></div><div>I wish to find all grid points which are within a &#39;cylinder&#39; defined by the point P the direction V1 </div><div>a length L and a breadth B along v2</div><div><br></div><div>I have added a <a href="https://dl.dropboxusercontent.com/u/2989703/Note%20Aug%201%2C%202013.pdf" target="_blank">link </a> to show how it might look in  2D </div>



<div><div><br></div><div>i am currently doing this by first finding all the neighbors of the point P in a region RxRxR</div><div>and going through each point and finding the projection on the normal given by V1</div><div>



and the orthogonal plane given by v2 which is very slow, </div><div>is there a faster approach ?</div><div><br></div><div>thanks</div><span class="HOEnZb"><font color="#888888">-- <br><div dir="ltr">Arindam Bhattacharya<br>

Graduate Student<br><div><br></div></div>


</font></span></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>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<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></div>