[Insight-users] Using masks in multiresolution registration

Karthik Krishnan Karthik.Krishnan at kitware.com
Tue Aug 16 12:10:02 EDT 2005



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