<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"><<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">You'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"><<a href="mailto:jothybasu@gmail.com" target="_blank">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><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>
</div></div></blockquote></div><br></div>