<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <div class="moz-forward-container">Hi Robert,<br>
      <br>
      No problem, glad to help. <br>
      <br>
      I think either I have'nt been clear enough, or you're getting
      confused, though :) Let me try again:<br>
      <br>
      In joseph back projection, for each PIXEL, you "draw a line"
      between the source and the pixel's center, and see which voxels it
      crosses. Your line crosses each slice of the volume at an
      intersection point. You determine what the interpolation weights
      would be if you were to interpolate at this intersection point.
      And these weights are indeed between 0 and 1. But instead of
      interpolating, you "splat", that means you update the four nearest
      voxels by adding (projection's pixel value * interpolationWeight)
      to each. And you move to the next slice. Once you've considered
      all rays, you're done. Nothing in this process guarantees that a
      voxel will receive any contribution. In fact, some receive none,
      and some too many. The backprojected volume you obtain is
      "biased". You could think of it as the product of what you really
      want (the projection's pixel values smeared out along the lines of
      rays) with a "sampling density map" (the cumulated splat weights
      each voxel has been updated with).<br>
      If you back project a projection of ones, then your resulting
      volume is exactly this sampling density map, and you can divide by
      it to obtain what you really want. <br>
      <br>
      In voxel based back projection, for each voxel, you "draw a line"
      between the source and the voxel's center, see where it hits the
      2D projection, and add the value of that pixel (or interpolated at
      this position between pixels) into the voxel. And that's it for
      this voxel, so each voxel gets updated once and only once. And if
      the projection contains only ones, then your volume gets filled
      with ones. Dividing by one isn't going to change anything, so you
      just don't do it.<br>
      <br>
      I hope it is clearer. <br>
      Cyril<br>
      <br>
      <br>
      <div class="moz-cite-prefix">On 02/26/2015 02:10 PM, "Robert
        Calließ" wrote:<br>
      </div>
      <blockquote
cite="mid:trinity-bb3950d5-113f-46f0-a9d7-12dca4c0836e-1424956241445@3capp-gmx-bs45"
        type="cite">
        <div style="font-family: Verdana;font-size: 12.0px;">
          <div>
            <div>Hello Cyril,</div>
            <div>thank you for the fast reply and thank you for the
              support.</div>
            <div>
              <div>Indeed I have some more questions. For the
                normalization step</div>
              <div>you on the one hand side create a projection image
                filled with "1"</div>
              <div>and  on the other hand side you create an empty
                (zero) volume and</div>
              <div>then back project the image, ok.</div>
              <div> </div>
              <div>>>How many contributions a voxel receives is
                determined by the sampling of the projections</div>
              <div>Yes, I have the same problems with a voxel-based back
                projector. But don't you have</div>
              <div>this problem also with  joseph's method when you use
                it for the back projection of the "1" projection</div>
              <div>image ? It's not clear to me how this kind of back
                projection actually works (or is calculated).</div>
              <div>And if the projection image consists of pixels with
                value "1" then we actually don't need it or do we ?</div>
              <div>So far I understand, no matter if we perform the
                forward or back projtion, the joseph projector
                calculates</div>
              <div>the weightings of the four voxels that are "around"
                the current plane intersection point. And this</div>
              <div>weights are always between 0 and 1.</div>
              <div>Or do I totally misunderstand the concept of this
                backprojection.</div>
              <div>I hope I did not confused you.</div>
              <div> </div>
              <div>best regards,</div>
              <div>Robert</div>
              <div> </div>
               
              <div> </div>
              <div name="quote" style="margin:10px 5px 5px 10px;
                padding: 10px 0 10px 10px; border-left:2px solid
                #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode:
                space; -webkit-line-break: after-white-space;">
                <div style="margin:0 0 10px 0;"><b>Gesendet:</b> Dienstag,

                  24. Februar 2015 um 10:55 Uhr<br>
                  <b>Von:</b> "Cyril Mory" <a moz-do-not-send="true"
                    class="moz-txt-link-rfc2396E"
                    href="mailto:cyril.mory@creatis.insa-lyon.fr"><cyril.mory@creatis.insa-lyon.fr></a><br>
                  <b>An:</b> "Robert Calließ" <a moz-do-not-send="true"
                    class="moz-txt-link-rfc2396E"
                    href="mailto:Robert.Calliess@gmx.de"><Robert.Calliess@gmx.de></a>,
                  <a moz-do-not-send="true"
                    class="moz-txt-link-abbreviated"
                    href="mailto:rtk-users@openrtk.org">rtk-users@openrtk.org</a><br>
                  <b>Betreff:</b> Re: [Rtk-users] sart back projection,
                  weighting steps</div>
                <div name="quoted-content">
                  <div style="background-color: rgb(255,255,255);">Hi
                    Robert,<br>
                    <br>
                    I'm glad to know that most of the explanation text
                    is understandable :)<br>
                    You might want to check this filter:<br>
                    <a moz-do-not-send="true"
                      class="moz-txt-link-freetext"
