<div dir="ltr">And vtkDICOMImageReader depends on the slice thickness tag it seems, that&#39;s why the imageData-&gt;GetSpacing() <br><br>give 3.0 mm, which is wrong in this case.<br><br>Jothy<br><br><div class="gmail_quote">
On Fri, Mar 9, 2012 at 9:24 PM, Jothybasu Selvaraj <span dir="ltr">&lt;<a href="mailto:jothybasu@gmail.com">jothybasu@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">Hi David,<br><br>Some stunning revelation here!<br><br>The problem is because of the inconsistence between the DICOM tags Slice thickness and ImagePositionPatient<br><br>Slice thickness says it&#39;s 3mm, but the z difference between two slices according to their IPP is 2.5 mm.<br>

<br>If I set the extrude-&gt;SetVector(0,0,-2.5).<br><br>It works perfectly!<br><br>How can it happen in DICOM? Probably, that&#39;s the reason why other datasets worked form me with the new vtkPolydataToImageStencil.<br>

<br>Can someone shed light on this?<br><br>Many thanks again<br><br>Jothy<div><div></div><div class="h5"><br><br> <br><br><div class="gmail_quote">On Fri, Mar 9, 2012 at 8:36 PM, David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@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">Hi Jothy,<br>
<br>
Remove the extrude filter from the pipeline.<br>
<font color="#888888"><br>
 - David<br>
