<div dir="ltr"><div><div>First of all, thanks a lot for your answer and sorry I couldn't solve the problem on my own. I have been fighting for a while with this but so far I have not had much success. At least I am now a bit more aware of how many things I don't know.<br>

</div><br></div>First of all, I realise what I want to do boils down to :<br><br>typename CompositeTransformType::Pointer compositeTransform = CompositeTransformType::New();<br>compositeTransform->AddTransform( deffield);<br>

compositeTransform->TransformPoint( p0 );<br><div><br></div><div>The problem now is that <u>my deformation field is not recognised as a valid transformation</u>.<br><br></div><div>My deformation field which is the output of demons registration and it is stored in a file in mha format. I read it like this (as a vector image as used to be done in itk3):<br>

<br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"> typedef float      PixelType;<br> typedef   float VectorComponentType;<br><br>  const   unsigned int        Dimension = 3;<br>

<br> typedef itk::Vector< PixelType, Dimension  > VectorPixelType;<br> typedef itk::Image< VectorPixelType, Dimension > DeformationFieldType;<br> typedef itk::ImageFileReader< DeformationFieldType > ReaderType;<br>

<br> ReaderType::Pointer reader = ReaderType::New();<br> reader->SetFileName(argv[1]);<br> reader->Update();<br> DeformationFieldType::Pointer deffield = reader->GetOutput();<br></blockquote></div><div><br></div>

<div><br></div><div>When I try to add it to the composite transform, however, I get the error:<br><br>/media/disc4/code/newTransformPoints.cxx:112:47: error: no matching function for call to ‘itk::CompositeTransform<float, 3u>::AddTransform(itk::Image<itk::Vector<float, 3u>, 3u>::Pointer&)’<br>

/media/disc4/code/newTransformPoints.cxx:112:47: note: candidate is:<br>/usr/local/include/ITK-4.4/itkMultiTransform.h:145:16: note: void itk::MultiTransform<TScalar, NDimensions, NSubDimensions>::AddTransform(itk::MultiTransform<TScalar, NDimensions, NSubDimensions>::TransformType*) [with TScalar = float, unsigned int NDimensions = 3u, unsigned int NSubDimensions = 3u, itk::MultiTransform<TScalar, NDimensions, NSubDimensions>::TransformType = itk::Transform<float, 3u, 3u>]<br>

/usr/local/include/ITK-4.4/itkMultiTransform.h:145:16: note:   no known conversion for argument 1 from ‘itk::Image<itk::Vector<float, 3u>, 3u>::Pointer {aka itk::SmartPointer<itk::Image<itk::Vector<float, 3u>, 3u> >}’ to ‘itk::MultiTransform<float, 3u, 3u>::TransformType* {aka itk::Transform<float, 3u, 3u>*}’<br>

<br><br></div><div>From what I understand, instead of reading my deformation field as a vector image, I should probably be using the itk4 "displacementfieldtransform". <br></div><div><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">

typedef itk::DisplacementFieldTransform<VectorComponentType, 3>  DeformationFieldTransformType;<br></blockquote><br></div><div>My main problem now is that I cannot seem to "connect" my mha file containing the deformation field with the displacementFieldTransformType. I probably need some type of basic "read DisplacementFieldTransform from file" function, but so far I have not been able to make one.<br>

<br></div><div>Any ideas that might help? I realise that the bigger problem here is my own lack of knowledge on the details of itk4, so please do not hesitate to point me to as basic a source as necessary.<br></div><div>
Gratefully<br></div><div>
Yago Diez Donoso<br></div><div><br></div><div><br></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr">Yago Diez Donoso (PhD)<br>Computer Vision and Robotics Group <a href="http://vicorob.udg.es/" target="_blank">http://vicorob.udg.es/</a><br>

E-mail: <a href="mailto:yago@eia.udg.es" target="_blank">yago@eia.udg.es</a>; <a href="mailto:yagodiezdonoso@gmail.com" target="_blank">yagodiezdonoso@gmail.com</a><br>Phone: (int. code) 34 972418013<br>University of Girona </div>

</div>
<br><br><div class="gmail_quote">On Wed, Dec 4, 2013 at 8:48 PM, brian avants <span dir="ltr"><<a href="mailto:stnava@gmail.com" target="_blank">stnava@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">see line 142 here:<div><br></div><div><a href="https://github.com/stnava/ANTs/blob/d99d9c9e23ae17c116377a248cd370ddbd8c2599/Examples/antsApplyTransformsToPoints.cxx" target="_blank">https://github.com/stnava/ANTs/blob/d99d9c9e23ae17c116377a248cd370ddbd8c2599/Examples/antsApplyTransformsToPoints.cxx</a><br>



</div><div><br></div><div>you can do the same thing in your application but note that the deformation field , when applied to a point , should be the inverse of the deformation field applied to an image</div><div><br></div>



<div>see my previous email regarding SyN and inverse warps.</div></div><div class="gmail_extra"><br clear="all"><div><div><br></div>brian<br><div><br></div><div><br></div></div>
<br><br><div class="gmail_quote"><div><div>On Wed, Dec 4, 2013 at 2:33 PM, Yago Diez <span dir="ltr"><<a href="mailto:yagodiezdonoso@gmail.com" target="_blank">yagodiezdonoso@gmail.com</a>></span> wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>

<div dir="ltr"><div><div><div><div>Hi everyone,<br><br></div>I have a problem regarding itk deformation fields:<br><br></div>Specifically, I want to know where a particular point ends up after registration. Said registration has produced a deformation field. I have already used this deformation field to deform the source image and produce the output image for registration (this was done using itkWarpImageFilter). <br>




<br></div>My problem is that at this moment I only want to transform one point. The obvious solution was to read the corresponding voxel in the deformation field and add it to the point, but the problem is that the deformation field is not "dense enough", so in most cases, the read deformation for a point ends up being zero (see attached image for a screen capture of a 2D slice of my 3D deformation field).<br>




<br> I have noticed how when I deform an image with itkWarpImageFilter, there is an "extra" interpolation step which would avoid the problem I am having, but so far I have not been able to interpolate a deformation field. Any ideas on how to do that?<br>




<br></div>Thank you<br><div><br><br><div><div><div><div><br><br clear="all"><div><div dir="ltr">Yago Diez Donoso (PhD)<br>Computer Vision and Robotics Group <a href="http://vicorob.udg.es/" target="_blank">http://vicorob.udg.es/</a><br>




E-mail: <a href="mailto:yago@eia.udg.es" target="_blank">yago@eia.udg.es</a>; <a href="mailto:yagodiezdonoso@gmail.com" target="_blank">yagodiezdonoso@gmail.com</a><br>Phone: (int. code) 34 972418013<br>University of Girona </div>




</div>
</div></div></div></div></div></div>
<br></div></div>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div></div>