Dear Dan,<br><br>Thank you very much for your timely reply.<br>The information is very helpful and is what I am looking for regarding the conversion to contours.<br><br>It&#39;s nice to know that DICOM is going to support a new segmentation module :-)<br>
<br>Thank you.<br><br>Warm Regards,<br>Subrahmanyam Gorthi.<br><br>EPFL-STI-LTS5<br>Station 11<br>CH - 1015 Lausanne<br>Switzerland.<br><br><br><br><div class="gmail_quote">On Thu, Jul 3, 2008 at 6:59 AM, Dan Mueller &lt;<a href="mailto:dan.muel@gmail.com">dan.muel@gmail.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Subrahmanyam,<br>
<br>
2008/7/2 Subrahmanyam Gorthi &lt;<a href="mailto:subrahmanyam.gorthi@gmail.com">subrahmanyam.gorthi@gmail.com</a>&gt;:<br>
<div class="Ih2E3d">&gt; Currently, at the end of my segmentation in ITK, I have ROIs in mask format.<br>
&gt; I still have to work on converting this mask to a polygon so that in can be<br>
&gt; written to a ROI module.<br>
&gt; Because of my little exposure to ITK, I am not aware whether this conversion<br>
&gt; involves Mesh or Meta Objects.<br>
<br>
</div>From my understanding, RTSTRUCTs are an array of contours; therefore,<br>
you will need a mechanism to convert your ITK mesh to a set of<br>
contours. Unfortunately, I don&#39;t think such an algorithm exists in ITK<br>
(yet), so you will have to write one yourself. It&#39;s not too difficult<br>
given a starting mesh:<br>
 &nbsp; &nbsp;// Find intersecting points<br>
 &nbsp; &nbsp;foreach plane intersecting mesh<br>
 &nbsp; &nbsp; &nbsp; &nbsp;foreach edge in mesh<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;determine if plane intersects edge, record intersection<br>
 &nbsp; &nbsp; &nbsp; &nbsp;end<br>
 &nbsp; &nbsp;end<br>
 &nbsp; &nbsp;// Order intersection points into closed contour<br>
 &nbsp; get random starting face with intersection<br>
 &nbsp; &nbsp;while more intersections<br>
 &nbsp; &nbsp; &nbsp; &nbsp;for current face, add intersection to contour<br>
 &nbsp; &nbsp; &nbsp; &nbsp;current face = adjacent face sharing same intersection as<br>
current face<br>
 &nbsp; &nbsp;end<br>
<br>
On a side note, DICOM is about to be extended to support meshes proper<br>
via the &quot;Surface Segmentation&quot; module:<br>
 &nbsp; &nbsp;<a href="ftp://medical.nema.org/medical/dicom/supps/sup132_lb.pdf" target="_blank">ftp://medical.nema.org/medical/dicom/supps/sup132_lb.pdf</a><br>