href="http://www.openrtk.org/Doxygen/classrtk_1_1NormalizedJosephBackProjectionImageFilter.html"
                      target="_blank">http://www.openrtk.org/Doxygen/classrtk_1_1NormalizedJosephBackProjectionImageFilter.html</a><br>
                    You can use the command line application
                    "rtkbackprojections" with argument --bp to compare
                    "Joseph" and "NormalizedJoseph".<br>
                    <br>
                    When performing a back projection with
                    non-normalized Joseph, the projection values are
                    "splat" (splat is the adjoint operator of
                    interpolation) between the four nearest voxels in
                    each volume plane the ray intersects. Nothing
                    guarantees that every voxel will receive a
                    contribution during this process. How many
                    contributions a voxel receives is determined by the
                    sampling of the projections, which can be much
                    looser or much denser (locally and globally) than
                    what would be required. Dividing by the back
                    projection of an image of ones mitigates this
                    effect. In theory, as long as the forward and back
                    projection operators are the adjoint of one another,
                    it should not be a problem for SART. In practice, it
                    does make a difference.<br>
                    <br>
                    I hope it helps. Please let me know if it is still
                    unclear;<br>
                    <br>
                    Cyril<br>
                     
                    <div class="moz-cite-prefix">On 02/24/2015 09:56 AM,
                      "Robert Calließ" wrote:</div>
                    <blockquote>
                      <div style="font-family: Verdana;font-size:
                        12.0px;">
                        <div>Hello,</div>
                        <div>in the file
                          rtkSARTConeBeamReconstructionFilter.h there is
                          briefly written how the</div>
                        <div>forward and back projection is performed.
                          For the forward projection, every pixel is</div>
                        <div>divided by the intersection length of the
                          ray with the volume. That is clear to me.</div>
                        <div> </div>
                        <div>For the back projection applies the
                          following text:</div>
                        <div>"each voxel of the back projection must be
                          divided by the value it would take if<br>
                           a projection filled with ones was being
                          reprojected. This weighting step is not<br>
                           performed when using a voxel-based back
                          projection, as the weights are all equal to
                          one<br>
                           in this case. When using a ray-based
                          backprojector, typically Joseph,it must be
                          performed."</div>
                        <div> </div>
                        <div>That means a temporary projection image is
                          created where all pixels have the value "1".
                          So far I understand,</div>
                        <div>if we use a voxel based back projector we
                          do not need to apply this weighting step
                          because the ray from source to voxel center</div>
                        <div>somewhere hits the detector plane and
                          usually there we interpolate the pixel value.
                          But all of them are "1" so it's obsolete to</div>
                        <div>interpolate inbetween.</div>
                        <div> </div>
                        <div>But if we use for instance the joseph back
                          projector don't we calculate the four
                          weightings at the current volume planes the</div>
                        <div>ray intersects with ? So we already have
                          weightings that range from 0 to 1. I'm a
                          little bit confused about the projection image</div>
                        <div>filled with "1". So how a this back
                          projection of "1" actually happens ?</div>
                        <div> </div>
                        <div>I hope someone can help me with that. Thank
                          you.</div>
                        <div> </div>
                        <div>best regards,</div>
                        <div>Robert</div>
                        <div> </div>
                      </div>
                       
                      <fieldset class="mimeAttachmentHeader"> </fieldset>
                       
                      <pre>_______________________________________________
Rtk-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="Rtk-users@public.kitware.com" target="_parent">Rtk-users@public.kitware.com</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/rtk-users" target="_blank">http://public.kitware.com/mailman/listinfo/rtk-users</a>
</pre>
                    </blockquote>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </blockquote>
      <br>
      <br>
    </div>
    <br>
  </body>
</html>