<div dir="ltr">Is it available from github?<br><br>Can I try resampling image to a coarser spacing?<br><br>Will it make any improvement?<br><br>Thanks<br><br>Jothy<br><br><div class="gmail_quote">On Mon, Jul 25, 2011 at 1:53 PM, David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com">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;">You&#39;ll have to wait until VTK 5.8.  It provides a faster vtkPolyDataToImageStencil that does not require the contours to be extruded.<br>
<font color="#888888"><br> - David</font><div><div></div><div class="h5"><br> <br><br><div class="gmail_quote">On Mon, Jul 25, 2011 at 6:33 AM, Jothy <span dir="ltr">&lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div dir="ltr">First I read a seriers of contours and create a vtkPolyData with vtkAppendPolyData (e.g.: 100 contours as 1 polydata).<br>


<br>Then, create a vtkImageData with the same spacing  and origin as the dicom image and set the extent to the extent of polydata.<br>
<br>Now apply vtkLinearExtrusionFilter to the polydata and then apply vtkPolyDataToImageStencil, now finally applying the vtkImageStencil.<br><br>I works satisfactorily for vtkPolyData with bounds[2] in the range 0 to 50 or so. But becomes slow when I need to extrude on all the z slices of the image.<br>



<br>here is the code<br><br><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(128, 128, 0)">double</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 0)">*</span>bounds<span style="color:rgb(0, 0, 0)">=</span>appendFilter<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOutput<span style="color:rgb(0, 0, 0)">()-&gt;</span>GetBounds<span style="color:rgb(0, 0, 0)">();</span>

<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkImageData<span style="color:rgb(0, 0, 0)">&gt;</span><span style="color:rgb(192, 192, 192)"> </span>binary_image<span style="color:rgb(0, 0, 0)">=</span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkImageData<span style="color:rgb(0, 0, 0)">&gt;::</span>New<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>SetScalarTypeToUnsignedChar<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">///Use</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">smallest</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">mask</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">in</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">which</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">mesh</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">fits</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">//</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">Add</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">two</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">voxels</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">on</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">each</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">side</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">to</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">make</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">sure</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">mesh</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">fits</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(128, 128, 0)">double</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 0)">*</span><span style="color:rgb(192, 192, 192)"> </span>samp_origin<span style="color:rgb(0, 0, 0)">=</span>imgData<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOrigin<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(128, 128, 0)">double</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 0)">*</span><span style="color:rgb(192, 192, 192)"> </span>spacing<span style="color:rgb(0, 0, 0)">=</span>imgData<span style="color:rgb(0, 0, 0)">-&gt;</span>GetSpacing<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>SetSpacing<span style="color:rgb(0, 0, 0)">(</span>spacing<span style="color:rgb(0, 0, 0)">);</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 0, 128)">///</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">Put</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">origin</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">on</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">a</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">voxel</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">to</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">avoid</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">small</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">skips</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>SetOrigin<span style="color:rgb(0, 0, 0)">(</span>floor<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]-</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]-</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">)*</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]+</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">],</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">                                       </span>floor<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]-</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]-</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">)*</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]+</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">],</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">                                       </span>floor<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">4</span><span style="color:rgb(0, 0, 0)">]-</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]-</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">)*</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]+</span>samp_origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]);</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(128, 128, 0)">double</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 0)">*</span><span style="color:rgb(192, 192, 192)"> </span>origin<span style="color:rgb(0, 0, 0)">=</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOrigin<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>SetExtent<span style="color:rgb(0, 0, 0)">(</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,</span>ceil<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]-</span>origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]+</span><span style="color:rgb(0, 0, 128)">4</span><span style="color:rgb(0, 0, 0)">),</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">                                       </span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,</span>ceil<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">3</span><span style="color:rgb(0, 0, 0)">]-</span>origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]+</span><span style="color:rgb(0, 0, 128)">4</span><span style="color:rgb(0, 0, 0)">),</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">                                       </span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,</span>ceil<span style="color:rgb(0, 0, 0)">((</span>bounds<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">5</span><span style="color:rgb(0, 0, 0)">]-</span>origin<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">])/</span>spacing<span style="color:rgb(0, 0, 0)">[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">])+</span><span style="color:rgb(0, 0, 128)">4</span><span style="color:rgb(0, 0, 0)">);</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>AllocateScalars<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>memset<span style="color:rgb(0, 0, 0)">(</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetScalarPointer<span style="color:rgb(0, 0, 0)">(),</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetDimensions<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]*</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetDimensions<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]*</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetDimensions<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]*</span><span style="color:rgb(128, 128, 0)">sizeof</span><span style="color:rgb(0, 0, 0)">(</span><span style="color:rgb(128, 128, 0)">unsigned</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(128, 128, 0)">char</span><span style="color:rgb(0, 0, 0)">));</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">            </span>qDebug<span style="color:rgb(0, 0, 0)">()&lt;&lt;</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">1</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">2</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">                    </span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">3</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">4</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span>binary_image<span style="color:rgb(0, 0, 0)">-&gt;</span>GetExtent<span style="color:rgb(0, 0, 0)">()[</span><span style="color:rgb(0, 0, 128)">5</span><span style="color:rgb(0, 0, 0)">]&lt;&lt;</span><span style="color:rgb(0, 128, 0)">&quot;Binary</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">image</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">extent&quot;</span><span style="color:rgb(0, 0, 0)">;</span></pre>






