[Rtk-users] positioning of the reconstructed volume and some questions on filtering
Simon Rit
simon.rit at creatis.insa-lyon.fr
Wed Dec 10 10:54:29 EST 2014
Hi,
Please refer to my previous post to understand the coordinates of your
volume:
http://public.kitware.com/pipermail/rtk-users/2014-December/000634.html
That should explain your coordinate system.
Cyril is right, there is no filtering in the FDKBackProjectionImageFilter
and the BackProjectionImageFilter. Both work for perspective projections
but they also work for parallel beams (and give then the same result).
Simon
On Wed, Dec 10, 2014 at 1:35 PM, Cyril Mory <cyril.mory at creatis.insa-lyon.fr
> wrote:
> Hi Padraig,
>
> I can only answer part of your questions, sorry about the others: neither
> rtkBackProjectionImageFilter nor rtkFDKBackProjectionImageFilter perform
> filtering, and both are cone-beam. In fact, at the moment, cone-beam is the
> only geometry available in RTK. The difference is that
> rtkFDKBackProjectionImageFilter inherits from rtkBackProjectionImageFilter,
> and redefines some methods (I think it performs a specific weighting of
> projection data depending on the distance to the central plane, as
> described in the FDK paper, but I cannot say for sure).
> As far as I know, there is no all-in-one filter for FDK in RTK. You have
> to plug the filters together yourself, the same way it is done in the
> rtkfdk application, and the back projection filter you must then use is
> either rtkFDKBackProjectionImageFilter or its CUDA ou OPENCL counterpart.
> If you wish to design iterative reconstruction algorithms, on the other
> hand, use the non-FDK back projection filters.
>
> Without filtering, your reconstruction is probably very blurry. I would
> advise you to try to convert your data to the ITK standard mhd and raw, and
> to use the rtkfdk application. Once you get a good reconstruction
> out-of-the-box with your data, you can start playing with internal filters.
>
> Regards,
> Cyril
>
>
> On 12/10/2014 12:59 PM, Padraig Looney wrote:
>
> Dear list,
>
> We have been using RTK to reconstruct some digital breast tomosynthesis
> images. The reconstruction using BackProjectionImageFilter looks good. The
> only issue we are having is in specifying the coordinates of the
> reconstructed volume. The coordinate system is attached and the code we use
> to reconstruct is below. I expected the origin of the first slice in the
> reconstructed volume to be at (w,-h/2,offset). What I find is that the
> reconstructed volume is shifted in the y direction by about half the height
> (but not exactly). The X position looks correct for this phantom.
>
> rtkBackProjectionImageFilter is described as “implementation of the back
> projection step of the FDK also for *filtered* back projection
> reconstruction for cone-beam CT images with a circular source trajectory”.
> However, I could not find any filtering of data in the code. Could you
> please confirm if there is filtering in this code and what type of filters
> there are (ramp, Hann etc)? Also, is the difference
> with rtkBackProjectionImageFilter that rtkFDKBackProjectionImageFilter is
> for cone beam while rtkBackProjectionImageFilter is not?
>
>
> // Create reconstructed image
> typedef rtk::ConstantImageSource< FloatImageType >
> ConstantImageSourceType;
> ConstantImageSourceType::PointType origin;
> ConstantImageSourceType::SpacingType spacing;
> ConstantImageSourceType::SizeType sizeOutput;
> ConstantImageSourceType::DirectionType direction;
> direction.SetIdentity();
>
> sizeOutput[0] = 1890; //1747; //1890; as found in dicom info
> sizeOutput[1] = 2457; //as found in dicom info
> sizeOutput[2] = 1; //as found in dicom info
>
> double offset(26.27); // Gap between detector and sample
> origin[0] = 171.99;
> origin[1] = -223/2; //223 is the height of the reconstructed volume
> origin[2] = offset+0;
>
> spacing[0] = 0.091;
> spacing[1] = 0.091;
> spacing[2] = 1;
>
> direction [0][0] = -1;
> direction [0][1] = 0;
> direction [0][2] = 0;
> direction [1][0] = 0;
> direction [1][1] = 1;
> direction [1][2] = 0;
> direction [2][0] = 0;
> direction [2][1] = 0;
> direction [2][2] = 1;
>
> ConstantImageSourceType::Pointer constantImageSource =
> ConstantImageSourceType::New();
>
> constantImageSource->SetOrigin( origin );
> constantImageSource->SetSpacing( spacing );
> constantImageSource->SetSize( sizeOutput );
> constantImageSource->SetConstant( 0. );
> constantImageSource->SetDirection(direction);
>
> const ImageType::DirectionType& direct =
> constantImageSource->GetDirection();
>
> std::cout <<"Direction3DZeroMatrix= " << std::endl;
> std::cout << direct << std::endl;
>
> std::cout << "Performing reconstruction" << std::endl;
>
> //BackProjection recontruction (no filtering)
> typedef rtk::ProjectionGeometry<3> ProjectionGeometry;
> ProjectionGeometry::Pointer baseGeom = geometry.GetPointer();
> typedef rtk::BackProjectionImageFilter< ImageType ,ImageType>
> FDKCPUType;
> FDKCPUType::Pointer feldkamp = FDKCPUType::New();
> feldkamp->SetInput( 0, constantImageSource->GetOutput() );
> feldkamp->SetInput( 1, imageStack);
> feldkamp->SetGeometry( baseGeom );
> feldkamp->Update();
>
>
>
>
> _______________________________________________
> Rtk-users mailing listRtk-users at public.kitware.comhttp://public.kitware.com/mailman/listinfo/rtk-users
>
>
> --
> --
> Cyril Mory, Post-doc
> CREATIS
> Leon Berard cancer treatment center
> 28 rue Laënnec
> 69373 Lyon cedex 08 FRANCE
>
> Mobile: +33 6 69 46 73 79
>
>
> _______________________________________________
> Rtk-users mailing list
> Rtk-users at public.kitware.com
> http://public.kitware.com/mailman/listinfo/rtk-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20141210/b8d0bfbf/attachment-0009.html>
More information about the Rtk-users
mailing list