[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