<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkPolyDataToImageStencil<span style="color:rgb(0, 0, 0)">&gt;</span><span style="color:rgb(192, 192, 192)"> </span>sts<span style="color:rgb(0, 0, 0)">=</span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkPolyDataToImageStencil<span style="color:rgb(0, 0, 0)">&gt;::</span>New<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">//The</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">following</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">line</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">is</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">extremely</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">important</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">//<a href="http://www.nabble.com/Bug-in-vtkPolyDataToImageStencil--td23368312.html#a23370933" target="_blank">http://www.nabble.com/Bug-in-vtkPolyDataToImageStencil--td23368312.html#a23370933</a></span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>sts<span style="color:rgb(0, 0, 0)">-&gt;</span>SetTolerance<span style="color:rgb(0, 0, 0)">(</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">);</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>sts<span style="color:rgb(0, 0, 0)">-&gt;</span>SetInformationInput<span style="color:rgb(0, 0, 0)">(</span>binary_image<span style="color:rgb(0, 0, 0)">);</span><span style="color:rgb(192, 192, 192)">                        </span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkLinearExtrusionFilter<span style="color:rgb(0, 0, 0)">&gt;</span><span style="color:rgb(192, 192, 192)"> </span>extrude<span style="color:rgb(0, 0, 0)">=</span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkLinearExtrusionFilter<span style="color:rgb(0, 0, 0)">&gt;::</span>New<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>extrude<span style="color:rgb(0, 0, 0)">-&gt;</span>SetInput<span style="color:rgb(0, 0, 0)">(</span>appendFilter<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOutput<span style="color:rgb(0, 0, 0)">());</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>extrude<span style="color:rgb(0, 0, 0)">-&gt;</span>CappingOn<span style="color:rgb(0, 0, 0)">();</span></pre>



<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">///We</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">extrude</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">in</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">-slice_spacing</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">direction</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">to</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">respect</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">the</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">FOCAL</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">convention</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>extrude<span style="color:rgb(0, 0, 0)">-&gt;</span>SetVector<span style="color:rgb(0, 0, 0)">(</span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 0, 128)">0</span><span style="color:rgb(0, 0, 0)">,-</span>zSpacing<span style="color:rgb(0, 0, 0)">);</span><span style="color:rgb(0, 128, 0)">//Correct</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">Z</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">spacing</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">is</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">important</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span><span style="color:rgb(0, 128, 0)">//qDebug()&lt;&lt;-zSpacing&lt;&lt;&quot;-ve</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">zSpacing&quot;;</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>sts<span style="color:rgb(0, 0, 0)">-&gt;</span>SetInput<span style="color:rgb(0, 0, 0)">(</span>extrude<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOutput<span style="color:rgb(0, 0, 0)">());</span></pre>






