[prev in list] [next in list] [prev in thread] [next in thread] 

List:       insight-users
Subject:    [Insight-users] problem setting a schedule for multi resolution
From:       Isabelle Renaud <isabelle () hermesmedical ! com>
Date:       2011-11-25 19:06:30
Message-ID: 027C3672B8D651478D407B2ACA59AD6E246585EA7D () hmsex7
[Download RAW message or body]

Hi all,

I am trying to define a particular schedule for a multi-resolution registration.

I have 2 data: the fixed image is a CT of 512x512x47
                            The moving image is a PET of 128x128x47

I want to bring both data at same resolution at coarsest level of registration and I \
don' want to use data smaller that 32x32.  So that, I will have 5 levels: Ct would be \
32x32x47  64x64x47
                      128x128x47
                      256x256x47
                      512x512x47

And Pet will be 32x32x47
                                64x64x47
                              128x128x47
128x128x47
128x128x47


Here is an  extract of my code:
  int fixedImageNumberOfLevels = 5;
  int movingImageNumberOfLevels = 3;
  int numberOfLevels = qMax(fixedImageNumberOfLevels, movingImageNumberOfLevels);
  registration_->SetNumberOfLevels(numberOfLevels);

  RegistrationType::ScheduleType  fixedImageSchedule = \
registration_->GetFixedImagePyramid()->GetSchedule();  unsigned int shrinkFactor = 1 \
<< (fixedImageNumberOfLevels - 1);  fixedImageSchedule[0][0] = shrinkFactor;
  fixedImageSchedule[0][1] = shrinkFactor;
  fixedImageSchedule[0][2] = 1;
  for (int level = 1; level < numberOfLevels; level++){
    fixedImageSchedule[level][0] = 2 * fixedImageSchedule[level-1][0];
    fixedImageSchedule[level][1] = 2 * fixedImageSchedule[level-1][1];
    fixedImageSchedule[level][2] = 1;
  }
  registration_->GetFixedImagePyramid()->SetSchedule(fixedImageSchedule);

  RegistrationType::ScheduleType  movingImageSchedule= \
registration_->GetMovingImagePyramid()->GetSchedule();  shrinkFactor = 1 << \
(movingImageNumberOfLevels - 1);  movingImageSchedule[0][0] = shrinkFactor;
  movingImageSchedule[0][1] = shrinkFactor;
  movingImageSchedule[0][2] = 1;
  for (int level = 1; level < numberOfLevels; level++){
    movingImageSchedule[level][0] = 2 * movingImageSchedule[level-1][0];
    movingImageSchedule[level][1] = 2 * movingImageSchedule[level-1][1];
    movingImageSchedule[level][2] = 1;
  }
  registration_->GetFixedImagePyramid()->SetSchedule(movingImageSchedule);


As printing the info during registration, I find out that:
Numer of levels = 1
FixedImagePyramidSchedule is empty, same for MovingImagePyramid
And fixed image region is of size
Level 0: 64x64x47
Level 1:128x128x47


I tried also, SetStartingShrinkSchedule, which I found very convenient but it didn't \
work. I also tried SetSchedules(fixedImageSchedule,  movingImageSchedule), no chance \
either. What am I doing true?

Please, help.
Regards,
Isabelle


