[Insight-users] Re: [Insight-developers] GrayscaleReconstructionByDilatationImageFilter contributionand some related questions

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Mon Aug 15 08:30:04 EDT 2005


Hi Jim,
Hi Luis,

I have done some more work on this class, and progress is now as accurate as 
possible. I have also created the ReconstructionByErosionImageFilter, and 
have used those filters in filters where geodesic reconstruction iterated to 
stability was used. 
I have also created more filters related to mathematical morphology.
New and modified files are all available at 
http://voxel.jouy.inra.fr/darcs/itk-mima2/Insight/Code/BasicFilters/?C=M;O=D :

itkHMinimaImageFilter.txx
itkHMinimaImageFilter.h 
itkHConvexImageFilter.txx 
itkHConvexImageFilter.h  
itkHConcaveImageFilter.txx  
itkHConcaveImageFilter.h
itkGrayscaleGeodesicErodeImageFilter.txx
itkGrayscaleGeodesicErodeImageFilter.h
itkGrayscaleGeodesicDilateImageFilter.txx
itkGrayscaleGeodesicDilateImageFilter.h
itkWhiteTopHatImageFilter.h
itkReconstructionByErosionImageFilter.h
itkReconstructionByDilatationImageFilter.h
itkOpeningByReconstructionImageFilter.txx
itkOpeningByReconstructionImageFilter.h
itkHMaximaImageFilter.txx
itkHMaximaImageFilter.h
itkGrayscaleGrindPeakImageFilter.txx 
itkGrayscaleGrindPeakImageFilter.h
itkGrayscaleFillholeImageFilter.txx
itkGrayscaleFillholeImageFilter.h
itkGrayscaleConnectedOpeningImageFilter.txx
itkGrayscaleConnectedOpeningImageFilter.h
itkGrayscaleConnectedClosingImageFilter.txx
itkGrayscaleConnectedClosingImageFilter.h
itkDoubleThresholdImageFilter.txx
itkDoubleThresholdImageFilter.h
itkClosingByReconstructionImageFilter.txx
itkClosingByReconstructionImageFilter.h
itkBlackTopHatImageFilter.h
itkReconstructionByErosionImageFilter.txx
itkReconstructionByDilatationImageFilter.txx

Tests are still working, and I will provide test for new classes in a near 
future.
It would be nice if that work can be integrated in ITK

Regards,

Gaetan

On Wednesday 08 June 2005 19:02, you wrote:
> Gaeten,
>
> Thanks for the filter.  I will take a look at it. With the timings you are
> reporting, perhaps we do not need the original (threaded) implementation.
>
> It would be great to have an erosion version as well.  I'll probably ask
> you do that one after we smooth out any issues we have with the dilate
> case.
>
> Thanks again.
>
> Jim
>
>
>
> -----Original Message-----
> From: insight-developers-bounces+millerjv=crd.ge.com at itk.org
> [mailto:insight-developers-bounces+millerjv=crd.ge.com at itk.org]On Behalf
> Of Gaetan Lehmann
> Sent: Wednesday, June 08, 2005 11:22 AM
> To: insight-developers at itk.org
> Subject: [Insight-developers]
> GrayscaleReconstructionByDilatationImageFilter contributionand some
> related questions
>
>
>
> Hi,
>
> I have implemented a more efficient algorithm for reconstruction by
> dilatation. To give an idea of improvement, the same reconstruction on one
> of my 3D image runs in 47 min with GrayscaleGeodesicDilateImageFilter
> iterated to stability, and in 23 sec with this filter.
>
> Code is attached. I hope you'll agree to add it in ITK :-)
>
> Implementation of this algorithm leads to some questions :
>
> + Is GrayscaleReconstructionByDilatationImageFilter a good name ? I find
> it very large...
>
> + should I test precondition (mask >= marker) or should I let user take
> care of that ?
>
> + to activate neighbors for the fully connected case, I'm using this code
> (oIt is a ShapedNeighborhoodIterator object) :
>      for (d=0; d < oIt.GetCenterNeighborhoodIndex()*2+1; ++d)
>        {
>          oIt.ActivateOffset(oIt.GetOffset(d));
> 	}
>      offset.Fill(0);
>      oIt.DeactivateOffset(offset);
> oIt.Size() method is protected, so to get the neighborhood size, I used
> oIt.GetCenterNeighborhoodIndex()*2+1, but I don't find it really clean !
> Is there a cleaner way to do that ? A oIt.ActivateAllNeighbors() method
> would be great :-)
>
> + with this algorithm, we don't need to have boundary condition. I don't
> find how to skip neighbors out of image, so I use a boundary condition
> with which I'm sure to never try to set pixel out of image, but I don't
> find this really clean. Is there a way to skip out of image neighbors
> during iteration ?
>
> + This algorithm is completed in 2 steps. First step is an iteration over
> each pixel of image; second step is an iteration over a number of pixels
> known a the end of the first step (and smaller than the number of pixel).
> I tried to use 2 progress reporter, but it doesn't work as I want... how
> can progress be managed in this case ?
>
> + this algorithm is far much efficient than geodesic dilatation iterated
> until stability, but is non threadable, and can't use face optimization.
> Should it replace GrayscaleGeodesicDilateImageFilter iterated to stability
> in already existing filters which use it (HMaximaImageFilter,
> GrayscaleGrindPeakImageFilter, DoubleThresholdImageFilter and
> GrayscaleConnectedOpeningImageFilter) ? If yes, should we add
> FullyConnected attribute to all theses filters ?
>
> + Should FullyConnected attribute be added to
> GrayscaleGeodesicDilateImageFilter ?
>
> + I surely have done lots of english mistakes, even if I have only written
> a few words :-(
> Can someone read and correct comments ?
>
> This algorithm can be easily applied to
> ReconstructionByErosionImageFilter. I'll be pleased to make it, once
> ReconstructionByDilatationImageFilter will be totally clean :-)
>
> Regards,
>
> Gaetan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://public.kitware.com/pipermail/insight-users/attachments/20050815/c621dbc0/attachment.pgp


More information about the Insight-users mailing list