<div dir="ltr"><div dir="ltr"><div dir="ltr">RTK and ITK uses pipeline based calculation, so you build a pipeline and in the end call ->Update() on the last filter (sometimes also on earlier filter if some synchronisation is needed)<div>In the case of rtkfdk.cxx, update is called on the writer at the very end.</div><div>The Update call triggers certain functions in the image filters and in particular GenerateData, which is where the actual computation usually will take place.</div><div>For the CPU FDK filter, the GenerateData function is defined at: <a href="https://github.com/SimonRit/RTK/blob/master/include/rtkFDKConeBeamReconstructionFilter.hxx#L117">https://github.com/SimonRit/RTK/blob/master/include/rtkFDKConeBeamReconstructionFilter.hxx#L117</a></div><div>Which internally calls update on the BackProjectionImageFilter, thus: <a href="https://github.com/SimonRit/RTK/blob/master/include/rtkFDKBackProjectionImageFilter.hxx#L53">https://github.com/SimonRit/RTK/blob/master/include/rtkFDKBackProjectionImageFilter.hxx#L53</a></div><div><br></div><div>Input 1, pssf, is the Parker Short Scan Filter and pssf->GetOutput() will return the processed projections.</div><div><br></div><div>Input 0, constantimagesource, is, as you correctly said, to get the output image geometry (if you want to do some iterative FDK or online reconstruction this can also be the output image of the previous iteration.)</div><div>I don't think constantimagesource needs it's image buffer to be allocated before it's given as input, only the UpdateOutputInformation is necessary, which asks ITK to propagate the geometry information to all the variables used internally, i.e. in GetLargestPossibleRegion and the like.</div><div><br></div><div>I hope this is somewhat understandable. The pipeline system in ITK is confusing in the beginning, but once you get it, it's easy to use ( Although probably still confusing when trying to write your own filters - it is for me :p ).</div><div><br></div><div>/Andreas</div><div><br></div><div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><p style="margin-bottom:0.0001pt"><span lang="EN-US" style="color:rgb(31,73,125)"><span lang="EN-US" style="font-size:11pt;line-height:16.8667px;font-family:Calibri,sans-serif">__________________________________</span></span></p><p style="margin-bottom:0.0001pt"><span lang="EN-US" style="color:rgb(31,73,125)"><span lang="EN-US" style="font-size:11pt;line-height:16.8667px;font-family:Calibri,sans-serif">Andreas Gravgaard Andersen</span></span></p><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Danish Center for Particle Therapy, </span></p><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Aarhus University Hospital<u></u><u></u></span></p><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span lang="DA" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Palle Juul-Jensens Blvd. 99,</span></p><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span lang="DA" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">8200, Aarhus</span></p><div><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span lang="DA" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Mail:     <a href="mailto:agravgaard@protonmail.com" target="_blank">agravgaard@protonmail.com</a></span></p><p style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:"Times New Roman",serif;color:black"><span style="color:rgb(31,73,125);font-family:Calibri,sans-serif;font-size:11pt">Cell:     </span><span style="color:rgb(31,73,125);font-family:Calibri,sans-serif;font-size:11pt"> </span><a value="+4523382411" style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(17,85,204)">+45 3165 8140</a></p></div></div></div></div></div></div></div></div></div></div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 26 May 2020 at 05:12, 나윤호 <<a href="mailto:yoonho94.na@gmail.com">yoonho94.na@gmail.com</a>> wrote:<br></div><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">Hi everyone.<div><br></div><div>In the rtkfdk.cxx, feldkamp gets an two inputs constant image source and pssf.</div><div><br></div><div>I want to know where the exact computing script part is.</div><div><br></div><div>what I'm guessing is the empty constant image source only gives the output image size and the only pssf is used in reconstructing calculation.</div><div><br></div><div>or does both inputs goes into the calculation process?</div><div>if it is how does those two inputs with different array shape calculates?</div><div><br></div><div>Best Regards.</div><div><br></div><div>Yoonho.</div><img width="0" height="0" alt="" style="display: flex;" src="https://mailtrack.io/trace/mail/d3bdeb00019328dd0537c11f57752c884ef7d709.png?u=4672561"></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="https://public.kitware.com/mailman/listinfo/rtk-users" rel="noreferrer" target="_blank">https://public.kitware.com/mailman/listinfo/rtk-users</a><br>
</blockquote></div>