<br>Dear Luis,<br><br>I have solved the problem by extending imageRegistration12 to 3 dimensions and changing the<br>registration method and optimizer references to Versor3D.<br><br>cheers,<br><br>Michael<br><br><div class="gmail_quote">

On Mon, Mar 8, 2010 at 11:04 AM, michiel mentink <span dir="ltr">&lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk">michael.mentink@st-hughs.ox.ac.uk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>that should be <br>The tibia is segmented and all the &#39;tibia&#39; voxels have grey values (not binary).<div><div></div><div class="h5"><br><br><br><br><br><div class="gmail_quote">On Mon, Mar 8, 2010 at 11:03 AM, michiel mentink <span dir="ltr">&lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk" target="_blank">michael.mentink@st-hughs.ox.ac.uk</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div><div class="gmail_quote">Dear Luis,<br><br>Background: I have an image volume, MRI of the knee. The tibia is segmented and<br>


all the &#39;femur&#39; voxels have grey values (not binary). All the rest is black.<br>Therefore, I create a mask by applying a thresholder with a threshold of 1: all the <br>

voxels that have intensity&gt;0 are given the value &#39;1&#39;.<br><br>    typedef itk::ThresholdImageFilter&lt; FixedImageType &gt; ThresholdFilterType;<br>    ThresholdFilterType::Pointer thresholder = ThresholdFilterType::New();<br>




    thresholder-&gt;SetInput( fixedImage);<br>    thresholder-&gt;SetOutsideValue( 1 );<br>    thresholder-&gt;ThresholdAbove( 0 );<br>    thresholder-&gt;Update();  <br><br>  // insert caster here, casting from float to unsigned char<br>




  typedef  unsigned char  MaskPixelType;<br>  typedef itk::Image&lt; MaskPixelType, Dimension &gt; MaskImageType;<br>  typedef itk::CastImageFilter&lt; FixedImageType, MaskImageType &gt; CastFilterType;<br>                    <br>




  CastFilterType::Pointer  caster =  CastFilterType::New();<br>  caster-&gt;SetInput( thresholder-&gt;GetOutput() ); <br><br>  // create a 3D mask type<br>  typedef itk::ImageMaskSpatialObject&lt; 3 &gt;   MaskType;<br>  // then create the mask itself<br>




  MaskType::Pointer  mask = MaskType::New();<br><br>  //connect the binary image to the mask<br>  mask-&gt;SetImage(caster-&gt;GetOutput() ); <br><br>  // pass the spatial object mask to the image metric<br>  metric-&gt;SetFixedImageMask( mask);<br>




//  metric-&gt;SetMovingImageMask( mask);<br><br>  // write the mask to a file, just to check if thresholding went alright<br>  typedef itk::ImageFileWriter&lt; MaskImageType &gt;  MaskImageWriter;<br>  MaskImageWriter::Pointer writerBinary = MaskImageWriter::New();<br>




  writerBinary-&gt;SetInput( caster-&gt;GetOutput() );  <br>  writerBinary-&gt;SetFileName(&quot;mask.mhd&quot; );<br>  writerBinary-&gt;Update();      <br>  std::cout &lt;&lt; &quot;mask created&quot; &lt;&lt; std::endl &lt;&lt; std::endl;<br>




<br>I&#39;m afraid I can&#39;t post the mask file to the mailing list (1.7MB) but I&#39;ll mail it to you.<br><br>cheers, <br><br>Michael<div><div></div><div><br><div class="gmail_quote"><br><br><br>On Sat, Mar 6, 2010 at 11:02 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br>




<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Michiel,<br>
<br>
Thanks for sharing your findings in this problem.<br>
<br>
Can you tell us more about the mask (the segmentation)<br>
that you created ?<br>
<br>
Have you checked this mask with any visualization<br>
application ?<br>
<br>
What are the pixel values ?<br>
<br>
Is there a chance that you could share that binary image<br>
with us ?<br>
<br>
<br>
    Thanks<br>
<br>
<br>
          Luis<br>
<br>
---------------------------------------------------------------------------<br>
<div><div></div><div>On Fri, Mar 5, 2010 at 11:28 AM, michiel mentink<br>
&lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk" target="_blank">michael.mentink@st-hughs.ox.ac.uk</a>&gt; wrote:<br>
&gt; Dear all,<br>
&gt;<br>
&gt; When running an image registration algorithm with mask, I get this error:<br>
&gt;<br>
&gt; File:<br>
&gt; /MMprogs/src/ITK_src/Code/Algorithms/itkMeanSquaresImageToImageMetric.txx<br>
&gt; Line: 364<br>
&gt; Description: itk::ERROR: MeanSquaresImageToImageMetric(0x95f63f0): All the<br>
&gt; points mapped to outside of the moving image<br>
&gt;<br>
&gt; I&#39;ve traced this to the following problem:<br>
&gt; in ImageMaskSpatialObject-&gt;IsInside(), all points are found outside of the<br>
&gt; mask/image (?)<br>
&gt;<br>
&gt; and this is because the boundingbox of the mask has bounding values of 0, 0,<br>
&gt; 0, 0, 0, 0, so indeed, there are no points that<br>
&gt; can be found inside these values.<br>
&gt;<br>
&gt; I am a bit stuck now, apparently, the mask that I created from a segmented<br>
&gt; volume is not converted into a bounding box correctly.<br>
&gt;<br>
&gt; Where do I check to find out why this is happening?<br>
&gt;<br>
&gt; cheers,<br>
&gt;<br>
&gt; Michael<br>
&gt;<br>
&gt;<br>
&gt; ps: some more info about my data:<br>
&gt;<br>
&gt; new moving image origin:    [0, 0, 0]<br>
&gt; fixed image size:      [215, 172, 48]<br>
&gt; fixed image origin:    [44.0625, 0, 0]<br>
&gt; fixed image spacing:   [0.3125, 0.3125, 1.9808]<br>
&gt; fixed image direction:<br>
&gt; 1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt;<br>
&gt; moving image size:      [512, 512, 52]<br>
&gt; moving image origin:    [0, 0, 0]<br>
&gt; moving image spacing:   [0.3125, 0.3125, 1.92911]<br>
&gt; moving image direction:<br>
&gt; 1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt;<br>
&gt; image mask size:      [215, 172, 48]<br>
&gt; image mask origin:    [44.0625, 0, 0]<br>
&gt; image mask spacing:   [0.3125, 0.3125, 1.9808]<br>
&gt; image mask direction:<br>
&gt; 1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt;<br>
</div></div><div><div></div><div>&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>
</div></div></div><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>