[vtkusers] Creating a contour from volume data
Mathieu Malaterre
mmalat at imaging.robarts.ca
Mon Jul 22 11:32:19 EDT 2002
Hi Rene,
Could you try a :
skinExtractor->Update()
before displaying any results.
HTH
mathieu
Rene Tschirley wrote:
> Dear VTK gurus,
>
> I'm quite near to despairation. With upgrading to VTK 4.0 (I used to work
> with 2.3 and 3.2 by now) I rearranged some applications. But now, I seem
> to be unable to create a simple isosurface from a volume dataset as it
> worked quite well with 2.3 and 3.2. It's a pity that there are so few
> examples for 4.0, especially the most interesting examples have been
> removed, e.g. medical[1-3].cxx, so I have nothing to look at how things
> work well.
>
> Here's the relevant C++ code:
>
> vtkImageReader *reader = vtkImageReader::New();
> reader->SetFilePrefix(filename);
> reader->SetFileNameSliceOffset(sliceoffset);
> reader->SetFilePattern(pattern);
> reader->SetDataExtent(0, xsize-1, 0, ysize-1, 0, zsize-1);
> reader->SetDataScalarTypeToUnsignedChar();
> reader->SetDataSpacing (xspacing, yspacing, zspacing);
> reader->SetDataMask(mask);
> reader->Update();
> cout << "Reader has "
> << reader->GetOutput()->GetNumberOfPoints()
> << "points.\n"; // at runtime this tells me that there are
> // 13107200 data cells available which is
> // correct for 512*512*50 @ 8bpp
>
> vtkImageShrink3D *shrinker = vtkImageShrink3D::New();
> shrinker->SetShrinkFactors(xshrink,yshrink,zshrink);
> shrinker->SetInput(reader->GetOutput());
> shrinker->Update(); // a PrintSelf() makes me sure that I didn't loose
> // any points yet.
>
> vtkMarchingCubes *skinExtractor = vtkMarchingCubes::New();
> skinExtractor->SetInput(shrinker->GetOutput());
> skinExtractor->SetValue(0, isolevel);
> cout << "Creating " << skinExtractor->GetOutput()->GetNumberOfPolys()
> << " polygons.\n";
> // at runtime this tells me that there are
> // 0 polygons created which is obviously not what
> // I wanted.
>
> After that I use vtkDecimatePro and vtkPolyDataMapper to continue the
> pipeline, but without any polygons, the pipeline is not of any use.
>
> Below follows the PrintSelf() output of reader->GetOutput() and Marching
> Cubes object if this is of any help.
>
> This part of the pipeline worked well with VTK 2.3 and 3.2 so I wonder if
> there is any little nifty mistake in it. I hope somebody of you will
> point it out.
>
> Yours,
> René
>
> PrintSelf of reader->GetOutput:
> Debug: Off
> Modified Time: 128
> Reference Count: 1
> Registered Events: (none)
> Source: 0x8055328
> Release Data: Off
> Data Released: False
> Global Release Data: Off
> MaximumNumberOfPieces: -1
> PipelineMTime: 122
> UpdateTime: 129
> UpdateExtent: Not Initialized
> Update Number Of Pieces: 1
> Update Piece: 0
> Update Ghost Level: 0
> RequestExactExtent: Off
> UpdateExtent: 0, 511, 0, 511, 0, 49
> WholeExtent: 0, 511, 0, 511, 0, 49
> Field Data:
> Debug: Off
> Modified Time: 71
> Reference Count: 1
> Registered Events: (none)
> Number Of Arrays: 0
> Number Of Components: 0
> Number Of Tuples: 0
> Locality: 0
> NumberOfConsumers: 0
> ExtentTranslator: (0x8055680)
> MaximumNumberOfPieces: -1
> Number Of Points: 13107200
> Number Of Cells: 12794929
> Cell Data:
> Debug: Off
> Modified Time: 75
> Reference Count: 1
> Registered Events: (none)
> Number Of Arrays: 0
> Number Of Components: 0
> Number Of Tuples: 0
> Copy Flags: ( 1 1 1 1 1 )
> Scalars: (none)
> Vectors: (none)
> Normals: (none)
> TCoords: (none)
> Tensors: (none)
> Point Data:
> Debug: Off
> Modified Time: 128
> Reference Count: 1
> Registered Events: (none)
> Number Of Arrays: 1
> Array 0 name = ImageValues
> Number Of Components: 1
> Number Of Tuples: 13107200
> Copy Flags: ( 1 1 1 1 1 )
> Scalars:
> Debug: Off
> Modified Time: 125
> Reference Count: 1
> Registered Events: (none)
> Name: ImageValues
> Number Of Components: 1
> Number Of Tuples: 13107200
> Size: 13107200
> MaxId: 13107199
> LookupTable: (none)
> Array: 0x4254a008
> Vectors: (none)
> Normals: (none)
> TCoords: (none)
> Tensors: (none)
> Bounds:
> Xmin,Xmax: (0, 511)
> Ymin,Ymax: (0, 511)
> Zmin,Zmax: (0, 49)
> Compute Time: 0
> Release Data: Off
> ScalarType: 3
> NumberOfScalarComponents: 1
> Spacing: (1, 1, 1)
> Origin: (0, 0, 0)
> Dimensions: (512, 512, 50)
> Increments: (1, 512, 262144)
> Extent: (0, 511, 0, 511, 0, 49)
> WholeExtent: (0, 511, 0, 511, 0, 49)
>
> PrintSelf of skinExtractor (vtkMarchingCubes):
> number of contours = 1
> Debug: Off
> Modified Time: 153
> Reference Count: 2
> Registered Events: (none)
> Number Of Required Inputs: 1
> Input 0: (0x80553c0)
> AbortExecute: Off
> Progress: 1
> Progress Text: (None)
> Output 0: (0x8058a98)
> Contour Values:
> Value 0: 30
> Compute Normals: On
> Compute Gradients: Off
> Compute Scalars: On
> Locator:0x8059060
> Debug: Off
> Modified Time: 153
> Reference Count: 1
> Registered Events: (none)
> DataSet: (none)
> Automatic: On
> Tolerance: 0.001
> Level: 8
> MaxLevel: 8
> Retain Cell Lists: On
> Build Time: 0
> Number of Points Per Bucket: 3
> Divisions: (42, 42, 42)
>
> --
> Dipl.-Inform. René Tschirley http://www.cs.tu-berlin.de/~pooh
> TU Berlin, Computer Graphics and Computer Assisted Medicine research group
>
> ------------------------------------------------------------------------
> Part 1.2Type: application/pgp-signature
--
If all else fail read the instructions
Malaterre, Mathieu
The John P. Robarts Research Institute
Imaging Research Laboratories
http://www.imaging.robarts.ca/~mmalat
More information about the vtkusers
mailing list