Hi everyone,<br><br>I am having a strange problem with vtkImageExtrudeFilter output. The problem is that it does not also happen all the time, so I am not sure what is going on.<br><br>So, what I am trying to do is create a binary mask based on some user selection.
<br><br><span style="font-family: monospace;">The code for using the vtkImageExtrude function is as follows:<br><br></span><pre>vtkLinearExtrusionFilter* extrude = vtkLinearExtrusionFilter::New();<br>extrude-&gt;SetInput(polydata);
<br>extrude-&gt;SetScaleFactor(1);<br>extrude-&gt;SetExtrusionTypeToNormalExtrusion();<br>extrude-&gt;SetVector(0, 0, 1);<br><br>vtkPolyDataToImageStencil* dataToStencil = vtkPolyDataToImageStencil::New();<br>dataToStencil-&gt;SetInput(extrude-&gt;GetOutput());
<br><br>vtkImageStencil* stencil = vtkImageStencil::New();<br>stencil-&gt;SetInput(m_viewer-&gt;GetOutput());<br>stencil-&gt;SetStencil(dataToStencil-&gt;GetOutput());<br>stencil-&gt;ReverseStencilOff();<br>stencil-&gt;SetBackgroundValue(0);
<br><br>stencil-&gt;Update();</pre>Now, to binarize the image, I am using the code from the vtk build (thanks to Gabriel for pointing this out!) . The code can be found at:<br><br><tt><a href="http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Hybrid/Testing/Cxx/TestImageStencilData.cxx?root=VTK&amp;content-type=text/plain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

 /Hybrid/Testing/Cxx/TestImageStencilData.cxx</a><br><br>I am putting the function here also:<br><br>The code is as follows:<br> </tt><pre>static void GetStencilDataAsImageData(<br><br>  vtkImageStencilData * stencilData, vtkImageData *image )
<br>{<br>  int extent[6];<br>  stencilData-&gt;GetExtent( extent );<br>  extent[5] = extent[4]; // Otherwise we cannot write it out as a PNG!<br>  int extent1[6] = {0,50,0,50,0,0};<br><br>  image-&gt;SetExtent(extent1);<br>
  image-&gt;SetScalarTypeToUnsignedChar();<br>  image-&gt;SetNumberOfScalarComponents(3);<br>  image-&gt;AllocateScalars();<br><br>  // Fill image with zeroes<br>  for (int y=extent1[2]; y &lt;= extent1[3]; y++)<br><br>    {
<br>    unsigned char *ptr = (unsigned char *)(image-&gt;GetScalarPointer(<br>                              extent1[0], y, extent1[4] ));<br>    for (int x=extent1[0]; x &lt;= extent1[1]; x++)<br>      {<br>      *ptr = 0;  ++ptr;
<br><br>      *ptr = 0;  ++ptr;<br>      *ptr = 0;  ++ptr;<br>      }<br>    }<br><br>  vtkIdType increments[3];<br>  image-&gt;GetIncrements( increments );<br><br>  int iter = 0;<br>  for (int y=extent1[2]; y &lt;= extent1[3]; y++, iter = 0)
<br><br>    {<br>    int r1,r2;<br>    int moreSubExtents = 1;<br>    while( moreSubExtents )<br>      {<br>      moreSubExtents = stencilData-&gt;GetNextExtent(<br>        r1, r2, extent1[0], extent1[1], y, extent1[4], iter);
<br><br><br>      // sanity check<br>      if (r1 &lt;= r2 )<br>        {<br>        unsigned char *beginExtent =<br>          (unsigned char *)(image-&gt;GetScalarPointer( r1, y, extent1[4] ));<br>        unsigned char *endExtent   =
<br><br>          (unsigned char *)(image-&gt;GetScalarPointer( r2, y, extent1[4] ));<br>        while (beginExtent &lt;= endExtent)<br>          {<br>          *beginExtent     = (unsigned char)(255);<br>          *(beginExtent+1) = (unsigned char)(255);
<br><br>          *(beginExtent+2) = (unsigned char)(255);<br>          beginExtent += increments[0];<br>          }<br>        }<br>      } // end for each extent tuple<br>    } // end for each scan line</pre><br>The function is called as follows:
<br><br>vtkImageData * data = vtkImageData::New();<br><pre>GetStencilDataAsImageData(stencil-&gt;GetStencil(), data);<br><br>Now, the problem is that I am expecting a black background and white foreground of the my selection region. I get this most of the time but sometimes the selection is inverted!! That is my background is white and foreground is black! I have no idea why this is happening. I am guessing it could even be something with the vtkImageExtrude filter.
<br><br>Has anyone else noticed this or know what might be going on here?<br><br>Thanks fo any help you might be able to give me.<br><br>Cheers,<br></pre>
Anja