[vtkusers] image island removal and hole filling

Jonathan Morra jonmorra at gmail.com
Mon Dec 6 14:38:21 EST 2010


While, I'd love to use ITK, I haven't had luck getting ITK, VTK, and Java to
play together, so I'd like to stick with VTK for now.

David -- I'm still having issues with the filter.
1.  The filter has to run in real time because this is called on a mouse
move event.  However, I know a bounding box outside of which all voxels are
guaranteed to have a value of 0.  Therefore I went ahead and used the
SetFloodExtent method and set it to my known bounding box, is this OK?
2  I'm still seeing islands in the resulting binary mask, here is the latest
version of what I'm doing, any ideas?

            vtkPoints seedPoints = new vtkPoints();
            seedPoints.InsertNextPoint(panel.getPicker().GetPickPosition());
            vtkImageFloodFill fill = new vtkImageFloodFill();
            fill.SetInput(binaryImage);
            fill.SetSeedPoints(seedPoints);
            fill.ThresholdByLower(1);
            fill.SetFloodExtent(bounds);
            fill.Update();
            binaryImage = fill.GetOutput();

On Mon, Dec 6, 2010 at 10:34 AM, Karthik Krishnan <
karthik.krishnan at kitware.com> wrote:

> Or you could process the pipeline in ITK, if you are willing to
> incorporate another toolkit..
>
> itk::ConnectedThresholdImageFilter ->
> VotingBinaryHoleFillingImageFilter (or its iterative version)
>
>
> On Mon, Dec 6, 2010 at 11:49 PM, David Gobbi <david.gobbi at gmail.com>
> wrote:
> > I think I made a mistake... I should have told you to use
> > ThresholdByLower(1).  Other than that, your code looks fine.
> >   David
> >
> > On Mon, Dec 6, 2010 at 11:13 AM, Jonathan Morra <jonmorra at gmail.com>
> wrote:
> >>
> >> I just got your class in my version of vtk and up and running in Java,
> and
> >> it's not working for me.  I was wondering what I'm doing wrong, could
> you
> >> help me out?
> >> Thanks
> >>             // We have to remove all the islands not connected to the
> >> center
> >>             // and then fill the holes in the resulting mask
> >>             vtkPoints seedPoints = new vtkPoints();
> >>
> >>  seedPoints.InsertNextPoint(panel.getPicker().GetPickPosition());
> >>             vtkImageFloodFill fill = new vtkImageFloodFill();
> >>             fill.SetInput(binaryImage);
> >>             fill.SetSeedPoints(seedPoints);
> >>             fill.ThresholdByUpper(1);
> >>             fill.Update();
> >>             binaryImage = fill.GetOutput();
> >> On Fri, Dec 3, 2010 at 11:27 AM, Jonathan Morra <jonmorra at gmail.com>
> >> wrote:
> >>>
> >>> Fantastic, thanks for your help!
> >>>
> >>> On Fri, Dec 3, 2010 at 11:13 AM, David Gobbi <david.gobbi at gmail.com>
> >>> wrote:
> >>>>
> >>>> Hi Jonathan,
> >>>> I put my flood-fill filter on github, and tested it to make sure it
> >>>> still works:
> >>>> http://github.com/dgobbi/VTK/tree/flood-fill/Imaging/
> >>>>
> >>>> The interface is just like the vtkThresholdFilter, except that it
> >>>> has a method called SetSeedPoints() to allow you to set your
> >>>> seeds.  For a binary image, call ThresholdByUpper(1) so that
> >>>> you can set seeds inside any non-zero islands that you want
> >>>> to keep in your output.
> >>>> I'll probably contribute this class to VTK after I have brought
> >>>> it up-to-date (it was originally written for VTK 4).
> >>>>   David
> >>>>
> >>>> On Thu, Dec 2, 2010 at 3:39 PM, Jonathan Morra <jonmorra at gmail.com>
> >>>> wrote:
> >>>>>
> >>>>> Thanks, let me know where I can download it from.
> >>>>>
> >>>>> On Thu, Dec 2, 2010 at 2:36 PM, David Gobbi <david.gobbi at gmail.com>
> >>>>> wrote:
> >>>>>>
> >>>>>> For Step 1, I have a VTK flood-fill class that do the job.  I'll
> >>>>>> upload it to
> >>>>>> gerrit so that you can try it out.  I don't think anything exists
> for
> >>>>>> your
> >>>>>> Step 2, though.
> >>>>>>   David
> >>>>>>
> >>>>>> On Thu, Dec 2, 2010 at 3:14 PM, Jonathan Morra <jonmorra at gmail.com>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> I have a binary vtkImageData class and I want to do 2 things with
> it,
> >>>>>>> and I don't know how.
> >>>>>>> 1.  I want to remove all islands from the image except one.  I want
> >>>>>>> to identify the island not to be removed by a pixel location.  I
> have seen
> >>>>>>> vtkImageIslandRemoval2D, and I don't think that'll work for me,
> because I do
> >>>>>>> not know anything about the island's size that I want to keep (it
> could be
> >>>>>>> big, small, or in the middle), all that I know is one point which
> >>>>>>> is guaranteed to be interior to one island, and that's the island I
> want to
> >>>>>>> keep.
> >>>>>>> 2.  I want to do hole filling on the output of step 1 and I don't
> >>>>>>> know how to do that.  I saw vtkFillHolesFilter but that appears
> only to work
> >>>>>>> on poly data.  I'd like something analogous to that for
> vtkImageData.
> >>>>>>> If anyone knows how to do these things, I'd appreciate it.  Also,
> if
> >>>>>>> it matters, I'm coding in Java.
> >>>>>>> Thanks
> >>>>>>> _______________________________________________
> >>>>>>> Powered by 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
> >>>>>>>
> >>>>>>> Follow this link to subscribe/unsubscribe:
> >>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >
> >
> > _______________________________________________
> > Powered by 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
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101206/245c3f6b/attachment.htm>


More information about the vtkusers mailing list