Ok thanks for this important precision.

Just a remark, I don't have access to the SetStepSize() function through SimpleRTK. Is it normal ? Does it come from the .json file or the template ?

Thanks in advance.
Yannick


Le 22/12/2017 à 23:34, Simon Rit a écrit :
No it doesn't, it's voxel based. The adjoint which uses the step size is CudaRayCastBackProjectionImageFilter <http://www.openrtk.org/Doxygen/classrtk_1_1CudaRayCastBackProjectionImageFilter.html> but it's very slow and we never use it in practice because it's not practical. When we want to use adjoint operators, we mainly use the CPU version, with double precision when adjointness is very important.
Simon

On Fri, Dec 22, 2017 at 11:31 PM, Yannick Boursier <[email protected] <mailto:[email protected]>> wrote:

    Hi Simon,

    Thank you a lot for your answer, I will try to put the step size
    to the voxel size then (if I understand well). It seems that the
    implementation of the CudaBackProjectionImageFilter doesn't use
    any stepsize. I'll let you know.

    Merry Christmas to you,
    Yannick


    Le 22/12/2017 à 22:55, Simon Rit a écrit :
    Hi Yannick,
    I would just try to change the step size
    
<http://www.openrtk.org/Doxygen/classrtk_1_1CudaForwardProjectionImageFilter.html#a93671bae5219bada43b9a00b6046dbed>.
    Indeed, the CPU version is the Joseph projector and it adapts
    automatically the step size to each ray for bilinear
    interpolation in each slice. The GPU version is a fixed step size
    combined with a trilinear interpolation.
    Merry Christmas to you,
    Simon

    On Fri, Dec 22, 2017 at 9:17 PM, Yannick Boursier
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Cyril,

        Sorry for my late answer. First thank you because your last
        trick (removing <InpuImageType>) worked, I correctly compiled
        and installed everything.

        I am late because I thought that I did something wrong since
        when I tested the code by simply projecting then
        backprojecting a simple volume, the results between the
        CPU-codes and GPU-codes were different and the GPU result cas
        clearly wrong.

        I understood this morning the problem and put it in evidence
        : the CudaForwardProjectionImageFilter seems to be not
        adapted to the case when the size of voxels and pixels are
        not equal to 1 whereas the CudaBackProjectionImageFilter is
        OK for that !!

        I will try to debug it and let you know.

        I wish to all of you a Merry Christmas and relaxing holidays.

        Best ,

        Yannick


        Le 18/12/2017 à 16:52, Cyril Mory a écrit :

        Hi again Yannick,

        Simply removing the <InputImageType> on line 9 of your .json
        file made it compile. I didn't test it yet. Let us know if
        that works for you.

        Cyril


        On 18/12/2017 16:31, Cyril Mory wrote:

        Hi Yannick,

        You seem to be in a hurry, so I'll start with an incomplete
        answer: the CudaForwardProjectionImageFilter is templated
        over its input and output image type, but the
        CudaBackProjectionImageFilter isn't (compare
        rtkCudaForwardProjectionImageFilter.h and
        rtkCudaBackProjectionImageFilter.h, there is not "template
        <>" before the class definition in ...Back..., while it is
        there in ...Forward...).

        I'm trying to modify your .json file accordingly, recompile
        and test, but I never use SimpleRTK myself, so you might
        find the solution before I do. If so, please report back on
        this mailing list.

        Cyril


        On 18/12/2017 16:07, Yannick BOURSIER wrote:
        Hello all,

        I really need in "relative" emergency to execute the kernel 
CudaBackProjectionImageFilter using the Python Wrapper provided by SimpleRTK.
        Unfortunately, this is not implemented in cuda 
(CudaForwardProjectionImageFilter is but not the BackProjection).

        I tried to define a json file (in attachement) on the base of 
CudaForwardProjectionImageFilter (since all the h, hxx, cxx, files I looked at 
seemed to be the same for these two kernels) but it does not compile (cmake 
instruction OK but not the make instruction) with the following error :

        
/data/boursier/Compile/rtk-bin-extended/SimpleRTK-build/Code/BasicFilters/src/srtkCudaBackProjectionImageFilter.cxx:
 In member function ‘rtk::simple::Image 
rtk::simple::CudaBackProjectionImageFilter::ExecuteInternal(const 
rtk::simple::Image&, const rtk::simple::Image&)’:
        
/data/boursier/Compile/rtk-bin-extended/SimpleRTK-build/Code/BasicFilters/src/srtkCudaBackProjectionImageFilter.cxx:132:16:
 error: ‘rtk::CudaBackProjectionImageFilter’ is not a template
            typedef rtk::CudaBackProjectionImageFilter<InputImageType> 
FilterType;

        I would very much appreciate some help please because at this point, I 
have no idea about the problem...
        Thanks in advance,
        Best regards,
        Yannick Boursier


        _______________________________________________
        Rtk-users mailing list
        [email protected]
        <mailto:[email protected]>
        https://public.kitware.com/mailman/listinfo/rtk-users
        <https://public.kitware.com/mailman/listinfo/rtk-users>




        _______________________________________________
        Rtk-users mailing list
        [email protected]
        <mailto:[email protected]>
        https://public.kitware.com/mailman/listinfo/rtk-users
        <https://public.kitware.com/mailman/listinfo/rtk-users>





_______________________________________________
Rtk-users mailing list
[email protected]
https://public.kitware.com/mailman/listinfo/rtk-users

Reply via email to