[Insight-users] fast binary dilate image filter

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Thu Sep 15 10:37:46 EDT 2005


On Thu, 15 Sep 2005 16:11:33 +0200, Gaetan Lehmann  
<gaetan.lehmann at jouy.inra.fr> wrote:

> On Thu, 15 Sep 2005 14:37:03 +0200, Miller, James V (Research)  
> <millerjv at crd.ge.com> wrote:
>
>> Gaetan,
>>
>> I saw the two implementations had different GenerateInputRequestedRegion
>> methods when I was reconciling them.  However, I do not see why they  
>> need
>> different versions.
>>
>> What the current code does is pad by the larger of the m_Radius (1  
>> pixel) and
>> the size of the kernel.  The m_Radius pad is needed for the determining  
>> the object
>> boundary points and the kernel pad is needed for the actual  
>> dilation/erosion. I
>> think this should be the appropriate pad for both dilation/erosion.  Do  
>> you
>> think otherwise?
>
> Hum...
> I missed that the Dilate version also pad by the kernel radius, and your  
> right, the input resquested region must be increase for the dilate  
> version too. The problem should be somewhere else. Also, it's strange  
> because I already have that problem when modifying dilate version to  
> build erode version and solve it by rewriting the  
> GenerateInputRequestedRegion() method.

I think I have found the problem:
in itkBinaryErodeImageFilter.txx, line 76,

   tmpRequestedRegion.PadByRadius( radius );

should be;

   tmpRequestedRegion.PadByRadius( this->GetKernel().GetRadius() );

I'm don't know if the region should be only padded by kernel radius, or if  
it should be padded by kernel radius + neighborhood radius.

And dilate version should also need the same change.

