<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><base href="x-msg://1415/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello,<div><br></div><div>I am re-including the users lists so that others may benefit.</div><div><br></div><div>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.</div><div><br></div><div><a href="https://github.com/blowekamp/itkLocalDiscreteHessian/tree/master/include">https://github.com/blowekamp/itkLocalDiscreteHessian/tree/master/include</a></div><div><br></div><div>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.</div><div><br></div><div>Are you familiar with the differences between the DiscreteGaussian and the RecursiveGaussianFilters?</div><div><br></div><div>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. </div><div><br></div><div>[1] <a href="http://www.itk.org/Doxygen/html/classitk_1_1DiscreteGaussianImageFilter.html">http://www.itk.org/Doxygen/html/classitk_1_1DiscreteGaussianImageFilter.html</a></div><div>[2] <a href="http://www.itk.org/Doxygen/html/classitk_1_1SmoothingRecursiveGaussianImageFilter.html">http://www.itk.org/Doxygen/html/classitk_1_1SmoothingRecursiveGaussianImageFilter.html</a></div><div><br><div><div>On Dec 16, 2013, at 1:58 PM, Ben Alpert <<a href="mailto:balpert@numira.com">balpert@numira.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div lang="EN-US" link="blue" vlink="purple" style="font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="WordSection1" style="page: WordSection1; "><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">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?<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Thanks again,<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Ben<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span></div><div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in; "><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "><span class="Apple-converted-space"> </span>Bradley Lowekamp [mailto:brad@<a href="http://lowekamp.net" style="color: purple; text-decoration: underline; ">lowekamp.net</a>]<span class="Apple-converted-space"> </span><br><b>Sent:</b><span class="Apple-converted-space"> </span>Wednesday, December 11, 2013 11:49 AM<br><b>To:</b><span class="Apple-converted-space"> </span>Ben Alpert<br><b>Subject:</b><span class="Apple-converted-space"> </span>Re: [Insight-users] Vesselness Memory Issue<o:p></o:p></span></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">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:<o:p></o:p></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p> </o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><a href="http://stackoverflow.com/questions/4651234/linux-process-memory-limit" style="color: purple; text-decoration: underline; ">http://stackoverflow.com/questions/4651234/linux-process-memory-limit</a><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p> </o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Brad<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p> </o:p></div><div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">On Dec 11, 2013, at 1:45 PM, Ben Alpert <<a href="mailto:balpert@numira.com" style="color: purple; text-decoration: underline; ">balpert@numira.com</a>> wrote:<o:p></o:p></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><br><br><o:p></o:p></div><div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">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?</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Thanks,</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Ben</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><o:p></o:p></div></div><div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in; "><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "> </span></span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">Bradley Lowekamp [mailto:brad@<a href="http://lowekamp.net" style="color: purple; text-decoration: underline; "><span style="color: purple; ">lowekamp.net</span></a>]<span class="apple-converted-space"> </span><br><b>Sent:</b><span class="apple-converted-space"> </span>Monday, December 09, 2013 12:41 PM<br><b>To:</b><span class="apple-converted-space"> </span>Ben Alpert<br><b>Cc:</b><span class="apple-converted-space"> </span><a href="mailto:insight-users@itk.org" style="color: purple; text-decoration: underline; "><span style="color: purple; ">insight-users@itk.org</span></a><br><b>Subject:</b><span class="apple-converted-space"> </span>Re: [Insight-users] Vesselness Memory Issue</span><o:p></o:p></div></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Hello,<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">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.<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">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.<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><a href="http://review.source.kitware.com/#/c/890/" style="color: purple; text-decoration: underline; "><span style="color: purple; ">http://review.source.kitware.com/#/c/890/</span></a><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">You have a couple other options:<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">1) Find smaller regions of interest. That is just don't run on the whole image at once.<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">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.<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Those on my quick suggestions.<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Good luck,<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Brad<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div><div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">On Dec 9, 2013, at 2:20 PM, Ben Alpert <<a href="mailto:balpert@numira.com" style="color: purple; text-decoration: underline; "><span style="color: purple; ">balpert@numira.com</span></a>> wrote:<o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><br><br><br><o:p></o:p></div></div><div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Hi,</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">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.</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">I understand that the HessianRecursiveGaussianImageFilter is not streamable and I have seen that a discrete version is available (<a href="https://github.com/blowekamp/itkLocalDiscreteHessian" style="color: purple; text-decoration: underline; "><span style="color: purple; ">https://github.com/blowekamp/itkLocalDiscreteHessian</span></a>), but I am not sure how to integrate it with the MultiScaleHessian framework. Did anyone have any experience with this?</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Also, other than for visualization/UI purposes, is there any advantage in using tubetk, as it is essentially built on itk?</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Any help is appreciated.</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Thanks,</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Ben</span><o:p></o:p></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 13.5pt; font-family: Helvetica, sans-serif; ">_____________________________________<br>Powered by<span class="apple-converted-space"> </span><a href="http://www.kitware.com" style="color: purple; text-decoration: underline; "><span style="color: purple; ">www.kitware.com</span></a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html" style="color: purple; text-decoration: underline; "><span style="color: purple; ">http://www.kitware.com/opensource/opensource.html</span></a><br><br>Kitware offers ITK Training Courses, for more information visit:<br><a href="http://www.kitware.com/products/protraining.php" style="color: purple; text-decoration: underline; "><span style="color: purple; ">http://www.kitware.com/products/protraining.php</span></a><br><br>Please keep messages on-topic and check the ITK FAQ at:<br><a href="http://www.itk.org/Wiki/ITK_FAQ" style="color: purple; text-decoration: underline; "><span style="color: purple; ">http://www.itk.org/Wiki/ITK_FAQ</span></a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.itk.org/mailman/listinfo/insight-users" style="color: purple; text-decoration: underline; "><span style="color: purple; ">http://www.itk.org/mailman/listinfo/insight-users</span></a></span><o:p></o:p></div></div></div></div><div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "> <o:p></o:p></div></div></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p> </o:p></div></div></div></div></blockquote></div><br></div></body></html>