</font><div><div></div><div><br>
<br>
On Fri, Mar 9, 2012 at 1:29 PM, Jothybasu Selvaraj &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt; wrote:<br>
&gt; Hi David,<br>
&gt;<br>
&gt; I am still not able to fix this issue.<br>
&gt;<br>
&gt; This is how I create the polydata and other pipeline.<br>
&gt;<br>
&gt; vtkSmartPointer&lt;vtkPoints&gt; points =<br>
&gt;<br>
&gt;                        vtkSmartPointer&lt;vtkPoints&gt;::New();<br>
&gt;<br>
&gt;                  vtkSmartPointer&lt;vtkCellArray&gt; cells =<br>
&gt;<br>
&gt;                          vtkSmartPointer&lt;vtkCellArray&gt;::New();<br>
&gt;<br>
&gt;                points-&gt;SetNumberOfPoints(npts+1);<br>
&gt;<br>
&gt;                cells-&gt;InsertNextCell(npts+1);<br>
&gt;<br>
&gt;                for(int p=0;p&lt;npts;p++)<br>
&gt;<br>
&gt;                {<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;                    points-&gt;SetPoint( p, Xp, Yp,Zp );<br>
&gt;<br>
&gt;                    cells-&gt;InsertCellPoint( p );<br>
&gt;<br>
&gt;                }<br>
&gt;<br>
&gt;                cells-&gt;InsertCellPoint(npts);<br>
&gt;<br>
&gt;                points-&gt;SetPoint(npts,pts[0],pts[1],pts[2]);//close contour<br>
&gt;<br>
&gt;<br>
&gt;                vtkSmartPointer&lt;vtkPolyData&gt;polydataContour=<br>
&gt;<br>
&gt;                        vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
&gt;<br>
&gt;                polydataContour-&gt;Initialize();<br>
&gt;<br>
&gt;                polydataContour-&gt;SetLines(cells);<br>
&gt;<br>
&gt;                polydataContour-&gt;SetPoints(points);<br>
&gt;<br>
&gt;<br>
&gt; //Here all contours are appended to vtkAppendPolydataFilter<br>
&gt;<br>
&gt;                vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt; sts=<br>
&gt;                        vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt;::New();<br>
&gt;               sts-&gt;SetTolerance(1e-6);//very important<br>
&gt;                sts-&gt;SetInformationInput(binary_image);<br>
&gt;                vtkSmartPointer&lt;vtkLinearExtrusionFilter&gt; extrude=<br>
&gt;                        vtkSmartPointer&lt;vtkLinearExtrusionFilter&gt;::New();<br>
&gt;                extrude-&gt;SetInput(appender-&gt;GetOutput());<br>
&gt;                extrude-&gt;CappingOff();//also tried ON<br>
&gt;                extrude-&gt;SetVector(0, 0,-zSpacing);//Correct Z spacing is<br>
&gt; important<br>
&gt;                //qDebug()&lt;&lt;-zSpacing&lt;&lt;&quot;-ve zSpacing&quot;;<br>
&gt;                sts-&gt;SetInput(extrude-&gt;GetOutput());<br>
&gt;<br>
&gt;<br>
&gt;                //qDebug()&lt;&lt;t-&gt;currentTime()&lt;&lt;&quot;Stencil start&quot;;<br>
&gt;                vtkSmartPointer&lt;vtkImageStencil&gt; stencil=<br>
&gt;                        vtkSmartPointer&lt;vtkImageStencil&gt;::New();<br>
&gt;                stencil-&gt;SetStencil(sts-&gt;GetOutput());<br>
&gt;                stencil-&gt;SetInput(binary_image);<br>
&gt;                stencil-&gt;ReverseStencilOn();<br>
&gt;                stencil-&gt;Update();<br>
&gt;<br>
&gt;<br>
&gt; I am able to visualize the contour by setting appendFilter-&gt;GetOutput() to a<br>
&gt; vtkPolyDataMapper.<br>
&gt;<br>
&gt; Is there any thing wrong.<br>
&gt;<br>
&gt; Thanks very much!<br>
&gt;<br>
&gt; Jothy<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Mar 6, 2012 at 3:48 PM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; You&#39;d have to use SetLines() instead of SetPolys().  And for<br>
&gt;&gt; polylines, the final point in the polyline has to connect to the first<br>
&gt;&gt; line to create a closed loop, so polylines cell arrays need an extra<br>
&gt;&gt; entry as compared to polygon cell arrays.<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Mar 6, 2012 at 8:36 AM, Jothybasu Selvaraj &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; I ma creating the polydat per conoutr like this<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; vtkSmartPointer&lt;vtkPolyData&gt;polydataContour=<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;      vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; polydataContour-&gt;Initialize();<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; polydataContour-&gt;SetPolys( cells );//vtkCellArray<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; polydataContour-&gt;SetPoints( points);//vtkPoints<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; How should I do that?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks very much<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Mar 6, 2012 at 3:31 PM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; The contours must be polylines, not polygons, or it won&#39;t work.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Mar 6, 2012 at 6:29 AM, Jothybasu Selvaraj<br>
&gt;&gt; &gt;&gt; &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Yes, I have one contour for each z slice as a vtkPolyData. I will try<br>
&gt;&gt; &gt;&gt; &gt; removing that.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; On Tue, Mar 6, 2012 at 1:26 PM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Do you have one contour for each Z slice?  If so, then try removing<br>
&gt;&gt; &gt;&gt; &gt;&gt; the Extrude filter from your pipeline.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Tue, Mar 6, 2012 at 2:51 AM, Jothybasu Selvaraj<br>
&gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Another point here,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; I am creating a vtkPolyData for each contour and then adding it to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; vtkAppendPolydataFilter, then the output of vtkAppenPolydataFilter<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; set as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; input to vtkPolydataToImageStencil.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Could this make any difference?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; On Mon, Mar 5, 2012 at 7:49 PM, Jothybasu Selvaraj<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; No, it doesn&#39;t fix the problem.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; But it seems to work fine for contours with z-spacing in steps of<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 1mm.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; It is working well for a dataset with 3mm spacing but fails for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 2.5<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; mm.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Maybe I need to test it thoroughly. Can I use those cxx and .h<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; from<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 5.6<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 5.8, that would be a easy workaround.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; On Mon, Mar 5, 2012 at 4:01 PM, David Gobbi<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Hi Jothy,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; It underwent significant changes, but the only change I can<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; think<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; of that might have affected your pipeline is the way that it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; does<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; rounding, it used to use a Floor() method that provided a small<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; tolerance even if you did SetTolerance(0).  Try calling<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; SetTolerance(1e-6) on your PolyDataToImageStencil object, it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; might help.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;  - David<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; On Mon, Mar 5, 2012 at 3:17 AM, Jothybasu Selvaraj<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Hi all,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; I was able to create a mesh using the following pipeline in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 5.6<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; worked well<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; vtkPolyDataToImageStencil-&gt;vtkLinearExtrusionFilter-&gt;vtkImageStencil-&gt;vtkDiscreteMarchingCubes<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Now, I have updated vtk to 5.8 and I am getting gaps in the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; mesh<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; along<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; the z<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; axis. I am really puzzled, I have tried with different data<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; sets<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; well.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; I have read somewhere that vtkPolyDataToImageStencil had some<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; changes<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 5.8, does it has anything to do with this problem, or am I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; doing<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; anything wrong?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; I have contours of constant z-spacing.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Any hints?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; --<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; --<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; --<br>
&gt;&gt; &gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Jothy<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Jothy<br>
&gt;<br>
</div></div></blockquote></div><br><br clear="all"><br></div></div><font color="#888888">-- <br><div dir="ltr">Jothy<br></div><br>
</font></div>
</blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">Jothy<br></div><br>
</div>