<div dir="ltr"><div><div><div><div>ITK goes from voxel coordinates v to physical coordinates x with the following formulas<br></div>x = d*s*v + o<br></div>where s is a diagonal nxn matrix with the spacing on the diagonal, d is the nxn direction matrix to allow rotations and o is the origin (n is the dimension of your space). I don't know if / where it is documented but that would be in the ITK documentation. I typically look at the code directly (function TransformIndexToPhysicalPoint).<br></div>Probably Direction is not the problem in your case and the default identity is correct but it's something you should probably know about. I'm a bit lost in your geometric descriptions but that should not be so difficult to find the RTK transformation. If you know the position of your source, the position of the origin of the coordinate system of your detector image and the direction of the two axes of your detector, all these in the tomography coordinate system, rtk::Reg23ProjectionGeometry::AddReg23Projection does the decomposition for you...<br></div>Simon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 4, 2014 at 10:35 AM, Notargiacomo Thibault <span dir="ltr"><<a href="mailto:gnthibault@gmail.com" target="_blank">gnthibault@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">Thank you Simon,<div>To answer your questions:</div><div>My 3*4 matrix allow to change from a world coordinate system, whose origin correspond to the isocenter in rtk, to an image buffer index.</div><div><br></div><div>But I decompose this matrix in order to isolate the wcs to acquisition plane, and this projection coordinate system is indeed centered in the middle of the projection plane, that correspond to the orthogonal projection of the focal point.</div><div><br></div><div>I am aware of that fact, this I why, I took care to perform the following in rtk code:</div><div><div>inputImage->SetOrigin( origin );</div><div>inputImage->SetSpacing( spacing );</div></div><div><br></div><div>With origin a point that correspond to:</div><div>( - half_detector_sizeX_in_mm/2, -half_detector_sizeY_in_mm/2, 0 )</div><div>and Spacing, a vector that contains </div><div>(detector_pixel_sizeX_in_mm, detector_pixel_sizeY_in_mm, 1 )</div><div><br></div><div>But I did not set the direction vector, is there a document where I can find what value I have to set it to, according to my acquisition geometry ?</div><div><br></div><div>Thank you for your help,</div><div><br></div><div>Kind Regards</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Thibault Notargiacomo</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2014-12-04 9:15 GMT+01:00 Simon Rit <span dir="ltr"><<a href="mailto:simon.rit@creatis.insa-lyon.fr" target="_blank">simon.rit@creatis.insa-lyon.fr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi Thibault,<br></div>It is going to be challenging... but we'll try to do our best to help you. One important question is: what coordinates system are used by your 3*4 matrices. RTK uses the ITK coordinate system for its images (i.e., the tomography and the projections), which is defined in ITK by the origin (coordinate of the center of the first pixel), the spacing, the direction. Defining this information in your images is very important to have accurate results. In the DEA.pdf file that you've provided, Fig1.1 shows an origin of your projectionscoordinate system at the center of the projections, have you<br></div>Your reconstruction example looks indeed completely wrong. Have you tried to backproject one projection only and to check that it is as expected?<br></div>By the way, the AddProjection of the image works in degrees, you should use AddProjectionInRadians otherwise.<br></div>Don't hesitate to share a dataset if you want us to help further.<br>Simon<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Wed, Dec 3, 2014 at 3:27 PM, Notargiacomo Thibault <span dir="ltr"><<a href="mailto:gnthibault@gmail.com" target="_blank">gnthibault@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Dear all,<div><br></div><div>I am currently trying to import data generated with a custom tomographic system into RTK, and I am facing issues whith this task.</div><div><br></div><div>The system projection matrix is transparently calibrated, and the calibration process give a 3*4 projection matrix for each acquisition position.</div><div>Each calibration matrix is a direct 3D world to 2D buffer index matrix.</div><div><br></div><div>Using the pinhole model, I tried to factorize this matrix as the product of various submatrix, including a 3D centered Euler transform, using <a href="http://staff.city.ac.uk/~sbbh653/publications/euler.pdf" target="_blank">this note</a> as stated in rtkReg23Geometry.cxx.</div><div>The pinhole camera model I used could be find <a href="http://cauchois.iut-amiens.fr/Recherche/Publi/DEA.pdf" target="_blank">here</a> at p18 of the pdf.</div><div>I think that the way I factorized the matrix is correct, and match the GantryAngle/InPlanAngle/OutOfPlanAngle model described <a href="http://www.openrtk.org/Doxygen/geometry.pdf" target="_blank">here</a> .</div><div><br></div><div>My problem arise when I try to model the x/z tilt of the detector: when decomposing my projection matrix into different matrix, each modelling a system coordinate change, I have:</div><div>    - a world coordinate system to source centered system matrix (modeling euler 3D rotation and also translation from isocenter to source)</div><div>    - a source centered system to 2D buffer index matrix modeling source to detector and pixel size scaling and then detector translation (U0,V0) </div><div><br></div><div>As I understand, the pinhole model should allow a perfect fit with the RTK geometry model in the following sense:</div><div>Extrinsinc parameters matrix correspond to the SourceTranslationM and RotationM in RTK, assuming that the order of the rotation follows RTK reference. And the translation in z should be replaced by zero, as it correspond to source-isocenter distance, and is taken into accounts in the magnification step.</div><div>So I think it is easy to find all the rotation angle, and the sid distance as well</div><div><br></div><div>Intrinsics parameters matrix could be decomposed in order to find the focal (or source detector distance) and the projection offset, from the U0, V0 parameters, substracting the detector half size in each direction.</div><div><br></div><div>What I do not understand is:</div><div>-In the rtk documentation, it is stated that "The detector position is defined with respect to the source" but the ProjectionTranslationM in rtk contains a term in sourceOffsetX-projOffsetX although sourceOffset has already been taken into account earlier.</div><div>-Why reconstruction aren't working at all</div><div><br></div><div>I enclosed you a sample of geometry file I have generated that provide some acceptable result when used for phantom projection, but provide totally wrong reconstruction when reconstructing my image data with sart (sample image taken from a reconstructed volume).</div><div><br></div><div>Thank you in advance for you help, and sorry for the long mail<img src="cid:ii_i38sgelz0_14a108c1aab5efa5" height="256" width="256"><br></div><div><br></div><div><br></div></div>
<br></div></div>_______________________________________________<br>
Rtk-users mailing list<br>
<a href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a><br>
<a href="http://public.kitware.com/mailman/listinfo/rtk-users" target="_blank">http://public.kitware.com/mailman/listinfo/rtk-users</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>