[ITK-users] optimizing iterations over relative small connected	components (flood-fill)
    Grothausmann, Roman Dr. 
    grothausmann.roman at mh-hannover.de
       
    Sat Apr 25 13:28:30 EDT 2015
    
    
  
Dear mailing list members,
I'm looking for a highly efficient method to "pick" single watershed segmented 
regions in my extension to ITKSnap 
(https://github.com/pyushkevich/itksnap/pull/1). If my understanding is correct, 
such a region is guaranteed to be a single connected component (CC). The dynamic 
level adjustment in the extension can lead to very small CCs compared to the 
overall image which is processed. Currently I've a project where the ratio of 
the amount of voxels in a CC relative to the total voxels in the image is about 
1/1000000 or even smaller.
The current implementation 
(https://github.com/romangrothausmann/itksnap/blob/master%2BgdWS/GUI/Model/JoinModel.cxx#L123) 
uses an ImageRegionIterator 
(https://github.com/romangrothausmann/itksnap/blob/master%2BgdWS/Logic/ImageWrapper/ImageWrapper.h#L119) 
which is considerably slow as it iterates over the whole image not making use of 
the click position as a seed. I suspect this could be optimized with either a 
RandomAccessIterator initialized at the seed and then running recursively on the 
neighbouring voxels. However, I also stumbled over the 
FloodFilledImageFunctionConditionalIterator and the 
ShapedFloodFilledFunctionConditionalConstIterator in conjunction with a 
BinaryThresholdImageFunction (as in this example: 
http://itk.org/Wiki/ITK/Examples/WishList/Iterators/FloodFilledImageFunctionConditionalIterator)
Which approach is better?
Are there even better ones?
Is there a way to construct reasonable conditions to run these iterators in a 
filter in ThreadedGenerateData, i.e. a way to estimate in advance the small 
region of the CC to be processed partially by multiple threads?
Thanks for any help or hints.
Roman
PS: In the example it says: "The iterator only visits 4-connected neighbors. The 
code in FloodFilledFunctionConditionalConstIterator.txx should be replaced."
Would that be what was done in the contribution contributing 
ShapedFloodFilledFunctionConditionalConstIterator?
-- 
Dr. Roman Grothausmann
Tomographie und Digitale Bildverarbeitung
Tomography and Digital Image Analysis
Institut für Funktionelle und Angewandte Anatomie, OE 4120
Medizinische Hochschule Hannover
Carl-Neuberg-Str. 1
D-30625 Hannover
Tel. +49 511 532-2900
    
    
More information about the Insight-users
mailing list