[vtkusers] MarchingCubes missunderstandig GenerateValues and Contours
Imre Goretzki
goretzki.imre at gmail.com
Sun Dec 6 10:44:11 EST 2015
Thank you Cory,
I implemented the vtkThreshold today, now it is working fine.
Imre
Am 06.12.2015 um 16:22 schrieb Cory Quammen:
> On Sat, Dec 5, 2015 at 1:15 PM, Imre Goretzki <goretzki.imre at gmail.com
> <mailto:goretzki.imre at gmail.com>> wrote:
>
> Hey guys,
>
> I have a question about the "GenerateValues" method of
> MarchingCubes. My image has several points that have intensity
> values that lie between 928 and 1600.
>
> My understand of
>
> int idxContour = 1;
> double from = 920;
> double to = 930;
>
> ImageToVTKImageFilter con = ...
>
> marchingCube->setInputData(con->GetOutput());
> marchingCube->GenerateValues(idxContour, from, to);
> marchingCube->Update();
>
> is that the algorithm will take all points that have an intensity
> value that lies between 920 and 930. These points are combined to
> one contour. Via MATLAB and ITK's histogram I can validate the
> amout of points that have a specific intensity value.
>
> If I plot the points that were generated by marching cubes, I do
> not get all of them (I cannot see all of them), e.g.
> the histogram says that there are about 200000 points that have an
> intensity value 928. If I use 928 as the lower bound for the
> GenerateValues method, there are just some of them plotted -
> approximately.
>
> Is my understanding of GenerateValues correct?
>
> Not exactly. vtkMarchingCubes will extract individual isocontours -
> surfaces that represent the locations in a dataset with a particular
> value. vtkMarchingCubes and other isocontour filters in VTK can
> generate surfaces from more than one isovalue. GenerateValues() is a
> convenience function to specify a range of isovalues.
>
> A vtkThreshold filter will extract all points in the dataset in a
> value range and may be what you want.
>
> Next question: (more than 1 contour)
>
> If I want to generate more than 1 contour. How do I initialize the
> marchingCube and, more interesting, how do I get the output of a
> specific contour. I'm thinking about the following:
>
>
> marchingCube->SetNumberOfContours(2);
> marchingCube->GenerateValues(1, from_1, to_1);
> marchingCube->GenerateValues(2, from_2, to_2);
>
> vtkSmartPointer<vtkOutlineFilter> outline =
> vtkSmartPointer<vtkOutlineFilter>::New();
> outline->SetInputConnection(marchingCube->GetOutput(1));
>
> vtkSmartPointer<vtkPolyDataMapper> outlineMapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> outlineMapper->SetInputConnection(outline->GetOutputPort());
>
> vtkSmartPointer<vtkPolyDataMapper> data1 =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> data1->SetInputConnection(marchingCube->GetOutput(1));
>
> vtkSmartPointer<vtkPolyDataMapper> data2 =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> data2->SetInputConnection(marchingCube->GetOutput(2));
>
> I know that the above lines are not working like this, but I
> actually do not know how to do that. Right now I have 2
> marchingCube instances that do the work for data1/data2 but that
> should not do the trick.
>
>
> You can't set up two different isocontour surfaces and get two
> different outputs this way. Using two separate vtkMarchingCubes
> instances is the right way to go.
>
> HTH,
> Cory
>
>
> I hope you can help me
>
> Greetings
> Imre
> _______________________________________________
> Powered by www.kitware.com <http://www.kitware.com>
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
>
>
>
> --
> Cory Quammen
> R&D Engineer
> Kitware, Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20151206/b2115fcb/attachment.html>
More information about the vtkusers
mailing list