<div dir="ltr">Hi,<br>Thanks for reply, You were right,<br>We have some bug in the origin details, and when we fixed it, it worked great.<br>Many thanks,<br>Moti <br><br><div class="gmail_quote">On Wed, Dec 31, 2008 at 8:17 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">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 Moti,<br>
<br>
Please print out the values of:<br>
<br>
 &nbsp; &nbsp; orgSpacing<br>
 &nbsp; &nbsp; orgOrigin<br>
 &nbsp; &nbsp; orgSize<br>
 &nbsp; &nbsp; orgIndex<br>
<br>
just before you pass them to the meshFilter.<br>
<br>
It is likely that the values in &quot;orgSize&quot; are zeros.<br>
<br>
<br>
Please let us know what you find.<br>
<br>
<br>
 &nbsp; &nbsp; Thanks<br>
<br>
<br>
 &nbsp; &nbsp; Luis<br>
<br>
<br>
---------------------<br>
Moti Freiman wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="Wj3C7c">
Hi,<br>
I&#39;m trying to convert a 3d surface (got as some segmentation result) to a binary image, for comparison between different segmentations.<br>
I build a mesh from points and triangles which I got and save it as a vtk polygonal data. It performs well and I can visualize it properly using paraview.<br>
However, when I&#39;m trying to convert it to a 3D binary volume using itkTriangleMeshToBinaryImageFilter I got the following exception:<br>
&nbsp;------------------------------------------------------ start of output -------------------------------------------------------------------------<br>
ExceptionObject caught !<br>
<br>
itk::ExceptionObject (012CFB38)<br>
Location: &quot;void __thiscall itk::TriangleMeshToBinaryImageFilter&lt;class itk::Mesh&lt;unsigned char,3,class itk::DefaultStaticMeshTraits&lt;unsigned char,3,3,float,float,unsigned char&gt; &gt;,class itk::Image&lt;unsigned char,3&gt; &nbsp;&gt;::GenerateData(void)&quot;<br>

