Never mind. I figured it out. It is the original unaltered moving image.<br><br>john<br><br><div class="gmail_quote">On Mon, Nov 9, 2009 at 4:59 PM, John Drozd <span dir="ltr"><<a href="mailto:john.drozd@gmail.com">john.drozd@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello,<br><br>I successfully combined an 3D affine transform (as a result of a 3D centred affine registration "ImageRegistration9revised.cxx" ), and then I fed this in as a bulk affine transform to be used with a deformable transformation to register two different subject dicom mri 3d images from two different people. In both cases I used a Mattes Mutual Information metric for multi-modality registration.<br>
<br>I have my original fixed image which I am using as an atlas and my original moving image which is my brain subject. In the code I obtained the mapping of specific points in the brain ventricles from the fixed image atlas to the moving image brain subject as per the code snippet below (<i><b>I have also attached to this email the affine and deformable registration ".cxx" files and affine transform ".tfm" file</b></i>):<br>
<br><i><b>My confusion is, that I am wondering in reference to this
"mapping from a point in the fixed image to a point in the moving
image": Is this mapped point a point in the moving image in its
original unaltered state, or is the mapped point a point in the moving image in a
state that has had the bulk affine transform applied to it, or is the
mapped point a point in the moving image in a state that has had the
bulk affine transform and deformation applied to it?</b></i><br><br>CODE SNIPPET BELOW:<br>// Generate the explicit deformation field resulting from the registration.<br> if( argc > 6 )<br> {<br><br> typedef itk::Vector< float, ImageDimension > VectorType;<br>
typedef itk::Image< VectorType, ImageDimension > DeformationFieldType;<br><br> DeformationFieldType::Pointer field = DeformationFieldType::New();<br> field->SetRegions( fixedRegion );<br> field->SetOrigin( fixedImage->GetOrigin() );<br>
field->SetSpacing( fixedImage->GetSpacing() );<br> field->SetDirection( fixedImage->GetDirection() );<br> field->Allocate();<br><br> typedef itk::ImageRegionIterator< DeformationFieldType > FieldIterator;<br>
FieldIterator fi( field, fixedRegion );<br><br> fi.GoToBegin();<br><br> TransformType::InputPointType fixedPoint;<br> TransformType::OutputPointType movingPoint;<br> DeformationFieldType::IndexType index;<br>
<br> VectorType displacement;<br><br> while( ! fi.IsAtEnd() )<br> {<br> index = fi.GetIndex();<br> field->TransformIndexToPhysicalPoint( index, fixedPoint );<br> <br> movingPoint = transform->TransformPoint( fixedPoint );<br>
<br> displacement = movingPoint - fixedPoint;<br> fi.Set( displacement );<br> ++fi;<br> }<br><br> //added by jd<br> TransformType::InputPointType fixedPoint2;<br> TransformType::OutputPointType movingPoint2;<br>
<br> //picked a point in right ventricle in atlas (fixed subject)<br> fixedPoint2[0] = 299.6;<br> fixedPoint2[1] = 138.7;<br> fixedPoint2[2] = -104.9;<br><br> movingPoint2 = transform->TransformPoint( fixedPoint2 );<br>
<br> std::cout << "fixedPoint2[0] = " << fixedPoint2[0] << std::endl;<br> std::cout << "fixedPoint2[1] = " << fixedPoint2[1] << std::endl;<br> std::cout << "fixedPoint2[2] = " << fixedPoint2[2] << std::endl << std::endl;<br>
<br> std::cout << "movingPoint2[0] = " << movingPoint2[0] << std::endl;<br> std::cout << "movingPoint2[1] = " << movingPoint2[1] << std::endl;<br> std::cout << "movingPoint2[2] = " << movingPoint2[2] << std::endl;<br>
<br>Thanks,<br><font color="#888888">john<br><br>
</font></blockquote></div><br>