[Insight-developers] [Insight-users] LevelsetMotionRegistrationImageFilter
Luis Ibanez
luis.ibanez at kitware.com
Sat Oct 17 17:43:56 EDT 2009
Hi Kishore,
Thanks for pointing this out,
and for filing the bug report.
Unfortunately this class don't even have a test.
So, we have started by adding a test for it,
(mostly based on the test of the Demons filter).
You will find this new test under:
Insight/Testing/Code/Algorithms/
itkLevelSetMotionRegistrationFilterTest.cxx
This test is running the filter with the method
UseImageSpacingOn()
and we don't observe a segmentation fault as a
consequence.
.....
In your email you say that the member variable
this->m_Input,
>> is a vector of 3 image pointers.
For what I can see in this filter, the Input variable
is actually of the same type as the InputImage
type used for instantiating the filter.
Could you provide a minimal example illustrating
the situation in which you see that the m_Input
variable is an array of images ?
Thanks
Luis
-----------------------------------------------------------
On Tue, Oct 13, 2009 at 7:36 PM, Kishore Mosaliganti
<kishoreraom at gmail.com> wrote:
> To add to the below problem, I initialized the filter with a 0 vector
> deformation field. Now, the filter executes with ImageSpacingOn().
> However, the metric values with iterations are not influenced by the
> ImageSpacingOn option.
>
> This makes me believe the underlying implementation is not using the
> image spacings.
>
> Kishore
>
> On Tue, Oct 13, 2009 at 7:13 PM, Kishore Mosaliganti
> <kishoreraom at gmail.com> wrote:
>> Hi all,
>>
>> I was using the LevelsetMotionRegistrationImageFilter to register two
>> 3D image datasets whose voxels have anisotropic spacing:
>>
>> RegistrationFilterType::Pointer filter = RegistrationFilterType::New();
>> CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New();
>> filter->AddObserver( itk::IterationEvent(), observer );
>> filter->SetFixedImage( fixedImage );
>> filter->SetMovingImage( movingImage );
>> filter->SetNumberOfIterations( 50 );
>> filter->SetGradientSmoothingStandardDeviations( 0.1 );
>> filter->UseImageSpacingOn();
>> filter->Update();
>>
>> The problem is I get a Segmentation fault when I turn on
>> UseImageSpacingOn(). Otherwise, the filter executes normally.
>>
>> I used the debugger and went into the code.
>> LevelsetMotionRegistrationImageFilter is a sub-class of
>> PDEDeformableRegistrationImageFilter which is a subclass of
>> FiniteDifferenceImageFilter. The code failed in the
>> FiniteDifferenceImageFilter::GenerateData() method in the following
>> lines:
>>
>> ....
>>
>> if (this->GetState() == UNINITIALIZED)
>> {
>> // Set the coefficients for the deriviatives
>> double coeffs[TInputImage::ImageDimension];
>> if (m_UseImageSpacing)
>> {
>> for (unsigned int i = 0; i < TInputImage::ImageDimension; i++)
>> {
>> coeffs[i] = 1.0 / this->GetInput()->GetSpacing()[i];
>> }
>> }
>> else
>> {
>> for (unsigned int i = 0; i < TInputImage::ImageDimension; i++)
>> {
>> coeffs[i] = 1.0;
>> }
>> }
>>
>> .....
>>
>> When I went to see the state of the input pointer, this->m_Input, it
>> is a vector of 3 image pointers. Basically, this->m_Input[1] refers to
>> the fixed image and this->m_Input[2] refers to the moving image.
>> this->m_Input[0] is NULL. this->m_Input[0] is supposed to contain the
>> initial deformation field which is not a prerequisite for running the
>> code.
>>
>> The code in itkPDEDeformableRegistrationImageFilter::SetFixedImage()
>> and itkPDEDeformableRegistrationImageFilter::SetMovingImage() call
>> this->ProcessObject::SetNthInput( 1, const_cast< FixedImageType * >(
>> ptr ) ) and this->ProcessObject::SetNthInput( 2, const_cast<
>> FixedImageType * >( ptr ) ) respectively.
>>
>> This filter derives from
>> ImageToImageFilter<TDeformationField,TDeformationField> but the vector
>> of inputs have been set as scalar-valued fixed and moving image
>> pointers. Also, for the case when the initial deformation field is
>> unknown, the FiniteDifferenceFilter is checking for the first input
>> which doesn't exist.
>>
>> I have filed a bug report:
>> http://public.kitware.com/Bug/view.php?id=9709
>>
>>
>>
>> Thanks,
>> Kishore
>>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
More information about the Insight-developers
mailing list