[Insight-users] Using masks in multiresolution registration
Vicente Grau
vicente at robots.ox.ac.uk
Tue Aug 16 14:18:11 EDT 2005
Thanks very much for the explanation, now I understand it better. As you
suggested, I have been looking at the IsInside() values returned by the
metrics. It is clear in the code how masks are applied in
NormalizedCorrelation or MeanSquares metrics; however, I don't see where
the masks are considered in itkmutualinformationimagetoimagemetric.txx
(I can only see a call to IsInsideBuffer() ). Are masks implemented for
Mutual Information too? I am using ITK 2.0.1.
Vicente
Karthik Krishnan wrote:
>
>
> Vicente Grau wrote:
>
>> Thanks very much for your answer.
>> The image resolutions are the same for mask and input image: I have
>> copied the values directly from one mha header to the other to make
>> sure of that.
>> I have actually taken the mask object definition / application from
>> ImageRegistration12.cxx, but as it didn't work for me, I wondered if
>> it had to be used differently in a multiresolution framework. Does
>> MultiResolutionImageRegistrationMethod take care of the masking at
>> different scales? In this case, should I define a new
>> RecursiveMultiResolutionPyramidImageFilter for the mask?
>
>
> Since the mask is a spatial object, everything is done in physical
> space and there should be no need to generate a pyramid. The
> MultiResolutionImageRegistrationMethod internally uses a pyramid to
> generate Fixed and Moving images at a bunch of resolutions. All these
> images correspond to the same physical units, for instance the one at
> quarter resolution has its spacing quadrupled.
>
> itkMultiResolutionPyramidImageFillter.txx
> line 404: outputSpacing[idim] = inputSpacing[idim] * shrinkFactor;
>
> When the metric needs to decide whether to evaluate the metric at an
> index, it should do something like
>
> fixedImage->TransformIndexToPhysicalPoint( index, physicalSpacePoint );
> if (!this->m_FixedImageMask->IsInside( physicalSpacePoint )) // don't
> evaluate here.
>
> As you can see everything is done in physical space and you don't need
> to shrink the masks.
>
> Did you try to dig into the IsInside to see if points ere really
> outside ?
>
> Thanks
> karthik
>
>> And, how do I pass this pyramid to the
>> MultiResolutionImageRegistrationMethod?
>>
>> Thanks a lot,
>>
>> Vicente
>>
>> Karthik Krishnan wrote:
>>
>>> On Tue, 2005-08-16 at 11:15 +0100, Vicente Grau wrote:
>>>
>>>
>>>> I am trying to include masks for the fixed and moving images in a
>>>> MultiResolutionImageRegistrationMethod, using Mutual Information. I
>>>> have modified the MultiResMIRegistration application to include the
>>>> masks, by creating them and adding
>>>>
>>>> m_Metric->SetFixedImageMask(m_FixedObjectMask);
>>>> m_Metric->SetMovingImageMask(m_MovingObjectMask);
>>>>
>>>> m_Registration->StartRegistration();
>>>>
>>>> however, the mask does not seem to make a difference at all: I get
>>>> exactly the same results even when all pixels in the mask are zero.
>>>> Is it possible to use masks in a multiresolution framework?
>>>>
>>>
>>>
>>>
>>> Yes it is. We've used this in the past. Are you sure that the
>>> spacing of
>>> the mask and the image (at full resolution) are the same ? You could
>>> try
>>> to dig into the Metric or your spatial object to see if the IsInside
>>> function evaluates to false everywhere.
>>>
>>>
>>>
>>>> Is this the right way to do it? Are there any examples I can use?
>>>>
>>>
>>>
>>>
>>> ImageRegistration12.cxx, although not in the multi-resolution
>>> framework,
>>> but the two aren't very different.
>>>
>>>
>>>> Thanks very much,
>>>>
>>>> Vicente Grau
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>
>
More information about the Insight-users
mailing list