[Insight-users] DemonsRegistrationFilter memory leak?

Vincent Luboz Vincent.Luboz at imag.fr
Wed Sep 29 14:55:35 EDT 2004


Hi Luis

Thanks a lot for your answer!

Few answers to your questions and then more questions:   ;-)

> 1) Did you compiled your code for "Release" ?
>     Just that could give you up to a factor of
>     10X in execution time.

Right, I didn't think about that and I am actually compling in Debug... I am 
going to change that.

> 2) When you attempt to use Demons in 3D image
>     you usually want to do this in a multi-resolution
>     framework, especially if you exect to find large
>     deformations.

So you mean I should use a filter to downsample the 3D images? or is there an 
option in the itkDemonRegistration to take this into account?

> 3) The number of matchnig points that you set up
>     in the histogram (10,000) seems to be excesive.
>     Is there a particular reason why you decided to
>     go that far ?
>     What is the pixel type of your images  ?

The pixel type of my image is unsigne short.
I used 10000 points in the histogram since I thought that this value was the 
number of points (placed regularly on a grid) used to compute the elastic 
transformation from one image to another.
Is it wrong?

You say that I could get rid of the histogram part.

So you mean, instead of having
registrationFilter->SetMovingImage(matcher->GetOutput());
in the following code, I would have:
registrationFilter->SetMovingImage(movingImageCaster->GetOutput());
where matcher is the histogram filter and movingImageCaster is the moving 
image after being cast.

// In the DemonsRegistrationFilter, the deformation field is
// represented as an image whose pixels are floating point vectors.
typedef itk::Vector< float, Dimension >    VectorPixelType;
typedef itk::Image<VectorPixelType, Dimension> DeformationFieldType;
typedef itk::DemonsRegistrationFilter<
              InternalImageType,
              InternalImageType,
              DeformationFieldType>   RegistrationFilterType;

RegistrationFilterType::Pointer registrationFilter = 
RegistrationFilterType::New();

// The input fixed image is simply the output of the fixed image casting
// filter.  The input moving image is the output of the histogram matching 
filter.
registrationFilter->SetFixedImage(fixedImageCaster->GetOutput());
registrationFilter->SetMovingImage(matcher->GetOutput());

is it correct?

Again, thanks a lot for your help

Best regards,

Vincent.


Quoting Luis Ibanez <luis.ibanez at kitware.com>:
> 
> Hi Vincent,
> 
> Memory leaks should in principle show up in our daily
> Purify builds. Nothing seems to be reported for the
> DemonsRegistration filter, as you can see from the most
> recent Purify build:
> 
> http://www.itk.org/Testing/Sites/moxel2.crd/WinNT-VC++60/20040927-0500-
Nightly/DynamicAnalysis.html
> 
> You probably can speed up a lot your registration
> by considering the following issues:
> 
> 1) Did you compiled your code for "Release" ?
>     Just that could give you up to a factor of
>     10X in execution time.
> 
> 2) When you attempt to use Demons in 3D image
>     you usually want to do this in a multi-resolution
>     framework, especially if you exect to find large
>     deformations.
> 
> 3) The number of matchnig points that you set up
>     in the histogram (10,000) seems to be excesive.
>     Is there a particular reason why you decided to
>     go that far ?
>     What is the pixel type of your images  ?
> 
> 4) When you are using CT scans you usually don't
>     need the HistogramIntensity correction at all.
>     Intensigy correction is mostly oriented to MRI
>     images that tend to have arbitrary scalings in
>     intensity.  CT on the other hand are usually
>     in Hounsfield units. That should result in
>     similar tissues having similar intensities in
>     both images.  I would suggest you to skip the
>     intensity correction between the two CT images
>     unless you are using images that are not calibrated
>     in Hounsfield units.
> 
> 
> The memory usage of 1.4Gb seems excesive, but in practice
> it depends of how many things you put together in the pipeline.
> Note that the deformation field for that image size will have
> an image of Vectors with double or float component type, that
> alone will take about 230Mb...
> 
> 
>    Please let us now more details of what you are doing.
> 
> 
>      Regards,
> 
> 
>        Luis
> 
> 
> ---------------------------
> Vincent.Luboz at imag.fr wrote:
> 
> > Hi itk users
> > 
> > I'm using the itkHistogramMatchingImageFilter combined with the 
> > itkDemonsRegistrationFilter to match 2 sets of 3D CT scans. The first one
> is 
> > an object and the second one is the same object but slightly deformed (it
> is 
> > an elastic deformation induced by a load on the object).
> > I used the example given in the itkDemonsRegistrationFilterTest file to
> used 
> > this matching algorithm and my program is a copy of it (except the variable
> 
> > values).
> > The transformation resulting from the matching seems fine but it takes a 
> > really long time to compute. For example it took 24 hours for matching my 2
> 
> > data sets (both of them have a size of 20Mo and 512x512x36 in pixel size)
> with 
> > 10000 points for the histogram, only 20 iterations for the demon algorithm
> and 
> > a sigma of 5 (to smooth the result since I only asked for 20 iterations).
> > Is it normal that it takes that long?
> > I was thinking that it may be due to a memory leak of the demon algorithm 
> > since when I run my program, it starts by reading the 2 data sets, so the 
> > memory increases by 40 Mo but them it keeps increasing until reaching a
> memory 
> > usage of 1.4Go!!
> > Is it normal? What can I do to avoid that or to get the result faster?
> > 
> > Thanks in advance for your help,
> > 
> > Vincent.
> > 
> > 
> > -------------------------------------------------
> > envoyé via Webmail/IMAG !
> > 
> > _______________________________________________
> > 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
> 




-------------------------------------------------
envoyé via Webmail/IMAG !



More information about the Insight-users mailing list