[Insight-users] Tustison's Graph cut ITK implementation

Nick Tustison ntustison at gmail.com
Wed Feb 6 09:10:47 EST 2013


yes.


On Feb 6, 2013, at 3:41 AM, Elena Ranguelova <elboyran at gmail.com> wrote:

> Hi Nick,
> 
> Thanks for your answer.
> 
> I have read some papers and am aware of the broad strokes of the alpha expansion and the Boykov min-cut algorithms.
> 
> I just wanted to confirm that in your implementation,if one sets Nlabels =2 (i.e. binary segmentation problem),your code invokes then only (once) the Boykov min cut filter, i.e. it's equivalent of using simply the latter.
> 
> That's how it looks to me, when I looked inside your code (by eye as I wtill didn't find a way to "debug" the template classes). So, I was simply wondering if my conclusion is correct?
> 
> Regards,
> Elena
> 
> On 5 February 2013 20:09, Nick Tustison <ntustison at gmail.com> wrote:
> Hi Elena,
> 
> Please keep this on the email list in case others have similar
> questions.
> 
> Unfortunately, I don't have the time to walk you through the code
> identifying in detail where certain events of Boykov's graph cut
> algorithm occur.  However, in broad strokes, the alpha expansion
> filter takes an input image to be segmented into n labels.  Within
> the alpha expansion filter, for each binary segmentation problem,
> the image is converted to a graph structure (itkGraph) using the 
> BoykovImageToGraphFunctor where the traits of the graph are 
> defined by the class BoykovGraphTraits.  The min cut for that graph
> is found using the BoykovMinCutFilter.  We then iterate through the
> nodes of the output graph and label the voxels of the image based 
> on the labels of the nodes (note that each graph node has the index
> to it's corresponding voxel as defined by the graph traits).
> 
> Nick
> 
> 
> On Feb 5, 2013, at 8:40 AM, Elena Ranguelova <elboyran at gmail.com> wrote:
> 
>> Hello Nick,
>> 
>> Thanks for the quick answer. 
>> 
>> I have looked at the code, but I find it difficult to trace (debug) C++ template classes, have no experience in that. So, for example, I still can't locate what happens  
>> when filter->Update() is called, so it's hard to trace the steps of the algorithm.
>> 
>> I was aware that the Boykov graph min cut is a step of the alpha expansion, but does it mean that if we specify Nlabels = 2 (i.e. we want binary segmentation) your program using alpha expansion would be equivalent to using directly and only the Boykov graph cut filter (i.e. 1 step only)?
>> 
>> I see that the alpha expansion filter is descendant of MRFImageFilter, while the BoykovMinCutFliter descends from InPlaceGraphFilter, hence there usage is not so equivalent in terms of input and output.
>> 
>> Regards,
>> Elena
>> 
>> On 5 February 2013 02:19, Nick Tustison <ntustison at gmail.com> wrote:
>> Hi Elena,
>> 
>> I haven't looked at that code for a long time.  As soon as we found out
>> it was patented, we kind of lost interest in its further development and
>> went a different direction for our segmentation needs.  I don't have 
>> any of those example files any more and I don't know why they aren't
>> in the source code (or if they ever were in the first place).  
>> 
>> Although the test code itkBoykovGraphCutFilterTest.cxx, does 
>> interface with the alpha expansion filter, the latter requires the use of
>> the Boykov graph min cut filter to work for each binary segmentation
>> step.  You have the basic idea regarding the main steps.  I would 
>> encourage you to look at the code for further details.  
>> 
>> Nick
>> 
>> 
>> On Feb 4, 2013, at 8:32 AM, Elena Ranguelova <elboyran at gmail.com> wrote:
>> 
>>> Hello,
>>> 
>>> I'm new to ITK and graph cuts, but currently very interested in both. Hence, I came across to Nick Tustison's graph cuts extension of ITK and I found he is an active member of this mailing list.
>>> 
>>> http://www.insight-journal.org/browse/publication/306
>>> 
>>> The paper presented  claims that there are 2 codes  for testing:
>>> itkGraphTest.cxx
>>> itkBoykovAlphaExpansionFilterTest.cxx
>>> and 1 example:
>>> BoykovGraphCutFilter,
>>> 
>>> but in reality the example doesn't exist, nor the AlphaExpansion test under that name. There is a testing source called
>>> itkBoykovGraphCutFilterTest.cxx, but in fact it illustrates the Alpha Expansion filter, not the BoykovGraphCut filter.
>>> 
>>> I would really like to have an example of how to use the provided code for performing only Boykov Minimum graph cut filtering on an input image/volume + likelihood images, as shown on figure 7 of the paper. Also how the main steps are performed?:
>>> 1. input image to  graph conversion
>>> 2. the setup of the likelihood images as filter input
>>> 3. the actual minimal cut
>>> 4. obtaining image (segmentation) from the cut graph
>>> 
>>> Does anyone have such a code/example? Would the author (Tustison) be willing to provide such an example usage? (This remark is already mentioned in the first review by David Doria).
>>> 
>>> Kind regards,
>>> Elena
>>> 
>>> _____________________________________
>>> Powered by www.kitware.com
>>> 
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>> 
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://www.kitware.com/products/protraining.php
>>> 
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>> 
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.itk.org/mailman/listinfo/insight-users
>> 
>> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130206/49b3b47b/attachment.htm>


More information about the Insight-users mailing list