[Attachment #3 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
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=us-ascii"><meta name=Generator content="Microsoft Word 14 \
(filtered medium)"><style><!-- /* Font Definitions */
@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:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
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;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-CA link=blue vlink=purple><div \
class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I am trying to define a \
particular schedule for a multi-resolution registration. <o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I have 2 data: the fixed \
image is a CT of 512x512x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs \
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;The moving image is a PET of 128x128x47<o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I want to bring both data at \
same resolution at coarsest level of registration and I don&#8217; want to use data \
smaller that 32x32.&nbsp; So that, I will have 5 levels:<o:p></o:p></p><p \
class=MsoNormal>Ct would be 32x32x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
64x64x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;128x128x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;256x256x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;512x512x47<o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>And Pet will be \
32x32x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64x64x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs \
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
128x128x47<o:p></o:p></p><p class=MsoNormal \
style='margin-left:36.0pt;text-indent:36.0pt'>128x128x47<o:p></o:p></p><p \
class=MsoNormal style='margin-left:36.0pt;text-indent:36.0pt'>128x128x47<o:p></o:p></p><p \
class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Here is \
an&nbsp; extract of my code:<o:p></o:p></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New";color:blue'>&nbsp; int</span><span style='font-size:12.0pt;font-family:"Courier \
New"'> <span style='color:#010001'>fixedImageNumberOfLevels</span> = <span \
style='color:#010001'>5</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:blue'>int</span> <span \
style='color:#010001'>movingImageNumberOfLevels</span> = <span \
style='color:#010001'>3</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:blue'>int</span> <span \
style='color:#010001'>numberOfLevels</span> = <span \
style='color:#010001'>qMax</span>(<span \
style='color:#010001'>fixedImageNumberOfLevels</span>, <span \
style='color:#010001'>movingImageNumberOfLevels</span>);<o:p></o:p></span></p><p \
class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:#010001'>registration_</span>-&gt;<span \
style='color:#010001'>SetNumberOfLevels</span>(<span \
style='color:#010001'>numberOfLevels</span>);&nbsp;&nbsp;&nbsp; \
<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;<span style='color:#010001'>RegistrationType</span>::<span \
style='color:#010001'>ScheduleType</span>&nbsp; <span \
style='color:#010001'>fixedImageSchedule</span> = <span \
style='color:#010001'>registration_</span>-&gt;<span \
style='color:#010001'>GetFixedImagePyramid</span>()-&gt;<span \
style='color:#010001'>GetSchedule</span>();<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:blue'>unsigned</span> <span \
style='color:blue'>int</span> <span style='color:#010001'>shrinkFactor</span> = 1 \
&lt;&lt; (<span style='color:#010001'>fixedImageNumberOfLevels</span> - \
1);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:#010001'>fixedImageSchedule</span>[0][0] = <span \
style='color:#010001'>shrinkFactor</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>fixedImageSchedule</span>[0][1] = <span \
style='color:#010001'>shrinkFactor</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>fixedImageSchedule</span>[0][2] = \
1;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:blue'>for</span> (<span style='color:blue'>int</span> <span \
style='color:#010001'>level</span> = 1; <span style='color:#010001'>level</span> &lt; \
<span style='color:#010001'>numberOfLevels</span>; <span \
style='color:#010001'>level</span>++){<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>fixedImageSchedule</span>[<span \
style='color:#010001'>level</span>][0] = 2 * <span \
style='color:#010001'>fixedImageSchedule</span>[<span \
style='color:#010001'>level</span>-1][0];<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>fixedImageSchedule</span>[<span \
style='color:#010001'>level</span>][1] = 2 * <span \
style='color:#010001'>fixedImageSchedule</span>[<span \
style='color:#010001'>level</span>-1][1];<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>fixedImageSchedule</span>[<span \
style='color:#010001'>level</span>][2] = 1;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; }<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>registration_</span>-&gt;<span \
style='color:#010001'>GetFixedImagePyramid</span>()-&gt;<span \
style='color:#010001'>SetSchedule</span>(<span \
style='color:#010001'>fixedImageSchedule</span>);<o:p></o:p></span></p><p \
class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p \
class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:#010001'>RegistrationType</span>::<span \
style='color:#010001'>ScheduleType</span>&nbsp; <span \
style='color:#010001'>movingImageSchedule</span>= <span \
style='color:#010001'>registration_</span>-&gt;<span \
style='color:#010001'>GetMovingImagePyramid</span>()-&gt;<span \
style='color:#010001'>GetSchedule</span>();<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>shrinkFactor</span> = 1 &lt;&lt; (<span \
style='color:#010001'>movingImageNumberOfLevels</span> - 1);<o:p></o:p></span></p><p \
class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:#010001'>movingImageSchedule</span>[0][0] = <span \
style='color:#010001'>shrinkFactor</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>movingImageSchedule</span>[0][1] = <span \
style='color:#010001'>shrinkFactor</span>;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>movingImageSchedule</span>[0][2] = \
1;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span \
style='font-size:12.0pt;font-family:"Courier New"'>&nbsp; <span \
style='color:blue'>for</span> (<span style='color:blue'>int</span> <span \
style='color:#010001'>level</span> = 1; <span style='color:#010001'>level</span> &lt; \
<span style='color:#010001'>numberOfLevels</span>; <span \
style='color:#010001'>level</span>++){<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>movingImageSchedule</span>[<span \
style='color:#010001'>level</span>][0] = 2 * <span \
style='color:#010001'>movingImageSchedule</span>[<span \
style='color:#010001'>level</span>-1][0];<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>movingImageSchedule</span>[<span \
style='color:#010001'>level</span>][1] = 2 * <span \
style='color:#010001'>movingImageSchedule</span>[<span \
style='color:#010001'>level</span>-1][1];<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp;&nbsp;&nbsp; <span style='color:#010001'>movingImageSchedule</span>[<span \
style='color:#010001'>level</span>][2] = 1;<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; }<o:p></o:p></span></p><p class=MsoNormal \
style='text-autospace:none'><span style='font-size:12.0pt;font-family:"Courier \
New"'>&nbsp; <span style='color:#010001'>registration_</span>-&gt;<span \
style='color:#010001'>GetFixedImagePyramid</span>()-&gt;<span \
style='color:#010001'>SetSchedule</span>(<span \
style='color:#010001'>movingImageSchedule</span>);<o:p></o:p></span></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p \
class=MsoNormal>As printing the info during registration, I find out that: \
<o:p></o:p></p><p class=MsoNormal>Numer of levels = 1<o:p></o:p></p><p \
class=MsoNormal>FixedImagePyramidSchedule is empty, same for \
MovingImagePyramid<o:p></o:p></p><p class=MsoNormal>And fixed image region is of \
size<o:p></o:p></p><p class=MsoNormal>Level 0: 64x64x47<o:p></o:p></p><p \
class=MsoNormal>Level 1:128x128x47<o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p \
class=MsoNormal>I tried also, SetStartingShrinkSchedule, which I found very \
convenient but it didn&#8217;t work. I also tried SetSchedules(fixedImageSchedule, \
&nbsp;movingImageSchedule), no chance either. What am I doing true?<o:p></o:p></p><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Please, \
help.<o:p></o:p></p><p class=MsoNormal>Regards,<o:p></o:p></p><p \
class=MsoNormal>Isabelle<o:p></o:p></p></div></body></html>



_____________________________________
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.html

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

--===============0630346697==--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic