[ITK] [ITK-users] Resampling and manual image
Guillaume Lemaître
g.lemaitre58 at gmail.com
Tue Apr 22 14:43:37 EDT 2014
Hi all,
I would like to have some advise to do the following task.
I have a set of annotated DICOM (binary 0 - 255 intensity) with a given
spacing, orientation and position. This manual segmentation is
corresponding to a prostate from an initial T2W sequence.
A part of DICOM, I have an MRSI sequence from Siemens (*.rda) in which the
header is containing information such as position, orientation and spacing
of the csi grid matrix used during the acquisition.
My aim would be to resample the annotated DICOM serie into a new DICOM
serie using the MRSI header. I attached the code that I tried to implement
to do this task but I don't succeed to obtain a correct serie when saving
into a DICOM serie. When opening the stored DICOM serie, it seems that the
field regarding the z spacing and the position of the first voxel are not
equal to the one of the rda manually affected during the resampling.
I was wondering to know the best way to do such manipulation. For instance,
it could be better to create a manual image using the field of the rda file
and just use the intensities
ResampleFilterType::Pointer resampler = ResampleFilterType::New();
resampler->SetInput(inputAnnotatedVolume->GetOutput());
resampler->SetTransform(transform);
resampler->SetInterpolator(interpolator);
// Create a type compatible to ITK
// Define the new origin
double* outputOrigin = new double [rdaPatient.getPositionPatient().size()];
for(int i = 0; i < rdaPatient.getPositionPatient().size(); i++)
outputOrigin[i] = rdaPatient.getPositionPatient()[i];
resampler->SetOutputOrigin(outputOrigin);
// Define the new spacing
double* outputSpacing = new double [rdaPatient.getPixelSpacing().size()];
for(int i = 0; i < rdaPatient.getPixelSpacing().size(); i++)
outputSpacing[i] = rdaPatient.getPixelSpacing()[i];
resampler->SetOutputSpacing(outputSpacing);
// Define the new orientation
typename ResampleFilterType::DirectionType outputDirection;
//double ** outputDirection = new double* [3];
//for(int i = 0; i < 3 ; i++)
// outputDirection[i] = new double [3];
// Affect the new values
outputDirection[0][0] = rdaPatient.getOrientationPatient()[0][0];
outputDirection[0][1] = rdaPatient.getOrientationPatient()[0][1];
outputDirection[0][2] = rdaPatient.getVoiNormalVector()[0];
outputDirection[1][0] = rdaPatient.getOrientationPatient()[1][0];
outputDirection[1][1] = rdaPatient.getOrientationPatient()[1][1];
outputDirection[1][2] = rdaPatient.getVoiNormalVector()[1];
outputDirection[2][0] = rdaPatient.getOrientationPatient()[2][0];
outputDirection[2][1] = rdaPatient.getOrientationPatient()[2][1];
outputDirection[2][2] = rdaPatient.getVoiNormalVector()[2];
resampler->SetOutputDirection(inputAnnotatedVolume->GetOutput()->GetDirection());
// Define the size of the ouput
// Let's comput the new size
InputImageType::SizeType outputSize;
typedef InputImageType::SizeType::SizeValueType SizeValueType;
outputSize[0] =
static_cast<SizeValueType>(rdaPatient.getCsiMatrixSize()[0]);
outputSize[1] =
static_cast<SizeValueType>(rdaPatient.getCsiMatrixSize()[1]);
outputSize[2] =
static_cast<SizeValueType>(rdaPatient.getCsiMatrixSize()[2]);
resampler->SetSize(outputSize);
// Resampling now
resampler->Update();
Thanks in advance for the advices,
--
*LEMAÎTRE GuillaumePhD CandiateMSc Erasmus Mundus ViBOT (Vision-roBOTic)MSc
Business Innovation and Technology Management (in progress)*
g.lemaitre58 at gmail.com
*ViCOROB - Computer Vision and Robotic Team*
Universitat de Girona, Campus Montilivi, Edifici P-IV 17071 Girona
Tel. +34 972 41 98 12 - Fax. +34 972 41 82 59
http://vicorob.udg.es/
*LE2I - Le Creusot*IUT Le Creusot, Laboratoire LE2I, 12 rue de la Fonderie,
71200 Le Creusot
Tel. +33 3 85 73 10 90 - Fax. +33 3 85 73 10 97
http://le2i.cnrs.fr
https://sites.google.com/site/glemaitre58/
Vice - Chairman of A.S.C. Fours UFOLEP
Chairman of A.S.C. Fours FFC
Webmaster of http://ascfours.free.fr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140422/32109145/attachment-0001.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