<div dir="ltr"><div><div><div><div><div>Hi Andy,<br></div>Good question. Yes there is a reason. In another part of the code, rtkFDKWeightProjectionFilter.txx, the continuous integral over the gantry angles is discretized by taking into account the AngularGaps so that the algorithm can cope with variations in the rotation speed. Therefore, the two projections around the large angular gap introduced by the short scan will be overweighted because it is not aware of a short scan weighting elsewhere. The solution currently implemented discards the projections around the gap, as you have correctly noticed.<br></div>There is a better solution which would avoid throwing away these two projections but this was less easy to introduce in the pipeline and in most cases there is a sufficient number of projections anyway. But you could try to modify this if you're dealing with a very few projections.<br></div>Regards,<br></div></div>Simon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 24, 2014 at 9:50 AM, Andy Shieh <span dir="ltr"><<a href="mailto:hsieandy@gmail.com" target="_blank">hsieandy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Simon & RTK developers & the RTK community,<div><br></div><div>I have a question about how delta is calculated in rtkParkerShortScanImageFilter.txt.</div><div><br></div><div>The itFirstAngle and the itLastAngle were used to find the first and last angular values for calculating delta.</div><div><br></div><div>However I noticed that at line 93 itFirstAngle is acquired by:</div><div><br></div><div><div>  itFirstAngle = sortedAngles.find(rotationAngles[maxAngularGapPos]);</div><div>  itFirstAngle = (++itFirstAngle==sortedAngles.end())?sortedAngles.begin():itFirstAngle;</div><div>  itFirstAngle = (++itFirstAngle==sortedAngles.end())?sortedAngles.begin():itFirstAngle;</div></div><div><br></div><div>Why are the second and third lines duplicated? Wouldn't this point to the "second" angle instead?</div><div><br></div><div>And also for itLastAngle at line 99:</div><div><br></div><div><div>  itLastAngle = sortedAngles.find(rotationAngles[maxAngularGapPos]);</div><div>  itLastAngle = (itLastAngle==sortedAngles.begin())?--sortedAngles.end():--itLastAngle;</div></div><div><br></div><div>Why is the second line needed here? Wouldn't this point to the "second last" angle instead? (Since maxAngularGapPos was caluclated with GetAngularGapsWithNext).</div><div><br></div><div>I did test this with a 0-200 deg short scan, and found that firatAngle and lastAngle weren't equal to 0 and 200, but were calculated to be the second and second last angles instead.</div><div>Is there any reason for this implementation?</div><div><br></div><div>Thank you.</div><div><br></div><div>Cheers,</div><div>Andy</div></div>
<br>_______________________________________________<br>
Rtk-users mailing list<br>
<a href="mailto:Rtk-users@public.kitware.com">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>