From m.bleeker at amsterdamumc.nl Wed Dec 2 03:01:42 2020 From: m.bleeker at amsterdamumc.nl (Bleeker, M. (Margot)) Date: Wed, 2 Dec 2020 08:01:42 +0000 Subject: [Rtk-users] Building First Reconstruction In-Reply-To: References: Message-ID: Hi; Thanks for your reply. I?m pretty new to this. At first I build ITK with Module_RTK ON in Release mode. I now build it in Debug mode using the following line in the command prompt: --- cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -S"D:\Program files\InsightToolkit-5.1.1" -B"D:\Program files\InsightToolkit-5.1.1\Build" --- During the build of FirstReconstruction I now get the same error, but a different file cannot be opened: ---- cmake -S"D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction" -B"D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/Build" D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake --build . Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved. Checking Build System Building Custom Rule D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists .txt FirstReconstruction.cxx LINK : fatal error LNK1104: cannot open file 'RTK.lib' [D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\exampl es\FirstReconstruction\Build\FirstReconstruction.vcxproj] ---- Do you know what I?m doing wrong? Margot From: Simon Rit Sent: maandag 30 november 2020 23:09 To: Bleeker, M. (Margot) Cc: rtk-users at public.kitware.com Subject: Re: [Rtk-users] Building First Reconstruction Hi, Can you confirm that you have built ITK with Module_RTK ON also in Debug mode? See https://github.com/SimonRit/RTK/blob/master/INSTALLATION.md for some instructions. Simon On Fri, Nov 27, 2020 at 3:10 PM Bleeker, M. (Margot) > wrote: Hello, I am now trying to use RTK via Cmake/C++ (to which I am not familiar with). I am using Windows 10 and compiled using Visual Studio 16 2019 and use ITK 5.1.1. During building of FirstReconstruction I get the error: ---- D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake --build . Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved. Checking Build System Building Custom Rule D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists .txt FirstReconstruction.cxx LINK : fatal error LNK1104: cannot open file 'D:\Program files\InsightToolkit-5.1.1\Build\lib\Debug\itkRTK-5.1.lib' [D: \Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build\FirstReconstruction.vcxproj] ------ Does anyone know how I can solve this issue? Many thanks in advance! Kind regards, Margot ______________________________________________________ VUmc disclaimer : www.vumc.nl/disclaimer AMC disclaimer : www.amc.nl/disclaimer _______________________________________________ Rtk-users mailing list Rtk-users at public.kitware.com https://public.kitware.com/mailman/listinfo/rtk-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 4 03:21:26 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 4 Dec 2020 09:21:26 +0100 Subject: [Rtk-users] Building First Reconstruction In-Reply-To: References: Message-ID: Hi, I'm not sure you're actually building ITK. Here is a set of 4 command lines that configured and built ITK (with RTK) and the exemple on a Windows box with MSVC 2019: cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -S"c:\src\itk\ITK-master" -B"c:\src\itk\margot" -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -DModule_RTK_GIT_TAG=master -DBUILD_TESTING=OFF cmake --build c:\src\itk\margot cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DITK_DIR:STRING=c:\src\itk\margot Module_RTK:BOOL=ON -S"c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction" -B"c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction\margot" cmake --build c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction\margot I normally never do that, I personally find it simpler to use cmake-gui for producing the MSVC solution and then to open it in the MSVC gui to launch the build. But that works too! I hope it helps, Simon On Wed, Dec 2, 2020 at 9:02 AM Bleeker, M. (Margot) < m.bleeker at amsterdamumc.nl> wrote: > Hi; > > > > Thanks for your reply. I?m pretty new to this. At first I build ITK with > Module_RTK ON in Release mode. I now build it in Debug mode using the > following line in the command prompt: > > > > --- > > *cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -S"D:\Program > files\InsightToolkit-5.1.1" -B"D:\Program files\InsightToolkit-5.1.1\Build"* > > --- > > > > During the build of FirstReconstruction I now get the same error, but a > different file cannot be opened: > > > > ---- > > *cmake -S"D:/Program > files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction" > -B"D:/Program > files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/Build"* > > > > *D:\Program > files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake > --build .* > > Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework > > Copyright (C) Microsoft Corporation. All rights reserved. > > > > Checking Build System > > Building Custom Rule D:/Program > files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists > > .txt > > FirstReconstruction.cxx > > LINK : fatal error LNK1104: cannot open file 'RTK.lib' [D:\Program > files\InsightToolkit-5.1.1\Modules\Remote\RTK\exampl > > es\FirstReconstruction\Build\FirstReconstruction.vcxproj] > > > > ---- > > Do you know what I?m doing wrong? > > > Margot > > > > > > *From:* Simon Rit > *Sent:* maandag 30 november 2020 23:09 > *To:* Bleeker, M. (Margot) > *Cc:* rtk-users at public.kitware.com > *Subject:* Re: [Rtk-users] Building First Reconstruction > > > > Hi, > > Can you confirm that you have built ITK with Module_RTK ON also in Debug > mode? See https://github.com/SimonRit/RTK/blob/master/INSTALLATION.md > > for some instructions. > > Simon > > > > On Fri, Nov 27, 2020 at 3:10 PM Bleeker, M. (Margot) < > m.bleeker at amsterdamumc.nl> wrote: > > Hello, > > > > I am now trying to use RTK via Cmake/C++ (to which I am not familiar > with). I am using Windows 10 and compiled using Visual Studio 16 2019 and > use ITK 5.1.1. During building of FirstReconstruction I get the error: > > ---- > > D:\Program > files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake > --build . > > Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework > > Copyright (C) Microsoft Corporation. All rights reserved. > > > > Checking Build System > > Building Custom Rule D:/Program > files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists > > .txt > > FirstReconstruction.cxx > > LINK : fatal error LNK1104: cannot open file 'D:\Program > files\InsightToolkit-5.1.1\Build\lib\Debug\itkRTK-5.1.lib' [D: > > \Program > files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build\FirstReconstruction.vcxproj] > > ------ > > > > Does anyone know how I can solve this issue? > > Many thanks in advance! > > Kind regards, > Margot > > > > > > ______________________________________________________ > VUmc disclaimer : www.vumc.nl/disclaimer > AMC disclaimer : www.amc.nl/disclaimer > > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 4 05:14:46 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 4 Dec 2020 11:14:46 +0100 Subject: [Rtk-users] Reconstruction from two eccentric short scans In-Reply-To: <002c01d6bf1f$f4320ae0$dc9620a0$@gmail.com> References: <002c01d6bf1f$f4320ae0$dc9620a0$@gmail.com> Message-ID: Hi Gabriele, I ran your line codes. You're projections are not truncated so you can just work on one acquisition at a time. For the first simulation, I think that there is not enough data. That's unfortunate that RTK does not issue a warning, I have opened an issue . For the second one, I think that the problem is that RTK detects both a short scan and a displaced detector. The second weighting can be disabled with ---nodisplaced and you obtain then an accurate fdk2.mha. I think it's difficult to combine the two acquisitions because the two fan-beam are from different source positions... I think your best chance is to reconstruct each acquisition separately. Simon On Fri, Nov 20, 2020 at 10:32 AM wrote: > Dear Simon & RTK users, > > I?m picking up again the two complementary short scan reconstructions as > this time I?m interested in investigating source offset with panel > (proj_iso) offsets. > Early this year, Simon suggested me a clever solution to deal with my > issue of a complex scan and after that I was able to properly reconstruct > (see end notes from previous email). > However, by applying the same logic I get strange results: > > rtksimulatedgeometry -v -o geometry_sx_220_600.xml -a 220 -f -110 -n 300 > --sid 1172.2 --sdd 1672.2 --proj_iso_x 60 --source_x 60 > > rtksimulatedgeometry -v -o geometry_dx_220_600.xml -a -220 -f 110 -n 300 > --sid 1172.2 --sdd 1672.2 --proj_iso_x -60 --source_x -60 > > rtkprojectshepploganphantom -g geometry_sx_220_600.xml -o proj1.mha > --dimension 512,3 > > rtkprojectshepploganphantom -g geometry_dx_220_600.xml -o proj2.mha > --dimension 512,3 > > rtkfdk --dimension 256,1,256 -p . -r proj1.mha -o fdk1.mha -g > geometry_sx_220_600.xml > > rtkfdk --dimension 256,1,256 -p . -r proj2.mha -o fdk2.mha -g > geometry_dx_220_600.xml > > plastimatch add --average fdk1.mha fdk2.mha --output fdk.mha > > > > I used a SheppLogan to recreate my complex acquisition: > - First rotation (-110 to 110) with a positive shift in source and detector > > - Second rotation (110 to -110) with a negative shift in source and > detector > > I tried this with several different images and small changes, but the > result is pretty much summed up in the attached picture. By comparing a > standard image with the one I?m reconstructing we can see how the values in > the top part of the image are lower and those at the bottom are greater > than the expected values. > PS: Maybe the shepplogan isn?t the best way to show this, but this way you > can recreate the issue directly. Using a CT to project and recontruct I?m > looking up to ?200HU differences > > What do you think about this? I was thinking that the PSSF weighting may > not be suited for this specific condition, but I?m really up looking > forward for your opinion. > Extra: To support my instance, I tried to make a comparison between a 360? > (positive shift in source and detector) reconstruction and one which is a > sum of two 220? (-110to110to330) reconstructions with the same positive > offset parameters and I got weird shadowing in the final image. > > Thank you in advance! > > Best regards, > Gabriele > > > > > > Thanks. Why not just split the projection stack in two and apply the > displaced detector filter without modifications on each substack > separately? Doesn't this work? Here is a sample code with command lines > > head -2705 geometry_hf_dual_220_300.xml >rot1.xml > > tail -1 geometry_hf_dual_220_300.xml >>rot1.xml > > > > head -5 geometry_hf_dual_220_300.xml >rot2.xml > > tail -2701 geometry_hf_dual_220_300.xml >>rot2.xml > > > > rtkprojectshepploganphantom -g rot1.xml -o proj1.mha --dimension 512,3 > > rtkprojectshepploganphantom -g rot2.xml -o proj2.mha --dimension 512,3 > > rtkfdk --dimension 256,1,256 -p . -r proj1.mha -o fdk1.mha -g rot1.xml > > rtkfdk --dimension 256,1,256 -p . -r proj2.mha -o fdk2.mha -g rot2.xml > > clitkImageArithm -i fdk1.mha -j fdk2.mha -o fdk.mha > > This works perfectly without 1a20fb4 > > so it seems that this patch is not required. There must be something wrong > in your input data? > > ? > > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.bleeker at amsterdamumc.nl Fri Dec 4 07:42:23 2020 From: m.bleeker at amsterdamumc.nl (Bleeker, M. (Margot)) Date: Fri, 4 Dec 2020 12:42:23 +0000 Subject: [Rtk-users] Building First Reconstruction In-Reply-To: References: Message-ID: Hi Simon, Thanks a lot for your help! You were right, I forgot to actually build ITK.. This worked! Margot From: Simon Rit Sent: vrijdag 4 december 2020 09:21 To: Bleeker, M. (Margot) Cc: rtk-users at public.kitware.com Subject: Re: [Rtk-users] Building First Reconstruction Hi, I'm not sure you're actually building ITK. Here is a set of 4 command lines that configured and built ITK (with RTK) and the exemple on a Windows box with MSVC 2019: cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -S"c:\src\itk\ITK-master" -B"c:\src\itk\margot" -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -DModule_RTK_GIT_TAG=master -DBUILD_TESTING=OFF cmake --build c:\src\itk\margot cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DITK_DIR:STRING=c:\src\itk\margot Module_RTK:BOOL=ON -S"c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction" -B"c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction\margot" cmake --build c:\src\itk\ITK-master\Modules\Remote\RTK\examples\FirstReconstruction\margot I normally never do that, I personally find it simpler to use cmake-gui for producing the MSVC solution and then to open it in the MSVC gui to launch the build. But that works too! I hope it helps, Simon On Wed, Dec 2, 2020 at 9:02 AM Bleeker, M. (Margot) > wrote: Hi; Thanks for your reply. I?m pretty new to this. At first I build ITK with Module_RTK ON in Release mode. I now build it in Debug mode using the following line in the command prompt: --- cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DModule_RTK:BOOL=ON -S"D:\Program files\InsightToolkit-5.1.1" -B"D:\Program files\InsightToolkit-5.1.1\Build" --- During the build of FirstReconstruction I now get the same error, but a different file cannot be opened: ---- cmake -S"D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction" -B"D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/Build" D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake --build . Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved. Checking Build System Building Custom Rule D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists .txt FirstReconstruction.cxx LINK : fatal error LNK1104: cannot open file 'RTK.lib' [D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\exampl es\FirstReconstruction\Build\FirstReconstruction.vcxproj] ---- Do you know what I?m doing wrong? Margot From: Simon Rit > Sent: maandag 30 november 2020 23:09 To: Bleeker, M. (Margot) > Cc: rtk-users at public.kitware.com Subject: Re: [Rtk-users] Building First Reconstruction Hi, Can you confirm that you have built ITK with Module_RTK ON also in Debug mode? See https://github.com/SimonRit/RTK/blob/master/INSTALLATION.md for some instructions. Simon On Fri, Nov 27, 2020 at 3:10 PM Bleeker, M. (Margot) > wrote: Hello, I am now trying to use RTK via Cmake/C++ (to which I am not familiar with). I am using Windows 10 and compiled using Visual Studio 16 2019 and use ITK 5.1.1. During building of FirstReconstruction I get the error: ---- D:\Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build>cmake --build . Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved. Checking Build System Building Custom Rule D:/Program files/InsightToolkit-5.1.1/Modules/Remote/RTK/examples/FirstReconstruction/CMakeLists .txt FirstReconstruction.cxx LINK : fatal error LNK1104: cannot open file 'D:\Program files\InsightToolkit-5.1.1\Build\lib\Debug\itkRTK-5.1.lib' [D: \Program files\InsightToolkit-5.1.1\Modules\Remote\RTK\examples\FirstReconstruction\Build\FirstReconstruction.vcxproj] ------ Does anyone know how I can solve this issue? Many thanks in advance! Kind regards, Margot ______________________________________________________ VUmc disclaimer : www.vumc.nl/disclaimer AMC disclaimer : www.amc.nl/disclaimer _______________________________________________ Rtk-users mailing list Rtk-users at public.kitware.com https://public.kitware.com/mailman/listinfo/rtk-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From jamesjqfeng at gmail.com Mon Dec 7 00:00:46 2020 From: jamesjqfeng at gmail.com (James Feng) Date: Sun, 6 Dec 2020 21:00:46 -0800 Subject: [Rtk-users] FirstConstruction Message-ID: Hello, I am new to ITK and RTK and I'm trying to use the RTK in Windows 10 and compiled using Visual Studio 2019 and ITK 5.1,1 Built and Installed ITK and RTK successfully; Created and built FirstReconstruction project successfully in MS VS 2019 I got an error when running the FirstReconstruction, the error happened when writing output image file, cannot CreateImageIO. my input parameters are two strings: my_image my_geometry my_geometry file created and looked fine. Does anyone know what I am doing wrong and how to solve this issue? Thanks Sincerely, James Feng -------------- next part -------------- An HTML attachment was scrubbed... URL: From prekrasnaya1985 at gmail.com Mon Dec 7 01:11:41 2020 From: prekrasnaya1985 at gmail.com (Julia Semyakishkina) Date: Mon, 7 Dec 2020 12:11:41 +0600 Subject: [Rtk-users] detector with not multiple pixel gap Message-ID: Hi! I have a slightly non-typical task. I've got a detector with a vertical gap that is not equal to pixel, so if I just insert interpolated pixel(s) to projection then corresponding geometry artifacts appear. https://i.imgur.com/1gwW1vx.png In order to take full account of the gap I'm trying to reconstruct my volume twice. So there are two sets of projections on opposite sides of the gap. I passed simple steps: - firstly reconstruct volume for the left side with correct offset that takes into account the gap; - reconstruct volume for the right side with also correct offset and initial volume from previous reconstruction; The volume obtained by this sequence does not suffer from geometry artifacts! However, there is a bright point in the center of the volume and the lines that come out of it. https://imgur.com/nUJ1IW5. Obviously, it's related to projection's edge, just like a fov circle in usual reconstruction. Is there any way to get rid of it ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From jamesjqfeng at gmail.com Mon Dec 7 01:04:55 2020 From: jamesjqfeng at gmail.com (James Feng) Date: Sun, 6 Dec 2020 22:04:55 -0800 Subject: [Rtk-users] FirstReconstruction Message-ID: Hello, FirstReconstruction Issue resolved. Thanks. James Feng -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Tue Dec 8 03:37:22 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Tue, 8 Dec 2020 09:37:22 +0100 Subject: [Rtk-users] detector with not multiple pixel gap In-Reply-To: References: Message-ID: Hi Julia, The artifact on the first image is not obvious to me. Can you clarify which artifact is visible on the first image but not on the second? In the second image, is the gap exactly at the center of the image? If yes, I don't see a better solution than interpolating between adjacent pixels. Simon On Mon, Dec 7, 2020 at 6:11 AM Julia Semyakishkina < prekrasnaya1985 at gmail.com> wrote: > Hi! > I have a slightly non-typical task. I've got a detector with a vertical > gap that is not equal to pixel, so if I just insert interpolated pixel(s) > to projection then corresponding geometry artifacts appear. > https://i.imgur.com/1gwW1vx.png > > In order to take full account of the gap I'm trying to reconstruct my > volume twice. So there are two sets of projections on opposite sides of the > gap. I passed simple steps: > - firstly reconstruct volume for the left side with correct offset that > takes into account the gap; > - reconstruct volume for the right side with also correct offset and > initial volume from previous reconstruction; > > The volume obtained by this sequence does not suffer from geometry > artifacts! However, there is a bright point in the center of the volume and > the lines that come out of it. https://imgur.com/nUJ1IW5. Obviously, it's > related to projection's edge, just like a fov circle in usual > reconstruction. Is there any way to get rid of it ? > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yao_hao777 at hotmail.com Wed Dec 9 02:58:15 2020 From: yao_hao777 at hotmail.com (Lai Yao Hao) Date: Wed, 9 Dec 2020 07:58:15 +0000 Subject: [Rtk-users] FirstReconstruction questions Message-ID: Hi to all the rtk-users I am a new user of rtk, and I have some questions regarding the FirstReconstruction example given in github. I have generated an image as attached, with 4 tiny ball-like drawing hanging from the top. Can anyone explain to me why do I get such image and what are the implications of constantImageSource, rei, constantImageSource2, feldkamp and fieldofview? Your explanation will be much appreciated. Thanks in advance! Regards lyh -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screenshot from 2020-12-09 15-54-35.png Type: image/png Size: 20006 bytes Desc: Screenshot from 2020-12-09 15-54-35.png URL: From simon.rit at creatis.insa-lyon.fr Wed Dec 9 03:23:21 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Wed, 9 Dec 2020 09:23:21 +0100 Subject: [Rtk-users] FirstReconstruction questions In-Reply-To: References: Message-ID: Hi, constantImageSource creates a constant volume. In the example, one is used as input of the simulation of projections of an ellipsoid (rei) and one as input of the reconstruction algorithm (feldkamp). fieldofview masks out (i.e., set to 0) voxels which are not in the field of view. I don't understand your screenshot either but if you use the tiff format, make sure you use a viewer capable of dealing with 3D tiff images (e.g., vv or ImageJ). Simon On Wed, Dec 9, 2020 at 8:59 AM Lai Yao Hao wrote: > Hi to all the rtk-users > > I am a new user of rtk, and I have some questions regarding the > FirstReconstruction example given in github. I have generated an image as > attached, with 4 tiny ball-like drawing hanging from the top. Can anyone > explain to me why do I get such image and what are the implications of > constantImageSource, rei, constantImageSource2, feldkamp and fieldofview? > > Your explanation will be much appreciated. Thanks in advance! > > Regards > lyh > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Benjamin.W.Maloney.TH at dartmouth.edu Wed Dec 9 13:18:49 2020 From: Benjamin.W.Maloney.TH at dartmouth.edu (Benjamin W. Maloney) Date: Wed, 9 Dec 2020 18:18:49 +0000 Subject: [Rtk-users] ThreeDCircularProjectionGeometry Angular Arc Message-ID: Hi all, I had a question about the angular arc of projections fed into the ThreeDCircularProjectionGeometry to be used in an FDK Cone Beam Reconstruction. The hardware for the CT system I'm using is not capable of moving exactly 360 degrees as part of a scan. If I know the angular step well is it better for the projections to cover slightly less or slightly more than 360 degrees? Can RTK handle arcs larger than 1 full rotation or arcs slightly less than 1 full rotation without errors? My assumption is that slightly largely is best to avoid artifacts but I want to verify that RTK can handle larger rotations without errors Best, Ben -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Wed Dec 9 16:07:37 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Wed, 9 Dec 2020 22:07:37 +0100 Subject: [Rtk-users] ThreeDCircularProjectionGeometry Angular Arc In-Reply-To: References: Message-ID: Hi, You're right, it's better to cover slightly more than 360 degrees if the scanner follows the same piece of trajectory at the beginning and at the end (on a circle since you're using FDK). Rotation angles are currently forced between 0 and 2 pi, see here . I think you can feed RTK with unordered projections, it will order them to compute angular gaps between the projections. See code here . My advice is to quickly write a simulation code with a sample geometry to check that you obtain the expected results. Keep us posted if something does not work as expected, Simon On Wed, Dec 9, 2020 at 7:19 PM Benjamin W. Maloney via Rtk-users < rtk-users at public.kitware.com> wrote: > Hi all, > > I had a question about the angular arc of projections fed into > the ThreeDCircularProjectionGeometry to be used in an FDK Cone Beam > Reconstruction. > > The hardware for the CT system I'm using is not capable of moving exactly > 360 degrees as part of a scan. If I know the angular step well is it better > for the projections to cover slightly less or slightly more than 360 > degrees? > > Can RTK handle arcs larger than 1 full rotation or arcs slightly less than > 1 full rotation without errors? > > My assumption is that slightly largely is best to avoid artifacts but I > want to verify that RTK can handle larger rotations without errors > > Best, > Ben > > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From clement.mirabel at gmail.com Fri Dec 11 03:10:56 2020 From: clement.mirabel at gmail.com (=?UTF-8?Q?Cl=C3=A9ment_Mirabel?=) Date: Fri, 11 Dec 2020 09:10:56 +0100 Subject: [Rtk-users] Trying to reconstruct with a 180 degrees circular projection geometry Message-ID: Hi, I have been trying to set the geometry in ThreeDCircularProjectionGeometry with values between 0 and 180 degrees, to reproduce the motion of some acquisition systems, but reconstruction is far from the expected result when the gantry angle does not reach max value of (360-increment). (Attached is the geometry file generated) My workflow is the following : - Apply JosephForwardProjectionImageFilter on a 3D Volume - Try to reconstruct using FDKConeBeamReconstructionFilter Although, the result from JosephForwardProjectionImageFilter describes a 180 degrees rotation, the output of the reconstruction seems to display rays from opposite direction but not from rotated directions Here is a view of what is supposed to be an axial slice: [image: image.png] Thanks for your help! Cl?ment -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 69568 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: geometry.xml Type: text/xml Size: 32503 bytes Desc: not available URL: From gabriele.belotti.bergamo at gmail.com Fri Dec 11 03:23:09 2020 From: gabriele.belotti.bergamo at gmail.com (gabriele.belotti.bergamo at gmail.com) Date: Fri, 11 Dec 2020 09:23:09 +0100 Subject: [Rtk-users] R: Trying to reconstruct with a 180 degrees circular projection geometry In-Reply-To: References: Message-ID: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> Hi Cl?ment, It seems likely that your geometry is not 180+fan-angle complete and therefore cannot lead to a proper reconstruction. From your attached geometry, you sweep from 0 to 178? (180-increment). My suggestion would be to try some intermediate angles, so to recreate a complete ShortScan. I suggest you to try at least a 200/220 ? arc to check on your simulation pipeline. I hope this is helpful, Gabriele Da: Rtk-users Per conto di Cl?ment Mirabel Inviato: venerd? 11 dicembre 2020 09:11 A: rtk-users at public.kitware.com Oggetto: [Rtk-users] Trying to reconstruct with a 180 degrees circular projection geometry Hi, I have been trying to set the geometry in ThreeDCircularProjectionGeometry with values between 0 and 180 degrees, to reproduce the motion of some acquisition systems, but reconstruction is far from the expected result when the gantry angle does not reach max value of (360-increment). (Attached is the geometry file generated) My workflow is the following : * Apply JosephForwardProjectionImageFilter on a 3D Volume * Try to reconstruct using FDKConeBeamReconstructionFilter Although, the result from JosephForwardProjectionImageFilter describes a 180 degrees rotation, the output of the reconstruction seems to display rays from opposite direction but not from rotated directions Here is a view of what is supposed to be an axial slice: Thanks for your help! Cl?ment -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 69568 bytes Desc: not available URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 11 04:02:53 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 11 Dec 2020 10:02:53 +0100 Subject: [Rtk-users] R: Trying to reconstruct with a 180 degrees circular projection geometry In-Reply-To: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> References: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> Message-ID: Hi Cl?ment, To complement Gabriele's response and explains what goes on. FDK requires a 360? acquisition. RTK will calculate the angular gap between the current projection and the two neighbors. With your configuration, two projections take an angular weight (the delta when discretising the backprojection integral) of about 90?. You can do a short scan with Parker weightings but, as stated by Gabriele, that necessitates at least 180? + the cone angle. Simon On Fri, Dec 11, 2020 at 9:23 AM wrote: > Hi Cl?ment, > > It seems likely that your geometry is not 180+fan-angle complete and > therefore cannot lead to a proper reconstruction. From your attached > geometry, you sweep from 0 to 178? (180-increment). > > My suggestion would be to try some intermediate angles, so to recreate a > complete ShortScan. I suggest you to try at least a 200/220 ? arc to check > on your simulation pipeline. > > I hope this is helpful, > Gabriele > > > > *Da:* Rtk-users *Per conto di *Cl?ment > Mirabel > *Inviato:* venerd? 11 dicembre 2020 09:11 > *A:* rtk-users at public.kitware.com > *Oggetto:* [Rtk-users] Trying to reconstruct with a 180 degrees circular > projection geometry > > > > Hi, > > > > I have been trying to set the geometry in ThreeDCircularProjectionGeometry > with values between 0 and 180 degrees, to reproduce the motion of some > acquisition systems, but reconstruction is far from the expected result > when the gantry angle does not reach max value of (360-increment). > (Attached is the geometry file generated) > > My workflow is the following : > > - Apply JosephForwardProjectionImageFilter on a 3D Volume > - Try to reconstruct using FDKConeBeamReconstructionFilter > > Although, the result from JosephForwardProjectionImageFilter describes a > 180 degrees rotation, the output of the reconstruction seems to display > rays from opposite direction but not from rotated directions > > > > Here is a view of what is supposed to be an axial slice: > > > > Thanks for your help! > > > > Cl?ment > > > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 69568 bytes Desc: not available URL: From clement.mirabel at gmail.com Fri Dec 11 05:27:07 2020 From: clement.mirabel at gmail.com (=?UTF-8?Q?Cl=C3=A9ment_Mirabel?=) Date: Fri, 11 Dec 2020 11:27:07 +0100 Subject: [Rtk-users] R: Trying to reconstruct with a 180 degrees circular projection geometry In-Reply-To: References: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> Message-ID: Hi, Thank you both for your answer. I managed to have a good reconstruction with 200? since my cone angle is about 20?. I didn't mention in my original email that I was already using Parker weightings, but as you mentioned I needed higher angles. Thank you for your help. As a more general question, the machine I am using to acquire data can only rotate 180? around the patient but is still able to reconstruct (I don't have access to the projections, it generates a 3d volume as output). Are you aware of any algorithm that would be able to do so? Cl?ment Le ven. 11 d?c. 2020 ? 10:03, Simon Rit a ?crit : > Hi Cl?ment, > To complement Gabriele's response and explains what goes on. FDK requires > a 360? acquisition. RTK will calculate the angular gap between the current > projection and the two neighbors. With your configuration, two projections > take an angular weight (the delta when discretising the backprojection > integral) of about 90?. > You can do a short scan with Parker weightings but, as stated by Gabriele, > that necessitates at least 180? + the cone angle. > Simon > > On Fri, Dec 11, 2020 at 9:23 AM > wrote: > >> Hi Cl?ment, >> >> It seems likely that your geometry is not 180+fan-angle complete and >> therefore cannot lead to a proper reconstruction. From your attached >> geometry, you sweep from 0 to 178? (180-increment). >> >> My suggestion would be to try some intermediate angles, so to recreate a >> complete ShortScan. I suggest you to try at least a 200/220 ? arc to check >> on your simulation pipeline. >> >> I hope this is helpful, >> Gabriele >> >> >> >> *Da:* Rtk-users *Per conto di *Cl?ment >> Mirabel >> *Inviato:* venerd? 11 dicembre 2020 09:11 >> *A:* rtk-users at public.kitware.com >> *Oggetto:* [Rtk-users] Trying to reconstruct with a 180 degrees circular >> projection geometry >> >> >> >> Hi, >> >> >> >> I have been trying to set the geometry in >> ThreeDCircularProjectionGeometry with values between 0 and 180 degrees, to >> reproduce the motion of some acquisition systems, but reconstruction is far >> from the expected result when the gantry angle does not reach max value of >> (360-increment). (Attached is the geometry file generated) >> >> My workflow is the following : >> >> - Apply JosephForwardProjectionImageFilter on a 3D Volume >> - Try to reconstruct using FDKConeBeamReconstructionFilter >> >> Although, the result from JosephForwardProjectionImageFilter describes a >> 180 degrees rotation, the output of the reconstruction seems to display >> rays from opposite direction but not from rotated directions >> >> >> >> Here is a view of what is supposed to be an axial slice: >> >> >> >> Thanks for your help! >> >> >> >> Cl?ment >> >> >> _______________________________________________ >> Rtk-users mailing list >> Rtk-users at public.kitware.com >> https://public.kitware.com/mailman/listinfo/rtk-users >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 69568 bytes Desc: not available URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 11 05:44:34 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 11 Dec 2020 11:44:34 +0100 Subject: [Rtk-users] R: Trying to reconstruct with a 180 degrees circular projection geometry In-Reply-To: References: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> Message-ID: You can check https://doi.org/10.1088/0031-9155/47/14/311 which is not implemented in RTK (yet). But only one half of the field-of-view can be reconstructed exactly if you rate 180?. For the rest, there will be missing data. With RTK, iterative reconstruction should achieve a decent result but will necessarily be limited by the missing data. I recommend the conjugate gradient algorithm which will require adjusting the regularization parameter Gamma and the number of iterations. On Fri, Dec 11, 2020 at 11:26 AM Cl?ment Mirabel wrote: > Hi, > > Thank you both for your answer. > I managed to have a good reconstruction with 200? since my cone angle is > about 20?. I didn't mention in my original email that I was already using > Parker weightings, but as you mentioned I needed higher angles. Thank you > for your help. > As a more general question, the machine I am using to acquire data can > only rotate 180? around the patient but is still able to reconstruct (I > don't have access to the projections, it generates a 3d volume as output). > Are you aware of any algorithm that would be able to do so? > > Cl?ment > > Le ven. 11 d?c. 2020 ? 10:03, Simon Rit > a ?crit : > >> Hi Cl?ment, >> To complement Gabriele's response and explains what goes on. FDK requires >> a 360? acquisition. RTK will calculate the angular gap between the current >> projection and the two neighbors. With your configuration, two projections >> take an angular weight (the delta when discretising the backprojection >> integral) of about 90?. >> You can do a short scan with Parker weightings but, as stated by >> Gabriele, that necessitates at least 180? + the cone angle. >> Simon >> >> On Fri, Dec 11, 2020 at 9:23 AM >> wrote: >> >>> Hi Cl?ment, >>> >>> It seems likely that your geometry is not 180+fan-angle complete and >>> therefore cannot lead to a proper reconstruction. From your attached >>> geometry, you sweep from 0 to 178? (180-increment). >>> >>> My suggestion would be to try some intermediate angles, so to recreate a >>> complete ShortScan. I suggest you to try at least a 200/220 ? arc to check >>> on your simulation pipeline. >>> >>> I hope this is helpful, >>> Gabriele >>> >>> >>> >>> *Da:* Rtk-users *Per conto di *Cl?ment >>> Mirabel >>> *Inviato:* venerd? 11 dicembre 2020 09:11 >>> *A:* rtk-users at public.kitware.com >>> *Oggetto:* [Rtk-users] Trying to reconstruct with a 180 degrees >>> circular projection geometry >>> >>> >>> >>> Hi, >>> >>> >>> >>> I have been trying to set the geometry in >>> ThreeDCircularProjectionGeometry with values between 0 and 180 degrees, to >>> reproduce the motion of some acquisition systems, but reconstruction is far >>> from the expected result when the gantry angle does not reach max value of >>> (360-increment). (Attached is the geometry file generated) >>> >>> My workflow is the following : >>> >>> - Apply JosephForwardProjectionImageFilter on a 3D Volume >>> - Try to reconstruct using FDKConeBeamReconstructionFilter >>> >>> Although, the result from JosephForwardProjectionImageFilter describes a >>> 180 degrees rotation, the output of the reconstruction seems to display >>> rays from opposite direction but not from rotated directions >>> >>> >>> >>> Here is a view of what is supposed to be an axial slice: >>> >>> >>> >>> Thanks for your help! >>> >>> >>> >>> Cl?ment >>> >>> >>> _______________________________________________ >>> Rtk-users mailing list >>> Rtk-users at public.kitware.com >>> https://public.kitware.com/mailman/listinfo/rtk-users >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 69568 bytes Desc: not available URL: From clement.mirabel at gmail.com Fri Dec 11 06:57:03 2020 From: clement.mirabel at gmail.com (=?UTF-8?Q?Cl=C3=A9ment_Mirabel?=) Date: Fri, 11 Dec 2020 12:57:03 +0100 Subject: [Rtk-users] R: Trying to reconstruct with a 180 degrees circular projection geometry In-Reply-To: References: <001501d6cf96$dc65ee40$9531cac0$@gmail.com> Message-ID: Alright, I will give it a try. Thank you for your guidance! Le ven. 11 d?c. 2020 ? 11:44, Simon Rit a ?crit : > You can check https://doi.org/10.1088/0031-9155/47/14/311 which is not > implemented in RTK (yet). But only one half of the field-of-view can be > reconstructed exactly if you rate 180?. For the rest, there will be missing > data. > With RTK, iterative reconstruction should achieve a decent result but will > necessarily be limited by the missing data. I recommend the conjugate > gradient algorithm which will require adjusting the regularization > parameter Gamma and the number of iterations. > > On Fri, Dec 11, 2020 at 11:26 AM Cl?ment Mirabel < > clement.mirabel at gmail.com> wrote: > >> Hi, >> >> Thank you both for your answer. >> I managed to have a good reconstruction with 200? since my cone angle is >> about 20?. I didn't mention in my original email that I was already using >> Parker weightings, but as you mentioned I needed higher angles. Thank you >> for your help. >> As a more general question, the machine I am using to acquire data can >> only rotate 180? around the patient but is still able to reconstruct (I >> don't have access to the projections, it generates a 3d volume as output). >> Are you aware of any algorithm that would be able to do so? >> >> Cl?ment >> >> Le ven. 11 d?c. 2020 ? 10:03, Simon Rit >> a ?crit : >> >>> Hi Cl?ment, >>> To complement Gabriele's response and explains what goes on. FDK >>> requires a 360? acquisition. RTK will calculate the angular gap between the >>> current projection and the two neighbors. With your configuration, two >>> projections take an angular weight (the delta when discretising the >>> backprojection integral) of about 90?. >>> You can do a short scan with Parker weightings but, as stated by >>> Gabriele, that necessitates at least 180? + the cone angle. >>> Simon >>> >>> On Fri, Dec 11, 2020 at 9:23 AM >>> wrote: >>> >>>> Hi Cl?ment, >>>> >>>> It seems likely that your geometry is not 180+fan-angle complete and >>>> therefore cannot lead to a proper reconstruction. From your attached >>>> geometry, you sweep from 0 to 178? (180-increment). >>>> >>>> My suggestion would be to try some intermediate angles, so to recreate >>>> a complete ShortScan. I suggest you to try at least a 200/220 ? arc to >>>> check on your simulation pipeline. >>>> >>>> I hope this is helpful, >>>> Gabriele >>>> >>>> >>>> >>>> *Da:* Rtk-users *Per conto di *Cl?ment >>>> Mirabel >>>> *Inviato:* venerd? 11 dicembre 2020 09:11 >>>> *A:* rtk-users at public.kitware.com >>>> *Oggetto:* [Rtk-users] Trying to reconstruct with a 180 degrees >>>> circular projection geometry >>>> >>>> >>>> >>>> Hi, >>>> >>>> >>>> >>>> I have been trying to set the geometry in >>>> ThreeDCircularProjectionGeometry with values between 0 and 180 degrees, to >>>> reproduce the motion of some acquisition systems, but reconstruction is far >>>> from the expected result when the gantry angle does not reach max value of >>>> (360-increment). (Attached is the geometry file generated) >>>> >>>> My workflow is the following : >>>> >>>> - Apply JosephForwardProjectionImageFilter on a 3D Volume >>>> - Try to reconstruct using FDKConeBeamReconstructionFilter >>>> >>>> Although, the result from JosephForwardProjectionImageFilter describes >>>> a 180 degrees rotation, the output of the reconstruction seems to display >>>> rays from opposite direction but not from rotated directions >>>> >>>> >>>> >>>> Here is a view of what is supposed to be an axial slice: >>>> >>>> >>>> >>>> Thanks for your help! >>>> >>>> >>>> >>>> Cl?ment >>>> >>>> >>>> _______________________________________________ >>>> Rtk-users mailing list >>>> Rtk-users at public.kitware.com >>>> https://public.kitware.com/mailman/listinfo/rtk-users >>>> >>> -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 69568 bytes Desc: not available URL: From jamesjqfeng at gmail.com Sun Dec 13 13:09:51 2020 From: jamesjqfeng at gmail.com (James Feng) Date: Sun, 13 Dec 2020 10:09:51 -0800 Subject: [Rtk-users] SIRT Algorithm Message-ID: Hi all rtk users, DId anyone know a 3D SIRT reconstruction algorithm available in RTK? I looked up the class lists and didn't find any. Thanks, James Feng -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Sun Dec 13 15:56:26 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Sun, 13 Dec 2020 21:56:26 +0100 Subject: [Rtk-users] SIRT Algorithm In-Reply-To: References: Message-ID: Hi, I think SIRT comes down to using RTK SART and setting the number of projections per subset to the total number of projections. Simon On Sun, Dec 13, 2020 at 7:10 PM James Feng wrote: > Hi all rtk users, > > DId anyone know a 3D SIRT reconstruction algorithm available in RTK? I > looked up the class lists and didn't find any. > > Thanks, > James Feng > > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From clement.mirabel at gmail.com Wed Dec 16 04:36:15 2020 From: clement.mirabel at gmail.com (=?UTF-8?Q?Cl=C3=A9ment_Mirabel?=) Date: Wed, 16 Dec 2020 10:36:15 +0100 Subject: [Rtk-users] Troubleshooting Conjugate Gradient Filter in Python Message-ID: Hi, I created another topic since the content is different from the previous one and people could land here with a different search in the archives. While trying to reconstruct a set of images from 0 and 180? without having to add the fan angle, Simon recommended to use the conjugate gradient algorithm in RTK. So, I first tried to replicate in Python the conjugate gradient application written in C++ ( https://github.com/SimonRit/RTK/tree/master/applications/rtkconjugategradient). But whatever types of input I set, my python kernel dies when updating the filter without any error or debug message. I spent some time thinking about it but I can't find out what is wrong. I have attached my code at the end of this message if you have suggestions about what would be wrong. Thanks for your help, Cl?ment ------------------------------------------------------------------------------------------------------------ # Defines the image type ImageType = itk.Image[itk.F,3] # Defines the RTK geometry object geometry = rtk.ThreeDCircularProjectionGeometry.New() numberOfProjections = 180 firstAngle = 90 sid = 600 # source to isocenter distance sdd = 1200 # source to detector distance angularArc = 180 for x in range(0,numberOfProjections): angle = firstAngle + x * angularArc / numberOfProjections geometry.AddProjection(sid,sdd,angle) # Create a stack of empty projection images ConstantImageSourceType = rtk.ConstantImageSource[ImageType] constantImageSource = ConstantImageSourceType.New() origin = [ -199, -199, 0. ] sizeOutput = [ 200, 200, 180 ] spacing = [ 2.0, 2.0, 2.0 ] constantImageSource.SetOrigin( origin ) constantImageSource.SetSpacing( spacing ) constantImageSource.SetSize( sizeOutput ) constantImageSource.SetConstant(0.) # Forward projection of input volume proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() proj.SetInput(constantImageSource) proj.SetInput(1, input) # input is ImageType from a reader proj.SetGeometry(geometry) # Create weights weightsSource = ConstantImageSourceType.New() weightsSource.SetInformationFromImage(proj.GetOutput()) weightsSource.SetConstant(1.0) # Create output like volume outputImageSource = ConstantImageSourceType.New() sizeOutput = [ 400, 400, 400] origin = [ -200, -200, -200 ] spacing = [ 1.0, 1.0, 1.0 ] outputImageSource.SetOrigin(origin) outputImageSource.SetSpacing(spacing) outputImageSource.SetSize(sizeOutput) outputImageSource.SetConstant(0.) # Create reconstructed image RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] conjugateGradient = RCGType.New() conjugateGradient.SetInput(outputImageSource.GetOutput()) conjugateGradient.SetInput(1, proj.GetOutput()) conjugateGradient.SetInput(2, weightsSource.GetOutput()) conjugateGradient.SetGeometry(geometry) conjugateGradient.SetGamma(2.0) conjugateGradient.SetNumberOfIterations(30) conjugateGradient.SetDisableDisplacedDetectorFilter(True) conjugateGradient.Update() -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 18 02:00:00 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 18 Dec 2020 08:00:00 +0100 Subject: [Rtk-users] Troubleshooting Conjugate Gradient Filter in Python In-Reply-To: References: Message-ID: Hi, I slightly modified your script and it worked for me. What version are you using? I used the latest ITK v5.1.2 with, for RTK, an artifact published here (visible only if you're logged in github). Simon PS: I don't think you need the displaced detector, it is centered on the central ray in your simulation. import itk from itk import RTK as rtk # Defines the image type ImageType = itk.Image[itk.F,3] # Defines the RTK geometry object geometry = rtk.ThreeDCircularProjectionGeometry.New() numberOfProjections = 180 firstAngle = 90 sid = 600 # source to isocenter distance sdd = 1200 # source to detector distance angularArc = 180 for x in range(0,numberOfProjections): angle = firstAngle + x * angularArc / numberOfProjections geometry.AddProjection(sid,sdd,angle) # Create a stack of empty projection images ConstantImageSourceType = rtk.ConstantImageSource[ImageType] constantImageSource = ConstantImageSourceType.New() origin = [ -199, -199, 0. ] sizeOutput = [ 100, 100, 180 ] spacing = [ 4.0, 4.0, 2.0 ] constantImageSource.SetOrigin( origin ) constantImageSource.SetSpacing( spacing ) constantImageSource.SetSize( sizeOutput ) constantImageSource.SetConstant(0.) # Forward projection of input volume proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() proj.SetInput(constantImageSource) proj.SetInput(1, itk.imread('test.mha')) # input is ImageType from a reader proj.SetGeometry(geometry) proj.Update() # Create weights weightsSource = ConstantImageSourceType.New() weightsSource.SetInformationFromImage(proj.GetOutput()) weightsSource.SetConstant(1.0) # Create output like volume outputImageSource = ConstantImageSourceType.New() sizeOutput = [ 100, 100, 100] origin = [ -200, -200, -200 ] spacing = [ 4.0, 4.0, 4.0 ] outputImageSource.SetOrigin(origin) outputImageSource.SetSpacing(spacing) outputImageSource.SetSize(sizeOutput) outputImageSource.SetConstant(0.) # Create reconstructed image RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] conjugateGradient = RCGType.New() conjugateGradient.SetInput(outputImageSource.GetOutput()) conjugateGradient.SetInput(1, proj.GetOutput()) conjugateGradient.SetInput(2, weightsSource.GetOutput()) conjugateGradient.SetGeometry(geometry) conjugateGradient.SetGamma(2.0) conjugateGradient.SetNumberOfIterations(2) conjugateGradient.SetDisableDisplacedDetectorFilter(False) conjugateGradient.Update() itk.imwrite(conjugateGradient.GetOutput(), 'output.mha') On Wed, Dec 16, 2020 at 10:36 AM Cl?ment Mirabel wrote: > Hi, > > I created another topic since the content is different from the previous > one and people could land here with a different search in the archives. > > While trying to reconstruct a set of images from 0 and 180? without having > to add the fan angle, Simon recommended to use the conjugate gradient > algorithm in RTK. So, I first tried to replicate in Python the conjugate > gradient application written in C++ ( > https://github.com/SimonRit/RTK/tree/master/applications/rtkconjugategradient). > But whatever types of input I set, my python kernel dies when updating the > filter without any error or debug message. I spent some time thinking about > it but I can't find out what is wrong. > I have attached my code at the end of this message if you have suggestions > about what would be wrong. > > Thanks for your help, > > Cl?ment > > > ------------------------------------------------------------------------------------------------------------ > > # Defines the image type > ImageType = itk.Image[itk.F,3] > > # Defines the RTK geometry object > geometry = rtk.ThreeDCircularProjectionGeometry.New() > numberOfProjections = 180 > firstAngle = 90 > sid = 600 # source to isocenter distance > sdd = 1200 # source to detector distance > angularArc = 180 > for x in range(0,numberOfProjections): > angle = firstAngle + x * angularArc / numberOfProjections > geometry.AddProjection(sid,sdd,angle) > > # Create a stack of empty projection images > ConstantImageSourceType = rtk.ConstantImageSource[ImageType] > constantImageSource = ConstantImageSourceType.New() > origin = [ -199, -199, 0. ] > sizeOutput = [ 200, 200, 180 ] > spacing = [ 2.0, 2.0, 2.0 ] > constantImageSource.SetOrigin( origin ) > constantImageSource.SetSpacing( spacing ) > constantImageSource.SetSize( sizeOutput ) > constantImageSource.SetConstant(0.) > > # Forward projection of input volume > proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() > proj.SetInput(constantImageSource) > proj.SetInput(1, input) # input is ImageType from a reader > proj.SetGeometry(geometry) > > # Create weights > weightsSource = ConstantImageSourceType.New() > weightsSource.SetInformationFromImage(proj.GetOutput()) > weightsSource.SetConstant(1.0) > > # Create output like volume > outputImageSource = ConstantImageSourceType.New() > sizeOutput = [ 400, 400, 400] > origin = [ -200, -200, -200 ] > spacing = [ 1.0, 1.0, 1.0 ] > outputImageSource.SetOrigin(origin) > outputImageSource.SetSpacing(spacing) > outputImageSource.SetSize(sizeOutput) > outputImageSource.SetConstant(0.) > > # Create reconstructed image > RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] > conjugateGradient = RCGType.New() > conjugateGradient.SetInput(outputImageSource.GetOutput()) > conjugateGradient.SetInput(1, proj.GetOutput()) > conjugateGradient.SetInput(2, weightsSource.GetOutput()) > conjugateGradient.SetGeometry(geometry) > conjugateGradient.SetGamma(2.0) > conjugateGradient.SetNumberOfIterations(30) > conjugateGradient.SetDisableDisplacedDetectorFilter(True) > conjugateGradient.Update() > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From clement.mirabel at gmail.com Fri Dec 18 06:18:17 2020 From: clement.mirabel at gmail.com (=?UTF-8?Q?Cl=C3=A9ment_Mirabel?=) Date: Fri, 18 Dec 2020 12:18:17 +0100 Subject: [Rtk-users] Troubleshooting Conjugate Gradient Filter in Python In-Reply-To: References: Message-ID: Hi, Thank you for your answer. I still had the issue with your updated code but I noticed I was still using itk 5.0.1 because of an issue with itk 5.1.2 due to numpy 1.9.4 with Windows 10 recent update. I downgraded numpy to 1.9.3 so itk could install 5.1.2 and then installed the artifact you pointed for RTK. Everything works fine now, time to play with the parameters! Cl?ment Le ven. 18 d?c. 2020 ? 08:00, Simon Rit a ?crit : > Hi, > I slightly modified your script and it worked for me. What version are you > using? I used the latest ITK v5.1.2 with, for RTK, an artifact published > here (visible > only if you're logged in github). > Simon > > PS: I don't think you need the displaced detector, it is centered on the > central ray in your simulation. > > import itk > from itk import RTK as rtk > > # Defines the image type > ImageType = itk.Image[itk.F,3] > > # Defines the RTK geometry object > geometry = rtk.ThreeDCircularProjectionGeometry.New() > numberOfProjections = 180 > firstAngle = 90 > sid = 600 # source to isocenter distance > sdd = 1200 # source to detector distance > angularArc = 180 > for x in range(0,numberOfProjections): > angle = firstAngle + x * angularArc / numberOfProjections > geometry.AddProjection(sid,sdd,angle) > > # Create a stack of empty projection images > ConstantImageSourceType = rtk.ConstantImageSource[ImageType] > constantImageSource = ConstantImageSourceType.New() > origin = [ -199, -199, 0. ] > sizeOutput = [ 100, 100, 180 ] > spacing = [ 4.0, 4.0, 2.0 ] > constantImageSource.SetOrigin( origin ) > constantImageSource.SetSpacing( spacing ) > constantImageSource.SetSize( sizeOutput ) > constantImageSource.SetConstant(0.) > > # Forward projection of input volume > proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() > proj.SetInput(constantImageSource) > proj.SetInput(1, itk.imread('test.mha')) # input is ImageType from a reader > proj.SetGeometry(geometry) > proj.Update() > > # Create weights > weightsSource = ConstantImageSourceType.New() > weightsSource.SetInformationFromImage(proj.GetOutput()) > weightsSource.SetConstant(1.0) > > # Create output like volume > outputImageSource = ConstantImageSourceType.New() > sizeOutput = [ 100, 100, 100] > origin = [ -200, -200, -200 ] > spacing = [ 4.0, 4.0, 4.0 ] > outputImageSource.SetOrigin(origin) > outputImageSource.SetSpacing(spacing) > outputImageSource.SetSize(sizeOutput) > outputImageSource.SetConstant(0.) > > # Create reconstructed image > RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] > conjugateGradient = RCGType.New() > conjugateGradient.SetInput(outputImageSource.GetOutput()) > conjugateGradient.SetInput(1, proj.GetOutput()) > conjugateGradient.SetInput(2, weightsSource.GetOutput()) > conjugateGradient.SetGeometry(geometry) > conjugateGradient.SetGamma(2.0) > conjugateGradient.SetNumberOfIterations(2) > conjugateGradient.SetDisableDisplacedDetectorFilter(False) > conjugateGradient.Update() > > itk.imwrite(conjugateGradient.GetOutput(), 'output.mha') > > On Wed, Dec 16, 2020 at 10:36 AM Cl?ment Mirabel < > clement.mirabel at gmail.com> wrote: > >> Hi, >> >> I created another topic since the content is different from the previous >> one and people could land here with a different search in the archives. >> >> While trying to reconstruct a set of images from 0 and 180? without >> having to add the fan angle, Simon recommended to use the conjugate >> gradient algorithm in RTK. So, I first tried to replicate in Python the >> conjugate gradient application written in C++ ( >> https://github.com/SimonRit/RTK/tree/master/applications/rtkconjugategradient). >> But whatever types of input I set, my python kernel dies when updating the >> filter without any error or debug message. I spent some time thinking about >> it but I can't find out what is wrong. >> I have attached my code at the end of this message if you have >> suggestions about what would be wrong. >> >> Thanks for your help, >> >> Cl?ment >> >> >> ------------------------------------------------------------------------------------------------------------ >> >> # Defines the image type >> ImageType = itk.Image[itk.F,3] >> >> # Defines the RTK geometry object >> geometry = rtk.ThreeDCircularProjectionGeometry.New() >> numberOfProjections = 180 >> firstAngle = 90 >> sid = 600 # source to isocenter distance >> sdd = 1200 # source to detector distance >> angularArc = 180 >> for x in range(0,numberOfProjections): >> angle = firstAngle + x * angularArc / numberOfProjections >> geometry.AddProjection(sid,sdd,angle) >> >> # Create a stack of empty projection images >> ConstantImageSourceType = rtk.ConstantImageSource[ImageType] >> constantImageSource = ConstantImageSourceType.New() >> origin = [ -199, -199, 0. ] >> sizeOutput = [ 200, 200, 180 ] >> spacing = [ 2.0, 2.0, 2.0 ] >> constantImageSource.SetOrigin( origin ) >> constantImageSource.SetSpacing( spacing ) >> constantImageSource.SetSize( sizeOutput ) >> constantImageSource.SetConstant(0.) >> >> # Forward projection of input volume >> proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() >> proj.SetInput(constantImageSource) >> proj.SetInput(1, input) # input is ImageType from a reader >> proj.SetGeometry(geometry) >> >> # Create weights >> weightsSource = ConstantImageSourceType.New() >> weightsSource.SetInformationFromImage(proj.GetOutput()) >> weightsSource.SetConstant(1.0) >> >> # Create output like volume >> outputImageSource = ConstantImageSourceType.New() >> sizeOutput = [ 400, 400, 400] >> origin = [ -200, -200, -200 ] >> spacing = [ 1.0, 1.0, 1.0 ] >> outputImageSource.SetOrigin(origin) >> outputImageSource.SetSpacing(spacing) >> outputImageSource.SetSize(sizeOutput) >> outputImageSource.SetConstant(0.) >> >> # Create reconstructed image >> RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] >> conjugateGradient = RCGType.New() >> conjugateGradient.SetInput(outputImageSource.GetOutput()) >> conjugateGradient.SetInput(1, proj.GetOutput()) >> conjugateGradient.SetInput(2, weightsSource.GetOutput()) >> conjugateGradient.SetGeometry(geometry) >> conjugateGradient.SetGamma(2.0) >> conjugateGradient.SetNumberOfIterations(30) >> conjugateGradient.SetDisableDisplacedDetectorFilter(True) >> conjugateGradient.Update() >> _______________________________________________ >> Rtk-users mailing list >> Rtk-users at public.kitware.com >> https://public.kitware.com/mailman/listinfo/rtk-users >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Fri Dec 18 06:21:49 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Fri, 18 Dec 2020 12:21:49 +0100 Subject: [Rtk-users] Troubleshooting Conjugate Gradient Filter in Python In-Reply-To: References: Message-ID: Thanks for getting back on this. I really need to update the pypi packages but I'm fighting a bit with the CI, it's no longer working (see #395 ). I'll keep everyone posted on the mailing list of course. On Fri, Dec 18, 2020 at 12:17 PM Cl?ment Mirabel wrote: > Hi, > > Thank you for your answer. I still had the issue with your updated code > but I noticed I was still using itk 5.0.1 because of an issue > with itk 5.1.2 due to numpy 1.9.4 with > Windows 10 recent update. I downgraded numpy to 1.9.3 so itk could install > 5.1.2 and then installed the artifact you pointed for RTK. > Everything works fine now, time to play with the parameters! > > Cl?ment > > > > Le ven. 18 d?c. 2020 ? 08:00, Simon Rit > a ?crit : > >> Hi, >> I slightly modified your script and it worked for me. What version are >> you using? I used the latest ITK v5.1.2 with, for RTK, an artifact >> published here >> (visible only if you're logged in github). >> Simon >> >> PS: I don't think you need the displaced detector, it is centered on the >> central ray in your simulation. >> >> import itk >> from itk import RTK as rtk >> >> # Defines the image type >> ImageType = itk.Image[itk.F,3] >> >> # Defines the RTK geometry object >> geometry = rtk.ThreeDCircularProjectionGeometry.New() >> numberOfProjections = 180 >> firstAngle = 90 >> sid = 600 # source to isocenter distance >> sdd = 1200 # source to detector distance >> angularArc = 180 >> for x in range(0,numberOfProjections): >> angle = firstAngle + x * angularArc / numberOfProjections >> geometry.AddProjection(sid,sdd,angle) >> >> # Create a stack of empty projection images >> ConstantImageSourceType = rtk.ConstantImageSource[ImageType] >> constantImageSource = ConstantImageSourceType.New() >> origin = [ -199, -199, 0. ] >> sizeOutput = [ 100, 100, 180 ] >> spacing = [ 4.0, 4.0, 2.0 ] >> constantImageSource.SetOrigin( origin ) >> constantImageSource.SetSpacing( spacing ) >> constantImageSource.SetSize( sizeOutput ) >> constantImageSource.SetConstant(0.) >> >> # Forward projection of input volume >> proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() >> proj.SetInput(constantImageSource) >> proj.SetInput(1, itk.imread('test.mha')) # input is ImageType from a >> reader >> proj.SetGeometry(geometry) >> proj.Update() >> >> # Create weights >> weightsSource = ConstantImageSourceType.New() >> weightsSource.SetInformationFromImage(proj.GetOutput()) >> weightsSource.SetConstant(1.0) >> >> # Create output like volume >> outputImageSource = ConstantImageSourceType.New() >> sizeOutput = [ 100, 100, 100] >> origin = [ -200, -200, -200 ] >> spacing = [ 4.0, 4.0, 4.0 ] >> outputImageSource.SetOrigin(origin) >> outputImageSource.SetSpacing(spacing) >> outputImageSource.SetSize(sizeOutput) >> outputImageSource.SetConstant(0.) >> >> # Create reconstructed image >> RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] >> conjugateGradient = RCGType.New() >> conjugateGradient.SetInput(outputImageSource.GetOutput()) >> conjugateGradient.SetInput(1, proj.GetOutput()) >> conjugateGradient.SetInput(2, weightsSource.GetOutput()) >> conjugateGradient.SetGeometry(geometry) >> conjugateGradient.SetGamma(2.0) >> conjugateGradient.SetNumberOfIterations(2) >> conjugateGradient.SetDisableDisplacedDetectorFilter(False) >> conjugateGradient.Update() >> >> itk.imwrite(conjugateGradient.GetOutput(), 'output.mha') >> >> On Wed, Dec 16, 2020 at 10:36 AM Cl?ment Mirabel < >> clement.mirabel at gmail.com> wrote: >> >>> Hi, >>> >>> I created another topic since the content is different from the previous >>> one and people could land here with a different search in the archives. >>> >>> While trying to reconstruct a set of images from 0 and 180? without >>> having to add the fan angle, Simon recommended to use the conjugate >>> gradient algorithm in RTK. So, I first tried to replicate in Python the >>> conjugate gradient application written in C++ ( >>> https://github.com/SimonRit/RTK/tree/master/applications/rtkconjugategradient). >>> But whatever types of input I set, my python kernel dies when updating the >>> filter without any error or debug message. I spent some time thinking about >>> it but I can't find out what is wrong. >>> I have attached my code at the end of this message if you have >>> suggestions about what would be wrong. >>> >>> Thanks for your help, >>> >>> Cl?ment >>> >>> >>> ------------------------------------------------------------------------------------------------------------ >>> >>> # Defines the image type >>> ImageType = itk.Image[itk.F,3] >>> >>> # Defines the RTK geometry object >>> geometry = rtk.ThreeDCircularProjectionGeometry.New() >>> numberOfProjections = 180 >>> firstAngle = 90 >>> sid = 600 # source to isocenter distance >>> sdd = 1200 # source to detector distance >>> angularArc = 180 >>> for x in range(0,numberOfProjections): >>> angle = firstAngle + x * angularArc / numberOfProjections >>> geometry.AddProjection(sid,sdd,angle) >>> >>> # Create a stack of empty projection images >>> ConstantImageSourceType = rtk.ConstantImageSource[ImageType] >>> constantImageSource = ConstantImageSourceType.New() >>> origin = [ -199, -199, 0. ] >>> sizeOutput = [ 200, 200, 180 ] >>> spacing = [ 2.0, 2.0, 2.0 ] >>> constantImageSource.SetOrigin( origin ) >>> constantImageSource.SetSpacing( spacing ) >>> constantImageSource.SetSize( sizeOutput ) >>> constantImageSource.SetConstant(0.) >>> >>> # Forward projection of input volume >>> proj = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType].New() >>> proj.SetInput(constantImageSource) >>> proj.SetInput(1, input) # input is ImageType from a reader >>> proj.SetGeometry(geometry) >>> >>> # Create weights >>> weightsSource = ConstantImageSourceType.New() >>> weightsSource.SetInformationFromImage(proj.GetOutput()) >>> weightsSource.SetConstant(1.0) >>> >>> # Create output like volume >>> outputImageSource = ConstantImageSourceType.New() >>> sizeOutput = [ 400, 400, 400] >>> origin = [ -200, -200, -200 ] >>> spacing = [ 1.0, 1.0, 1.0 ] >>> outputImageSource.SetOrigin(origin) >>> outputImageSource.SetSpacing(spacing) >>> outputImageSource.SetSize(sizeOutput) >>> outputImageSource.SetConstant(0.) >>> >>> # Create reconstructed image >>> RCGType = rtk.ConjugateGradientConeBeamReconstructionFilter[ImageType] >>> conjugateGradient = RCGType.New() >>> conjugateGradient.SetInput(outputImageSource.GetOutput()) >>> conjugateGradient.SetInput(1, proj.GetOutput()) >>> conjugateGradient.SetInput(2, weightsSource.GetOutput()) >>> conjugateGradient.SetGeometry(geometry) >>> conjugateGradient.SetGamma(2.0) >>> conjugateGradient.SetNumberOfIterations(30) >>> conjugateGradient.SetDisableDisplacedDetectorFilter(True) >>> conjugateGradient.Update() >>> _______________________________________________ >>> Rtk-users mailing list >>> Rtk-users at public.kitware.com >>> https://public.kitware.com/mailman/listinfo/rtk-users >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From simon.rit at creatis.insa-lyon.fr Wed Dec 30 08:35:51 2020 From: simon.rit at creatis.insa-lyon.fr (Simon Rit) Date: Wed, 30 Dec 2020 14:35:51 +0100 Subject: [Rtk-users] FirstReconstruction questions In-Reply-To: References: Message-ID: Hi, RTK cone beam reconstruction filters expect line integrals but the projection that you are showing seems to have the highest value in air. RTK automatically processes such projections with log and normalization if the pixels are unsigned short. Otherwise, you need to do it yourself. It is not clear if the geometry is correct from the reconstruction screen shot. The best would be to share your code if you want us to have a look. Simon On Mon, Dec 28, 2020 at 8:34 AM Lai Yao Hao wrote: > Dear Simon and the RTK community > > Really thank you for the answer, and really sorry for the late reply. I am > trying to reconstruct a 3d model using 800 images, rotating an object 360 > degrees using rtk::ThreeDCircularProjectionGeometry, > rtk::ConstantImageSource and rtk:: FDKConeBeamReconstructionFilter from the > FirstReconstruction example as well as itk::ImageSeriesReader. > > However, the reconstruction created is shown above in the screenshot and > after checking all the parameters, I have no idea on how to move forward > from here. From reading the forums, I think that I should do one more image > filter before applying the cone beam reconstruction? However, I am not too > sure. Please advise on the next steps that can enable me to get the 3d > reconstruction. > > Thanks so much in advance and look forward to everyone's reply!! > > PS: the tif file is just 1 of the 800 images I am given to reconstruct the > object > > Regards > lyh > > ------------------------------ > *From:* Simon Rit > *Sent:* Wednesday, December 9, 2020 4:23 PM > *To:* Lai Yao Hao > *Cc:* rtk-users at public.kitware.com > *Subject:* Re: [Rtk-users] FirstReconstruction questions > > Hi, > constantImageSource creates a constant volume. In the example, one is used > as input of the simulation of projections of an ellipsoid (rei) and one as > input of the reconstruction algorithm (feldkamp). fieldofview masks out > (i.e., set to 0) voxels which are not in the field of view. > I don't understand your screenshot either but if you use the tiff format, > make sure you use a viewer capable of dealing with 3D tiff images (e.g., > vv or ImageJ). > Simon > > On Wed, Dec 9, 2020 at 8:59 AM Lai Yao Hao wrote: > > Hi to all the rtk-users > > I am a new user of rtk, and I have some questions regarding the > FirstReconstruction example given in github. I have generated an image as > attached, with 4 tiny ball-like drawing hanging from the top. Can anyone > explain to me why do I get such image and what are the implications of > constantImageSource, rei, constantImageSource2, feldkamp and fieldofview? > > Your explanation will be much appreciated. Thanks in advance! > > Regards > lyh > _______________________________________________ > Rtk-users mailing list > Rtk-users at public.kitware.com > https://public.kitware.com/mailman/listinfo/rtk-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: