<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi Padraig,<br>
    <br>
    I can only answer part of your questions, sorry about the others:
    neither rtkBackProjectionImageFilter nor 
    rtkFDKBackProjectionImageFilter perform filtering, and both are
    cone-beam. In fact, at the moment, cone-beam is the only geometry
    available in RTK. The difference is that
    rtkFDKBackProjectionImageFilter inherits from
    rtkBackProjectionImageFilter, and redefines some methods (I think it
    performs a specific weighting of projection data depending on the
    distance to the central plane, as described in the FDK paper, but I
    cannot say for sure). <br>
    As far as I know, there is no all-in-one filter for FDK in RTK. You
    have to plug the filters together yourself, the same way it is done
    in the rtkfdk application, and the back projection filter you must
    then use is either rtkFDKBackProjectionImageFilter or its CUDA ou
    OPENCL counterpart.<br>
    If you wish to design iterative reconstruction algorithms, on the
    other hand, use the non-FDK back projection filters. <br>
    <br>
    Without filtering, your reconstruction is probably very blurry. I
    would advise you to try to convert your data to the ITK standard mhd
    and raw, and to use the rtkfdk application. Once you get a good
    reconstruction out-of-the-box with your data, you can start playing
    with internal filters. <br>
    <br>
    Regards,<br>
    Cyril<br>
    <br>
    <div class="moz-cite-prefix">On 12/10/2014 12:59 PM, Padraig Looney
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAEvY7i_F_9kSeH2S6FvUN-_8Y5wTD3DazfxuShdsX=uuY51C1A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Dear list,<br>
          <br>
        </div>
        <div>We have been using RTK to reconstruct some digital breast
          tomosynthesis images. The reconstruction using
          BackProjectionImageFilter looks good. The only issue we are
          having is in specifying the coordinates of the reconstructed
          volume. The coordinate system is attached and the code we use
          to reconstruct is below. I expected the origin of the first
          slice in the reconstructed volume to be at (w,-h/2,offset).
          What I find is that the reconstructed volume is shifted in the
          y direction by about half the height (but not exactly). The X
          position looks correct for this phantom.<br>
           <br>
          rtkBackProjectionImageFilter is described as “implementation
          of the back projection step of the FDK also for <b><u>filtered</u></b>
          back projection reconstruction for cone-beam CT images with a
          circular source trajectory”. However, I could not find any
          filtering of data in the code. Could you please confirm if
          there is filtering in this code and what type of filters there
          are (ramp, Hann etc)? Also, is the difference
          with rtkBackProjectionImageFilter that
          rtkFDKBackProjectionImageFilter is for cone beam while
          rtkBackProjectionImageFilter is not?<br>
          <br>
          <br>
              // Create reconstructed image<br>
              typedef rtk::ConstantImageSource< FloatImageType >
          ConstantImageSourceType;<br>
              ConstantImageSourceType::PointType origin;<br>
              ConstantImageSourceType::SpacingType spacing;<br>
              ConstantImageSourceType::SizeType sizeOutput;<br>
              ConstantImageSourceType::DirectionType direction;<br>
              direction.SetIdentity();<br>
          <br>
              sizeOutput[0] = 1890; //1747; //1890; as found in dicom
          info<br>
              sizeOutput[1] = 2457; //as found in dicom info<br>
              sizeOutput[2] = 1;  //as found in dicom info<br>
          <br>
              double offset(26.27); // Gap between detector and sample<br>
              origin[0] = 171.99; <br>
              origin[1] = -223/2; //223 is the height of the
          reconstructed volume<br>
              origin[2] = offset+0;<br>
          <br>
              spacing[0] = 0.091; <br>
              spacing[1] = 0.091;<br>
              spacing[2] = 1;<br>
          <br>
              direction [0][0] = -1;<br>
              direction [0][1] = 0;<br>
              direction [0][2] = 0;<br>
              direction [1][0] = 0;<br>
              direction [1][1] = 1;<br>
              direction [1][2] = 0;<br>
              direction [2][0] = 0;<br>
              direction [2][1] = 0;<br>
              direction [2][2] = 1;<br>
          <br>
              ConstantImageSourceType::Pointer constantImageSource =
          ConstantImageSourceType::New();<br>
          <br>
              constantImageSource->SetOrigin( origin );<br>
              constantImageSource->SetSpacing( spacing );<br>
              constantImageSource->SetSize( sizeOutput );<br>
              constantImageSource->SetConstant( 0. );<br>
              constantImageSource->SetDirection(direction);<br>
          <br>
              const ImageType::DirectionType& direct =
          constantImageSource->GetDirection();<br>
          <br>
              std::cout <<"Direction3DZeroMatrix= " <<
          std::endl;<br>
              std::cout << direct << std::endl;<br>
          <br>
              std::cout << "Performing reconstruction" <<
          std::endl;<br>
          <br>
              //BackProjection recontruction (no filtering)<br>
              typedef rtk::ProjectionGeometry<3>
          ProjectionGeometry;<br>
              ProjectionGeometry::Pointer baseGeom =
          geometry.GetPointer();<br>
              typedef rtk::BackProjectionImageFilter< ImageType
          ,ImageType> FDKCPUType;<br>
              FDKCPUType::Pointer feldkamp = FDKCPUType::New();<br>
              feldkamp->SetInput( 0,
          constantImageSource->GetOutput() );<br>
              feldkamp->SetInput( 1, imageStack);<br>
              feldkamp->SetGeometry( baseGeom );<br>
              feldkamp->Update();<br>
          <br>
          <br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Rtk-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Rtk-users@public.kitware.com">Rtk-users@public.kitware.com</a>
<a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/rtk-users">http://public.kitware.com/mailman/listinfo/rtk-users</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
--
Cyril Mory, Post-doc
CREATIS
Leon Berard cancer treatment center
28 rue Laënnec
69373 Lyon cedex 08 FRANCE

Mobile: +33 6 69 46 73 79</pre>
  </body>
</html>