[Rtk-users] Fwd: Re: Aw: Re: sart back projection, weighting steps
Cyril Mory
cyril.mory at creatis.insa-lyon.fr
Fri Feb 27 03:45:24 EST 2015
Hi Robert,
No problem, glad to help.
I think either I have'nt been clear enough, or you're getting confused,
though :) Let me try again:
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).
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.
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.
I hope it is clearer.
Cyril
On 02/26/2015 02:10 PM, "Robert Calließ" wrote:
> Hello Cyril,
> thank you for the fast reply and thank you for the support.
> Indeed I have some more questions. For the normalization step
> you on the one hand side create a projection image filled with "1"
> and on the other hand side you create an empty (zero) volume and
> then back project the image, ok.
> >>How many contributions a voxel receives is determined by the
> sampling of the projections
> Yes, I have the same problems with a voxel-based back projector. But
> don't you have
> this problem also with joseph's method when you use it for the back
> projection of the "1" projection
> image ? It's not clear to me how this kind of back projection actually
> works (or is calculated).
> And if the projection image consists of pixels with value "1" then we
> actually don't need it or do we ?
> So far I understand, no matter if we perform the forward or back
> projtion, the joseph projector calculates
> the weightings of the four voxels that are "around" the current plane
> intersection point. And this
> weights are always between 0 and 1.
> Or do I totally misunderstand the concept of this backprojection.
> I hope I did not confused you.
> best regards,
> Robert
> *Gesendet:* Dienstag, 24. Februar 2015 um 10:55 Uhr
> *Von:* "Cyril Mory" <cyril.mory at creatis.insa-lyon.fr>
> *An:* "Robert Calließ" <Robert.Calliess at gmx.de>, rtk-users at openrtk.org
> *Betreff:* Re: [Rtk-users] sart back projection, weighting steps
> Hi Robert,
>
> I'm glad to know that most of the explanation text is understandable :)
> You might want to check this filter:
> http://www.openrtk.org/Doxygen/classrtk_1_1NormalizedJosephBackProjectionImageFilter.html
> You can use the command line application "rtkbackprojections" with
> argument --bp to compare "Joseph" and "NormalizedJoseph".
>
> 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.
>
> I hope it helps. Please let me know if it is still unclear;
>
> Cyril
> On 02/24/2015 09:56 AM, "Robert Calließ" wrote:
>
> Hello,
> in the file rtkSARTConeBeamReconstructionFilter.h there is briefly
> written how the
> forward and back projection is performed. For the forward
> projection, every pixel is
> divided by the intersection length of the ray with the volume.
> That is clear to me.
> For the back projection applies the following text:
> "each voxel of the back projection must be divided by the value it
> would take if
> a projection filled with ones was being reprojected. This
> weighting step is not
> performed when using a voxel-based back projection, as the
> weights are all equal to one
> in this case. When using a ray-based backprojector, typically
> Joseph,it must be performed."
> That means a temporary projection image is created where all
> pixels have the value "1". So far I understand,
> 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
> somewhere hits the detector plane and usually there we interpolate
> the pixel value. But all of them are "1" so it's obsolete to
> interpolate inbetween.
> But if we use for instance the joseph back projector don't we
> calculate the four weightings at the current volume planes the
> ray intersects with ? So we already have weightings that range
> from 0 to 1. I'm a little bit confused about the projection image
> filled with "1". So how a this back projection of "1" actually
> happens ?
> I hope someone can help me with that. Thank you.
> best regards,
> Robert
>
> _______________________________________________
> Rtk-users mailing list
> Rtk-users at public.kitware.com
> http://public.kitware.com/mailman/listinfo/rtk-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20150227/9ed31a84/attachment-0008.html>
More information about the Rtk-users
mailing list