[ITK Community] [Insight-users] Jacobian of an affine transform
francois rousseau
rousseau at unistra.fr
Fri Jan 24 05:36:34 EST 2014
Hi Luis,
Here is the protocol I used :
1- a test image (a sphere) : https://dl.dropboxusercontent.com/u/38120688/debugJacobian/sphere30.nii.gz
2- an affine file : https://dl.dropboxusercontent.com/u/38120688/debugJacobian/scale2.txt
#Insight Transform File V1.0
#Transform 0
Transform: MatrixOffsetTransformBase_double_3_3
Parameters: 2 0 0 0 1 0 0 0 1 0 0 0
FixedParameters: 22.6774 -12.4914 6.04305
3 - create a deformation field from this affine file using ANTS programs :
ComposeMultiTransform 3 scale2.nii.gz -R sphere30.nii.gz scale2.txt
link to the file : https://dl.dropboxusercontent.com/u/38120688/debugJacobian/scale2.nii.gz
4- code for jacobian computing : https://dl.dropboxusercontent.com/u/38120688/debugJacobian/debugJacobian.cxx
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkDisplacementFieldTransform.h"
#include "itkDisplacementFieldJacobianDeterminantFilter.h"
int main(int argc, char * argv[])
{
const unsigned int Dimension = 3;
typedef itk::Image<float, Dimension> itkFloatImage;
typedef itk::DisplacementFieldTransform< float,Dimension>::DisplacementFieldType itkDeformationField;
//Read the deformation field
typedef itk::ImageFileReader< itkDeformationField > itkDeformationFieldReader;
itkDeformationFieldReader::Pointer reader = itkDeformationFieldReader::New();
reader->SetFileName( argv[1] );
reader->Update();
//Compute Jacobian
typedef itk::DisplacementFieldJacobianDeterminantFilter< itkDeformationField, float, itkFloatImage> itkFilterType;
itkFilterType::Pointer filter = itkFilterType::New();
filter->SetInput( reader->GetOutput() );
filter->Update();
//Write the result
typedef itk::ImageFileWriter< itkFloatImage > itkImageWriter;
itkImageWriter::Pointer writer = itkImageWriter::New();
writer->SetFileName( argv[2] );
writer->SetInput( filter->GetOutput() );
writer->Update();
return EXIT_SUCCESS;
}
This code is compiled using ITK 4.3.1, gcc 4.7, under MacOS 10.9.1 (CMakeList : https://dl.dropboxusercontent.com/u/38120688/debugJacobian/CMakeLists.txt)
Merci d’avance,
François
On 23 Jan 2014, at 15:14, Luis Ibanez <luis.ibanez at kitware.com> wrote:
> Hi François
>
>
> On Wed, Jan 22, 2014 at 3:31 AM, francois rousseau <rousseau at unistra.fr> wrote:
> Hi there,
>
> I’m trying to check itkDisplacementFieldJacobianDeterminantFilter for affine transform and I get weird results.
>
> Basically, I’ve created a simple affine transform with a scale factor in x dimension :
>
> #Insight Transform File V1.0
> #Transform 0
> Transform: MatrixOffsetTransformBase_double_3_3
> Parameters: 1.5 0 0 0 1 0 0 0 1 0 0 0
> FixedParameters: 22.6774 -12.4914 6.04305
>
> I’ve converted this affine file to a deformation field using ComposeMultiTransform (from ANTS). The field is correct so far.
>
> Then, I computed the jacobian of the field using itkDisplacementFieldJacobianDeterminantFilter.
> Jacobian is constant and equal to 1.
>
> I would have expected 1.5 or 2/3.
>
> Am I doing something wrong?
>
>
>
>
> Your intuition seems to be correct here.
> It seems reasonable to expected the Jacobian to different from 1.0
>
> Would you mind sharing your code ?
>
> In that way we could give it a quick try at debugging,
> and getting a better sense of what is happening.
>
> Thanks
>
> Luis
>
>
--
François Rousseau
Chargé de recherche CNRS
--------------------------------------------------------------------------------------------------------------------------------
Laboratoire des sciences de l'Ingénieur, de l'Informatique et de l'Imagerie (ICube) UMR 7357
300 Bd Sébastien Brant - CS 10413
F - 67412 ILLKIRCH cedex
tel : +33 3 68 85 44 89
email : rousseau at unistra.fr
http://icube-miv.unistra.fr/fr/index.php/François_Rousseau
--------------------------------------------------------------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140124/505384a3/attachment-0002.html>
-------------- next part --------------
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
More information about the Community
mailing list