[Insight-users] region growing from local maxima

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Wed Oct 5 10:11:18 EDT 2005


On Wed, 05 Oct 2005 15:25:21 +0200, Miller, James V (Research)  
<millerjv at crd.ge.com> wrote:

> Gaetan,
>
> Isn't the method you are suggesting using the ReconstructionByDilation
> already implemented in the itkHConvexImageFilter?

You're right, RMax is a special case of HConvex where Height=1. I've  
missed that :-)
It makes the code lots more simple ;-)

typedef itk::HConvexImageFilter<itype, itype> HConvexType;
HConvexType::Pointer hconvex = HConvexType::New();
hconvex->SetInput( previousFilter->GetOutput() );
hconvex->SetHeight( 1 );


Thanks,

Gaetan


>
> 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
> Gaetan Lehmann
> Sent: Wednesday, October 05, 2005 6:57 AM
> To: Ara.T.Howard; Insight-users at itk.org
> Subject: Re: [Insight-users] region growing from local maxima
>
>
> On Wed, 05 Oct 2005 03:34:05 +0200, Ara.T.Howard <Ara.T.Howard at noaa.gov>
> wrote:
>
>>
>> i'm working with night-time lights satelite imagery
>>
>>    http://fortytwo.merseine.nu/india_shrunk/india_1995_stable_lights.small.png
>>
>> although it's hard to tell from that stretch - all of the features have
>> considerable 'over-glow' caused by light scattering in the atmousphere.
>> i've
>> been working with several approaches to 'shrinking' the features that
>> boils
>> down to finding local maxima and growing them 'downwards' from there.
>> ala
>>
>>    http://fortytwo.merseine.nu/india_shrunk/india_1995_stable_lights.small.em.15.png
>>
>> this is working o.k. but the toolkit i've been using has a
>> flaw/bug/feature
>> that has become a glass ceiling for me.  i'm looking at moving to itk.
>> skimming the docs it would seem there is not builtin support for finding
>> extrema - but maybe i've missed it, the docs are large! ;-)
>>
>> has anyone out there used itk to
>>
>>    - local extrema, maxes in particular
>
> local maxima is quite easy to compute for integer types. According to
> Soille's book, regional maxima is:
>
>   RMax(f) = f - ReconstructionByDilation(f, f-1)
>
> This should be something like that with itk (itype is your image type):
>
> typedef itk::ReconstructionByDilationImageFilter< itype, itype >
> ReconsType;
> typedef itk::ShiftScaleImageFilter< itype, itype > ShiftType;
> typedef itk::SubtractImageFilter< itype, itype, itype > SubtractType;
>
> ShiftType::Pointer shift = ShiftType::New();
> shift->SetInput( previousFilter->GetOutput() );
> shift->SetShift( -1 );
>
> ReconsType::Pointer recons = ReconsType::New();
> recons->SetMaskImage( previousFilter->GetOutput() );
> recons->SetMarkerImage( shift->GetOutput() );
> // you can choose connectivity. Default is 4-connected (in 2D)
> // fully connected = 8-connected in 2D
> recons->SetFullyConnected( true );
>
> SubtractType::Pointer subtract = SubtractType::New();
> subtract->SetInput1( previousFilter->GetOutput() );
> subtract->SetInput2( recons->GetOutput() );
>
> // substract->GetOutput() is a binary image where background have value 0
> and local maxima have value = 1
> ...
>
> I haven't created a filter yet because this definition will not work for
> real types.
> Another method should be to use a max-tree as the one used to compute
> attribute opening... Any volunteers to create code to generate
> max(min)-tree ? ;-)
>
>>
>>    - grow regions from these seeds up to some tolerance (in my case i'm
>> using
>>      percent difference within the total region as a limiter)
>>
>> i'm also looking at the watershed segmentation method and it's depth
>> feature.
>>
>> and hints or pointers to docs appreciated.
>>
>> kind regards.
>>
>> -a
>
>
>



-- 
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr


More information about the Insight-users mailing list