Hello! I have some 3d chest CTs and its lung contour is labeled. I generate the contour meshes and want to project their vertices (points) onto the DRR. I use the following parameters to generate DRR using JosephForwardProjectionImageFilter in RTK.
# Input inputVolume = itk.imread('chest.nii') inputVolume = inputVolume.astype(itk.F) volumeSpacing = inputVolume.GetSpacing() volumeOrigin = inputVolume.GetOrigin() volumeDirection = inputVolume.GetDirection() volumeShape = inputVolume.shape volumeDirection = itk.array_from_matrix(volumeDirection) print(volumeSpacing) print(volumeOrigin) print(volumeDirection) print(volumeShape) itkVectorD3 ([0.810547, 0.810547, 1]) itkPointD3 ([-213.107, 206.892, -220.053]) [[ 1. 0. 0.] [ 0. -1. 0.] [ 0. 0. 1.]] (301, 512, 512) # Geometry geometry = rtk.ThreeDCircularProjectionGeometry.New() numberOfProjections = 1 sid = 10000 # source to isocenter distance sdd = 20000 # 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, projOffsetX, projOffsetY, outOfPlaneAngle, inPlaneAngle, sourceOffsetX, sourceOffsetY) # Create a stack of empty projection images ConstantImageSourceType = rtk.ConstantImageSource[OutputImageType] constantImageSource = ConstantImageSourceType.New() origin = [-511, -511, 0] sizeOutput = [512, 512, 1] spacing = [2, 2, 1] constantImageSource.SetOrigin(origin) constantImageSource.SetSpacing(spacing) constantImageSource.SetSize(sizeOutput) constantImageSource.SetConstant(0.) Finally I get this DRR looks like a front-view one: [image: image.png] Here are my questions: 1. I thought I would get a 512x512 full DRR with no backgrounds, just like normal x-ray, how can I fix it? 2. What's the meaning of constantImageSource's parameters? If I set these origin, spacing and size just like my input volume, I got DRR nowhere or too big to display. 3. I have read the geometry doc, and my understanding about its projection matrix is that the matrix is a translation matrix multiply rotation matrix. Since it is a 3x4 matrix, if I multiply a 3d point in homogeneous coordinates, the point will be project to a 2d point, right? What is the 2d coordinate? What coordinate system should I multiply the projection matrix on? Physical coordinate or Voxel coordinate? Thank you so much for reading and answering my long-winded questions.
_______________________________________________ Rtk-users mailing list Rtk-users@public.kitware.com https://public.kitware.com/cgi-bin/mailman/listinfo/rtk-users