<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>qDebug<span style="color:rgb(0, 0, 0)">()&lt;&lt;</span>t<span style="color:rgb(0, 0, 0)">-&gt;</span>currentTime<span style="color:rgb(0, 0, 0)">()&lt;&lt;</span><span style="color:rgb(0, 128, 0)">&quot;Stencil</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">start&quot;</span><span style="color:rgb(0, 0, 0)">;</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkImageStencil<span style="color:rgb(0, 0, 0)">&gt;</span><span style="color:rgb(192, 192, 192)"> </span>stencil<span style="color:rgb(0, 0, 0)">=</span>vtkSmartPointer<span style="color:rgb(0, 0, 0)">&lt;</span>vtkImageStencil<span style="color:rgb(0, 0, 0)">&gt;::</span>New<span style="color:rgb(0, 0, 0)">();</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>stencil<span style="color:rgb(0, 0, 0)">-&gt;</span>SetStencil<span style="color:rgb(0, 0, 0)">(</span>sts<span style="color:rgb(0, 0, 0)">-&gt;</span>GetOutput<span style="color:rgb(0, 0, 0)">());</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>stencil<span style="color:rgb(0, 0, 0)">-&gt;</span>SetInput<span style="color:rgb(0, 0, 0)">(</span>binary_image<span style="color:rgb(0, 0, 0)">);</span></pre>




<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>stencil<span style="color:rgb(0, 0, 0)">-&gt;</span>Update<span style="color:rgb(0, 0, 0)">();</span></pre>

<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192, 192, 192)">               </span>qDebug<span style="color:rgb(0, 0, 0)">()&lt;&lt;</span>t<span style="color:rgb(0, 0, 0)">-&gt;</span>currentTime<span style="color:rgb(0, 0, 0)">()&lt;&lt;</span><span style="color:rgb(0, 128, 0)">&quot;Stencil</span><span style="color:rgb(192, 192, 192)"> </span><span style="color:rgb(0, 128, 0)">stop&quot;</span><span style="color:rgb(0, 0, 0)">;</span></pre>



<br><br> <br><br>The bslowest execution occus only when I do this for the body contour, which is there on every dicom image slice.<br><br>Can you have a look at the code and suggest ways to improve the speed,please. The idea is from vv open source viewer.<br>



<br>Thanks<br><font color="#888888"><br>Jothy</font><div><div></div><div><br><br><div class="gmail_quote">On Mon, Jul 25, 2011 at 1:18 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:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
Hi Jothy,<br>
<br>
How are you creating the stencil?  The reason that I ask is that<br>
vtkImageStencil is a fast filter, so I doubt that it is what is causing<br>
the slowdown.  But some of the stencil source filters, especially<br>
vtkImplicitFunctionToImageStencil, can be slow depending on how<br>
they are used.<br>
<font color="#888888"><br>
 - David<br>
</font><div><div></div><div><br>
On Mon, Jul 25, 2011 at 3:09 AM, Jothy &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; I am running in release mode in QtCreator. I even tried running from outside and also copiling with -o2 and -03 optimization flags, but there is no improvement.<br>
&gt;<br>
&gt; Jothy<br>
&gt;<br>
&gt; On Sun, Jul 24, 2011 at 4:18 AM, John Drescher &lt;<a href="mailto:drescherjm@gmail.com" target="_blank">drescherjm@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Sat, Jul 23, 2011 at 3:48 PM, Jothy &lt;<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi all,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; In my program vtkImageStencil take alomost 2-3 mins for vtkImageData with<br>
&gt;&gt; &gt; 160 slices with 0.9x0.9x2.5 spacing. Is there any way to speed up this?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; Are you running release mode? And also not inside the debugger?<br>
&gt;&gt; Running debug mode or inside the Visual Studio can slow down some<br>
&gt;&gt; applications considerably ( I am talking about &gt; 10 times slower).<br>
&gt;&gt;<br>
&gt;&gt; John<br>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br>
</div></div></blockquote></div><br></div>