[Rtk-users] rtkadmmwavelets ring artifact

Simon Rit simon.rit at creatis.insa-lyon.fr
Wed Mar 25 09:50:41 CET 2015


Great to hear that Cyril fixed your problem.
For the other problem... Can you tell us which graphics card and which
version of cuda you're using? If you can take the time, the best would
be to use "git bisect" to find out which commit broke rtkfdk for your
configuration because it seems to run fine of the few configurations
we test every night.
Thanks in advance,
Simon

On Wed, Mar 25, 2015 at 7:18 AM, Joel Beaudry <joelbeaudry at gmail.com> wrote:
> Hi Cyril and Simon,
>
> After updating the ring artifact is no longer present, so it seems corrected
> on my end! Thanks for taking a look at it.
>
> Also, the information on image initialization and the link you provided were
> great. It definitely makes more sense now. Since I'm looking at lung tumor
> motion, I want to reduce motion blur but also obtain high (or decent) image
> quality. So if the regularization is able to correct the wrong tumor
> position from the dropped projections that'd be the most ideal. I will try
> both approaches and see the results.
>
> I am definitely interested in trying out 4drooster (it seems suited for what
> I want to do) but I get an error when trying it:
>
> itk::ExceptionObject (0x3d004f0)
> Location: "void CUDA_subtract_4f(int*, float*, float*, float*, float*)"
> File: .....RTK/code/rtkCudaConjugateGradientImageFilter_4f.cu
> Line: 122
> Description: itk::ERROR: CUDA ERROR: invalid configuration argument
>
> I thought it might be an issue with CUDA or my GPU, so I tried some other
> scripts (rtkfdk, rtkfdkcudatest,
> rtkconjugategradientreconstructioncudatest, rtkfourdroostercudatest) which
> also got errors:
>
> Error message:
> itk::ExceptionObject (0x1d00150)
> Location: "void CUDA_displaced_weight(int*, int*, int*, ..., float)"
> File: .....RTK/code/rtkCudaDisplacedDetectorImageFilter.cu
> Line: 189
> Description: itk::ERROR: CUDA ERROR: invalid configuration argument
>
> Error message:
> itk::ExceptionObject (0x3085410)
> Location: "void CUDA_weight_projection(int*, int*, int*, ..., float*)"
> File: .....RTK/code/rtkCudaFDKWeightProjectionFilter.cu
> Line: 138
> Description: itk::ERROR: CUDA ERROR: invalid configuration argument
>
> Oddly, rtksart, rtkadmmtotalvariation, rtkadmmwavelets all still work with
> CUDA. Using an older version of RTK I can correctly run rtkfdk with CUDA.
>
> Any idea what could be the cause of this (or if this error is reproducible)?
> Let me know if you need more information.
>
> Cheers,
> Joel
>
>
>
>
>>
>> I've added the displaced detector filters where necessary, and on my data,
>> the ring artifact has now disappeared. Just pushed the fix.
>> Would you be so kind to try the new version on your data and let us know
>> whether it fixed the problem ?
>>
>> Regarding your question on using the full-data FDK as initialization of an
>> iterative reconstruction: if you have basic notions of linear algebra, I
>> encourage you to read section V.6 of
>> https://tel.archives-ouvertes.fr/tel-00985728/document
>> And if you are doing 4D CBCT, I very strongly encourage you to try
>> rtkfourdrooster
>>
>> In short, it says that, in the absence of regularization:
>> - the information embedded in a given projection ends up in the Fourier
>> transform of the reconstructed volume
>> - the Fourier coefficients affected are almost specific to each projection
>> - therefore not taking a projection into account in the iterative process
>> means not modifying the corresponding Fourier coefficients of the
>> reconstructed volume during the iterative reconstruction
>> - if you initialize with a zero-filled volume, that means the Fourier
>> information corresponding to the projections you drop is assumed to be zero,
>> and will remain so
>> - if you initialize with anything else, the Fourier information
>> corresponding to the projections you drop will remain whatever it was in the
>> input you gave
>>
>> Regularization can make the correct Fourier coeffs "spread out" to the
>> others, therefore the "dropped information" can be partially compensated by
>> (very strong) regularization. In my experience, for cardiac 4D CBCT and
>> pulmonary 4D CBCT, 3D wavelets regularization isn't enough to compensate for
>> the loss of 80% or 90% of the data. Adding the regularization along time
>> help a great deal (which is why I mentioned rtkfourdrooster).
>> So the question is: do you want data from the projections you dropped to
>> end up in your reconstructed volume ?
>>
>> Sorry for the long answer, despite the "in short" preamble.
>>
>> Regards,
>> Cyril
>>
>>
>> On 03/18/2015 09:03 AM, Simon Rit wrote:
>>
>> Hi,
>> It looks very much like a displaced detector artefact (the Cho situation).
>> If I refer to the doc of ADMM wavelets and TV, you have these nice graphs
>> that document the pipelines used for the computation and indeed, the
>> displaced detector situation is accounted for in TV but not in wavelets.
>> Maybe you can try to dig in the code and correct that in ADMM wavelets?
>> Otherwise, I'll ask Cyril if he agrees to do it next week.
>> Simon
>>
>> On Mon, Mar 16, 2015 at 11:00 PM, Joel Beaudry <joelbeaudry at gmail.com>
>> wrote:
>>>
>>> Sure thing, thanks for the reply Simon. I've attached a Coronal and Axial
>>> slice showing the ring. I'll wait for Cyril's reply.
>>>
>>> The image quality is pretty poor but I'm using ~70 projections (4DCBCT),
>>> so that's expected. Admittedly, I'm not using a high
>>> number of iterations (n=10) but I suspect this ring artifact is from
>>> something else. This does not occur when using rtkadmmtotalvariation, but
>>> only the admmwavelets.
>>>
>>> And just a general question regarding the nature of iterative
>>> reconstructions. I'm currently using no input image, so I assume the initial
>>> guess is just some uniform value but is it beneficial to first do a full (so
>>> use all projections) FDK reconstruction and use that as the input instead?
>>>
>>> Thanks,
>>> Joel
>>>
>>> On Mon, Mar 16, 2015 at 1:27 AM, Simon Rit
>>> <simon.rit at creatis.insa-lyon.fr> wrote:
>>>>
>>>> Hi,
>>>> Could you provide a snapshot?
>>>> Cyril, the developer of this method, is away for a few days but he'll
>>>> be able to answer next weeks.
>>>> Cheers,
>>>> Simon
>>>>
>>>> On Fri, Mar 13, 2015 at 7:49 PM, Joel Beaudry <joelbeaudry at gmail.com>
>>>> wrote:
>>>> > Hi RTK users/developers,
>>>> >
>>>> > I've been using RTK for CBCT reconstructions and found it to be very
>>>> > useful,
>>>> > so thanks for all the work done on it!
>>>> >
>>>> > As for my question,when I use rtkadmmwavelets I get a ring artifact in
>>>> > the
>>>> > center of the image. I'm using it for 4DCBCT reconstructions, so I'm
>>>> > not
>>>> > using the full number of projections and not sure if this is a
>>>> > contributing
>>>> > factor. From reading previous posts I know that the entire object must
>>>> > be in
>>>> > the reconstruction, and so I have included both the patient and couch
>>>> > in the
>>>> > reconstruction volume but still get the ring artifact. Has anyone else
>>>> > encountered this? Any ideas/suggestions?
>>>> >
>>>> > Cheers,
>>>> > Joel
>>>> >
>>>> > PS. When trying rtkadmmtotalvariation I don't encounter such issues.
>>>> >
>>>> > _______________________________________________
>>>> > Rtk-users mailing list
>>>> > Rtk-users at public.kitware.com
>>>> > http://public.kitware.com/mailman/listinfo/rtk-users
>>>> >
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> 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