[Insight-users] Transformation in ModelToImageRegistration example
Karthik Krishnan
Karthik.Krishnan at kitware.com
Mon Apr 17 18:34:58 EDT 2006
Looks like a bug to me too.
The example seems to swap index and physical points and won't work for
images with spacing not equal to 1. (for instance if you say
imageFilter->SetSpacing(..)) and it seems to swap the notion of Fixed
and moving image.
Bradley Lowekamp wrote:
> Hello all,
>
> I am confused by the transformations going on in the example
> ModelToImageRegistration.cxx with regards to the custom Metric. Here
> are some highlights of the code:
>
> In SetMovingSpacialObject():
> ...
> typedef itk::ImageRegionConstIteratorWithIndex<TFixedImage>
> myIteratorType;
> myIteratorType
> it(this->m_FixedImage,this->m_FixedImage->GetBufferedRegion());
> itk::Point<double,2> point;
> while(!it.IsAtEnd())
> {
> for(unsigned int i=0;i<Self::ObjectDimension;i++)
> {
> point[i]=it.GetIndex()[i];
> }
>
> if(this->m_MovingSpatialObject->IsInside(point,99999))
> {
> m_PointList.push_back(point);
> }
> ++it;
> ....
> In GetValue():
> ...
> PointListType::const_iterator it = m_PointList.begin();
> ...
> while(it != m_PointList.end())
> {
> PointType transformedPoint =
> this->m_Transform->TransformPoint(*it);
>
> this->m_FixedImage->TransformPhysicalPointToIndex(transformedPoint,index);
> ...
>
> I have been reading and rereading the relevant sections in the ITK
> software guide book, especially the "Direction of the Transform
> Mapping". I believe I understand the usage and direction of the
> transformations is the registration process. Perhaps this is a poor
> example, which takes some short cuts. But this is my understanding of
> this code:
>
> The created m_PointList contains a points in "image grid" space.
> (Slightly ambiguous as to which since the two are already aligned).
>
> Then the m_Transform is applied. This transform maps points from
> physical space of the fixed image to the physical space of the moving
> model according to the definition of said transform. (We can overlook
> the lack of image grid to physical space transformation since it is
> the identity in both cases.) So "transformedPoint" ought to be in the
> physical space of the moving model.
>
> Last the fixed image's physical to image grid index transform is
> applied. So "transformedPoint" must be in fixed image's physical space.
>
> So this is a contradiction, and I am confused. What am I missing here?
>
> Sorry for the repost. I am hoping that this one doesn't get hijacked
> too :)
>
> Thanks,
> Brad
>
>
>
> ========================================================
>
> Bradley Lowekamp
>
> Management Systems Designers Contractor for
>
> Office of High Performance Computing and Communications
>
> National Library of Medicine
>
> blowekamp at mail.nih.gov <mailto:blowekamp at mail.nih.gov>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>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