[Rtk-users] DRR with limited FOV from 3D-CT

Isuru Suranga Wijesinghe isurusuranga.wijesinghe at gmail.com
Wed Nov 9 11:31:29 CET 2022


Can I ask any possible solution to my issue please (I just want to get the
DRR with the limited FOV based on the machine parameters attached above) ???

On Tue, Nov 8, 2022 at 2:12 PM Isuru Suranga Wijesinghe <
isurusuranga.wijesinghe at gmail.com> wrote:

> In addition to that I want to generate DRRs with a limited field of view
> as attached in the sample real kV Xray image.
> I've included a sample CT volume that I'm currently using to generate such
> DRR images using the machine parameters.  Please assist in resolving this
> matter. Thank you in advance for your consideration and time.
>
>  ref_CT_volume.nii.gz
> <https://drive.google.com/file/d/1PilfGAhqWe-NFD4Up1CYwSHqDXns04CV/view?usp=drive_web>
>  sample_real_kv_xray.png
> <https://drive.google.com/file/d/1zX2HUEEL4-lGxS4daDrhXuhTy1uFBY89/view?usp=drive_web>
>
>
> On Tue, Nov 8, 2022 at 11:23 AM Isuru Suranga Wijesinghe <
> isurusuranga.wijesinghe at gmail.com> wrote:
>
>> Hi,
>>
>> I have a 3D-CT volume and want to obtain the DRR projection by adjusting
>> the machine parameters as shown in the image below.
>>
>> Here's my code, and I didn't get the expected DRRs with the limited FOV.
>> Is there anything missing from the parameter setup?
>>
>> Could you please assist me in resolving this issue? Any code level
>> assistance or advice would be greatly appreciated.
>>
>> # Loading 3D CT image
>> CT = itk.imread("./ct.nii.gz", pixel_type=itk.F)
>>
>> # Defines the image type
>> Dimension_CT = 3
>> PixelType = itk.F
>> ImageType = itk.Image[PixelType, Dimension_CT]
>>
>> origin_x, origin_y, origin_z = CT.GetOrigin()
>> space_x, space_y, space_z = CT.GetSpacing()
>>
>> # Define origin, sizeOutput and spacing (still need to change these)
>> origin = [origin_x, origin_y, origin_z]
>> spacing = [space_x, space_y, space_z]
>>
>> sizeOutput = [ 512, 512, 1]
>>
>> # Create a stack of empty projection images
>> ConstantImageSourceType = rtk.ConstantImageSource[ImageType]
>> constantImageSource = ConstantImageSourceType.New()
>>
>> constantImageSource.SetOrigin( origin )
>> constantImageSource.SetSpacing( spacing )
>> constantImageSource.SetSize( sizeOutput )
>> constantImageSource.SetConstant(0.)
>>
>> # Defines the RTK geometry object
>> geometry = rtk.ThreeDCircularProjectionGeometry.New()
>> firstAngle = 0.
>> angularArc = 360.
>> sid = 1000 # source to isocenter distance
>> sdd = 1536 # source to detector distance
>> gantryAngle = 0. # rot around y-axis
>> projOffsetX = 0.
>> projOffsetY = 0.
>> outOfPlaneAngle = 90. # rot around x-axis
>> inPlaneAngle = 0. # rot around z-axis
>> sourceOffsetX = 0.
>> sourceOffsetY = 0.
>> geometry.AddProjection(sid, sdd, gantryAngle)
>>
>> REIType = rtk.JosephForwardProjectionImageFilter[ImageType, ImageType]
>> rei = REIType.New()
>>
>> rei.SetGeometry( geometry )
>> rei.SetInput(0, constantImageSource.GetOutput())
>> rei.SetInput(1, CT)
>> rei.Update()
>>
>> Dimension = 3
>> OutputPixelType = itk.UC
>> OutputImageType = itk.Image[OutputPixelType, Dimension]
>>
>> RescaleType = itk.RescaleIntensityImageFilter[ImageType, OutputImageType]
>> rescaler = RescaleType.New()
>> rescaler.SetOutputMinimum(0)
>> rescaler.SetOutputMaximum(255)
>> rescaler.SetInput(rei.GetOutput())
>> rescaler.Update()
>>
>> WriteType = itk.ImageFileWriter[OutputImageType]
>> writer = WriteType.New()
>> writer.SetFileName('./drr_0.png')
>> writer.SetInput(rescaler.GetOutput())
>> writer.Update()
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/rtk-users/attachments/20221109/64a5e92d/attachment.htm>


More information about the Rtk-users mailing list