File: e:\libs\insighttoolkit-3.10.0\code\basicfilters\itkTriangleMeshToBinaryImageFilter.txx<br>
Line: 224<br>
Description: itk::ERROR: TriangleMeshToBinaryImageFilter(038FD670): No Image Indices Found.<br>
<br>
<br>
Press any key to continue<br>
<br>
<br>
<br>
------------------------------------------------------- end of output -------------------------------------------------------------------------<br>
<br>
My code is below,<br>
<br>
------------------------------------------------------ start of code-------------------------------------------------------------------------<br>
#include &quot;itkVTKPolyDataWriter.h&quot;<br>
#include &quot;itkVTKPolyDataReader.h&quot;<br>
#include &quot;itkImageFileReader.h&quot;<br>
#include &quot;itkImageFileWriter.h&quot;<br>
#include &quot;itkCastImageFilter.h&quot;<br>
<br>
<br>
#include &quot;itkMesh.h&quot;<br>
#include &quot;itkTriangleCell.h&quot;<br>
#include &lt;fstream&gt;<br>
<br>
<br>
#include &quot;itkTriangleMeshToBinaryImageFilter.h&quot;<br>
<br>
<br>
<br>
int main( int argc, char **argv )<br>
{ &nbsp;  &nbsp; &nbsp;char *points_name = NULL, *faces_name = NULL, *output_mesh = NULL, &nbsp;*input_image = NULL, *output_name = NULL;<br>
 &nbsp; <br>
 &nbsp; <br>
 &nbsp; &nbsp;points_name &nbsp;= argv[1];<br>
 &nbsp; &nbsp;faces_name = argv[2];<br>
 &nbsp; &nbsp;output_mesh &nbsp;= argv[3];<br>
 &nbsp; &nbsp;input_image = argv[4];<br>
 &nbsp; &nbsp;output_name = argv[5];<br>
 &nbsp; <br>
 &nbsp; &nbsp;typedef short PixelType;<br>
 &nbsp; &nbsp;typedef unsigned char OutputPixelType;<br>
 &nbsp; &nbsp;const unsigned int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dimension = 3;<br>
<br>
 &nbsp;  &nbsp; &nbsp;typedef itk::Mesh &lt;OutputPixelType, Dimension&gt; itkMeshType;<br>
<br>
 &nbsp; &nbsp;itkMeshType::Pointer mesh = itkMeshType::New();<br>
 &nbsp;  &nbsp;  &nbsp;  &nbsp; &nbsp;std::fstream pointsReader;<br>
 &nbsp; &nbsp;pointsReader.open (points_name, std::ios::in);<br>
 &nbsp; &nbsp;int i=0;<br>
 &nbsp; &nbsp;while (pointsReader.peek () != EOF)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;itkMeshType::PointType p;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pointsReader &gt;&gt; p[0] &gt;&gt; p[1] &gt;&gt; p[2];<br>
 &nbsp; &nbsp; &nbsp; &nbsp;mesh-&gt;SetPoint (i,p);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;++i;<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;pointsReader.close();<br>
 &nbsp;  &nbsp; &nbsp;typedef itkMeshType::CellType CellType;<br>
 &nbsp; &nbsp;typedef itk::TriangleCell &lt; CellType &gt; FaceType;<br>
<br>
 &nbsp; &nbsp;typedef CellType::CellAutoPointer CellAutoPointer;<br>
<br>
<br>
<br>
 &nbsp; &nbsp;std::fstream facesReader;<br>
 &nbsp; &nbsp;facesReader.open (faces_name, std::ios::in);<br>
 &nbsp;  &nbsp; &nbsp;i=0;<br>
 &nbsp; &nbsp;while (facesReader.peek () != EOF)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int p[3];<br>
 &nbsp; &nbsp; &nbsp; &nbsp;facesReader &gt;&gt; p[0] &gt;&gt; p[1] &gt;&gt; p[2];<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;CellAutoPointer face;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;face.TakeOwnership( new FaceType );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;face-&gt;SetPointId (0, p[0]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;face-&gt;SetPointId (1, p[1]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;face-&gt;SetPointId (2, p[2]);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;mesh-&gt;SetCell (i,face);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;++i;<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;facesReader.close();<br>
 &nbsp; &nbsp;mesh-&gt;Update();<br>
<br>
 &nbsp; <br>
 &nbsp; <br>
 &nbsp;  &nbsp; &nbsp;typedef itk::VTKPolyDataWriter&lt;itkMeshType&gt; itkVTKPolyDataWriterType;<br>
<br>
 &nbsp; &nbsp;itkVTKPolyDataWriterType::Pointer meshWriter = itkVTKPolyDataWriterType::New();<br>
 &nbsp; &nbsp;meshWriter-&gt;SetFileName( output_mesh );<br>
 &nbsp; &nbsp;meshWriter-&gt;SetInput (mesh);<br>
 &nbsp; &nbsp;try<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;meshWriter-&gt;Update();<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;catch ( itk::ExceptionObject &amp;err)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; err &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return -1;<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp; <br>
<br>
 &nbsp; &nbsp;typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<br>
 &nbsp; &nbsp;typedef itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType;<br>
 &nbsp;  &nbsp; &nbsp;typedef itk::ImageFileReader&lt; ImageType &gt; ImageReaderType;<br>
<br>
<br>
<br>
<br>
<br>
 &nbsp; &nbsp;// Read the input files<br>
 &nbsp; &nbsp;ImageReaderType::Pointer reader = ImageReaderType::New();<br>
 &nbsp; &nbsp;reader-&gt;SetFileName( input_image );<br>
 &nbsp; &nbsp;try<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;reader-&gt;Update();<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;catch ( itk::ExceptionObject &amp;err)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; err &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return -1;<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp; <br>
 &nbsp; &nbsp;ImageType::Pointer orgImage = reader-&gt;GetOutput();<br>
 &nbsp;  &nbsp; &nbsp;const ImageType::PointType &amp; orgOrigin = orgImage-&gt;GetOrigin();<br>
 &nbsp; &nbsp;const ImageType::SizeType &amp; orgSize = orgImage-&gt;GetLargestPossibleRegion().GetSize();<br>
 &nbsp; &nbsp;const ImageType::SpacingType &amp; orgSpacing = orgImage-&gt;GetSpacing();<br>
 &nbsp; &nbsp;const ImageType::IndexType &amp;orgIndex = orgImage-&gt;GetLargestPossibleRegion().GetIndex();<br>
 &nbsp;  &nbsp;  &nbsp; <br>
<br>
 &nbsp; &nbsp;typedef itk::TriangleMeshToBinaryImageFilter &lt;itkMeshType, OutputImageType&gt; itkTriangleMeshToBinaryImageFilterType;<br>
 &nbsp; &nbsp;itkTriangleMeshToBinaryImageFilterType::Pointer meshFilter = itkTriangleMeshToBinaryImageFilterType::New();<br>
 &nbsp; &nbsp;meshFilter-&gt;SetTolerance (1.0);<br>
 &nbsp; &nbsp;meshFilter-&gt;SetSpacing (orgSpacing);<br>
 &nbsp; &nbsp;meshFilter-&gt;SetOrigin(orgOrigin);<br>
 &nbsp; &nbsp;meshFilter-&gt;SetSize (orgSize);<br>
 &nbsp; &nbsp;meshFilter-&gt;SetIndex (orgIndex);<br>
 &nbsp; &nbsp;meshFilter-&gt;SetInput(mesh);<br>
 &nbsp;  &nbsp;  &nbsp; &nbsp;try<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;meshFilter-&gt;Update();<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;catch ( itk::ExceptionObject &amp;err )<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; err &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return -1;<br>
 &nbsp; &nbsp;}<br>
 &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; &nbsp;// Write the output image containing the binary volume.<br>
 &nbsp; &nbsp;typedef itk::ImageFileWriter&lt; OutputImageType &gt; WriterType;<br>
 &nbsp; &nbsp;WriterType::Pointer writer = WriterType::New();<br>
 &nbsp; &nbsp;writer-&gt;SetInput( meshFilter-&gt;GetOutput() );<br>
 &nbsp; &nbsp;writer-&gt;SetFileName( output_name );<br>
 &nbsp; &nbsp;try<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;writer-&gt;Update();<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;catch ( itk::ExceptionObject &amp;err )<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; err &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return -1;<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp;return 0; &nbsp; }<br>
<br>
------------------------------------------------------ end of code-------------------------------------------------------------------------<br>
<br>
Thanks for any help,<br>
Moti<br>
-- <br>
__<br>
Moti Freiman, Ph.D Student.<br>
Medical Image Processing and Computer-Assisted Surgery Laboratory.<br>
School of Computer Science and Engineering.<br>
The Hebrew University of Jerusalem Givat Ram, Jerusalem 91904, Israel<br>
Phone: +(972)-2-658-5371 (laboratory)<br>
WWW site: <a href="http://www.cs.huji.ac.il/%7Efreiman" target="_blank">http://www.cs.huji.ac.il/~freiman</a><br>
<br>
<br></div></div>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
Insight-users mailing list<br>
<a href="mailto:Insight-users@itk.org" target="_blank">Insight-users@itk.org</a><br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</blockquote>
</blockquote></div><br><br clear="all"><br>-- <br>__<br>Moti Freiman, Ph.D Student.<br>Medical Image Processing and Computer-Assisted Surgery Laboratory.<br>School of Computer Science and Engineering.<br>The Hebrew University of Jerusalem Givat Ram, Jerusalem 91904, Israel<br>
Phone: +(972)-2-658-5371 (laboratory)<br>WWW site: <a href="http://www.cs.huji.ac.il/~freiman">http://www.cs.huji.ac.il/~freiman</a><br>
</div>