On 11/11/07, <b class="gmail_sendername">Ali -</b> &lt;<a href="mailto:saveez@hotmail.com">saveez@hotmail.com</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div><div style="text-align: left;"><br></div>Luis and Karthik,<br><br>Thanks for the hints.<br><br>(1) Both of the filters that you pointed out were drived from itk::ImageToMeshFilter, where one of them (itk::BinaryMaskToNarrowBandPointSetFilter) seems to make no use of mesh and is effectively an image-to-pointset filter. Just for the sake of efficiency, is there reasons at all for not having an itk::ImageToPointset super-class?
</div></blockquote><div><br>I don&#39;t see an immediate utility in having a itk::ImageToPointSet superclass ? An itk::Mesh is a subclass of the PointSet. Unless you provide topological information, it pretty much is a PointSet.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>(2) Consider a 2D gray-scale image of 512 x 512 size and assume that we want to &#39;sample&#39; this image by smaller sub-regions of, say, 32 x 32 size and find, say, the mean value of pixels inside these sub-regions and store the result in a point located in the centre of the sub-region. The sub-regions may be overlapped, eg by 50% or so. Moreover, each point should store the information about the sub-region it represents, eg by an itk::ImageRegion type. I am not sure if having the use of itk::Mesh and its cells would be of help in designing such a filter. Could you confirm that there is no similar filter that &#39;samples&#39; sub-regions and calculates and stores some statistics in the way described here? The closest that I could find was the label objects statistics descriptors submitted to IJ by 
<span>Gaëtan Lehmann, however, labels are a little bit different creatures compared to the discussed overlapped sub-regions.</span></div></blockquote><div><br>You need to find a data-structure to model your information. <br>
<br>- If your information can be represented as lying on a regular grid, then you can use an itk::Image&lt; T &gt;. What each of the grid points store is irrelevant, since you can templated the images over your own pixel type (which could itself be a class).
<br><br>- If the points lie on an irregular grid, the only datastructure available is a PointSet. This also can be templated over your own PixelType (could be a class again).<br></div><br>-- <br>Karthik Krishnan<br>R&amp;D Engineer,
<br>Kitware Inc.<br><br>PS: If you write a class for a non-native PixelType, you&#39;ll have to provide traits and operators for it.<br>
<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>&gt; <br>&gt; <br>&gt; Hi Ali,<br>&gt; <br>&gt; Yes there are ITK filters that take as input an itkImage
<br>&gt; and produce a PointSet as output.<br>&gt; <br>&gt; See for example:<br>&gt; <br>&gt; itkBinaryMaskToNarrowBandPointSetFilter<br>&gt; <a href="http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryMaskToNarrowBandPointSetFilter.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryMaskToNarrowBandPointSetFilter.html</a><br>&gt; <br>&gt; the itkPointSet class has data associated to points and data associated<br>&gt; to cells. The type of the data is one of the template parameters defined
<br>&gt; in the MeshTraits.<br>&gt; <br>&gt; <br>&gt; Note that in this case, the output is a topologically disconnected<br>&gt; set of points, but you could have created cells between these points<br>&gt; and generated an itkMesh instead.
<br>&gt; <br>&gt; You may want to look a the souce code of this filter<br>&gt; in Code/BasicFilters<br>&gt; <br>&gt; and to look at the ITK Software Guide<br>&gt; <br>&gt; <br>&gt;      <a href="http://www.itk.org/ItkSoftwareGuide.pdf" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.itk.org/ItkSoftwareGuide.pdf</a><br>&gt; <br>&gt; <br>&gt; in particular to the &quot;Data Representation&quot; Chapter and<br>&gt; its section on the PointSet and the Mesh classes.<br>&gt; <br>&gt; <br>&gt;     Regards,
<br>&gt; <br>&gt; <br>&gt;        Luis<br>&gt; <br>&gt; <br>&gt; ----------------<br>&gt; Ali - wrote:<br>&gt; &gt; Hi,<br>&gt; &gt; <br>&gt; &gt; Assume an image filter which takes an ordinary gray-scale image as input <br>
&gt; &gt; and generated a set of &#39;points&#39; as output. For instance, consider a <br>&gt; &gt; binary thresholding filter where the output is supposed to be the 2D <br>&gt; &gt; positions or the pixel intensity of the centriods. In this case the 
<br>&gt; &gt; positions of the centriods form an irregular grid, however, this <br>&gt; &gt; question also involves structured grids.<br>&gt; &gt; <br>&gt; &gt; Is there any available filters in ITK which can convert an image to a 
<br>&gt; &gt; grid where each grid point can hold a scalar or vector value?<br>&gt; &gt; <br>&gt; &gt; If not, one way of implementing this could be by using a storing the <br>&gt; &gt; grid points in an ordinary image, where the non-grid points must be 
<br>&gt; &gt; marked with a data type which is different to the pixel value type. Some <br>&gt; &gt; high-level languages support things like &#39;not-a-number&#39; which are useful <br>&gt; &gt; in a case like this, but I am not sure if this is supported in ITK.
<br>&gt; &gt; <br>&gt; &gt; _______________________________________________<br>&gt; &gt; Insight-users mailing list<br>&gt; &gt; <a href="mailto:Insight-users@itk.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
Insight-users@itk.org</a><br>&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.itk.org/mailman/listinfo/insight-users</a>
<br><br><hr>Do you know a place like the back of your hand? Share local knowledge with  <a href="http://www.backofmyhand.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">BackOfMyHand.com</a></div>

</blockquote></div><br><br clear="all"><br>