[Insight-users] Granulometry filter in ITK?

lynx.abraxas at freenet.de lynx.abraxas at freenet.de
Tue Nov 17 02:23:00 EST 2009


On 16/11/09 15:58:31, Gaëtan Lehmann wrote:
>
> Le 16 nov. 09 ? 15:46, Gaëtan Lehmann a écrit :
>
>>
>> Hi,
>>
>> There is no filter ready to use for this task in ITK at this time.
>> However, I believe that most of the tools needed are there.
>>
>> If I get it right, you want to do the local texture analysis used page
>> 322 of Soille's book to segment the two kind of forest. As I
>> understand it, with a statistics which is the size of the kernel for
>> the maximum value of the derivative, it can be computed that way:
>>

Dear Gaëtan,


Sadly  I  had to hand in the book, so I'm not sure on what page it was. But it
was a filter that created two segments  where  each  segment  sourrounded  the
areas  with  similar  granulometry.  I would like to know in 3D where areas of
higher and lower granulomtetry are. So bascily specifing a neighbourhood and a
threshold  kernel-size  to  a  granulometry-filter that then gives me a binary
image.
Or if even better a granulometry-filter that yields  a  greyleve  image  where
each  greyleve  corresponds  to  the lokal granulometry in the input image. As
input  it  would  need  a  (binary?)  input  image  and  a  neighbourhood.  By
thresholding that output I think I would get the filter result describe above.


> Sorry, obviously, this is not the right check. The difference between
> M2[i] and M[I] must be compared to the highest derivative seen before - I
> should re-read my mails before sending them.
>
> Input: I (the input image), KL (the kernel list), N (the neighbourhood
> where the statistics is computed)
> D = domain(I)
> M = localMean(I)
> O = newImage(D, 0)
> H = newImage(D, 0)
> for k in KL
>   I = opening(I, k)
>   M2 = localMean(I, N)
>   for i in D
>     d = M[i] - M2[i]
>     if d > H[i]:
>       O[i] = size(k)
>       H[i] = d
>   M = M2
> return O

Thanks a lot for the idea how to realize this as a filter.
I've to think about this a bit more before I understand it.

D = domain(I)    <=> image size in x,  y,  z  or  total  #  of  voxel  for  an
iterator???
M = localMean(I) <=> globalMean(I) ?

Is  there  filter  in  ITK  for  localMean  of  an  image  within  a specified
neighbourhood?


It is said granulometry is fullfilling the sieving axioms. But  if  I  get  it
reight  the  result  of granulometry does not correspond to real live sieving,
does it? I would think real live sieving of eg. sand would be the granulometry
of the convex-hull of each particle. Am I seeing that right?

eg. a particle like this:

   X
   X
XXXXXXXXXX


Would  vanish  with  an opening of kernel size X but it would need a real live
mesh size of:

X
X
X

To fall through a sieve.


Thanks for all Your help.
Lynx




More information about the Insight-users mailing list