<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
.MsoPapDefault
        {mso-style-type:export-only;
        mso-margin-top-alt:auto;
        mso-margin-bottom-alt:auto;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE-AT link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Vera,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thank you for the information that the recursive Gaussian cannot be streamed.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Masslawi,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I have not tried the release version , i will surely try it.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I decided to use discretehessiancalculation for calculation of hessian matrix. I thought of increasing the speed by multithreading in my own filter.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>My filter takes 1 input image and gives 1 output image. So i calculate the hessian for each voxel. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The problem: My program breaks due to the following error.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>ERROR MESSAGE:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>Windows has triggered a breakpoint in iAnalyseGUI.exe.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>This may be due to a corruption of the heap, which indicates a bug in iAnalyseGUI.exe or any of the DLLs it has loaded.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>This may also be due to the user pressing F12 while iAnalyseGUI.exe has focus.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>The output window may have more diagnostic information.</span><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>The breakage happens when the 3rd thread starts, and in DiscreteHessianGaussianImageFunction.txx line 116.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red'>I need some help in solving the heap problem.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>And finally the question comes to whether is it possible to multithread the DiscreteHessianGaussianImageFunction.txx ?????<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>As i have to work with large size data, i really need it, so if i can find the code somewhere please direct me or i would need some help to<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Multithread the DiscreteHessianGaussianImageFunction.txx.<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>//code<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>template<class TInputImageType, class TOutputImageType><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>void MYFilter<TInputImageType, TOutputImageType><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>::ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread, int threadId)<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>{<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> typename OutputImageType::Pointer output = this->GetOutput();<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> typename InputImageType::ConstPointer input = this->GetInput();<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> //set hessian function<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>m_HessianFunction = HessianFunctionType::New();<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetInputImage(m_GradientMagnitudeImage );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetSigma( 1 );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetMaximumError( 0.01 );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetMaximumKernelWidth( 32 );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetNormalizeAcrossScale( 1 );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->SetUseImageSpacing( false );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> m_HessianFunction->Initialize( );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> //initiate iamge iterators<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> InputImageRegionIteratorType inIter(m_InputImage, outputRegionForThread);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> OutputImageRegionIteratorType outIter(m_OutputImage, outputRegionForThread);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> inIter.GoToBegin();<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> while ( !inIter.IsAtEnd() )<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> InputIndexType currentindex =inIter.GetIndex();<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> InputPixelType currentpixel = inIter.Get();<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> //initialise the variables<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> HessianFunctionType::TensorType hess_matrix;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> hess_matrix = m_HessianFunction->EvaluateAtIndex( currentindex );<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> ++inIter; <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'> }//while<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>}<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thank you,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Regards,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Kana<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Dawood Masslawi [mailto:davoud_zzz@yahoo.com] <br><b>Sent:</b> 19 March 2011 14:48<br><b>To:</b> Arunachalam Kana<br><b>Cc:</b> insight-users@itk.org<br><b>Subject:</b> RE: Memory management<o:p></o:p></span></p></div><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hi Kana,<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Have you tried to build in release mode? It can make a big difference.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Good luck,<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dawood<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<o:p> </o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p></div><div><pre>><i> Hi ITK Users,<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> I need some advice on memory management and speed.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> My system details: 64 bit windowsXP system and 4Gb RAM.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> My goal: To obtain eigen vectors for 100Mb unsigned short image. Eigen<o:p></o:p></i></pre><pre>><i> vectors not for the whole image but for certain regions (approx occupies 40%<o:p></o:p></i></pre><pre>><i> of image).<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> I have to do some preprocessing too.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> The pipeline is :<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Original image -> discretegaussian -> gradientmagnitude -><o:p></o:p></i></pre><pre>><i> HessianRecursiveGaussianImageFilter->symmetric eigenvalue analysis -><o:p></o:p></i></pre><pre>><i> finally 3 vector image<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> For the above pipeline for a 100Mb image, i am running out of RAM.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> After reading itkmails, i decided to use streamfilter to stream part of the<o:p></o:p></i></pre><pre>><i> image so that the RAM usage is low. I only tested half way and the RAM was<o:p></o:p></i></pre><pre>><i> overloaded.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> I am using streamimagefilter to reduce the memory usage. After calculation<o:p></o:p></i></pre><pre>><i> of gradientmagnitude i have used 1.08Gb RAM. After this i need 1.2Gb RAM<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> For hessianimageoutput, so by using streamfilter i thought i would be<o:p></o:p></i></pre><pre>><i> reaching 2.5Gm RAM but i reach approx 6Gb(virtual memory is used).<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> 1. Am i doing something wrong with the stream filter ? (code given<o:p></o:p></i></pre><pre>><i> below)<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> 2. I tried another option: As i do not need hessian for the whole<o:p></o:p></i></pre><pre>><i> image, I used discretehessianfunction for hessian calculation but it is 30<o:p></o:p></i></pre><pre>><i> times slower that the recursivehessian. Is discretegaussianimagefunction<o:p></o:p></i></pre><pre>><i> multithreaded?<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> 3. Is there any other way to achieve speed vs RAM compromised<o:p></o:p></i></pre><pre>><i> solution?<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> 4. The 100Mb data set is test data. The real data is 10Gb for which<o:p></o:p></i></pre><pre>><i> i will use 64 bit linux system (opensuse 11.2) . will the pipeline be<o:p></o:p></i></pre><pre>><i> executed in linux too?<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Below is my code and after application of filter show the RAM usage:<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> char *infilename = "StreamTest.mhd";<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::CovariantVector<float,3> VectorPixelType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::Vector< VectorPixelType, 3 > EV_PixelType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> //Image type<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::Image<unsigned short, 3> InputImageType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::Image<float, 3> FloatImageType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef<o:p></o:p></i></pre><pre>><i> itk::Image<EV_PixelType,3><o:p></o:p></i></pre><pre>><i> EVImageType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> **** RAM usage = 674Mb****<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> //reader initialisation and reading file<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::ImageFileReader<InputImageType><o:p></o:p></i></pre><pre>><i> ReaderType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> ReaderType::Pointer reader = ReaderType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> reader->SetFileName( infilename );<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> reader->Update();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> InputImageType::Pointer inImage = reader->GetOutput();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> **** RAM usage = 783Mb****<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::DiscreteGaussianImageFilter<InputImageType, FloatImageType><o:p></o:p></i></pre><pre>><i> RGIFType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> RGIFType::Pointer gaussfilter = RGIFType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gaussfilter->SetInput(inImage);<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gaussfilter->SetVariance(4.0);<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gaussfilter->SetMaximumError(0.01);<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::CastImageFilter<FloatImageType,InputImageType> CIFType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> CIFType::Pointer castfilter = CIFType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> castfilter->SetInput(gaussfilter->GetOutput());<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::GradientMagnitudeImageFilter<InputImageType,FloatImageType><o:p></o:p></i></pre><pre>><i> GMIFType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> GMIFType::Pointer gmfilter = GMIFType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gmfilter->SetInput(castfilter->GetOutput());<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gmfilter->Update();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> FloatImageType::Pointer gmImage = gmfilter->GetOutput();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> **** RAM usage = 1290Mb****<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> gaussfilter->UnRegister();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> castfilter->UnRegister();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> **** RAM usage = 1080Mb****<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::HessianRecursiveGaussianImageFilter<FloatImageType><o:p></o:p></i></pre><pre>><i> HessianRecursiveGaussianFilterType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef HessianRecursiveGaussianFilterType::OutputImageType<o:p></o:p></i></pre><pre>><i> HessianImageType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> HessianRecursiveGaussianFilterType::Pointer hessianfilter =<o:p></o:p></i></pre><pre>><i> HessianRecursiveGaussianFilterType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> hessianfilter->SetInput(gmImage);<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> hessianfilter->SetSigma(1);<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> typedef itk::StreamingImageFilter<HessianImageType,HessianImageType><o:p></o:p></i></pre><pre>><i> StreamerType;<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> StreamerType::Pointer streamer = StreamerType::New();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> streamer->SetInput( hessianfilter->GetOutput() );<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> streamer->SetNumberOfStreamDivisions( 20 );<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> streamer->Update();<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> **** RAM usage = 3600Mb**** after few seconds it came to **** RAM usage =<o:p></o:p></i></pre><pre>><i> 6120Mb****<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Thank you in advance.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Regards,<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Kana Arunachalam Kannappan<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Research Associate<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> FH OÖ Forschungs & Entwicklungs GmbH<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Stelzhamer Strasse 23,<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> 4600 Wels,<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Austria.<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> Phone: +43 (0)7242 72811 -4420<o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> <a href="http://www.itk.org/mailman/listinfo/insight-users">kana.arunachalam at fh-wels.at</a><o:p></o:p></i></pre><pre>><i><o:p> </o:p></i></pre><pre>><i> www.fh-ooe.at; www.3dct.at</i><o:p></o:p></pre></div></td></tr></table><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:10.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p></div></body></html>