<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi Joel,<br>
<br>
My guess is that this is caused by the fact that some RTK Cuda
filters do not handle old GPUs well. <br>
<br>
In particular, not all filters implement kernels for a 2D grid of
thread block, and therefore require a GPU with compute capability at
least 2.x<br>
<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications">http://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications</a><br>
<br>
It will take me some time to check this hypothesis, because we
mostly have recent GPUs here. And it would help if you could let us
know which GPU you have and which version of CUDA is installed on
your machine. <br>
<br>
As a workaround, you can just use the CPU version of the filters
that do not work in CUDA on your hardware. To do that, you would
need to look for where the culprit filters are created, like in the
following block of code : <br>
<br>
#ifdef RTK_USE_CUDA<br>
m_ConjugateGradientFilter =
rtk::CudaConjugateGradientImageFilter_4f::New();<br>
#else<br>
m_ConjugateGradientFilter = ConjugateGradientFilterType::New();<br>
#endif<br>
<br>
and make sure it is the CPU version that is created, not the GPU one
(by commenting out everything but the fourth line, for example). It
shouldn't take more than a few changes to make rtkfourdrooster work
smoothly.<br>
<br>
Best regards,<br>
Cyril<br>
<br>
<br>
<div class="moz-cite-prefix">On 03/25/2015 07:18 AM, Joel Beaudry
wrote:<br>
</div>
<blockquote
cite="mid:CAMyfbWqdzbtqjbv2V87zgwwQRiyVc8WbrEfT929G79Tw26pNuw@mail.gmail.com"
type="cite">
<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 moz-do-not-send="true"
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 moz-do-not-send="true"
href="http://www.sciencedirect.com/science/article/pii/0895611196000316"
target="_blank">Cho</a> situation). If I
refer to the doc of ADMM <a
moz-do-not-send="true"
href="http://www.openrtk.org/Doxygen/classrtk_1_1ADMMWaveletsConeBeamReconstructionFilter.html"
target="_blank">wavelets</a> and <a
moz-do-not-send="true"
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
moz-do-not-send="true"
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
moz-do-not-send="true"
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
moz-do-not-send="true"
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 moz-do-not-send="true"
href="mailto:Rtk-users@public.kitware.com"
target="_blank">Rtk-users@public.kitware.com</a><br>
> <a moz-do-not-send="true"
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 moz-do-not-send="true" href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a>
<a moz-do-not-send="true" 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>
</blockquote>
<br>
</body>
</html>