<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>