[Insight-users] Re: tkSymmetricEigenAnalysisImageFilter Problem

Alberto Santamaría pang2 at yahoo.com
Sat Sep 9 12:47:46 EDT 2006


Hi Luis,

Thanks for the hint. Then it looks like the problem is
memory allocation from the OS.

> Do you have also any other images / filters around ?

Actually the filter runs well in smaller images,
512x512x69. And so far I just tried with this filter. 

> How much RAM memory do you have ?
The memory avaliable is 32Gb, so in principle it
should be able to handle 1.6Gb 

Thanks,

-Alberto

--- insight-users-request at itk.org wrote:

> 
> Today's Topics:
> 
>    1. Re: itkSymmetricEigenAnalysisImageFilter
> Problem (Luis Ibanez)
> 
> 
>
----------------------------------------------------------------------
> 
> Message: 1
> Date: Sat, 09 Sep 2006 10:01:04 -0400
> From: Luis Ibanez <luis.ibanez at kitware.com>
> Subject: Re: [Insight-users]
> itkSymmetricEigenAnalysisImageFilter
> 	Problem
> To: pang2 at yahoo.com
> Cc: insight-users at itk.org
> Message-ID: <4502C920.2080104 at kitware.com>
> Content-Type: text/plain; charset=ISO-8859-1;
> format=flowed
> 
> 
> Hi Alberto,
> 
> 
> One symmetric tensor in ITK will have 6 components,
> if you represent it as doubles, then it takes 48
> bytes
> per tensor.
> 
> For an image of 512x512x120 that results in 1.4
> Gigabytes.
> 
> The original image was already 60 Megabytes.
> 
> Do you have also any other images / filters around ?
> 
> How much RAM memory do you have ?
> 
> It is not necessarily surprising that you are
> running out
> of memory...
> 
> 
>     Luis
> 
> 
> ----------------------------
> Alberto Santamaría wrote:
> > Dear All,
> > 
> > I am trying to compute the eigenvalues from a
> volume
> > of size: 512x512x120 with data type ushort. 
> > However once the Hessian has been computed, the
> > program chrases giving me the following error:
> > 
> > *** glibc detected *** free(): invalid next size
> > (fast): 0x00000000009a74c0 ***
> > Aborted
> > 
> > The compiler that I use is:
> > c++ (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)
> > 
> > and is running in a cluster with 8 CPUS of the
> type:
> > 
> > processor       : 0
> > vendor_id       : AuthenticAMD
> > cpu family      : 15
> > model           : 5
> > model name      : AMD Opteron(tm) Processor 846
> > stepping        : 10
> > cpu MHz         : 2004.566
> > cache size      : 1024 KB
> > fpu             : yes
> > fpu_exception   : yes
> > cpuid level     : 1
> > wp              : yes
> > flags           : fpu vme de pse tsc msr pae mce
> cx8
> > apic sep mtrr pge mca cmov pat pse36 clflush mmx
> fxsr
> > sse sse2 syscall nx mmxext lm 3dnowext 3dnow
> > bogomips        : 4014.85
> > TLB size        : 1088 4K pages
> > clflush size    : 64
> > cache_alignment : 64
> > address sizes   : 40 bits physical, 48 bits
> virtual
> > power management: ts fid vid ttp
> > 
> > "itkSymmetricEigenAnalysisImageFilter.h"
> > 
> > I tracked down the problem with valgrind and this
> is
> > the initial part of the report. I have attached
> the
> > complete error log.
> > 
> > ==22307== Warning: set address range perms: large
> > range 342884360 (undefined)
> > ==22307== Thread 4:
> > ==22307== Invalid write of size 8
> > ==22307==    at 0x4AE4B1:
> >
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> > 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> > 
> >>::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> > 
> > 3>&, double*) 
> > const (itkSymmetricEigenAnalysis.txx:483)
> > 
> > 
> > Has any one faced a similar problem to this one
> > before?
> > 
> > Thanks in advance
> > 
> > -Alberto
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around 
> > http://mail.yahoo.com 
> > 
> > 
> >
>
------------------------------------------------------------------------
> > 
> > ==22307== Memcheck, a memory error detector.
> > ==22307== Copyright (C) 2002-2006, and GNU GPL'd,
> by Julian Seward et al.
> > ==22307== Using LibVEX rev 1606, a library for
> dynamic binary translation.
> > ==22307== Copyright (C) 2004-2006, and GNU GPL'd,
> by OpenWorks LLP.
> > ==22307== Using valgrind-3.2.0, a dynamic binary
> instrumentation framework.
> > ==22307== Copyright (C) 2000-2006, and GNU GPL'd,
> by Julian Seward et al.
> > ==22307== For more details, rerun with: -v
> > ==22307== 
> > ==22307== Warning: set address range perms: large
> range 114294784 (undefined)
> > Computing hessian set to  0.4...
> > ==22307== Warning: set address range perms: large
> range 1371537416 (undefined)
> > ==22307== Warning: set address range perms: large
> range 114294784 (undefined)
> > 
> > ==22307== Warning: set address range perms: large
> range 114294784 (undefined)
> > ==22307== Warning: set address range perms: large
> range 114294784 (undefined)
> > Computing hessian set to  0.4...Done
> > ==22307== Warning: set address range perms: large
> range 342884360 (undefined)
> > ==22307== Thread 4:
> > ==22307== Invalid write of size 8
> > ==22307==    at 0x4AE4B1:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (itkSymmetricEigenAnalysis.txx:483)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307==  Address 0xBCA6268 is 0 bytes after a
> block of size 24 alloc'd
> > ==22307==    at 0x4905415: operator new[](unsigned
> long) (vg_replace_malloc.c:199)
> > ==22307==    by 0x4AE73B:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:32)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4AE5FF:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (itkFixedArray.h:181)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4AE2DD:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (itkSymmetricEigenAnalysis.txx:433)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4AE375:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (vnl_math.h:158)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Invalid read of size 8
> > ==22307==    at 0x4AE44D:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (itkSymmetricEigenAnalysis.txx:473)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307==  Address 0xBCA6268 is 0 bytes after a
> block of size 24 alloc'd
> > ==22307==    at 0x4905415: operator new[](unsigned
> long) (vg_replace_malloc.c:199)
> > ==22307==    by 0x4AE73B:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:32)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4A8E4D:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ReduceToTridiagonalMatrix(double*,
> itk::FixedArray<float, 3>&, 
> > double*, double*) const
> (itkSymmetricEigenAnalysis.txx:138)
> > ==22307==    by 0x4AE7AA:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:47)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4A8F16:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ReduceToTridiagonalMatrix(double*,
> itk::FixedArray<float, 3>&, 
> > double*, double*) const
> (itkSymmetricEigenAnalysis.txx:158)
> > ==22307==    by 0x4AE7AA:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:47)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4A8F1C:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ReduceToTridiagonalMatrix(double*,
> itk::FixedArray<float, 3>&, 
> > double*, double*) const
> (itkSymmetricEigenAnalysis.txx:158)
> > ==22307==    by 0x4AE7AA:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:47)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4A8E4F:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ReduceToTridiagonalMatrix(double*,
> itk::FixedArray<float, 3>&, 
> > double*, double*) const
> (itkSymmetricEigenAnalysis.txx:138)
> > ==22307==    by 0x4AE7AA:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:47)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== Conditional jump or move depends on
> uninitialised value(s)
> > ==22307==    at 0x4AE2DF:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
> >::ComputeEigenValuesUsingQL(itk::FixedArray<float,
> 3>&, double*) 
> > const (itkSymmetricEigenAnalysis.txx:433)
> > ==22307==    by 0x4AE7BB:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<flo
> > at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> co
> > nst&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:49)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk
> > ::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
> > ouble, 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAn
> > alysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*) (itkS
> > martPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307== More than 10000000 total errors
> detected.  I'm not reporting any more.
> > ==22307== Final error counts will be inaccurate. 
> Go fix your program!
> > ==22307== Rerun with --error-limit=no to disable
> this cutoff.  Note
> > ==22307== that errors may occur in your program
> without prior warning from
> > ==22307== Valgrind, because errors are no longer
> being displayed.
> > ==22307== 
> > ==22307== 
> > ==22307== ERROR SUMMARY: 10000000 errors from 11
> contexts (suppressed: 10 from 5)
> > ==22307== malloc/free: in use at exit:
> 2,172,495,740 bytes in 13,998 blocks.
> > ==22307== malloc/free: 4,316,909 allocs, 4,302,911
> frees, 2,436,566,755 bytes allocated.
> > ==22307== For counts of detected errors, rerun
> with: -v
> > ==22307== searching for pointers to 13,998
> not-freed blocks.
> > ==22307== checked 1,921,180,184 bytes.
> > ==22307== 
> > ==22307== Thread 1:
> > ==22307== 
> > ==22307== 37 bytes in 1 blocks are possibly lost
> in loss record 38 of 206
> > ==22307==    at 0x4904F57: operator new(unsigned
> long) (vg_replace_malloc.c:167)
> > ==22307==    by 0x313E69024D:
> std::string::_Rep::_S_create(unsigned long, unsigned
> long, std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E6902EB:
> std::string::_Rep::_M_clone(std::allocator<char>
> const&, unsigned long) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E6903D9:
> std::string::string(std::string const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x58A4C6:
> gdcm::Util::GetMACAddress() (gdcmUtil.cxx:897)
> > ==22307==    by 0x58BCAB:
> _GLOBAL__I__ZN4gdcm4Util8GDCM_UIDE
> (gdcmUtil.cxx:108)
> > ==22307==    by 0x689B05: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307==    by 0x483992: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307== 
> > ==22307== 
> > ==22307== 47 bytes in 1 blocks are possibly lost
> in loss record 40 of 206
> > ==22307==    at 0x4904F57: operator new(unsigned
> long) (vg_replace_malloc.c:167)
> > ==22307==    by 0x313E69024D:
> std::string::_Rep::_S_create(unsigned long, unsigned
> long, std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E6902EB:
> std::string::_Rep::_M_clone(std::allocator<char>
> const&, unsigned long) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E6906C9:
> std::string::assign(std::string const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x54C8A4: gdcm::DictSet::DictSet()
> (basic_string.h:427)
> > ==22307==    by 0x56A3B8: gdcm::Global::Global()
> (gdcmGlobal.cxx:70)
> > ==22307==    by 0x56B48E:
> _GLOBAL__I__ZN4gdcm12GDCM_UNKNOWNE
> (gdcmGlobal.cxx:56)
> > ==22307==    by 0x689B05: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307==    by 0x483992: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307== 
> > ==22307== 
> > ==22307== 195 bytes in 3 blocks are possibly lost
> in loss record 119 of 206
> > ==22307==    at 0x4904F57: operator new(unsigned
> long) (vg_replace_malloc.c:167)
> > ==22307==    by 0x313E69024D:
> std::string::_Rep::_S_create(unsigned long, unsigned
> long, std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E6902EB:
> std::string::_Rep::_M_clone(std::allocator<char>
> const&, unsigned long) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E690792:
> std::string::reserve(unsigned long) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E69109B:
> std::string::append(std::string const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x486F33: std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >
> std::operator+<char, std::char_traits<char>,
> std::allocator<char> >(std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >
> const&, std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >
> const&) (basic_string.h:2006)
> > ==22307==    by 0x48553F: main
> (basic_string.h:2041)
> > ==22307== 
> > ==22307== 
> > ==22307== 216 bytes in 3 blocks are definitely
> lost in loss record 120 of 206
> > ==22307==    at 0x4905415: operator new[](unsigned
> long) (vg_replace_malloc.c:199)
> > ==22307==    by 0x4AE74E:
>
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<float, 3>,
> itk::SymmetricSecondRankTensor<double, 3>
>
>::ComputeEigenValues(itk::SymmetricSecondRankTensor<double,
> 3> const&, itk::FixedArray<float, 3>&) const
> (itkSymmetricEigenAnalysis.txx:35)
> > ==22307==    by 0x4B3E69:
>
itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk::Image<itk::FixedArray<float, 3>, 3>,
>
itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<double,
> 3>, itk::FixedArray<float, 3> >
> >::ThreadedGenerateData(itk::ImageRegion<3> const&,
> int) (itkSymmetricEigenAnalysisImageFilter.h:57)
> > ==22307==    by 0x4A3645:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::ThreaderCallback(void*)
> (itkSmartPointer.h:71)
> > ==22307==    by 0x4B87D6:
> itk::MultiThreader::SingleMethodProxy(void*)
> (itkMultiThreader.cxx:736)
> > ==22307==    by 0x313D806109: start_thread (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x313CFC68B2: clone (in
> /lib64/tls/libc-2.3.4.so)
> > ==22307== 
> > ==22307==
> > ==22307== 2,016 bytes in 7 blocks are possibly
> lost in loss record 154 of 206
> > ==22307==    at 0x49060CD: calloc
> (vg_replace_malloc.c:279)
> > ==22307==    by 0x313CD0D262: _dl_allocate_tls (in
> /lib64/ld-2.3.4.so)
> > ==22307==    by 0x313D806706:
> pthread_create@@GLIBC_2.2.5 (in
> /lib64/tls/libpthread-2.3.4.so)
> > ==22307==    by 0x4B92FF:
>
itk::MultiThreader::DispatchSingleMethodThread(itk::MultiThreader::ThreadInfoStruct*)
> (itkMultiThreader.cxx:854)
> > ==22307==    by 0x4BA281:
> itk::MultiThreader::SingleMethodExecute()
> (itkMultiThreader.cxx:278)
> > ==22307==    by 0x4A3580:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::GenerateData() (itkProcessObject.h:278)
> > ==22307==    by 0x4C47EC:
>
itk::ProcessObject::UpdateOutputData(itk::DataObject*)
> (itkProcessObject.cxx:991)
> > ==22307==    by 0x4857B7: main
> (itkSmartPointer.h:71)
> > ==22307== 
> > ==22307== 
> > ==22307== 19,468 bytes in 419 blocks are possibly
> lost in loss record 198 of 206
> > ==22307==    at 0x4904F57: operator new(unsigned
> long) (vg_replace_malloc.c:167)
> > ==22307==    by 0x313E69024D:
> std::string::_Rep::_S_create(unsigned long, unsigned
> long, std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E69094A:
> std::string::_M_mutate(unsigned long, unsigned long,
> unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E690C31:
> std::string::assign(char const*, unsigned long) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x5913A6:
> gdcm::FillDefaultVRDict(std::map<std::string,
> std::string, std::less<std::string>,
> std::allocator<std::pair<std::string const,
> std::string> > >&) (char_traits.h:258)
> > ==22307==    by 0x58EC68: gdcm::VR::VR()
> (gdcmVR.cxx:47)
> > ==22307==    by 0x56A3D4: gdcm::Global::Global()
> (gdcmGlobal.cxx:71)
> > ==22307==    by 0x56B48E:
> _GLOBAL__I__ZN4gdcm12GDCM_UNKNOWNE
> (gdcmGlobal.cxx:56)
> > ==22307==    by 0x689B05: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307==    by 0x483992: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307== 
> > ==22307== 
> > ==22307== 353,305 bytes in 10,398 blocks are
> possibly lost in loss record 202 of 206
> > ==22307==    at 0x4904F57: operator new(unsigned
> long) (vg_replace_malloc.c:167)
> > ==22307==    by 0x313E69024D:
> std::string::_Rep::_S_create(unsigned long, unsigned
> long, std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E69260A: (within
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x313E692722:
> std::string::string(char const*,
> std::allocator<char> const&) (in
> /usr/lib64/libstdc++.so.6.0.3)
> > ==22307==    by 0x58BC70:
> _GLOBAL__I__ZN4gdcm4Util8GDCM_UIDE
> (new_allocator.h:62)
> > ==22307==    by 0x689B05: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307==    by 0x483992: (within
>
/home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
> > ==22307== 
> > ==22307== 
> > ==22307== 342,884,360 bytes in 1 blocks are
> possibly lost in loss record 205 of 206
> > ==22307==    at 0x4905415: operator new[](unsigned
> long) (vg_replace_malloc.c:199)
> > ==22307==    by 0x4A91E8:
> itk::ImportImageContainer<unsigned long,
> itk::FixedArray<float, 3>
> >::AllocateElements(unsigned long) const
> (itkImportImageContainer.txx:176)
> > ==22307==    by 0x4A94B8:
> itk::ImportImageContainer<unsigned long,
> itk::FixedArray<float, 3> >::Reserve(unsigned long)
> (itkImportImageContainer.txx:77)
> > ==22307==    by 0x4A962E:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::AllocateOutputs() (itkSmartPointer.h:71)
> > ==22307==    by 0x4A96CB:
>
itk::InPlaceImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3>, itk::Image<itk::FixedArray<float, 3>, 3>
> >::AllocateOutputs() (itkInPlaceImageFilter.txx:106)
> > ==22307==    by 0x4A3520:
> itk::ImageSource<itk::Image<itk::FixedArray<float,
> 3>, 3> >::GenerateData() (itkImageSource.txx:214)
> > ==22307==    by 0x4C47EC:
>
itk::ProcessObject::UpdateOutputData(itk::DataObject*)
> (itkProcessObject.cxx:991)
> > ==22307==    by 0x4857B7: main
> (itkSmartPointer.h:71)
> > ==22307== 
> > ==22307== 
> > ==22307== 1,371,537,416 bytes in 1 blocks are
> possibly lost in loss record 206 of 206
> > ==22307==    at 0x4905415: operator new[](unsigned
> long) (vg_replace_malloc.c:199)
> > ==22307==    by 0x4B1058:
> itk::ImportImageContainer<unsigned long,
> itk::SymmetricSecondRankTensor<double, 3>
> >::AllocateElements(unsigned long) const
> (itkImportImageContainer.txx:176)
> > ==22307==    by 0x4B1348:
> itk::ImportImageContainer<unsigned long,
> itk::SymmetricSecondRankTensor<double, 3>
> >::Reserve(unsigned long)
> (itkImportImageContainer.txx:77)
> > ==22307==    by 0x4B2D34:
>
itk::HessianRecursiveGaussianImageFilter<itk::Image<float,
> 3>,
> itk::Image<itk::SymmetricSecondRankTensor<double,
> 3>, 3> >::GenerateData() (itkSmartPointer.h:71)
> > ==22307==    by 0x4C47EC:
>
itk::ProcessObject::UpdateOutputData(itk::DataObject*)
> (itkProcessObject.cxx:991)
> > ==22307==    by 0x485755: main
> (itkSmartPointer.h:71)
> > ==22307== 
> > ==22307== LEAK SUMMARY:
> > ==22307==    definitely lost: 216 bytes in 3
> blocks.
> > ==22307==      possibly lost: 1,714,796,844 bytes
> in 10,831 blocks.
> > ==22307==    still reachable: 457,698,680 bytes in
> 3,164 blocks.
> > ==22307==         suppressed: 0 bytes in 0 blocks.
> > ==22307== Reachable blocks (those to which a
> pointer was found) are not shown.
> > ==22307== To see them, rerun with:
> --show-reachable=yes
> > Killed
> > 
> > 
> >
>
------------------------------------------------------------------------
> > 
> > 
> > // Software Guide : BeginCodeSnippet
> > #include "itkConnectedThresholdImageFilter.h"
> > // Software Guide : EndCodeSnippet
> > 
> > 
> > #include "itkImage.h"
> > #include "itkCastImageFilter.h"
> > #include "itkCurvatureFlowImageFilter.h"
> > 
> > #include
> "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
> > #include
> "itkHessianRecursiveGaussianImageFilter.h"
> > #include "itkImageAdaptor.h"
> > #include "PixelAccessors.h"
> > #include "itkSymmetricEigenAnalysisImageFilter.h"
> > #include "itkCastImageFilter.h"
> > 
> > #include "itkImageFileReader.h"
> > #include "itkImageFileWriter.h"
> > 
> > 
> > int main( int argc, char *argv[])
> > {
> >   if( argc <4 )
> >     {
> >     std::cerr << "Missing Parameters " <<
> std::endl;
> >     std::cerr << "Usage: " << argv[0];
> >     std::cerr << " inputImage sigma1 sigma2
> sigma3" << std::endl;
> > 	std::cerr << "with no mhd extension"<<std::endl;
> >     return 1;
> >     }
> > 
> >   typedef   unsigned short  InputPixelType;
> > 
> >   typedef   float           InternalPixelType;
> >   const     unsigned int    Dimension = 3;
> > 
> >   typedef itk::Image< InternalPixelType, Dimension
> >	InternalImageType;
> > 
> >   // We instantiate reader and writer types
> >   typedef   itk::ImageFileReader<
> InternalImageType >	ReaderType;
> >   typedef   itk::ImageFileWriter< 
> InternalImageType  > WriterType;
> > 
> >   
> >   typedef  
> itk::HessianRecursiveGaussianImageFilter< 
> >                             InternalImageType >   
>        HessianFilterType;
> >   typedef   HessianFilterType::OutputImageType    
>        HessianImageType;
> >   typedef   HessianImageType::PixelType           
>        HessianPixelType;
> > 
> >   typedef   itk::FixedArray< float, 3 >
> >                                                   
>        EigenValueArrayType;
> >   typedef  itk::Image< EigenValueArrayType,
> HessianImageType::ImageDimension >
> >                                                   
>        EigenValueImageType;
> >   typedef  itk::ImageAdaptor< 
> EigenValueImageType, 
> > 								EigenValueAccessor< EigenValueArrayType >
> >	  ImageAdaptorType;
> >   typedef  
> itk::SymmetricEigenAnalysisImageFilter< 
> > 								HessianImageType, EigenValueImageType >   
>  EigenAnalysisFilterType;
> >   typedef itk::CastImageFilter< ImageAdaptorType, 
> > 								InternalImageType >	  CastImageFilterType;
> > 
> >      const std::string mhd = ".mhd";
> >      const std::string sigmaString = ".Sigma";
> >  
> > 
> >      const std::string eigenValuesString1 =
> ".EigVal1";
> >      const std::string eigenValuesString2 =
> ".EigVal2";
> >      const std::string eigenValuesString3 =
> ".EigVal3";
> > 
> > 	 const std::string inputVolumeFilename = argv[1];
> > 	  std::string outputVolumeEigenValue_1_Filename =
> inputVolumeFilename + eigenValuesString1 ;
> > 	  std::string outputVolumeEigenValue_2_Filename =
> inputVolumeFilename + eigenValuesString2 ;
> > 	  std::string outputVolumeEigenValue_3_Filename =
> inputVolumeFilename + eigenValuesString3 ;
> > 
> > 	 itk::FixedArray< float, 3 >  sigmasValuesArray;
> > 
> >  
> > 	sigmasValuesArray[0] = atof( argv[2] );
> > 	sigmasValuesArray[1] = atof( argv[3] );
> > 	sigmasValuesArray[2] = atof( argv[4] );
> > 
> > 	 WriterType::Pointer m_InternalWriter =
> WriterType::New();
> > 	  
> > 
> > 	ReaderType::Pointer m_Reader = 
> ReaderType::New();
> > 	m_Reader->SetFileName(
> (inputVolumeFilename+mhd).c_str());
> >     m_Reader->Update();
> > 
> > 	HessianFilterType::Pointer  m_Hessian =
> HessianFilterType::New();
> > 	m_Hessian->SetInput( m_Reader->GetOutput() );
> > 
> >   // Compute eigen values.. order them in
> ascending order
> >   EigenAnalysisFilterType::Pointer m_EigenFilter =
> EigenAnalysisFilterType::New();
> >   m_EigenFilter->SetDimension(
> HessianPixelType::Dimension );
> > 
> >     // Create an adaptor and plug the output to
> the parametric space
> >   ImageAdaptorType::Pointer m_EigenAdaptor1 =
> ImageAdaptorType::New();
> >   EigenValueAccessor< EigenValueArrayType >
> accessor1;
> >   
> >   ImageAdaptorType::Pointer m_EigenAdaptor2 =
> ImageAdaptorType::New();
> >   EigenValueAccessor< EigenValueArrayType >
> accessor2;
> > 
> >   ImageAdaptorType::Pointer m_EigenAdaptor3 =
> ImageAdaptorType::New();
> >   EigenValueAccessor< EigenValueArrayType >
> accessor3;
> > 
> >   // m_EigenCastfilter1 will give the eigen values
> with the maximum eigen
> >   // value. m_EigenCastfilter3 will give the eigen
> values with the 
> >   // minimum eigen value.
> >    CastImageFilterType::Pointer m_EigenCastfilter1
> = CastImageFilterType::New();
> > 
> >   CastImageFilterType::Pointer m_EigenCastfilter2
> = CastImageFilterType::New();
> > 
> >   CastImageFilterType::Pointer m_EigenCastfilter3
> = CastImageFilterType::New();
> > 
> > 
> > 
> > 
> >   for(int i=0; i< sigmasValuesArray.Size(); i++)
> >   {
> > 	 outputVolumeEigenValue_1_Filename =
> outputVolumeEigenValue_1_Filename  + sigmaString +
> "." +  argv[i+2] + mhd;
> >      outputVolumeEigenValue_2_Filename =
> outputVolumeEigenValue_2_Filename  + sigmaString +
> "." +  argv[i+2] + mhd;
> >      outputVolumeEigenValue_3_Filename =
> outputVolumeEigenValue_3_Filename  + sigmaString +
> "." +  argv[i+2] + mhd;
> > 
> > 	  std::cout<<"Computing hessian set to 
> "<<sigmasValuesArray[i]<<"..."<<std::endl;
> > 		m_Hessian->SetSigma(sigmasValuesArray[i]);
> > 		m_Hessian->Update();
> > 	  std::cout<<"Computing hessian set to 
> "<<sigmasValuesArray[i]<<"...Done"<<std::endl;
> > 
> > 	m_EigenFilter->SetInput( m_Hessian->GetOutput()
> );
> > 	m_EigenFilter->OrderEigenValuesBy(
> EigenAnalysisFilterType::FunctorType::OrderByValue
> );
> > 	m_EigenFilter->Update();
> > 
> > 	accessor1.SetEigenIdx( 0 );
> > 	m_EigenAdaptor1->SetImage(
> m_EigenFilter->GetOutput() );
> > 	m_EigenAdaptor1->SetPixelAccessor( accessor1 );
> > 
> > 	accessor2.SetEigenIdx( 1 );
> > 	m_EigenAdaptor2->SetImage(
> m_EigenFilter->GetOutput() );
> > 	m_EigenAdaptor2->SetPixelAccessor( accessor2 );
> > 
> >     accessor3.SetEigenIdx( 2 );
> > 	m_EigenAdaptor3->SetImage(
> m_EigenFilter->GetOutput() );
> > 	m_EigenAdaptor3->SetPixelAccessor( accessor3 );
> > 
> >     m_EigenCastfilter1->SetInput( m_EigenAdaptor3
> ); 
> >     m_EigenCastfilter2->SetInput( m_EigenAdaptor2
> ); 
> >     m_EigenCastfilter3->SetInput( m_EigenAdaptor1
> ); 
> > 
> > 	std::cout<<"Writing EigenValues for 
> "<<sigmasValuesArray[i]<<"..."<<std::endl;
> > 	m_EigenCastfilter1->Update();
> > 	m_InternalWriter->SetInput(
> m_EigenCastfilter1->GetOutput() );
> > 	m_InternalWriter->SetFileName(
> outputVolumeEigenValue_1_Filename.c_str());
> > 	m_InternalWriter->Update();
> > 
> > 	m_EigenCastfilter2->Update();
> > 	m_InternalWriter->SetInput(
> m_EigenCastfilter2->GetOutput() );
> > 	m_InternalWriter->SetFileName(
> outputVolumeEigenValue_2_Filename.c_str() );
> > 	m_InternalWriter->Update();
> > 
> > 	m_EigenCastfilter3->Update();
> > 	m_InternalWriter->SetInput(
> m_EigenCastfilter3->GetOutput() );
> > 	m_InternalWriter->SetFileName(
> outputVolumeEigenValue_3_Filename.c_str());
> > 	m_InternalWriter->Update();
> > 	std::cout<<"Writing EigenValues for 
> "<<sigmasValuesArray[i]<<"...Done"<<std::endl;
> > 
> > 	 outputVolumeEigenValue_1_Filename =
> inputVolumeFilename + eigenValuesString1  ;
> >      outputVolumeEigenValue_2_Filename =
> inputVolumeFilename + eigenValuesString2  ;
> >      outputVolumeEigenValue_3_Filename =
> inputVolumeFilename + eigenValuesString3  ;
> >   }
> >  
> >  
> >   std::cout<<"Computing Eigenvalues... Done." <<
> std::endl;
> >   return 0;
> > }
> > 
> > 
> > 
> > 
> > 
> > 
> >
>
------------------------------------------------------------------------
> > 
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
> 
> 
> 
> 
> ------------------------------
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 
> End of Insight-users Digest, Vol 29, Issue 17
> *********************************************
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


More information about the Insight-users mailing list