<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Hi Cyril and Simon,<br><br><div><div><div><div><div><div><div><div><div><div><div>After updating the ring artifact is no longer present, so it seems corrected on my end! Thanks for taking a look at it.<br><br></div><div>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. <br><br></div><div>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:<br><br>itk::ExceptionObject (0x3d004f0)<br>Location: "void CUDA_subtract_4f(int*, float*, float*, float*, float*)"<br>File: .....RTK/code/rtkCudaConjugateGradientImageFilter_4f.cu<br>Line: 122<br>Description: itk::ERROR: CUDA ERROR: invalid configuration argument<br><br></div><div>I
thought it might be an issue with CUDA or my GPU, so I tried some other scripts (rtkfdk, rtkfdkcudatest, <br>rtkconjugategradientreconstructioncudatest, rtkfourdroostercudatest) which also got errors:<br><br>Error message:<br>itk::ExceptionObject (0x1d00150)<br>Location: "void CUDA_displaced_weight(int*, int*, int*, ..., float)"<br>File: .....RTK/code/rtkCudaDisplacedDetectorImageFilter.cu<br>Line: 189<br>Description: itk::ERROR: CUDA ERROR: invalid configuration argument<br><br>Error message:<br>itk::ExceptionObject (0x3085410)<br>Location: "void CUDA_weight_projection(int*, int*, int*, ..., float*)"<br>File: .....RTK/code/rtkCudaFDKWeightProjectionFilter.cu<br>Line: 138<br>Description: itk::ERROR: CUDA ERROR: invalid configuration argument<br><br></div></div></div><div>Oddly, rtksart, rtkadmmtotalvariation, rtkadmmwavelets all still work with CUDA. Using an older version of RTK I can correctly run rtkfdk with CUDA.<br></div><div><br></div><div>Any idea what could be the cause of this (or if this error is reproducible)? Let me know if you need more information.<br><br></div><div>Cheers,<br></div><div>Joel<br></div></div></div><br></div></div></div></div></div></div><br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
I've added the displaced detector filters where necessary, and on my
data, the ring artifact has now disappeared. Just pushed the fix.<br>
Would you be so kind to try the new version on your data and let us
know whether it fixed the problem ? <br></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
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<br>
<a href="https://tel.archives-ouvertes.fr/tel-00985728/document" target="_blank">https://tel.archives-ouvertes.fr/tel-00985728/document</a><br>
And if you are doing 4D CBCT, I very strongly encourage you to try
rtkfourdrooster<br>
<br>
In short, it says that, in the absence of regularization: <br>
- the information embedded in a given projection ends up in the
Fourier transform of the reconstructed volume<br>
- the Fourier coefficients affected are almost specific to each
projection<br>
- 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<br>
- 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<br>
- 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<br>
<br>
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).<br>
So the question is: do you want data from the projections you
dropped to end up in your reconstructed volume ?<br>
<br>
Sorry for the long answer, despite the "in short" preamble. <br>
<br></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
Regards,<br>
Cyril<div><div><br>
<br>
<div>On 03/18/2015 09:03 AM, Simon Rit
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>Hi,<br>
</div>
It looks very much like a displaced detector artefact (the <a href="http://www.sciencedirect.com/science/article/pii/0895611196000316" target="_blank">Cho</a>
situation). If I refer to the doc of ADMM <a href="http://www.openrtk.org/Doxygen/classrtk_1_1ADMMWaveletsConeBeamReconstructionFilter.html" target="_blank">wavelets</a>
and <a href="http://www.openrtk.org/Doxygen/classrtk_1_1ADMMTotalVariationConeBeamReconstructionFilter.html" target="_blank">TV</a>,
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.<br>
</div>
Simon<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Mar 16, 2015 at 11:00 PM, Joel
Beaudry <span dir="ltr"><<a href="mailto:joelbeaudry@gmail.com" target="_blank">joelbeaudry@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>
<div>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. <br>
<br>
</div>
The image quality is pretty poor but I'm using ~70
projections (4DCBCT), so that's expected.
Admittedly, I'm not using a high<br>
</div>
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.<br>
</div>
<br>
</div>
<div>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? <br>
<br>
</div>
<div>Thanks, <br>
</div>
<div>Joel<br>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Mar 16, 2015 at 1:27
AM, Simon Rit <span dir="ltr"><<a href="mailto:simon.rit@creatis.insa-lyon.fr" target="_blank">simon.rit@creatis.insa-lyon.fr</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
Could you provide a snapshot?<br>
Cyril, the developer of this method, is away for a
few days but he'll<br>
be able to answer next weeks.<br>
Cheers,<br>
Simon<br>
<div>
<div><br>
On Fri, Mar 13, 2015 at 7:49 PM, Joel Beaudry
<<a href="mailto:joelbeaudry@gmail.com" target="_blank">joelbeaudry@gmail.com</a>>
wrote:<br>
> Hi RTK users/developers,<br>
><br>
> I've been using RTK for CBCT
reconstructions and found it to be very
useful,<br>
> so thanks for all the work done on it!<br>
><br>
> As for my question,when I use
rtkadmmwavelets I get a ring artifact in the<br>
> center of the image. I'm using it for
4DCBCT reconstructions, so I'm not<br>
> using the full number of projections and
not sure if this is a contributing<br>
> factor. From reading previous posts I
know that the entire object must be in<br>
> the reconstruction, and so I have
included both the patient and couch in the<br>
> reconstruction volume but still get the
ring artifact. Has anyone else<br>
> encountered this? Any ideas/suggestions?<br>
><br>
> Cheers,<br>
> Joel<br>
><br>
> PS. When trying rtkadmmtotalvariation I
don't encounter such issues.<br>
><br>
</div>
</div>
>
_______________________________________________<br>
> Rtk-users mailing list<br>
> <a href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a><br>
> <a href="http://public.kitware.com/mailman/listinfo/rtk-users" target="_blank">http://public.kitware.com/mailman/listinfo/rtk-users</a><br>
><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Rtk-users mailing list
<a href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a>
<a href="http://public.kitware.com/mailman/listinfo/rtk-users" target="_blank">http://public.kitware.com/mailman/listinfo/rtk-users</a>
</pre>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div></div>