<div dir="ltr"><div><div><div><div>Dear Tobias,<br></div>If you intialize the data of your itk::Image with FillBuffer with the corresponding constant value, it is quite similar. The constant image value allow us to stream the computation whereas you have to allocate the whole image if you pass directly itk::Image.<br></div><div>We only work in 3D and probably our projector don't work with 2D, that is probably the problem here. You would have to correct the code for 2D but that's a lot of work, we generally prefer pseudo 2D, see next point.<br></div>I doubt that our forward projector will work well with one slice only if you use 3D, we assume that the volume starts at the first pixel and ends at the last pixel. You should probably add a zero border around with itk::PadImage to see something.<br></div>To avoid aliasing, you can cut frequencies in the ramp filter (look for CutFrequency in the doxygen of rtk::FFTRampImageFilter).<br></div>Simon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 13, 2016 at 5:35 PM, Tobias Stein <span dir="ltr"><<a href="mailto:tstein@stud.hs-heilbronn.de" target="_blank">tstein@stud.hs-heilbronn.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Thanks for the information.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">To keep it simple I want to project forward a single slice which I load as a DICOM file.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Now I want to compute the sinogram of that slice and write it in a new file.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">I got a little confused about the ConstantImageSource which is used in the test class. Do I need it to compute a sinogram or is just a replacement of a itk::Image?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Here is my code so far:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">                </span><span style="font-size:9.5pt;font-family:Consolas">const unsigned int Dimension = 2;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       typedef float PixelType;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas">       </span><span style="font-size:9.5pt;font-family:Consolas" lang="DE">typedef itk::Image< PixelType, Dimension >      ImageType;</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE">                …<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE">                </span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">(reading image by itk::ImageFileReader which works)<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">                …<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       ImageType::Pointer inputImage = reader->GetOutput();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       const unsigned int NumberOfProjectionImages = 1;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       ImageType::Pointer outputImage = ImageType::New();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       typedef  rtk::JosephForwardProjectionImageFilter<ImageType, ImageType> ForwardType;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       ForwardType::Pointer forward = ForwardType::New();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       forward->SetInput(1, inputImage);<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       forward->SetInput(0, outputImage);<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">       forward->Update();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">                …<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">                (writing output image into a file)<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">                …<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">The problem is that I get some errors when I instantiate the forward-Filter.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">The errors are like that one:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE">error C2784: "vnl_matrix<T> operator *(const vnl_diag_matrix<T> &,const vnl_matrix<T> &)": template-Argument für "const vnl_diag_matrix<T> &" konnte nicht von "vnl_matrix_fixed<T,4,4>" hergeleitet werden.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Maybe there is something wrong with the PixelType that i used?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">If the forward projection works, which filter should i use to achieve a filtered back projection without aliasing?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Many thanks in advance.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Tobias<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE">Von:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="DE"> <a href="mailto:simon.rit@gmail.com" target="_blank">simon.rit@gmail.com</a> [mailto:<a href="mailto:simon.rit@gmail.com" target="_blank">simon.rit@gmail.com</a>] <b>Im Auftrag von </b>Simon Rit<br><b>Gesendet:</b> Mittwoch, 4. Mai 2016 09:02<br><b>An:</b> Tobias Stein <<a href="mailto:tstein@stud.hs-heilbronn.de" target="_blank">tstein@stud.hs-heilbronn.de</a>><br><b>Cc:</b> <a href="mailto:rtk-users@public.kitware.com" target="_blank">rtk-users@public.kitware.com</a><br><b>Betreff:</b> Re: [Rtk-users] forward and back projection - MITK<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><div><div><div><div><div><div><div><div><div><p class="MsoNormal">Dear Tobias,<u></u><u></u></p></div><p class="MsoNormal">The forward projection has 2 inputs:<u></u><u></u></p></div><p class="MsoNormal">- input 0: the stack of projections in which you wish to forward project,<u></u><u></u></p></div><p class="MsoNormal">- input 1: the volume you wish to forward project.<u></u><u></u></p></div><p class="MsoNormal">For the backprojection, it's exactly the same:<u></u><u></u></p></div><p class="MsoNormal">- input 0: the volume in which you wish to backproject,<u></u><u></u></p></div><p class="MsoNormal">- input 1: the stack of projections you wish to backproject.<u></u><u></u></p></div><p class="MsoNormal">Be aware that JosephBackProjectionImageFilter is the transpose of the forward projection and will have some aliasing (see, e.g., <a href="http://iopscience.iop.org/article/10.1088/0031-9155/49/11/024/meta;jsessionid=87B598ABFDC2AA07D1DED2DEE607F0E7.c2.iopscience.cld.iop.org" target="_blank">De Man and Basu</a> to see what I mean).<u></u><u></u></p></div><p class="MsoNormal">I have personally never used MITK but don't hesitate to share your experience on the mailing list.<u></u><u></u></p></div><p class="MsoNormal">Simon<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">On Wed, May 4, 2016 at 12:59 AM, Tobias Stein <<a href="mailto:tstein@stud.hs-heilbronn.de" target="_blank">tstein@stud.hs-heilbronn.de</a>> wrote:<u></u><u></u></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal">Hi all,<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal"> <span lang="DE"><u></u><u></u></span></p><p class="MsoNormal">i want to use the forward and backward projection to reduce metal artefacts in ct images. I’ve seen so far that  I may use the JosephForwardProjectionImageFilter to perform the forward projection. I’ve also seen the test for this class but I don’t get it, where should i put my 2D slice as input to execute the transformation. About the back transformation with the JosephBackProjectionImageFilter I also need more information how I can use it to transform a sinogram back to a ct slice. There is a test at the documentation, but the link is missing there.<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal"> <span lang="DE"><u></u><u></u></span></p><p class="MsoNormal">I’ve got another independent question.<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal">Are some of you familiar with MITK and know how to get the superbuild up and running with RTK? I am writing a MITK-Plugin and want to reduce the metal artifacts before a segmentation. So if some of you have experience with the combination of RTK and MITK it would be nice if you will share it ;)<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal"> <span lang="DE"><u></u><u></u></span></p><p class="MsoNormal">Best regards,<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal">Tobias<span lang="DE"><u></u><u></u></span></p><p class="MsoNormal"><span lang="DE"> <u></u><u></u></span></p></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>_______________________________________________<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><u></u><u></u></p></blockquote></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></blockquote></div><br></div>