If you really need to use RTSTRUCTs right now, too bad. Otherwise the<br>
surface segmentation module seems much more flexible...<br>
<br>
HTH<br>
<br>
Regards, Dan<br>
<div><div></div><div class="Wj3C7c"><br>
&gt; On Wed, Jul 2, 2008 at 12:03 PM, Mathieu Malaterre<br>
&gt; &lt;<a href="mailto:mathieu.malaterre@gmail.com">mathieu.malaterre@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Subrahmanyam,<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Jul 2, 2008 at 11:30 AM, Subrahmanyam Gorthi<br>
&gt;&gt; &lt;<a href="mailto:subrahmanyam.gorthi@gmail.com">subrahmanyam.gorthi@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Dear Mathieu,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Many THANKS for your detailed &amp; prompt reply.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Here is what I am actually trying to implement in ITK:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Using a segmentation algorithm in ITK, I obtained the coordinates for<br>
&gt;&gt; &gt; 3-D<br>
&gt;&gt; &gt; ROI of a patient&#39;s image .<br>
&gt;&gt; &gt; I am now trying to export these results into a &quot;DICOM-RT Structure-Set&quot;<br>
&gt;&gt; &gt; file, for RT-Planning in IMRT.<br>
&gt;&gt;<br>
&gt;&gt; *Very* cool ! Is this integrated with any of the Mesh and/or the Meta<br>
&gt;&gt; Object in ITK too ?<br>
&gt;&gt;<br>
&gt;&gt; &gt; In addition to ROI module, as the DICOM-RT structure-set file has to<br>
&gt;&gt; &gt; contain<br>
&gt;&gt; &gt; other<br>
&gt;&gt; &gt; mandatory modules like patient-module, study module etc.,<br>
&gt;&gt; &gt; I am trying to selectively copy those modules from the associated<br>
&gt;&gt; &gt; patient&#39;s<br>
&gt;&gt; &gt; 3-D CT image.<br>
&gt;&gt;<br>
&gt;&gt; Ah, I see why the UID can remains the same here. You did not modify the<br>
&gt;&gt; image :)<br>
&gt;&gt;<br>
&gt;&gt; &gt; I compared the tags of structure-set file that I am creating in ITK with<br>
&gt;&gt; &gt; the &nbsp;file generated by another software that<br>
&gt;&gt; &gt; a Physician here is using in his hospital;<br>
&gt;&gt; &gt; he was manually drawing the contours on the CT image and the<br>
&gt;&gt; &gt; corresponding<br>
&gt;&gt; &gt; DICOM-RT structure-set file is generated by the software.<br>
&gt;&gt;<br>
&gt;&gt; ok<br>
&gt;&gt;<br>
&gt;&gt; &gt; I observed that for the &quot;structure-set&quot; file generated by that software,<br>
&gt;&gt; &gt; &quot;study-instance UID&quot; tag is same as that of the<br>
&gt;&gt; &gt; other 3-D CT DICOM images and hence, I am trying to do the same for the<br>
&gt;&gt; &gt; file<br>
&gt;&gt; &gt; created through ITK.<br>
&gt;&gt;<br>
&gt;&gt; Yup, in this very special case, then you are even encouraged to keep<br>
&gt;&gt; the same UID :)<br>
&gt;&gt;<br>
&gt;&gt; &gt; From your reply, I understand the importance safety issues in &nbsp;changing<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; default behavior.<br>
&gt;&gt; &gt; I would like to know:<br>
&gt;&gt; &gt; 1. Is it possible to change the default behavior for ONLY selected UIDs<br>
&gt;&gt; &gt; that<br>
&gt;&gt; &gt; are specified by the user?, and how?<br>
&gt;&gt;<br>
&gt;&gt; I am not sure I understand that. but I guess you can do the in your<br>
&gt;&gt; code (application level):<br>
&gt;&gt;<br>
&gt;&gt; &nbsp;if( currentuid match [set of known uids] )<br>
&gt;&gt; &nbsp; &nbsp;GDCMImageIO-&gt;KeepOriginalUIDOn ()<br>
&gt;&gt;<br>
&gt;&gt; &gt; 2. I want to finally contribute this code to ITK.<br>
&gt;&gt;<br>
&gt;&gt; Even better !<br>
&gt;&gt;<br>
&gt;&gt; &gt; It would be very happy to know and most probably, implement any better<br>
&gt;&gt; &gt; ways<br>
&gt;&gt; &gt; or modifications to the current approach.<br>
&gt;&gt; &gt; Your suggestions in this regard will be of great help to me.<br>
&gt;&gt;<br>
&gt;&gt; IMHO ITK is clearly lacking support for RTSTRUCT object, so any kind<br>
&gt;&gt; of contribution would be AFAIK very welcome. For instance in a newer<br>
&gt;&gt; release of GDCM, we have now integrated RTSTRUCT object nicely in VTK:<br>
&gt;&gt;<br>
&gt;&gt; See:<br>
&gt;&gt; &nbsp;<a href="http://gdcm.sourceforge.net/html/classvtkGDCMPolyDataReader.html" target="_blank">http://gdcm.sourceforge.net/html/classvtkGDCMPolyDataReader.html</a><br>
&gt;&gt;<br>
&gt;&gt; Thus RTSTRUCT now appears as a set of vtkPolyData which is the base<br>
&gt;&gt; object for 2D unstructred data in VTK.<br>
&gt;&gt; I would think that a similar approach can (should?) be taken for ITK.<br>
&gt;&gt; You would need to implement a itk::somethingIO that will read RTSTRUCT<br>
&gt;&gt; and then convert it to either a itk::Mesh/itkQEMesh or SpatialObject<br>
&gt;&gt; and convert back to file. This would be IMHO the most flexible for<br>
&gt;&gt; people.<br>
&gt;&gt;<br>
&gt;&gt; And thus you pipeline would become:<br>
&gt;&gt;<br>
&gt;&gt; 1. GDCMImageIO read (filename)<br>
&gt;&gt; 2. Segmentation<br>
&gt;&gt; 3. RTSTRUCT_IO write ouput_filename<br>
&gt;&gt;<br>
&gt;&gt; does this make sense ?<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; --<br>
&gt;&gt; Mathieu<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Insight-users mailing list<br>
&gt; <a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
&gt;<br>
</blockquote></div><br>