[Rtk-users] rtkadmmwavelets ring artifact

Joel Beaudry joelbeaudry at gmail.com
Wed Mar 25 02:18:01 EDT 2015


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
> <http://www.sciencedirect.com/science/article/pii/0895611196000316>
> situation). If I refer to the doc of ADMM wavelets
> <http://www.openrtk.org/Doxygen/classrtk_1_1ADMMWaveletsConeBeamReconstructionFilter.html>
> and TV
> <http://www.openrtk.org/Doxygen/classrtk_1_1ADMMTotalVariationConeBeamReconstructionFilter.html>,
> 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 listRtk-users at public.kitware.comhttp://public.kitware.com/mailman/listinfo/rtk-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20150324/0d72e15e/attachment-0009.html>


More information about the Rtk-users mailing list