[Insight-users] calculate normal

rashedk rashed.vtk at googlemail.com
Fri Feb 22 06:30:45 EST 2008


Hi, 

Thanks for your answers. Perhaps, it would be better if I described what I
am trying to achieve here. I have included a diagram here for illustraitve
purposes:

http://www.doc.ic.ac.uk/~rkarim/surfaces.jpg

I want to fire probes from surface 1 and find out at what distance they hit
surface 2. I have drawn out one such probe, note that these probes are
normal to surface 1. Would using the computeNormal function of SimplexMesh
be appropriate within this context? I have managed to convert surface1 to a
simplex mesh in order to compute the normals. Any other ITK/VTK class which
would be useful? 

Best, 
Rashed 




Alex. GOUAILLARD-2 wrote:
> 
> Hi rashed,
> 
> 
> Usually the answer is application dependent. If there is a point you're
> especially interested in, it's **your** job to find it first and then to
> call ComputeNormal.
> 
> If you don't know which point you're dealing with, it usually means you
> want
> to process all the points. You can just loop over all the points and call
> ComputeNormal for all of them.
> 
> You might want to see the API of itkPointSet from which SimplexMesh
> inherits. Once again, the software manual is your friend:
> Chapter 4.2 "PointSet"
> SubChapter 4.2.2 "Getting access to Points" is worth reading.
> 
> Especially, depending on the traits (to come back to your previous
> question), the container of the pointSet can be a map, which means that
> the
> Ids of the points can be not consecutive (i.e. There can be a point whose
> ID
> is 1, then a point whose ID is 3 even though there would be no point whose
> ID is 2). You might want to use an iterator on the container to avoid
> non-consecutive IDs problem.
> 
> That also answers your old question:
>>>>>> Is there also a way to iterate through every point
>>>>>> on
>>>>>> the mesh?  
> 
> My 2 cents comments, you're welcome to skip or ignore.
> 
> ItkSimplexMesh is not really made to be used on its own. You 'd better see
> it as a component of a deformable framework and as such, its methods are
> tailored to fit the segmentation goal. It means that some of the method
> are
> not designed to be used outside a very specific context. There is a
> handfull
> of classes related to that specific deformable framework; you can see some
> of them here:
> http://www.itk.org/Doxygen/html/group__MeshSegmentation.html
> 
> The best entrance point to use them, as leila mentioned, is in the related
> InsightApplication directory (it's a separate tarball, from a separate cvs
> repository than ITK. It requires ITK):
> Your_Path_To_InsightApplication\DeformableSimplexMesh\
> It will provide vtk-ITK glue for vizualization and a GUI. As it implements
> all the framework, you might to start your experimentation from there.
> 
> Note that vtk provides normal and curvature filters for example:
> VtkPolyDataNormals, vtkCurvatures
> 
> 
> At that point, I would recommend you take time to read the software Guide
> enterely at least once. It might save you a lot of time.
> 
> Cheers,
> 
> Alex.
> 
> On 2/21/08 11:50 AM, "rashedk" <rashed.vtk at googlemail.com> wrote:
> 
>> 
>> Hi, 
>> 
>> In the documentation of ComputeNormal of SimplexMesh it says:
>> 
>> CovariantVectorType itk::SimplexMesh< TPixelType, VDimension, TMeshTraits
>>> ::ComputeNormal   (   unsigned long     idx    )     const
>> 
>> compute the normal vector in the specified mesh point
>> 
>> I need to pass in the index of the mesh point as a parameter. Which
>> function
>> returns the index of a mesh point on a simplex mesh??
>> 
>> Thanks, 
>> Rashed
>> 
>> 
>> 
>> Alex. GOUAILLARD-2 wrote:
>>> 
>>> Hi rashed,
>>> 
>>> The meshtraits is a list of type definition to finely tune your
>>> structure
>>> depending on your usage. You can read more in the itk software guide:
>>> Chapter 4.3.4 "Customizing the Mesh", page 70.
>>> 
>>> A meshtrait is provided by default, so you can basically ignore that for
>>> your first experiments and use the itk:SimplexMesh as if it was
>>> templated
>>> only over the PixelType and the Dimension. (Note, the Dimension also has
>>> a
>>> default value, so theoretically, you only need to define a PixelType)
>>> 
>>> 
>>> //----------------- original code
>>> 
>>> // NOTE see the default values for Vdimension and TMeshTraits
>>> template < typename TPixelType,
>>>            unsigned int VDimension = 3,
>>>            typename TMeshTraits = DefaultStaticMeshTraits< TPixelType,
>>>                                                            VDimension,
>>>                                                            VDimension,
>>>                                                            TPixelType,
>>>                                                            TPixelType,
>>>                                                            TPixelType >
>>>> 
>>> class SimplexMesh : public Mesh<TPixelType, VDimension, TMeshTraits>
>>> 
>>> 
>>> //-----------------
>>> 
>>> 
>>> Possible usages:
>>> 
>>> // simplest
>>> Typedef itk::SimplexMesh< float >      MyFirstSimplexMeshType;
>>> 
>>> // same thing with second template parameter explicitly set
>>> Typedef itk::SimplexMesh< float, 3 >   MySecondSimplexMeshType;
>>> 
>>> // full options - stay away from that unless you **really** know what
>>> you
>>> do
>>> Typedef float PointAndCellDataType;
>>> typedef float                Coord;
>>> const unsigned int  SDimension = 3; // space dimension
>>> Const unsigned int  TDimension = 2; // max topological dim. Surface => 2
>>> 
>>> typedef itk:: DefaultStaticMeshTraits<
>>>       PointAndCellDataType,
>>>       SDimension,
>>>       TDimension,
>>>       Coord,
>>>       Coord,
>>>       PointAndCellDataType           >    MeshTraitsType;
>>>  
>>> typedef SimplexMesh< PointAndCellDataType, SDimension, MeshTraitsType >
>>>                                           MeshType;
>>> 
>>> 
>>> On 2/20/08 10:18 AM, "rashedk" <rashed.vtk at googlemail.com> wrote:
>>> 
>>>> 
>>>> Thanks! 
>>>> 
>>>> What is TMeshTraits in itk::SimplexMesh< TPixelType, VDimension,
>>>> TMeshTraits
>>>>> ??
>>>> 
>>>> What should I pass for TMeshTraits?
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Leila Baghdadi-2 wrote:
>>>>> 
>>>>> check InsightApplication/DeformableModel...
>>>>> 
>>>>> I think that code needs work but I am sure I have the part where it
>>>>> converts the mesh to pass to vtk.
>>>>> 
>>>>> HTH
>>>>> 
>>>>> Leila
>>>>> 
>>>>> On Wed, 2008-20-02 at 09:21 -0800, rashedk wrote:
>>>>>> 
>>>>>> Thanks, but now I am stuck trying to display a simplex mesh in VTK.
>>>>>> How
>>>>>> do I
>>>>>> visualize this mesh? Is there also a way to iterate through every
>>>>>> point
>>>>>> on
>>>>>> the mesh?  
>>>>>> 
>>>>>> Rashed. 
>>>>>> 
>>>>>> 
>>>>>> Leila Baghdadi-2 wrote:
>>>>>>> 
>>>>>>> Yep that's right and another note,
>>>>>>> 
>>>>>>> you "must" create a triangle mesh in order to create a simplex mesh!
>>>>>>> 
>>>>>>> If you are unsure about how it is done, check the paper
>>>>>>> simplex mesh
>>>>>>> by herve delingette of INRIA france
>>>>>>> 
>>>>>>> good luck
>>>>>>> 
>>>>>>> Leila
>>>>>>> 
>>>>>>> On Wed, 2008-20-02 at 12:47 +0100, Iván Macía wrote:
>>>>>>>> Hi Rashed,
>>>>>>>> 
>>>>>>>> You can do what you mention with VTK or directly in ITK use
>>>>>>>> itk::BinaryMask3DMeshSource, which is the equivalent of Marching
>>>>>>>> Cubes
>>>>>> in
>>>>>>>> ITK. As the name implies, you need a binary mask (segmentation) as
>>>>>> input.
>>>>>>>> 
>>>>>>>> HTH
>>>>>>>> 
>>>>>>>> Ivan
>>>>>>>> 
>>>>>>>> -----Mensaje original-----
>>>>>>>> De: insight-users-bounces+imacia=vicomtech.org at itk.org
>>>>>>>> [mailto:insight-users-bounces+imacia=vicomtech.org at itk.org] En
>>>>>>>> nombre
>>>>>> de
>>>>>>>> rashedk
>>>>>>>> Enviado el: miércoles, 20 de febrero de 2008 12:06
>>>>>>>> Para: insight-users at itk.org
>>>>>>>> Asunto: Re: [Insight-users] calculate normal
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Hi, 
>>>>>>>> 
>>>>>>>> How do I convert my 3D image data to a simplex mesh in order to
>>>>>> compute
>>>>>>>> the
>>>>>>>> normals? Checking the class documentation for itk::SimplexMesh
>>>>>>>> reveals
>>>>>>>> that
>>>>>>>> one has to generate a triangle mesh and then use the
>>>>>>>> itkTriangleMeshToSimplexMeshFilter. But then how do I convert my 3D
>>>>>> image
>>>>>>>> data to a triangle mesh?? Do I use vtkContour to produce polyData
>>>>>>>> and
>>>>>>>> then
>>>>>>>> convert it to itkMesh using appropriate filters?
>>>>>>>> 
>>>>>>>> Any help will be appreciated,
>>>>>>>> 
>>>>>>>> Thanks
>>>>>>>> Rashed 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Luis Ibanez wrote:
>>>>>>>>> 
>>>>>>>>> Hi Tony,
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Well.... if you only have a point, then there is no normal to
>>>>>> compute.
>>>>>>>>> 
>>>>>>>>> You probably are thinking of a point from a surface, where a point
>>>>>>>>> belongs to several faces and have other points as neighbors.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> In that case you may want to look at the itk::SimplexMesh
>>>>>>>>> http://www.itk.org/Insight/Doxygen/html/classitk_1_1SimplexMesh.html
>>>>>>>>> 
>>>>>>>>> and its "ComputeNormal" method:
>>>>>>>>> 
>>>>>>>> 
>>>>>> http://www.itk.org/Insight/Doxygen/html/classitk_1_1SimplexMesh.html#itk_1
>>>>>> _1
>>>>>>>> SimplexMesha5
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>     Regards,
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>        Luis
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -------------------
>>>>>>>>> tony hakki wrote:
>>>>>>>>>> Is it possible to calculate normal of a point in ITK? If yes,
>>>>>>>>>> Could
>>>>>>>> you 
>>>>>>>>>> tell which class should be used?
>>>>>>>>>> thank you
>>>>>>>>>>  
>>>>>>>>>> 
>>>>>>>>> _______________________________________________
>>>>>>>>> Insight-users mailing list
>>>>>>>>> Insight-users at itk.org
>>>>>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Insight-users mailing list
>>>>>>> Insight-users at itk.org
>>>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Insight-users mailing list
>>>>> Insight-users at itk.org
>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>> 
>>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>> 
>>> 
> 
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 

-- 
View this message in context: http://www.nabble.com/calculate-normal-tp8505455p15632079.html
Sent from the ITK - Users mailing list archive at Nabble.com.



More information about the Insight-users mailing list