vtkImageIslandRemoval2D

Bill Lorensen wlorens1 at nycap.rr.com
Thu Jan 13 16:02:18 EST 2000


Simon,
Thanks for the bug report and especially the fix. Your changes have been added to vtkImageIsland2D.cxx and should appear tonight. Also, we're adding a regression test to cover this case.

Once again, thanks,

Bill


At 10:20 AM 1/10/00 +0000, Simon Whitaker wrote:
>Hi, ...
>
>Back in November Adrian Anner wrote:-
>
>"I'm creating a model from segmented volume data(similar to the tcl-example
>../examplesTcl/frog/segmented8.tcl).
>
>vtkVolume16Reader->vtkImageThreshold->vtkImageIslandRemoval2D->vtkToStructur
>edPoints->vtkMarchingCubes->vtkPolyDataWriter
>
>I use the vtkImageIslandRemoval2D to remove small islands of voxels. I can
>display all slices after this filter and it looks fine, but if I call
>Update() (to write the data to the file) I get just the first slice. If I
>don't use the islandRemover it works fine."
>
>
>I have encountered exactly the same problem with a similar pipeline
>(vtkPNMReader - vtkImageIslandRemoval2D - vtkImageThreshold -
>vtkImageShrink3D - vtkImageGaussianSmooth - vtkImageToStructuredPoints -
>vtkMarchingCubes - vtkMarchingCubes - vtkDecimate - vtkSmoothPolyDataFilter
>- vtkPolyDataNormals - vtkStripper - vtkPolyDataWriter) which is used to
>generate models from multiple 3D CT images.
>
>This pipeline, that I had used without trouble with VTK2.0, failed after I
>changed over to VTK2.3, producing bizarre models or causing vtkDecimate to
>fail due to lack of input data.
>
>I think I have traced the problem to the templated function
>vtkImageIslandRemoval2DExecute in vtkImageIslandRemoval2D.cxx. The lines:
>         inPtr2 += inInc2;
>         outPtr2 += outInc2;
>are missing from the final three-level nested loop. The code for this loop
>should read:
>
>
>// Loop though all pixels actually copying and replacing.
>for (idxC = 0; idxC < maxC; idxC++)
>   {
>     outPtr2 = outPtr + idxC;
>     inPtr2 = inPtr + idxC;
>     for (outIdx2 = outExt[4]; outIdx2 <= outExt[5]; ++outIdx2)
>       {
>         outPtr1 = outPtr2;
>         inPtr1 = inPtr2;
>         for (outIdx1 = outExt[2]; outIdx1 <= outExt[3]; ++outIdx1)
>           {
>             outPtr0 = outPtr1;
>             inPtr0 = inPtr1;
>             for (outIdx0 = outExt[0]; outIdx0 <= outExt[1]; ++outIdx0)
>               {
>                 if (*outPtr0 == 3)
>                   {
>                    *outPtr0 = replaceValue;
>                   }
>                 else
>                   {
>                    *outPtr0 = *inPtr0;
>                   }
>                 inPtr0 += inInc0;
>                 outPtr0 += outInc0;
>               }
>             inPtr1 += inInc1;
>             outPtr1 += outInc1;
>           }
>         inPtr2 += inInc2;            // missing line
>         outPtr2 += outInc2;          // missing line
>       }
>   }
>
>Once I added these, vtkImageIslandRemoval2D worked fine. I have looked in
>the source for VTK2.4 and VTK nightly (today, 10 January) and both these
>releases are also missing the same lines.
>
>
>All the best ...
>
>Dr SC Whitaker
>Department of Radiology
>University Hospital
>Nottingham
>UK
>
>
>-----------------------------------------------------------------------------
>This is the private VTK discussion list.  Please keep messages on-topic.
>Check the FAQ at: <http://www.automatrix.com/cgi-bin/vtkfaq>
>To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
><majordomo at gsao.med.ge.com>.  For help, send message body containing
>"info vtkusers" to the same address.     Live long and prosper.
>-----------------------------------------------------------------------------




-----------------------------------------------------------------------------
This is the private VTK discussion list.  Please keep messages on-topic.
Check the FAQ at: <http://www.automatrix.com/cgi-bin/vtkfaq>
To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
<majordomo at gsao.med.ge.com>.  For help, send message body containing
"info vtkusers" to the same address.     Live long and prosper.
-----------------------------------------------------------------------------




More information about the vtkusers mailing list