[vtkusers] method to extract regions
Imre Goretzki
goretzki.imre at gmail.com
Mon Dec 28 17:38:03 EST 2015
Hey guys,
I use the vtkPolyDataConnectivityFilter from polydata to extract several
different and more or less unknown regions.
My problem is that I want to extract regions from this filter, but if I
do this, the update process for all regions takes up to 10minutes:
filter->SetExtractionModeToAllRegions();
filter->Update();
...
for (int i = 0; i < filter->GetNumberOfExtractedRegions(); i++)
{
extractFilter->InitializeSpecifiedRegionList();
extractFilter->AddSpecifiedRegion(i);
extractFilter->Modified();
extractFilter->Update();
extractRegionData->DeepCopy(extractFilter->GetOutput());
}
extractFilter->InitializeSpecifiedRegionList();
Background for this: I want to use the points of each region to check
whether they lie within an object in my binary
mask image. So the pipeline would be like this:
1) Get all Regions
2) get region /i/
3) get points of region /i/
4) check if point /j/ lies within the binary mask /B/
(/B/_/j/ == 255)
4a) if true then add region to the extractFilter and
break (-> next region /i/)
4b) if false then continue with next point /j/
5) Mark all regions red (done easily)
6) Mark some regions green that are above a specific size (can be
accessed with filter->GetRegionSizes() )
7) Mark some regions yellow (the regions that are extracted during step
1-4a)
I do not know if the PolyDataConnectivityFilter is the right class for
this, I think it is.
If I store the extractRegionData in a vector, all regions have the same
number of points (which is kind of strange) but different number of
cells (region size == number of cells is correct).
I would now try to get the points from the cells and check the binary
mask, because the
vtkPolyData->GetNumberOfPoints()
and
vtkPolyData->GetPoint(pointCounter, point);
are not working correctly in this scenario (all regions are extracted
because every single region has every point?
i did not verify my guess but I think there would be the problem)
The binary mask is a vtkImageData, that could be transformed to vtkPolyData.
The input image (already filtered with vtkMarchingCubes) and the binary
mask have the same dimensions (x,y,z).
I hope you can imagine what I'm trying to do and have some tips for me,
if my approach is correct.
Regards
Imre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20151228/54342e98/attachment.html>
More information about the vtkusers
mailing list