[Rtk-users] Error Result by using FDK algorithm to Reconstruction 2D X- ray Scan projection images into 2D CT Slice image
Simon Rit
simon.rit at creatis.insa-lyon.fr
Thu Jan 12 09:30:06 CET 2023
Hi,
I'm not sure I have enough information to answer... What I can say is:
- that the origin is not set to center your volume, for centering, you
should use (size-1)*0.5*spacing
- if you're doing 2D reconstruction, be careful that your projections
should not be 1D because the backprojection uses a 2D interpolation. It
should have at least 2 lines.
I hope it helps,
Simon
On Thu, Jan 12, 2023 at 8:46 AM 何明哲 <m10512067 at yuntech.org.tw> wrote:
>
> HI Everyone ,
>
> I have a question
> that When I was refer to the official example
> "Firstcudareconstruction.cpp",
> then I tried to modify the code and reconstruction 2D x ray projection
> image to 2D ct slice,
> the code is worked but I got the wrong result too,
> I don't understand what the problem I'm have ?
> it's possible that the setting of reconstruction output image size or
> origin is wrong?
>
> here is my code and result (I was tried to only reconstruction just a
> slice NO.100 of the whole volume)
>
> --------------------------------------------------------------------------------------------
> using GeometryType = rtk::ThreeDCircularProjectionGeometry;
> GeometryType::Pointer geometry = GeometryType::New();
> unsigned int numberOfProjections = 280;
> double firstAngle = 0;
> double angularArc = 280;
> unsigned int sid = 510;
> unsigned int sdd = 690;
>
> for (unsigned int noProj = 0; noProj < numberOfProjections; noProj++)
> {
> double angle = firstAngle + noProj * angularArc / numberOfProjections;
> geometry->AddProjection(sid, sdd, angle);
> }
>
> rtk::ThreeDCircularProjectionGeometryXMLFileWriter::Pointer xmlWriter;
> xmlWriter = rtk::ThreeDCircularProjectionGeometryXMLFileWriter::New();
> xmlWriter->SetFilename(".\\RTK_Geometry.xml");
> xmlWriter->SetObject(geometry);
> xmlWriter->WriteFile();
>
> using NameGeneratorType = itk::NumericSeriesFileNames;
> NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
>
> nameGenerator->SetSeriesFormat(ProjectionInage +"\\%d.tif");
> nameGenerator->SetStartIndex(1);
> nameGenerator->SetEndIndex(280);
> nameGenerator->SetIncrementIndex(1);
>
> using IutputImageType = itk::CudaImage<float, 3>;
> using ReaderType = rtk::ProjectionsReader<IutputImageType>;
> ReaderType::Pointer reader = ReaderType::New();
> reader->SetFileNames(nameGenerator->GetFileNames());
> reader->Update();
>
> using ConstantImageSourceType =
> rtk::ConstantImageSource<OutputImageType>;
> ConstantImageSourceType::PointType origin;
> ConstantImageSourceType::SpacingType spacing;
> ConstantImageSourceType::SizeType sizeOutput;
> ConstantImageSourceType::Pointer recoVolume =
> ConstantImageSourceType::New();
>
> sizeOutput[0] = Imagewidth;
> sizeOutput[1] = Imageheigh;
> sizeOutput[2] = numofproj;
> spacing[0] = 0.25;
> spacing[1] = 0.25;
> spacing[2] = 0.25;
> origin[0] = Imagewidth*spacing[0]*0.5*-1;
> origin[1] = Imageheigh*spacing[0]*0.5*-1;
> origin[2] = spacing[2]*SliceN*-1;
>
> recoVolume->SetSize(sizeOutput);
> recoVolume->SetSpacing(spacing);
> recoVolume->SetOrigin(origin);
> recoVolume->SetConstant(0);
>
> using FDKGPUType = rtk::CudaFDKConeBeamReconstructionFilter;
> FDKGPUType::Pointer feldkamp = FDKGPUType::New();
>
> feldkamp->SetInput(0, recoVolume->GetOutput());
> feldkamp->SetInput(1, reader->GetOutput());
> feldkamp->SetGeometry(geometry);
> feldkamp->SetNumberOfThreads(7);
> feldkamp->Update();
>
> using WriterType = itk::ImageFileWriter<OutputImageType>;
> WriterType::Pointer writer = WriterType::New();
> writer->SetFileName("C:\\RTK.mhd");
> writer->SetInput(feldkamp->GetOutput());
> writer->Update();
>
> [image: 20230112_100.PNG]
>
> it should be look like this
> [image: 20230109.PNG]
>
> thanks for your reply
>
> BR,
>
>
>
> _______________________________________________
> Rtk-users mailing list
> rtk-users at openrtk.org
> https://www.creatis.insa-lyon.fr/mailman/listinfo/rtk-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/rtk-users/attachments/20230112/49d05eba/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20230112_100.PNG
Type: image/png
Size: 104500 bytes
Desc: not available
URL: <http://www.creatis.insa-lyon.fr/pipermail/rtk-users/attachments/20230112/49d05eba/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20230109.PNG
Type: image/png
Size: 221917 bytes
Desc: not available
URL: <http://www.creatis.insa-lyon.fr/pipermail/rtk-users/attachments/20230112/49d05eba/attachment-0003.png>
More information about the Rtk-users
mailing list