Hi,<br><br>I want to wrap a moving image according to several known landmarks. I know that I can use one of the Kernel transforms to calculate&nbsp; a deformation field point by point and than use a WarpImageFilter to wrap my image.<br>
<br>something like this (many lines were skipped):<br><br>&nbsp; kernelTransform-&gt;SetSourceLandmarks( inputPointSet1 );<br>&nbsp; kernelTransform-&gt;SetTargetLandmarks( inputPointSet2 );<br>&nbsp; kernelTransform-&gt;ComputeWMatrix();<br>
<br><br>&nbsp; deformationField-&gt;Allocate();<br>&nbsp; DeformationFieldIteratorType iterator(<br>&nbsp; deformationField, deformationField-&gt;GetLargestPossibleRegion() );<br>&nbsp; iterator.GoToBegin();<br><br>&nbsp; while ( !iterator.IsAtEnd() )&nbsp; <br>
&nbsp; {<br>&nbsp;&nbsp;&nbsp; PointType pointin;<br>&nbsp;&nbsp;&nbsp; const IndexType &amp; index = iterator.GetIndex();<br>&nbsp;&nbsp;&nbsp; deformationField-&gt;TransformIndexToPhysicalPoint( index, pointin);<br>&nbsp;&nbsp;&nbsp; PointType pointout = kernelTransform-&gt;TransformPoint( pointin );<br>
&nbsp;&nbsp;&nbsp; DeformationVectorType vec = pointout - pointin;<br>&nbsp;&nbsp;&nbsp; iterator.Set( vec );<br>&nbsp;&nbsp;&nbsp; ++iterator;<br>&nbsp; }<br><br>&nbsp; typedef itk::WarpImageFilter&lt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MovingImageType, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MovingImageType,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeformationFieldType&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; WarperType;<br><br>&nbsp; WarperType::Pointer warper = WarperType::New();<br>&nbsp; warper-&gt;SetInput( ImageReader-&gt;GetOutput() );<br>&nbsp; warper-&gt;SetDeformationField( deformationField );<br>
<br>&nbsp; WriterType::Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer =&nbsp; WriterType::New();<br>&nbsp; writer-&gt;SetInput( warper-&gt;GetOutput()&nbsp;&nbsp; );<br>&nbsp; writer-&gt;Update();<br><br><br><br>Nevertheless, I believe that there should be a straightforward way. Any suggestions?<br>
<br>Thanks,<br>Yoav.<br>