<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Arial;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Courier New";
        panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">The code snippet looks correct. I would advise that you print the transformations to see that you are getting what you expect. The relevant entries, Matrix, Center, Translation, Offset:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Original transform is:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>T</i>(<b>x</b>)=<i>A</i>(<b>x</b>−<b>c</b>)+<b>t</b>+<b>c</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Where:<o:p></o:p></p>
<p class="MsoNormal"><i>A</i> – matrix<o:p></o:p></p>
<p class="MsoNormal"><b>c</b> – center<o:p></o:p></p>
<p class="MsoNormal"><b>t </b>– translation<o:p></o:p></p>
<p class="MsoNormal"><b><i>t</i></b><i>+<b>c</b> –A</i><b>c</b> – offset<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The inverse should have:<o:p></o:p></p>
<p class="MsoNormal"><i>A</i>^{-1} – matrix<o:p></o:p></p>
<p class="MsoNormal"><b>c</b> – center<o:p></o:p></p>
<p class="MsoNormal">-<i>A</i>^{-1}<b> t </b>– translation<o:p></o:p></p>
<p class="MsoNormal"><b>c</b> - <i>A</i>^{-1}<b> t - </b><i>A</i>^{-1}<b> c</b> - offset<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        hope this helps<o:p></o:p></p>
<p class="MsoNormal">                  Ziv<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">p.s. When working with ITK always remember that you are dealing with physical space, distances are in mm/km…, volumes in mm^3…. Don’t be tempted to measure things in pixels/voxels.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Andrew Harris <aharr8@uwo.ca><br>
<b>Date: </b>Thursday, June 29, 2017 at 1:21 PM<br>
<b>To: </b>"Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]" <zivrafael.yaniv@nih.gov><br>
<b>Cc: </b>Insight-users <insight-users@itk.org><br>
<b>Subject: </b>Re: [ITK-users] [ITK] applying a transform to an ITK Point object results in it moving the opposite direction from the image<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks for getting back to me. Using the inverse transform on the point selected in the moving image works to transform the point within a reasonable amount to the homologous feature selected in the fixed image when I use two identical
 images with a known offset of 100 voxels in each direction.  However, upon testing identical images with a known rotation the selected points again fail to line up.  The transform I have been using is the Rigid3DVersorTransform, and the lines of code I'm using
 to set the inverse are: <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">newTransform->SetCenter(oldTransform->GetCenter());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">oldTransform->GetInverse(newTransform);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Any idea why translation would work but rotation causes a problem?<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p>--<o:p></o:p></p>
<p>AH<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>Andrew Harris, Honours BSc (Medical Physics)<o:p></o:p></p>
<p>PhD (CAMPEP) & MClSc Candidate<o:p></o:p></p>
<p>-----------------------------------------------------------------------------------------------<o:p></o:p></p>
<p><i>This email and any attachments thereto may contain private, confidential, and privileged materials for the sole use of the intended recipient. Any reviewing, copying, or distribution of this email (or any attachments thereto) by other than the intended
 recipient is strictly prohibited. If you are not the intended recipient, please contact the sender immediately and permanently destroy this email and any attachments thereto.</i><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jun 28, 2017 at 4:50 PM, Yaniv, Ziv Rafael (NIH/NLM/LHC) [C] <<a href="mailto:zivrafael.yaniv@nih.gov" target="_blank">zivrafael.yaniv@nih.gov</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hello Andrew,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">In ITK the result of a registration maps points from the fixed image coordinate system to the moving coordinate system, so T(p_f) = p_m and the TRE is || T(p_f) – p_m||. I suspect
 you just need to use the inverse transform.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">You may be interested in this SimpleITK notebook (<a href="http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/Python_html/67_Registration_Semiautomatic_Homework.html)" target="_blank">http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/Python_html/67_Registration_Semiautomatic_Homework.html)</a>
 which has a linked cursor GUI (gui.<span style="font-size:10.0pt;font-family:"Courier New",serif">
</span>RegistrationPointDataAquisition). The source code for the UI is here: <a href="https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks/blob/master/Python/gui.py" target="_blank">
https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks/blob/master/Python/gui.py</a> .
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">      hope this helps<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">             Ziv<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Andrew Harris <<a href="mailto:aharr8@uwo.ca" target="_blank">aharr8@uwo.ca</a>><br>
<b>Date: </b>Wednesday, June 28, 2017 at 3:14 PM<br>
<b>To: </b>Insight-users <<a href="mailto:insight-users@itk.org" target="_blank">insight-users@itk.org</a>><br>
<b>Subject: </b>[ITK-users] [ITK] applying a transform to an ITK Point object results in it moving the opposite direction from the image</span><o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi there,
<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I have been trying for a while to get this working: I want to be able to select corresponding points in a fixed and moving image, and determine how well the moving image is transformed
 to overlay the fixed image by using target registration error.  The problem is, using the same transform I applied to a moving image that translated it to the left, the point selected in the moving image gets translated to the right for example.  <br clear="all">
<o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p>--<o:p></o:p></p>
<p>AH<o:p></o:p></p>
<p> <o:p></o:p></p>
<p>Andrew Harris, Honours BSc (Medical Physics)<o:p></o:p></p>
<p>PhD (CAMPEP) & MClSc Candidate<o:p></o:p></p>
<p>-----------------------------------------------------------------------------------------------<o:p></o:p></p>
<p><i>This email and any attachments thereto may contain private, confidential, and privileged materials for the sole use of the intended recipient. Any reviewing, copying, or distribution of this email (or any attachments thereto) by other than the intended
 recipient is strictly prohibited. If you are not the intended recipient, please contact the sender immediately and permanently destroy this email and any attachments thereto.</i><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>