<html>
<body>
<br>
Im trying to write the Jacobian determinant of the deformation field
after register two images.<br>
When I write to a file the deformation field seems to be OK. The next
step is to write to a file the deformation field but it returns to be all
zeros. <br>
What can be wrong?<br><br>
--------------------------------------------------------------------------------------------<br>
<br>
<font face="Arial, Helvetica" color="#008000">// Generate the explicit
deformation field resulting from <br>
</font><font face="Arial, Helvetica">&nbsp;
</font><font face="Arial, Helvetica" color="#008000">// the
registration.<br><br>
</font><font face="Arial, Helvetica">&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica"> itk::Vector&lt;
</font><font face="Arial, Helvetica" color="#0000FF">float</font>
<font face="Arial, Helvetica">, ImageDimension &gt;&nbsp;
VectorType;<br>
&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica"> itk::Image&lt; VectorType, ImageDimension
&gt;&nbsp; DeformationFieldType;<br><br>
&nbsp; DeformationFieldType::Pointer field =
DeformationFieldType::New();<br>
&nbsp; field-&gt;SetRegions( fixedRegion );<br>
&nbsp; field-&gt;SetOrigin( fixedImage-&gt;GetOrigin() );<br>
&nbsp; field-&gt;SetSpacing( fixedImage-&gt;GetSpacing() );<br>
&nbsp; field-&gt;Allocate();<br><br>
&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica"> itk::ImageRegionIterator&lt;
DeformationFieldType &gt; FieldIterator;<br>
&nbsp; FieldIterator fi( field, fixedRegion );<br><br>
&nbsp; fi.GoToBegin();<br><br>
&nbsp; TransformType::InputPointType&nbsp; fixedPoint;<br>
&nbsp; TransformType::OutputPointType movingPoint;<br>
&nbsp; DeformationFieldType::IndexType index;<br><br>
&nbsp; VectorType displacement;<br><br>
&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">while</font>
<font face="Arial, Helvetica">( ! fi.IsAtEnd() )<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; index = fi.GetIndex();<br>
&nbsp;&nbsp;&nbsp; field-&gt;TransformIndexToPhysicalPoint( index,
fixedPoint );<br>
&nbsp;&nbsp;&nbsp; movingPoint = finaltransform -&gt;TransformPoint(
fixedPoint );<br>
&nbsp;&nbsp;&nbsp; displacement[0] = movingPoint[0] - fixedPoint[0];<br>
&nbsp;&nbsp;&nbsp; displacement[1] = movingPoint[1] - fixedPoint[1];<br>
&nbsp;&nbsp;&nbsp; fi.Set( displacement );<br>
&nbsp;&nbsp;&nbsp; ++fi;<br>
&nbsp;&nbsp;&nbsp; }<br><br>
<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">if</font>
<font face="Arial, Helvetica">( argc &gt;= 12)<br>
&nbsp;&nbsp;&nbsp; {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>std::cout
&lt;&lt;
</font><font face="Arial, Helvetica" color="#800000">&quot;Writing
Deformation Field to file&quot;</font><font face="Arial, Helvetica">
&lt;&lt; std::endl; <br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica"> itk::ImageFileWriter&lt;
DeformationFieldType &gt;&nbsp; FieldWriterType;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
FieldWriterType::Pointer fieldWriter = FieldWriterType::New();<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
fieldWriter-&gt;SetInput( field );<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">if</font>
<font face="Arial, Helvetica">( argc &gt;= 12)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
fieldWriter-&gt;SetFileName( DeformationFieldFile );<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">try<br>
</font><font face="Arial, Helvetica"><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
fieldWriter-&gt;Update();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">catch</font>
<font face="Arial, Helvetica">( itk::ExceptionObject &amp; excp )<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; std::cerr
&lt;&lt;
</font><font face="Arial, Helvetica" color="#800000">&quot;Exception
thrown &quot;</font><font face="Arial, Helvetica"> &lt;&lt;
std::endl;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; std::cerr
&lt;&lt; excp &lt;&lt; std::endl;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">return</font>
<font face="Arial, Helvetica"> EXIT_FAILURE;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}<br><br>
</font><font face="Arial, Helvetica" color="#008000">
//-----------------------------------------------------------------------------------------------------------<br>
</font><font face="Arial, Helvetica">&nbsp;</font>
<font face="Arial, Helvetica" color="#008000">// Calculate the Jacobian
Determinant of the deformation field <br>
</font><font face="Arial, Helvetica">&nbsp;
</font><font face="Arial, Helvetica" color="#008000">// <br>
</font><font face="Arial, Helvetica"><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>std::cout
&lt;&lt;
</font><font face="Arial, Helvetica" color="#800000">&quot;Calculating
Jacobian Determinant&quot;</font><font face="Arial, Helvetica"> &lt;&lt;
std::endl; <br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica">
itk::DeformationFieldJacobianDeterminantFilter&lt; DeformationFieldType
&gt;&nbsp; JacobianDeterminantFilterType;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
JacobianDeterminantFilterType::Pointer JacobianDeterminantFilter =
JacobianDeterminantFilterType::New();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#008000">//derivatives in the image
scaled with pixel size (derivative in world coordinates)<br>
</font><font face="Arial, Helvetica"><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
JacobianDeterminantFilter-&gt;SetUseImageSpacingOn();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
JacobianDeterminantFilter-&gt;SetInput( field );<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>std::cout
&lt;&lt;
</font><font face="Arial, Helvetica" color="#800000">&quot;Writing
Jacobian Determinant to file&quot;</font><font face="Arial, Helvetica">
&lt;&lt; std::endl; <br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica">
JacobianDeterminantFilterType::OutputImageType JacobianImageType;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">typedef</font>
<font face="Arial, Helvetica"> itk::ImageFileWriter&lt; JacobianImageType
&gt;&nbsp; JacobianWriterType;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
JacobianWriterType::Pointer JacobianWriter =
JacobianWriterType::New();<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
JacobianWriter-&gt;SetInput(
JacobianDeterminantFilter-&gt;GetOutput());<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">if</font>
<font face="Arial, Helvetica">( argc &gt;= 13)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
JacobianWriter-&gt;SetFileName( JacobianFile );<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">try<br>
</font><font face="Arial, Helvetica"><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
JacobianWriter-&gt;Update();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab></font>
<font face="Arial, Helvetica" color="#0000FF">catch</font>
<font face="Arial, Helvetica">( itk::ExceptionObject &amp; excp )<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; std::cerr
&lt;&lt;
</font><font face="Arial, Helvetica" color="#800000">&quot;Exception
thrown &quot;</font><font face="Arial, Helvetica"> &lt;&lt;
std::endl;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; std::cerr
&lt;&lt; excp &lt;&lt; std::endl;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">return</font>
<font face="Arial, Helvetica"> EXIT_FAILURE;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}</font></body>
</html>