You'll have to wait until VTK 5.8. It provides a faster vtkPolyDataToImageStencil that does not require the contours to be extruded.<br><br> - David<br> <br><br><div class="gmail_quote">On Mon, Jul 25, 2011 at 6:33 AM, Jothy <span dir="ltr"><<a href="mailto:jothybasu@gmail.com">jothybasu@gmail.com</a>></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);">-></span>GetOutput<span style="color: rgb(0, 0, 0);">()-></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);"><</span>vtkImageData<span style="color: rgb(0, 0, 0);">></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);"><</span>vtkImageData<span style="color: rgb(0, 0, 0);">>::</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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">-></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);">()<<</span>binary_image<span style="color: rgb(0, 0, 0);">-></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);">]<<</span>binary_image<span style="color: rgb(0, 0, 0);">-></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);">]<<</span>binary_image<span style="color: rgb(0, 0, 0);">-></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);">]<<</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);">-></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);">]<<</span>binary_image<span style="color: rgb(0, 0, 0);">-></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);">]<<</span>binary_image<span style="color: rgb(0, 0, 0);">-></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);">]<<</span><span style="color: rgb(0, 128, 0);">"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"</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);"><</span>vtkPolyDataToImageStencil<span style="color: rgb(0, 0, 0);">></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);"><</span>vtkPolyDataToImageStencil<span style="color: rgb(0, 0, 0);">>::</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);">-></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);">-></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);"><</span>vtkLinearExtrusionFilter<span style="color: rgb(0, 0, 0);">></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);"><</span>vtkLinearExtrusionFilter<span style="color: rgb(0, 0, 0);">>::</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);">-></span>SetInput<span style="color: rgb(0, 0, 0);">(</span>appendFilter<span style="color: rgb(0, 0, 0);">-></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);">-></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);">-></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()<<-zSpacing<<"-ve</span><span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(0, 128, 0);">zSpacing";</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);">-></span>SetInput<span style="color: rgb(0, 0, 0);">(</span>extrude<span style="color: rgb(0, 0, 0);">-></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);">()<<</span>t<span style="color: rgb(0, 0, 0);">-></span>currentTime<span style="color: rgb(0, 0, 0);">()<<</span><span style="color: rgb(0, 128, 0);">"Stencil</span><span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(0, 128, 0);">start"</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);"><</span>vtkImageStencil<span style="color: rgb(0, 0, 0);">></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);"><</span>vtkImageStencil<span style="color: rgb(0, 0, 0);">>::</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);">-></span>SetStencil<span style="color: rgb(0, 0, 0);">(</span>sts<span style="color: rgb(0, 0, 0);">-></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);">-></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);">-></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);">()<<</span>t<span style="color: rgb(0, 0, 0);">-></span>currentTime<span style="color: rgb(0, 0, 0);">()<<</span><span style="color: rgb(0, 128, 0);">"Stencil</span><span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(0, 128, 0);">stop"</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 class="h5"><br><br><div class="gmail_quote">On Mon, Jul 25, 2011 at 1:18 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></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 <<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>> wrote:<br>
><br>
> 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>
><br>
> Jothy<br>
><br>
> On Sun, Jul 24, 2011 at 4:18 AM, John Drescher <<a href="mailto:drescherjm@gmail.com" target="_blank">drescherjm@gmail.com</a>> wrote:<br>
>><br>
>> On Sat, Jul 23, 2011 at 3:48 PM, Jothy <<a href="mailto:jothybasu@gmail.com" target="_blank">jothybasu@gmail.com</a>> wrote:<br>
>> > Hi all,<br>
>> ><br>
>> > In my program vtkImageStencil take alomost 2-3 mins for vtkImageData with<br>
>> > 160 slices with 0.9x0.9x2.5 spacing. Is there any way to speed up this?<br>
>> ><br>
>> > Thanks<br>
>> ><br>
>><br>
>> Are you running release mode? And also not inside the debugger?<br>
>> Running debug mode or inside the Visual Studio can slow down some<br>
>> applications considerably ( I am talking about > 10 times slower).<br>
>><br>
>> John<br>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br>