[Rtk-users] Area of Integration JosephForwardProjectionImageFilter RayCastInterpolatorForwardProjectionImageFilter

Simon Rit simon.rit at creatis.insa-lyon.fr
Fri Dec 5 14:39:53 CET 2014


Hi Steffen,
I'm not sure I understand it all but isn't this due to interpolation?
If you were using a finer voxelized box as input, the difference
between siddon and joseph should decrease.
Regarding tracking every step, yes, you should be able to do such
things (and if you are not, I'm open to modify the code). We have done
some similar work in Gate using RTK. This is not public yet but the
idea is to implement specific functor for Joseph. You should look at
the code and the two TInterpolationWeightMultiplication and
TProjectedValueAccumulation template in particular.
If you want an example, I'll send you a copy of what we've done in Gate.
Simon

On Fri, Dec 5, 2014 at 9:50 AM, Steffen Lukas <steffen.lukas at gmail.com> wrote:
> Sorry, mail went out too quickly.
>
>
>
>
> Hi Simon
>
> I check against my quick ray-tracer-implementation in Siddon style.
>
> I tried the enlarged volume with 0-boundary already before, but cant
> resolve the issue completely.
>
> I put an example below, for some reason I get signal at the outer
> detetectors where there should be none.
>
> Also: Can I somehow keep track of the voxel traversed in your code
> (for dosimetric and simulation applications).
>
>
>
>
>
> Example:
>
>
>   double sid = 100, aid = 20;
>   int nproj = 1;
>   double first_angle = 0, angular_arc = 360;
>
>   volume_spacing(1, 1, 1);
>   volume_center(0.0, 0.0, 0.0);
>   volume_size(3, 3, 3);
>
>   projection_center(0.0, 0.0, 0.0);
>   projection_size(5, 5, nproj);
>   projection_spacing(1, 1, 1.0);
>
>
> The projections are:
>
> (1) Joseph projector
>
> z: 0
>                0:           1:           2:           3:           4:
>   0:    0.3339816     1.000174     1.000139     1.000174    0.3339816
>   1:     1.000174     3.000208     3.000104     3.000208     1.000174
>   2:     1.000139     3.000104            3     3.000104     1.000139
>   3:     1.000174     3.000208     3.000104     3.000208     1.000174
>   4:    0.3339816     1.000174     1.000139     1.000174    0.3339816
>
>
> (2) My Raytracer:
>
> z: 0
>                0:           1:           2:           3:           4:
>   0:            0            0            0            0            0
>   1:            0     3.000208     3.000104     3.000208            0
>   2:            0     3.000104            3     3.000104            0
>   3:            0     3.000208     3.000104     3.000208            0
>   4:            0            0            0            0            0
>
> (3)  RayBox Integration (fom -1.5 to 1.5)
>
> z: 0
>                0:           1:           2:           3:           4:
>   0:            0            0            0            0            0
>   1:            0     3.000208     3.000104     3.000208            0
>   2:            0     3.000104            3     3.000104            0
>   3:            0     3.000208     3.000104     3.000208            0
>   4:            0            0            0            0            0
>
> Value except at the boundary coincide, only at the detector boundary
> there is signal that I dont understand
>
> Rgds
> Steffen
>
>
>
> 2014-12-05 9:46 GMT+01:00, Steffen Lukas <steffen.lukas at gmail.com>:
>> Hi Simon
>>
>> I check against my quick ray-tracer-implementation in Siddon style.
>>
>> I tried the enlarged volume with 0-boundary already before, but cant
>> resolve the issue completely.
>>
>> I put an example below, for some reason I get signal at the outer
>> detetectors where there should be none.
>>
>> Also: Can I somehow keep track of the voxel traversed in your code
>> (for dosimetric and simulation applications).
>>
>> Arne
>>
>>
>>
>> Example:
>>
>>
>>   double sid = 100, aid = 20;
>>   int nproj = 1;
>>   double first_angle = 0, angular_arc = 360;
>>
>>   volume_spacing(1, 1, 1);
>>   volume_center(0.0, 0.0, 0.0);
>>   volume_size(3, 3, 3);
>>
>> projection_center(0.0, 0.0, 0.0);
>>   int3 projection_size(5, 5, nproj);
>>   vect3 projection_spacing(1, 1, 1.0);
>>   matr3 projection_direction = matr3::Identity();
>>
>>
>> 2014-12-04 16:30 GMT+01:00, Simon Rit <simon.rit at creatis.insa-lyon.fr>:
>>> Hi,
>>> Good point. Since we interpolate, we chose the model that you mention. A
>>> simple trick that should work is to add a 0 border around your volume.
>>> That
>>> will allow you to compare your results.
>>> Out of curiosity, what's your projector? If it's Siddon, that would make
>>> sense but I wonder what you do if it's an interpolation model (Joseph,
>>> trilinear, etc).
>>> Simon
>>>
>>> On Thu, Dec 4, 2014 at 12:09 PM, Arnheim Blanchr
>>> <arnheim66 at googlemail.com>
>>> wrote:
>>>
>>>> Dear All
>>>>
>>>> I have a question regarding the forward projectors. It seems that at
>>>> the boundary integration starts at mid-voxel which makes it difficult
>>>> for me to compare with our own implemention since information is
>>>> partly lost.
>>>>
>>>> Can I somehow setup the projectors such that all (full) voxel are
>>>> integrated?
>>>>
>>>> Thanks a lost
>>>> Arne
>>>> _______________________________________________
>>>> Rtk-users mailing list
>>>> Rtk-users at public.kitware.com
>>>> http://public.kitware.com/mailman/listinfo/rtk-users
>>>>
>>>
>>



More information about the Rtk-users mailing list