<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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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&lt;class TInputImageType,  class TOutputImageType&gt;<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&lt;TInputImageType,     TOutputImageType&gt;<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&amp; 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-&gt;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-&gt;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>&nbsp;</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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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>&nbsp;</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-&gt;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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p>&nbsp;</o:p></p></div><div><pre>&gt;<i> Hi ITK Users,<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> I need some advice on memory management and speed.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> My system details: 64 bit windowsXP system and 4Gb RAM.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> My goal: To obtain eigen vectors for 100Mb unsigned short image. Eigen<o:p></o:p></i></pre><pre>&gt;<i> vectors not for the whole image but for certain regions (approx occupies 40%<o:p></o:p></i></pre><pre>&gt;<i> of image).<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> I have to do some preprocessing too.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> The pipeline is :<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Original image -&gt; discretegaussian -&gt; gradientmagnitude -&gt;<o:p></o:p></i></pre><pre>&gt;<i> HessianRecursiveGaussianImageFilter-&gt;symmetric eigenvalue analysis -&gt;<o:p></o:p></i></pre><pre>&gt;<i> finally 3 vector image<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> For the above pipeline for a 100Mb image, i am running out of RAM.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> After reading itkmails, i decided to use streamfilter to stream part of the<o:p></o:p></i></pre><pre>&gt;<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>&gt;<i> overloaded.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> I am using streamimagefilter to reduce the memory usage. After calculation<o:p></o:p></i></pre><pre>&gt;<i> of gradientmagnitude i have used 1.08Gb RAM. After this i need 1.2Gb RAM<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> For hessianimageoutput, so by using streamfilter i thought i would be<o:p></o:p></i></pre><pre>&gt;<i> reaching 2.5Gm RAM but i reach approx 6Gb(virtual memory is used).<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> 1.       Am i doing something wrong with the stream filter ? (code given<o:p></o:p></i></pre><pre>&gt;<i> below)<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> 2.       I tried another option: As i do not need hessian for the whole<o:p></o:p></i></pre><pre>&gt;<i> image, I used discretehessianfunction for hessian calculation but it is 30<o:p></o:p></i></pre><pre>&gt;<i> times slower that the recursivehessian. Is discretegaussianimagefunction<o:p></o:p></i></pre><pre>&gt;<i> multithreaded?<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> 3.       Is there any other way to achieve speed vs RAM compromised<o:p></o:p></i></pre><pre>&gt;<i> solution?<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> 4.       The 100Mb data set is test data. The real data is 10Gb for which<o:p></o:p></i></pre><pre>&gt;<i> i will use 64 bit linux system (opensuse 11.2) . will the pipeline be<o:p></o:p></i></pre><pre>&gt;<i> executed in linux too?<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Below is my code and after application of filter show the RAM usage:<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   char *infilename = &quot;StreamTest.mhd&quot;;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::CovariantVector&lt;float,3&gt; VectorPixelType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::Vector&lt; VectorPixelType, 3 &gt; EV_PixelType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   //Image type<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::Image&lt;unsigned short, 3&gt;              InputImageType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::Image&lt;float, 3&gt;                       FloatImageType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef<o:p></o:p></i></pre><pre>&gt;<i> itk::Image&lt;EV_PixelType,3&gt;<o:p></o:p></i></pre><pre>&gt;<i> EVImageType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> **** RAM usage = 674Mb****<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   //reader initialisation and reading file<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::ImageFileReader&lt;InputImageType&gt;<o:p></o:p></i></pre><pre>&gt;<i> ReaderType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   ReaderType::Pointer reader = ReaderType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   reader-&gt;SetFileName( infilename );<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   reader-&gt;Update();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   InputImageType::Pointer inImage = reader-&gt;GetOutput();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> **** RAM usage = 783Mb****<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::DiscreteGaussianImageFilter&lt;InputImageType, FloatImageType&gt;<o:p></o:p></i></pre><pre>&gt;<i> RGIFType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   RGIFType::Pointer gaussfilter = RGIFType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gaussfilter-&gt;SetInput(inImage);<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gaussfilter-&gt;SetVariance(4.0);<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gaussfilter-&gt;SetMaximumError(0.01);<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::CastImageFilter&lt;FloatImageType,InputImageType&gt; CIFType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   CIFType::Pointer castfilter = CIFType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   castfilter-&gt;SetInput(gaussfilter-&gt;GetOutput());<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::GradientMagnitudeImageFilter&lt;InputImageType,FloatImageType&gt;<o:p></o:p></i></pre><pre>&gt;<i> GMIFType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   GMIFType::Pointer gmfilter = GMIFType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gmfilter-&gt;SetInput(castfilter-&gt;GetOutput());<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gmfilter-&gt;Update();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   FloatImageType::Pointer gmImage = gmfilter-&gt;GetOutput();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> **** RAM usage = 1290Mb****<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   gaussfilter-&gt;UnRegister();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   castfilter-&gt;UnRegister();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   **** RAM usage = 1080Mb****<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::HessianRecursiveGaussianImageFilter&lt;FloatImageType&gt;<o:p></o:p></i></pre><pre>&gt;<i> HessianRecursiveGaussianFilterType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef HessianRecursiveGaussianFilterType::OutputImageType<o:p></o:p></i></pre><pre>&gt;<i> HessianImageType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   HessianRecursiveGaussianFilterType::Pointer hessianfilter =<o:p></o:p></i></pre><pre>&gt;<i> HessianRecursiveGaussianFilterType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   hessianfilter-&gt;SetInput(gmImage);<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   hessianfilter-&gt;SetSigma(1);<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   typedef itk::StreamingImageFilter&lt;HessianImageType,HessianImageType&gt;<o:p></o:p></i></pre><pre>&gt;<i> StreamerType;<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   StreamerType::Pointer streamer = StreamerType::New();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   streamer-&gt;SetInput( hessianfilter-&gt;GetOutput() );<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   streamer-&gt;SetNumberOfStreamDivisions( 20 );<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i>   streamer-&gt;Update();<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> **** RAM usage = 3600Mb**** after few seconds it came to **** RAM usage =<o:p></o:p></i></pre><pre>&gt;<i> 6120Mb****<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Thank you in advance.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Regards,<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Kana Arunachalam Kannappan<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Research Associate<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> FH OÖ Forschungs &amp; Entwicklungs GmbH<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Stelzhamer Strasse 23,<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> 4600 Wels,<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Austria.<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<i> Phone: +43 (0)7242 72811 -4420<o:p></o:p></i></pre><pre>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<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>&gt;<i><o:p>&nbsp;</o:p></i></pre><pre>&gt;<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>&nbsp;</o:p></span></p></div></body></html>