<div dir="ltr">Hello!<div>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.</div><div>I use the following parameters to generate DRR using JosephForwardProjectionImageFi<wbr>lter in RTK.</div><div><br></div><div># Input</div><div>inputVolume = itk.imread('chest.nii')<br>inputVolume = inputVolume.astype(itk.F)<br></div><div>volumeSpacing = inputVolume.GetSpacing()<br>volumeOrigin = inputVolume.GetOrigin()<br>volumeDirection = inputVolume.GetDirection()<br>volumeShape = inputVolume.shape</div><div><br>volumeDirection = itk.array_from_matrix(<wbr>volumeDirection)<br></div><div>print(volumeSpacing)<br>print(volumeOrigin)<br>print(volumeDirection)<br>print(volumeShape)<br></div><div><pre style="font-family:"Source Code Pro","Noto Mono","SF Mono","Roboto Mono",ui-monospace,monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji",emoji;border:none;margin-top:0px;margin-bottom:0px;padding:0px;overflow:auto;word-break:break-all;white-space:pre-wrap">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)</pre></div><div><br></div><div># Geometry<br>geometry = rtk.<wbr>ThreeDCircularProjectionGeomet<wbr>ry.New()<br>numberOfProjections = 1<br>sid = 10000 # source to isocenter distance<br>sdd = 20000 # source to detector distance<br>gantryAngle = 0. # rot around y-axis<br>projOffsetX = 0.<br>projOffsetY = 0.<br>outOfPlaneAngle = 90. # rot around x-axis<br>inPlaneAngle = 0. # rot around z-axis<br>sourceOffsetX = 0.<br>sourceOffsetY = 0. <br>geometry.AddProjection(sid, sdd, gantryAngle, projOffsetX, projOffsetY, outOfPlaneAngle, inPlaneAngle, sourceOffsetX, sourceOffsetY)<br></div><div><br></div><div># Create a stack of empty projection images<br>ConstantImageSourceType = rtk.ConstantImageSource[<wbr>OutputImageType]<br>constantImageSource = ConstantImageSourceType.New()<br>origin = [-511, -511, 0]<br>sizeOutput = [512, 512, 1]<br>spacing = [2, 2, 1]<br>constantImageSource.SetOrigin(<wbr>origin)<br>constantImageSource.<wbr>SetSpacing(spacing)<br>constantImageSource.SetSize(<wbr>sizeOutput)<br>constantImageSource.<wbr>SetConstant(0.)<br></div><div><br></div><div>Finally I get this DRR looks like a front-view one:</div><div><img src="cid:ii_l8d1e4sn0" alt="image.png" width="543" height="535"><br></div><div>Here are my questions:</div><div>1. I thought I would get a 512x512 full DRR with no backgrounds, just like normal x-ray, how can I fix it?</div><div>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.</div><div>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?</div><div><br></div><div>Thank you so much for reading and answering my long-winded questions.</div></div>
<br>