[ITK Community] [Insight-users] Vesselness Memory Issue

Bradley Lowekamp brad at lowekamp.net
Tue Dec 17 09:24:45 EST 2013


Hello,

I am re-including the users lists so that others may benefit.

The changes made in to the multi scale hessian filter in the review were made to be compatible with either the DiscreteHessianRecursiveGaussian or the HessianDiscreteGaussian filter below.

https://github.com/blowekamp/itkLocalDiscreteHessian/tree/master/include

Both the patch to the multi-scale filter, and the discrete hessians filters were proto-type level code, and have not been maintained. So it will require some work to update and verify the results.

Are you familiar with the differences between the DiscreteGaussian and the RecursiveGaussianFilters?

If you can fit a couple of the image with a pixel of double in memory I'd use my DiscreteHessianRecursiveGaussian, otherwise you must use the locally supported HessianDiscreteGaussian. 

[1] http://www.itk.org/Doxygen/html/classitk_1_1DiscreteGaussianImageFilter.html
[2] http://www.itk.org/Doxygen/html/classitk_1_1SmoothingRecursiveGaussianImageFilter.html

On Dec 16, 2013, at 1:58 PM, Ben Alpert <balpert at numira.com> wrote:

> Thanks. Regarding the streamable MultiScaleHessian, if I understand correctly it will be streamable only if the input Hessian filter is streamable. In that case, what are my options if HessianRecursiveGaussianImageFilter isn’t streamable? Do you believe your itkLocalDiscreteHessian might work here, and if so, what would the performance be like for large volumes?
>  
> Thanks again,
> Ben
>  
> From: Bradley Lowekamp [mailto:brad at lowekamp.net] 
> Sent: Wednesday, December 11, 2013 11:49 AM
> To: Ben Alpert
> Subject: Re: [Insight-users] Vesselness Memory Issue
>  
> If you running some variant of linux you should be able to limit the memory used for a process. This may give you better behavior. Here may be a place to start:
>  
> http://stackoverflow.com/questions/4651234/linux-process-memory-limit
>  
> Brad
>  
> On Dec 11, 2013, at 1:45 PM, Ben Alpert <balpert at numira.com> wrote:
> 
> 
> Thanks for your help. I think breaking up the image into smaller blocks and running the filter on those is the way to go. The main problem is that I need to be able catch an exception when memory fails to allocate in order to then break up the image. I can’t take a chance of having my system freeze if the system happens to be low on memory. Do you happen to know why an exception isn’t thrown, and how can I fix this?
>  
> Thanks,
> Ben
>  
> From: Bradley Lowekamp [mailto:brad at lowekamp.net] 
> Sent: Monday, December 09, 2013 12:41 PM
> To: Ben Alpert
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] Vesselness Memory Issue
>  
> Hello,
>  
> You system lockup is likely due to memory exhaustion, and excessive thrashing. System lockup it typical of when running you of memory for an task.
>  
> I had a version of the MultiScaleHessian that was streamable. I haven't used it for a while not, and don't know what the state of it is after ITKv4.
> http://review.source.kitware.com/#/c/890/
>  
> You have a couple other options:
>  
> 1) Find smaller regions of interest. That is just don't run on the whole image at once.
> 2) For each scale stream your metric to disk. This is the way I recently did it. I was able to batch each scale out to a cluster node. And them perform on analysis on the scalar images in SimpleITK.
>  
> Those on my quick suggestions.
>  
> Good luck,
> Brad
>  
>  
> On Dec 9, 2013, at 2:20 PM, Ben Alpert <balpert at numira.com> wrote:
> 
> 
> 
> Hi,
>  
> I have seen a few threads on this topic but I am still not sure what the best approach is. I am trying to enhance vessels using the MultiScaleHessianBasedMeasureImageFilter and Hessian3DToVesselnessMeasureImageFilter framework. When running the filters on a large enough volume, my system locks up, so there seems to be some exception handling issue since I would at least expect an error message in this case.
>  
> I understand that the HessianRecursiveGaussianImageFilter is not streamable and I have seen that a discrete version is available (https://github.com/blowekamp/itkLocalDiscreteHessian), but I am not sure how to integrate it with the MultiScaleHessian framework. Did anyone have any experience with this?
>  
> Also, other than for visualization/UI purposes, is there any advantage in using tubetk, as it is essentially built on itk?
>  
> Any help is appreciated.
> Thanks,
> Ben
> _____________________________________
> 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://public.kitware.com/pipermail/community/attachments/20131217/1a1561d7/attachment.html>
-------------- next part --------------
_____________________________________
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


More information about the Community mailing list