>
>>
>> So I think the problem is somewherelse.  None of our current tests  
>> picked up this
>> issue.  Can you send me the image that you are performing the binary  
>> closing on?
>> I can then put in a regression test using your "right.png" as the  
>> baseline.  This will
>> help me track down the problem.
>
> It's the test of the BinaryMorphologicalClosingImageFilter
> You can get it from
>
> http://voxel.jouy.inra.fr/darcs/itk-mima2/Insight/Testing/Code/BasicFilters/itkBinaryMorphologicalClosingImageFilterTest.cxx
> http://voxel.jouy.inra.fr/darcs/itk-mima2/Insight/Testing/Data/Baseline/BasicFilters/BinaryMorphologicalClosingImageFilterTest.png
>
> and the filter is available from
>
> http://voxel.jouy.inra.fr/darcs/itk-mima2/Insight/Code/BasicFilters/itkBinaryMorphologicalClosingImageFilter.h
> http://voxel.jouy.inra.fr/darcs/itk-mima2/Insight/Code/BasicFilters/itkBinaryMorphologicalClosingImageFilter.txx
>
>
>>
>> It could be a boundary condition problem, where the wrong boundary  
>> value is used for
>> the erosion.
>>
>> Jim
>>
>>
>> -----Original Message-----
>> From: Gaetan Lehmann [mailto:gaetan.lehmann at jouy.inra.fr]
>> Sent: Thursday, September 15, 2005 7:50 AM
>> To: Miller, James V (Research)
>> Cc: insight-users at itk.org
>> Subject: Re: [Insight-users] fast binary dilate image filter
>>
>>
>>
>> Hi Jim,
>>
>> I see you have replaced binary dilate/erode filters with the fast
>> incremental version. Great !
>> However, the replacement of my classes by yours break my test. It seems
>> that the border problems are back.
>> I think it's because the GenerateInputRequestedRegion method should not  
>> be
>> shared between the 2 classes (erode filter need the output region padded
>> by the kernel radius), but I haven't investigated it more.
>> I attach the right and the wrong result of a binary closing, just to  
>> show
>> what I call border problems. We shouldn't see the deformations on the
>> bottom and on the right.
>> To avoid border problems during the closing, I add a border to the image
>> with a ConstantPadImageFilter, do the closing, and remove the border  
>> with
>> a CropImageFilter. CropImageFilter requires a smaller input image than  
>> the
>> output image from the BinaryErodeImageFilter , which make the border
>> problems appear where they shouldn't.
>>
>> Regards,
>>
>> Gaetan
>>
>>
>> On Tue, 06 Sep 2005 16:32:07 +0200, Miller, James V (Research)
>> <millerjv at crd.ge.com> wrote:
>>
>>> Ahh, this sounds like my bad.  I thought I had put in the most recent
>>> version of the
>>> filter.  I guess I missed the threaded version.
>>>
>>> I'll try to take a look at the threaded portions.  The merge will be a
>>> bit tricky since we made
>>> changes to support cross platform builds (mostly the use of typename).
>>> But at first glance,
>>> it looks as though the section of the algorithm to prepare the output
>>> has been moved into
>>> the BeforeThreadedGenerate method.  In your message from last September
>>> you mentioned something
>>> about the multithreaded version may run a bit slower than the previous
>>> version when on a single
>>> processor machine.  Something about some code redundancy.  Can you  
>>> point
>>> to me that section
>>> of the code?
>>>
>>> As Gaetan noted, he submitted an erosion version of the algorithm.  I  
>>> am
>>> poised to add that
>>> filter to ITK as well.  My current thinking is to have
>>> FastIncrementBinaryDilate/Erode
>>> become BinaryDilate/Erode and make the current
>>> FastIncrementalBinaryDilate an empty subclass
>>> of BinaryDilate to maintain backward compatibility.
>>>
>>> I did not look to see how much of the code could be shared between the
>>> FastIncrementalDilate and
>>> FastIncrementalErode.  I suspected a good bit of the code could be
>>> shared but I haven't the time
>>> to investigate.
>>>
>>> I may do the following (no timeline on when):
>>>
>>> 1. Supplant the current BinaryDilate/Erode with the Incremental  
>>> versions.
>>> 2. Add the threading changes to the dilate code.
>>> 3. Propagate the threading changes to the erode code.
>>> 4. Refactor to take shared code from the dilate/erode to some  
>>> superclass.
>>>
>>> Thanks.
>>> Jim
>>>
>>>
>>> -----Original Message-----
>>> From: insight-users-bounces+millerjv=crd.ge.com at itk.org
>>> [mailto:insight-users-bounces+millerjv=crd.ge.com at itk.org]On Behalf Of
>>> SCHMID, Jerome
>>> Sent: Friday, September 02, 2005 12:28 AM
>>> To: insight-users at itk.org
>>> Subject: [Insight-users] fast binary dilate image filter
>>>
>>>
>>> Hi,
>>>
>>> After a long time I am back to the itk list as I find a job elsewhere.
>>> Anyway this is not the topic of the mail...
>>>
>>> It concerns a filter I wrote on fast binary dilation for itk. At that
>>> time ( about 1 year ago... ) I was speaking with James Miller about
>>> this. Before I quit my previous job the filter hadn't been fully
>>> reviewed or validated, I thought that it was lost :-)
>>>
>>> Anyway I found a thread about this filter in last April (yeah sorry to
>>> talk about old things),
>>>
>>> http://public.kitware.com/pipermail/insight-users/2005-April/012583.html
>>>
>>> and I discover with pleasure that the filter has been integrated by
>>> James. However James wonder if I made some modifications to it since.
>>> The answer is no as I haven't access now to my previous work.
>>>
>>> However I wonder if James tried to test the threadable aspect of the
>>> filter that I implemented at that time. The last version of the filter  
>>> I
>>> submited should be in the old following thread:
>>>
>>> http://public.kitware.com/pipermail/insight-users/2004-September/010538.html
>>>
>>> Our concern was the safety of some operations. At that time I tested it
>>> and it seemed to work. The current implementation
>>> itk::FastIncrementalBinaryDilateImageFilter hasn't the threadable  
>>> aspect
>>> available.
>>>
>>> I hope I can find the time one day to have a deeper look on it.
>>>
>>> Best Regards,
>>>
>>> Jerome Schmid
>>>
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>
>
>



-- 
Gaetan Lehmann <gaetan.lehmann at jouy.inra.fr>
Tel: +33 1 34 65 29 66
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
Web: http://voxel.jouy.inra.fr


More information about the Insight-users mailing list