<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hey guys,<br>
<br>
I use the vtkPolyDataConnectivityFilter from polydata to extract
several different and more or less unknown regions. <br>
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:<br>
<br>
filter->SetExtractionModeToAllRegions();<br>
filter->Update();<br>
...<br>
<br>
for (int i = 0; i < filter->GetNumberOfExtractedRegions();
i++)<br>
{<br>
extractFilter->InitializeSpecifiedRegionList();<br>
extractFilter->AddSpecifiedRegion(i);<br>
extractFilter->Modified();<br>
extractFilter->Update();<br>
extractRegionData->DeepCopy(extractFilter->GetOutput());<br>
}<br>
extractFilter->InitializeSpecifiedRegionList();<br>
<br>
Background for this: I want to use the points of each region to
check whether they lie within an object in my binary<br>
mask image. So the pipeline would be like this:<br>
<br>
1) Get all Regions <br>
2) get region <i>i</i><br>
3) get points of region <i>i</i><br>
4) check if point <i>j</i> lies within the binary mask
<i>B</i> (<i>B</i>_<i>j</i> == 255)<br>
4a) if true then add region to the extractFilter
and break (-> next region <i>i</i>)<br>
4b) if false then continue with next point <i>j</i><br>
5) Mark all regions red (done easily)<br>
6) Mark some regions green that are above a specific size (can be
accessed with filter->GetRegionSizes() )<br>
7) Mark some regions yellow (the regions that are extracted during
step 1-4a) <br>
<br>
I do not know if the PolyDataConnectivityFilter is the right class
for this, I think it is. <br>
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).<br>
<br>
I would now try to get the points from the cells and check the
binary mask, because the <br>
<br>
vtkPolyData->GetNumberOfPoints()<br>
<br>
and<br>
<br>
vtkPolyData->GetPoint(pointCounter, point); <br>
<br>
are not working correctly in this scenario (all regions are
extracted because every single region has every point?<br>
i did not verify my guess but I think there would be the problem)<br>
<br>
The binary mask is a vtkImageData, that could be transformed to
vtkPolyData.<br>
The input image (already filtered with vtkMarchingCubes) and the
binary mask have the same dimensions (x,y,z).<br>
<br>
I hope you can imagine what I'm trying to do and have some tips for
me, if my approach is correct.<br>
<br>
Regards<br>
Imre<br>
</body>
</html>