<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Is there an easier way in ITK?<br>
    <br>
    Thanks<br>
    Imre<br>
    <br>
    <div class="moz-cite-prefix">Am 28.12.2015 um 23:38 schrieb Imre
      Goretzki:<br>
    </div>
    <blockquote cite="mid:5681B9CB.9070502@gmail.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      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>
    </blockquote>
    <br>
  </body>
</html>