<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt"><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Hi,</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">I'm trying to register one set of DICOM and one Nrrd file.</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">I’ve used the exemple : ImageRegistration8, which use “mha” files.</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">I just want to replace the two mha files by my DICOM serie and my nrrd file.</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">So I replace this part of code :</PRE>
<DIV>typedef itk::ImageFileReader&lt; FixedImageType&nbsp; &gt; 
FixedImageReaderType;</DIV>
<DIV>typedef itk::ImageFileReader&lt; MovingImageType &gt; 
MovingImageReaderType;</DIV>
<DIV>FixedImageReaderType::Pointer&nbsp; fixedImageReader&nbsp; = 
FixedImageReaderType::New();</DIV>
<DIV>MovingImageReaderType::Pointer movingImageReader = 
MovingImageReaderType::New();</DIV>
<DIV>fixedImageReader-&gt;SetFileName(&nbsp; argv[1] );</DIV>
<DIV>movingImageReader-&gt;SetFileName( argv[2] );</DIV>
<DIV>registration-&gt;SetFixedImage(&nbsp;&nbsp;&nbsp; 
fixedImageReader-&gt;GetOutput()&nbsp;&nbsp;&nbsp; );</DIV>
<DIV>registration-&gt;SetMovingImage(&nbsp;&nbsp; 
movingImageReader-&gt;GetOutput()&nbsp;&nbsp; );</DIV>
<DIV>fixedImageReader-&gt;Update();</DIV>
<DIV>registration-&gt;SetFixedImageRegion(</DIV>
<DIV>&nbsp;&nbsp; fixedImageReader-&gt;GetOutput()-&gt;GetBufferedRegion() 
);</DIV><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">By this (loading) part :</PRE><PRE style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;</PRE>
<DIV>&nbsp;&nbsp;&nbsp; typedef itk::ImageSeriesReader&lt; FixedImageType &gt; 
FixedImageReaderType;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileReader&lt; MovingImageType &gt; 
MovingImageReaderType;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; FixedImageReaderType::Pointer&nbsp; 
fixedImageReader&nbsp; = FixedImageReaderType::New();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; MovingImageReaderType::Pointer movingImageReader = 
MovingImageReaderType::New();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; </DIV>
<DIV>/*&nbsp;&nbsp;&nbsp; fixedImageReader-&gt;SetFileName(&nbsp; argv[1] 
);</DIV>
<DIV>&nbsp;&nbsp;&nbsp; movingImageReader-&gt;SetFileName( argv[2] );*/</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; registration-&gt;SetFixedImage(&nbsp;&nbsp;&nbsp; 
fixedImageReader-&gt;GetOutput()&nbsp;&nbsp;&nbsp; );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; registration-&gt;SetMovingImage(&nbsp;&nbsp; 
movingImageReader-&gt;GetOutput()&nbsp;&nbsp; );</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // lecture première image (DICOM)</DIV>
<DIV>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Le fichier " &lt;&lt; argv[1] 
&lt;&lt; " est une serie de DICOM " &lt;&lt; std::endl;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; typedef itk::GDCMImageIO ImageIOType; // une image 
DICOM</DIV>
<DIV>&nbsp;&nbsp;&nbsp; typedef itk::GDCMSeriesFileNames 
InputNamesGeneratorType;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // DICOM LOADING</DIV>
<DIV>&nbsp;&nbsp;&nbsp; ImageIOType::Pointer gdcmIO = ImageIOType::New();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on crée le générateur de noms de fichier</DIV>
<DIV>&nbsp;&nbsp;&nbsp; InputNamesGeneratorType::Pointer namesGenerator = 
InputNamesGeneratorType::New();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on indique au générateur de nom le dossier 
d'entrée</DIV>
<DIV>&nbsp;&nbsp;&nbsp; namesGenerator-&gt;SetInputDirectory( argv[1] );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on récupère à présent la liste des fichiers à 
lire</DIV>
<DIV>&nbsp;&nbsp;&nbsp; const FixedImageReaderType::FileNamesContainer &amp; 
filenames =</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
namesGenerator-&gt;GetInputFileNames();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on lui indique que ce sont des DICOM</DIV>
<DIV>&nbsp;&nbsp;&nbsp; fixedImageReader-&gt;SetImageIO( gdcmIO );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on lui fournit la liste des fichiers à charger</DIV>
<DIV>&nbsp;&nbsp;&nbsp; fixedImageReader-&gt;SetFileNames( filenames );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; try</DIV>
<DIV>&nbsp;&nbsp;&nbsp; {// on lance le processus de lecture</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
fixedImageReader-&gt;Update();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;excp)</DIV>
<DIV>&nbsp;&nbsp;&nbsp; {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Exception 
thrown while reading the series" &lt;&lt; std::endl;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; excp &lt;&lt; 
std::endl;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "The input 
series in directory " &lt;&lt; argv[1]</DIV>
<DIV>&nbsp;&nbsp;&nbsp; &lt;&lt; " has " &lt;&lt; 
fixedImageReader-&gt;GetFileNames().size() &lt;&lt; " files "</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; " of size " &lt;&lt; 
fixedImageReader-&gt;GetOutput()-&gt;GetBufferedRegion().GetSize()</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; std::endl;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // lecture deuxieme image (nrrd)</DIV>
<DIV>&nbsp;&nbsp;&nbsp; typedef itk::NrrdImageIO nrrdType; // une image 
nrrd</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Le fichier&nbsp; " &lt;&lt;&nbsp; 
argv[2]&nbsp; &lt;&lt; " est un nrrd" &lt;&lt; std::endl;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //&nbsp; nrrd LOADING</DIV>
<DIV>&nbsp;&nbsp;&nbsp; nrrdType::Pointer nrrdIO = nrrdType::New();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on lui indique que ce sont des nrrd</DIV>
<DIV>&nbsp;&nbsp;&nbsp; movingImageReader-&gt;SetImageIO( nrrdIO );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // on lui fournit la liste des fichiers à charger</DIV>
<DIV>&nbsp;&nbsp;&nbsp; movingImageReader-&gt;SetFileName(&nbsp; argv[2]&nbsp; 
);</DIV>
<DIV>&nbsp;&nbsp;&nbsp; try</DIV>
<DIV>&nbsp;&nbsp;&nbsp; {// on lance le processus de lecture</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
movingImageReader-&gt;Update();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;excp)</DIV>
<DIV>&nbsp;&nbsp;&nbsp; {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Exception 
thrown while reading the series" &lt;&lt; std::endl;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; excp &lt;&lt; 
std::endl;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; fixedImageReader-&gt;Update();</DIV>
<DIV>&nbsp;&nbsp;&nbsp; registration-&gt;SetFixedImageRegion(</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
fixedImageReader-&gt;GetOutput()-&gt;GetBufferedRegion() );</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>//////////////////////////// end of loading</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face="Courier New">when I use these loading I had a bad alloc error 
at calling “update()” methode of the registration...</FONT></DIV>
<DIV><FONT face="Courier New">when I try to register the nrrd on the other same 
nrrd, I’ve no problem : the soft do one iteration and stop with error = 
0.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">So the problem seem to come from the 
DICOM...</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">I join you my code,</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">Regards,</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">Guilhem</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></DIV></DIV></BODY></HTML>