[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