<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>