Hi, I am trying to modify the first reconstruction example to read a set of 16-bit grayscale TIFF projections that I captured, run the 3D reconstruction, and save the output. The projects are taken at 5 degree increments over a 180 degree arc.
It runs without errors, but the reconstructed volume looks very strange which makes me think I am doing something wrong. Here is the basic python code I am trying to use (modified from the example), if anyone can see what I might be doing wrong I would appreciate it. # Defines the image type ImageType = itk.Image[itk.F,3] # Defines the RTK geometry object geometry = rtk.ThreeDCircularProjectionGeometry.New() numberOfProjections = 37 firstAngle = 0. angularArc = 185. sid = 914 # source to isocenter distance (mm) sdd = 1219 # source to detector distance (mm) for x in range(0,numberOfProjections): angle = firstAngle + x * angularArc / numberOfProjections geometry.AddProjection(sid,sdd,angle) Skipping some code ... (file name list setup, geometry output writing) ... tiffio = itk.TIFFImageIO.New() ProjectionsReaderType = rtk.ProjectionsReader[ImageType] projectionsSource = ProjectionsReaderType.New() projectionsSource.SetImageIO(tiffio) projectionsSource.SetFileNames(fileNameList) projOrigin = [ -0.14*(3072-1)/2, -0.14*(2560-1)/2, 0 ] #input images are 3072x2560 pixels with a 0.14mm pixel size projSpacing = [ 0.14, 0.14, 1.0 ] projectionsSource.SetOrigin( projOrigin ) projectionsSource.SetSpacing( projSpacing ) ConstantImageSourceType = rtk.ConstantImageSource[ImageType] # Create reconstructed image constantImageSource2 = ConstantImageSourceType.New() sizeOutput = [ 512, 512, 512 ] origin = [ -255.5, -255.5, -255.5 ] spacing = [ 1.0, 1.0, 1.0 ] constantImageSource2.SetOrigin( origin ) constantImageSource2.SetSpacing( spacing ) constantImageSource2.SetSize( sizeOutput ) constantImageSource2.SetConstant(0.) # FDK reconstruction print("Reconstructing...") FDKCPUType = rtk.FDKConeBeamReconstructionFilter[ImageType] feldkamp = FDKCPUType.New() feldkamp.SetInput(0, constantImageSource2.GetOutput()) # this is the template for the output image type feldkamp.SetInput(1, projectionsSource.GetOutput()) # this is the projection stack from rtk.ProjectionsReader feldkamp.SetGeometry(geometry) feldkamp.GetRampFilter().SetTruncationCorrection(0.0) feldkamp.GetRampFilter().SetHannCutFrequency(0.0) # Writer print("Writing output image...") WriterType = rtk.ImageFileWriter[ImageType] writer = WriterType.New() writer.SetFileName(sys.argv[1]) writer.SetInput(feldkamp.GetOutput()) writer.Update() Thanks
_______________________________________________ Rtk-users mailing list rtk-us...@openrtk.org https://www.creatis.insa-lyon.fr/mailman/listinfo/rtk-users