[vtkusers] Bug in vtkPolyDataToImageStencil?
lars-friedrich
lars-friedrich at gmx.net
Mon May 4 10:58:07 EDT 2009
hi joel,
I had a similar problem with 2D-binarization based on a contour. after some
experiments, I found out that applying
extrude->SetVector(0.1, 0.1, 1)
instead of
extrude->SetVector(0, 0, 1)
worked for me.
It seems that the 'straight' zeroes (perpendicular vector) were the problem.
maybe these values cause calculation troubles internally - division by zero?
don't know ...
the marginal vector direction change did not change my segmentation results.
maybe applying extrude->SetVector(0.1, 0.1, 3) works in your example, I'd
try it ...
regards,
lars
Joel Schaerer wrote:
>
> Hi all,
>
> Following the advice people have given me in
> http://www.nabble.com/Creating-a-3D-surface-mesh-from-a-stack-of-contours-td23293256.html
> this thread, I'm trying to create a 3D mesh from a stack of contours
> using vtkLinearExtrusionFilter, vtkPolyDataToImageStencil and
> vtkMarchingCubes.
>
> It all seems to work quite well except for a very annoying bug, which is
> that there are spurious white lines in the output of the binarizer.
> Minimal code showing the problem with sample input and output data, as
> well as a screenshot of the problem can be found here:
>
> http://www.creatis.insa-lyon.fr/~schaerer/binarizer_bug.tar.bz2
>
> The input are a polydata containing a closed polyline, and an empty image
> to get the required spacing, origin, etc. for the output.
>
> Is this a bug in vtk? Or am I missing something?
>
> Thanks!
>
> joel
>
>
> PS: Here is the sample code:
>
> #include <iostream>
> #include <sstream>
> #include <cassert>
> #include <set>
> #include <vtkPolyDataWriter.h>
> #include <vtkPolyData.h>
> #include <vtkLinearExtrusionFilter.h>
> #include <vtkMetaImageWriter.h>
> #include <vtkMetaImageReader.h>
> #include <vtkImageData.h>
> #include <vtkPolyDataToImageStencil.h>
> #include <vtkPolyDataReader.h>
> #include <vtkImageStencil.h>
> #include <vtkSmartPointer.h>
>
>
>
> int main(int argc,char * argv[])
> {
> vtkSmartPointer<vtkMetaImageReader>
> imread=vtkSmartPointer<vtkMetaImageReader>::New();
> imread->SetFileName("input.mhd");
> imread->Update();
>
> vtkSmartPointer<vtkPolyDataReader>
> contour_reader=vtkSmartPointer<vtkPolyDataReader>::New();
> contour_reader->SetFileName("input_contour.vtk");
> contour_reader->Update();
>
> vtkLinearExtrusionFilter * extrude=vtkLinearExtrusionFilter::New();
> extrude->SetInput(contour_reader->GetOutput());
> extrude->SetVector(0, 0, 3); //3 is the Z spacing between contours
> //extrude->CappingOn(); //doesn't seem to be doing anything
> extrude->Update();
>
> vtkPolyDataToImageStencil* sts=vtkPolyDataToImageStencil::New();
> vtkImageStencil* stencil=vtkImageStencil::New();
> sts->SetInput(extrude->GetOutput());
> sts->SetInformationInput(imread->GetOutput());
> sts->Update();
> stencil->SetStencil(sts->GetOutput());
> stencil->SetInput(imread->GetOutput());
>
> vtkSmartPointer<vtkMetaImageWriter>
> binary_writer=vtkSmartPointer<vtkMetaImageWriter>::New();
> binary_writer->SetInput(stencil->GetOutput());
> binary_writer->SetFileName("binary_output.mhd");
> binary_writer->Write();
>
> extrude->Delete();
> sts->Delete();
> stencil->Delete();
>
> return 0;
> }
>
>
--
View this message in context: http://www.nabble.com/Bug-in-vtkPolyDataToImageStencil--tp23368312p23370191.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list