<div dir="ltr"><div><div><div>Hi,<br></div>Please use the mailing list.<br></div>A 1 mm shift of an object at the isocenter should indeed translate in a 1.536 mm shift on the projection with the defined geometry. I don't see anything wrong in your code but you have only provided a part of it. Could you provide a full self-contained script?<br></div>Simon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 10, 2017 at 11:19 PM, Daniel Markel <span dir="ltr"><<a href="mailto:markeldaniel@gmail.com" target="_blank">markeldaniel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><p>Hi Simon,</p><p><br></p><p>           Thank you for helping me earlier in getting SRTK up and running. I've had some success running it to attain some projections using a 3D volume but I have run into a problem and cannot find the solution anywhere online. Perhaps you can help. </p><p><br></p><p>I'm getting projections using the following snippet of code</p><p><br></p><p>origin = [-200,-200,-180-(600-512)*0.<wbr>39063] </p><p>sid = 1000 # source to isocenter distance in mm<br>sdd = 1536 # source to detector distance in mm</p><p>isox = 0 # X coordinate on the projection image of isocenter<br>isoy = -90 # Y coordinate on the projection image of isocenter</p><p>angle = 180<br></p><p>Temp = srtk.GetArrayFromImage(Image)</p><p>​</p><div>Temp_vol = np.roll(Temp,int(shiftx2),2)#<wbr>Shift in the LR axis <br>Temp_vol = np.roll(Temp_vol,int(shifty2),<wbr>1)#Shift in the AP axis<br>Temp_vol = np.roll(Temp_vol,int(shiftz2),<wbr>0)#Shift in the I/S axis</div><p>​</p><p>​</p><div>fwrd = srtk.<wbr>JosephForwardProjectionImageFi<wbr>lter()<br>projInput = srtk.ConstantImageSource()<br> geometry = srtk.<wbr>ThreeDCircularProjectionGeomet<wbr>ry()</div><div><div>size = (425,425,1)<br> spacing = (1,1,1)<br>projInput.SetOrigin(origin)<br>projInput.SetSpacing(spacing)<br>projInput.SetSize(size)<br>projInput.SetConstant(int(1))<br>pixelID = Image.GetPixelIDValue()<br>projInput.SetOutputPixelType(<wbr>pixelID)<br>proj = projInput.Execute()</div><div>Image = srtk.GetImageFromArray(Temp_<wbr>vol)<br>Image.SetOrigin(origin)<br>Image.SetSpacing(spacing2)<br>Image.SetDirection([1,0,0,0,0,<wbr>1,0,1,0])<br>geometry.AddProjection(sid,<wbr>sdd,angle,isox,isoy)<br>fwrd.SetGeometry(geometry)<br> proj2 = fwrd.Execute(proj,Image)</div></div><p>​</p><p>projim = srtk.GetArrayFromImage(proj2[:<wbr>,:,0])</p><p><br></p><p>What I wanted to do was shift an object in the 3D volume 'temp' by a known amount recreate the image object using the shifted volume and then create a kV projection through the shifted volume. I'm doing this to test the ability of detecting shifts in the volume using the kV projected images. The problem is that I was calculating the anticipated shifts using a cone beam geometry where the shift in the 3D volume is magnified by an amount related to the distance of the detector from the source and the position of the 3D object in relation to the source. For the geometry I have above it's 1000 mm to the center of my 3D object and 1536 mm from the source to the detector so the factor of magnification of any shift in my 3D object should be 1.536 on my projection but when I look at my results the magnification is always 1 as if I'm not using a cone beam geometry at all but simply attaining a projection straight on using parallel x-rays. Am I missing something in my code to get a cone geometry? </p><p><br></p><p>Any insight would be greatly appreciated.</p><span class="HOEnZb"><font color="#888888"><p><br></p><p>-Daniel</p></font></span></div>
</blockquote></div><br></div>