It's actually more complex than that. The index to mm conversion is
m_Direction*m_Spacing*index+m_Origin
so point with all mm coordinates at 0 has index (that's what you're
trying to give ?)
-m_Spacing^-1*m_Direction^-1*m_Origin.
I find it a bit too complex for this documentation which is not meant
to deal with pixel index stuff...
On Wed, Aug 22, 2018 at 2:46 PM Chao Wu <[email protected]> wrote:
>
> Looks great.
> Now I understand you story about point (0,0) and the itk m_Origin.
> I read point (0,0) as pixel (0,0) yesterday so I was confused.
> "point (0,0)" followed by "mm" is much less ambiguous.
> Maybe instead of saying "... (and not to m_Origin in ITK)", you can write 
> down the actual relationship, something like
>    In the following, origin refers to point with coordinates 0 mm. In ITK 
> this is at Pixel(0,0)−m_Origin in 2D or Voxel(0,0,0)−m_Origin in 3D.
>
> Regards,
> Chao
>
> Simon Rit <[email protected]> 于2018年8月22日周三 下午1:42写道:
>>
>> Hi,
>> I have made some amendments to the documentation to try to clarify this:
>> https://github.com/SimonRit/RTK/commit/fea8e136b7248f42be29ef2d5fbaf3d26e12cfbb
>> http://www.openrtk.org/Doxygen/DocGeo3D.html
>> Any suggestion to improve this is welcome.
>> Best regards,
>> Simon
>>
>>
>> On Tue, Aug 21, 2018 at 4:39 PM Chao Wu <[email protected]> wrote:
>>>
>>> Thank you for the clarification and confirmation of the minus sign here.
>>>
>>> To me the source of confusion is the description of --proj_iso_x and 
>>> --proj_iso_x in the command line (or from the GGO file):
>>>>
>>>> option "proj_iso_x"  - "X coordinate on the projection image of isocenter" 
>>>>     double no  default="0"
>>>> option "proj_iso_y"  - "Y coordinate on the projection image of isocenter" 
>>>>     double no  default="0"
>>>
>>> If one read this, he may give positive values to the two arguments since 
>>> "the coordinates of isocenter in the projection image coordinate system" 
>>> are positive.
>>>
>>> I did not suggest the redundance. I meant the way how the tranlation is 
>>> calculated (source_# - proj_iso_#) proves that proj_iso_# is projection 
>>> origin wrt isocenter, not the other way around (then the right form will be 
>>> source_# + proj_iso_#).
>>>
>>>
>>> Simon Rit <[email protected]> 于2018年8月21日周二 下午3:44写道:
>>>>
>>>> Sorry, I checked the doc and you're right, 
>>>> "(ProjectionOffsetX,ProjectionOffsetY,SourceToIsocenterDistance-SourceToDetectorDistance)
>>>>  are the coordinates of the detector origin in the rotated coordinated 
>>>> system". So yes, add minus signs in front of proj_iso_x and proj_iso_y in 
>>>> my email.
>>>> One source of confusion here (to me too) is that I refer here to "origin" 
>>>> as point "(0,0)" and not to m_Origin in the itk::Image object... Any 
>>>> suggestion to improve this is welcome.
>>>> On the other hand, you seem to suggest that source offsets and projection 
>>>> offsets are redundant which is not true in a divergent geometry (or I did 
>>>> not get you).
>>>> Thanks a lot for your correction.
>>>> Simon
>>>>
>>>>
>>>> On Tue, Aug 21, 2018 at 3:28 PM Chao Wu <[email protected]> wrote:
>>>>>
>>>>> Hi Simon,
>>>>>
>>>>> The --proj_iso_x and --proj_iso_y arguments are confusing to me.
>>>>>
>>>>> Their explanation states that they are the X/Y coordinates on the 
>>>>> projection image of isocenter, but in practice I found them to be the 
>>>>> projection offset in X/Y wrt to central ray (similar to --source_x and 
>>>>> --source_y arguments).
>>>>>
>>>>> Therefore in the above case I would give --proj_iso_x=-202.3 
>>>>> --proj_iso_y=-202.3 if the image origin is at pixel (0,0) and the +x and 
>>>>> +y directions are aligned with the i and j indices of projection images, 
>>>>> respectively, which is the normal case when reading from TIFF files.
>>>>>
>>>>> In rtk::ThreeDCircularProjectionGeometry::AddProjectionInRadians() this 
>>>>> two arguments are named as projOffsetX and projOffsetY, similar to the 
>>>>> ones for the source sourceOffsetX and sourceOffsetY, implying that the 
>>>>> argument description is problematic. The way of calculation of submatrix 
>>>>> AddProjectionTranslationMatrix( 
>>>>> ComputeTranslationHomogeneousMatrix(sourceOffsetX-projOffsetX, 
>>>>> sourceOffsetY-projOffsetY) ) also supports that they are projection 
>>>>> origin wrt isocenter instead of isocenter wrt projection origin.
>>>>>
>>>>> Best regards,
>>>>> Chao
>>>>>
>>>>>
>>>>> Simon Rit <[email protected]> 于2018年8月21日周二 下午1:26写道:
>>>>>>
>>>>>> Hi,
>>>>>> It's not clear to me how you came up with your source_y value. Assuming 
>>>>>> that the origin of your projections is 0,0,0, I would advise to set the 
>>>>>> geometry with --proj_iso_x=202.3 --proj_iso_y=202.3 (or, equivalently, 
>>>>>> set a new origin to the projection equal to -202.3,-202.3,0).
>>>>>> The --arc value is also a bit surprising but you can check if the 
>>>>>> assigned GantryAngle is the correct one for each projection.
>>>>>> Finally, in rtkfdk, setting origin (this time for the volume) to a 
>>>>>> y-value equal 0 means that you only look at the part above the source 
>>>>>> trajectory. I would leave the default values (centered volume around the 
>>>>>> center of rotation).
>>>>>> Best regards,
>>>>>> Simon
>>>>>>
>>>>>>
>>>>>> On Tue, Aug 21, 2018 at 12:01 AM Andreas Andersen 
>>>>>> <[email protected]> wrote:
>>>>>>>
>>>>>>> Hi Milan
>>>>>>>
>>>>>>> 1) OK, I guess it makes sense with the source/detector geometry.
>>>>>>>
>>>>>>> 2) I forgot to check which group RawImageIO was in; it's own apparently.
>>>>>>> So you'll have to re-compile ITK with the CMake option: 
>>>>>>> Module_ITKIORAW=ON
>>>>>>> (You'll have to add the entry manually if you use a CMake GUI)
>>>>>>>
>>>>>>> 3) Origin is not the isocenter, it is the offset of the image origin, 
>>>>>>> i.e. index 0,0,0, in relation to the isocenter (AFAIK).
>>>>>>> Just a guess: Try with an offset of: -0.03840368 * {421,0,471} / 2 => 
>>>>>>> "--origin -8.08,0,-9.04"
>>>>>>> (I forget the definition of the y-axis, so I'm unsure about the "0", if 
>>>>>>> it doesn't work also try -10.23, 10.23, multiplying it by 2, and 0.)
>>>>>>>
>>>>>>> Best regards
>>>>>>> Andreas
>>>>>>>
>>>>>>> __________________________________
>>>>>>>
>>>>>>> Andreas Gravgaard Andersen
>>>>>>>
>>>>>>> Department of Oncology,
>>>>>>>
>>>>>>> Aarhus University Hospital
>>>>>>>
>>>>>>> Nørrebrogade 44,
>>>>>>>
>>>>>>> 8000, Aarhus C
>>>>>>>
>>>>>>> Mail:     [email protected]
>>>>>>>
>>>>>>> Cell:      +45 3165 8140
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, 20 Aug 2018 at 22:10, Milan Manasijevic 
>>>>>>> <[email protected]> wrote:
>>>>>>>>
>>>>>>>> Hi Andreas,
>>>>>>>> I am really grateful that you've found time to response so quickly.
>>>>>>>>
>>>>>>>> 1) Following your suggestions I first checked the spacing. I suppose, 
>>>>>>>> you refer to the value of 0.03840368. I am confident, this is the 
>>>>>>>> correct value in the correct unit (mm).
>>>>>>>> The 4D Slicer shows the dimensions in mm and this is near to the 
>>>>>>>> object measures.
>>>>>>>>
>>>>>>>> 2) The second try was to check if the " -o fdk.raw" works.
>>>>>>>> Unfortunately not, I get such exception:
>>>>>>>> itk::ImageFileWriterException (000000C71D4FE5D0)
>>>>>>>> Location: "void __cdecl itk::ImageFileWriter<class itk::Image<float,3> 
>>>>>>>> >::Write(void)"
>>>>>>>> File: 
>>>>>>>> d:\reconstruction_rtk\itk\modules\io\imagebase\include\itkImageFileWriter.hxx
>>>>>>>> Line: 151
>>>>>>>> Description:  Could not create IO object for writing file fdk.raw
>>>>>>>>   Tried to create one of the following:
>>>>>>>>     NiftiImageIO
>>>>>>>>     NrrdImageIO
>>>>>>>>     GiplImageIO
>>>>>>>>     HDF5ImageIO
>>>>>>>>     JPEGImageIO
>>>>>>>>     BMPImageIO
>>>>>>>>     LSMImageIO
>>>>>>>>     PNGImageIO
>>>>>>>>     TIFFImageIO
>>>>>>>>     VTKImageIO
>>>>>>>>     StimulateImageIO
>>>>>>>>     BioRadImageIO
>>>>>>>>     MetaImageIO
>>>>>>>>     MRCImageIO
>>>>>>>>     GE4ImageIO
>>>>>>>>     GE5ImageIO
>>>>>>>>     HndImageIO
>>>>>>>>     XimImageIO
>>>>>>>>     HisImageIO
>>>>>>>>     ImagXImageIO
>>>>>>>>     DCMImagXImageIO
>>>>>>>>     EdfImageIO
>>>>>>>>     XRadImageIO
>>>>>>>>     OraImageIO
>>>>>>>>     GDCMImageIO
>>>>>>>>   You probably failed to set a file suffix, or
>>>>>>>>     set the suffix to an unsupported type.
>>>>>>>>
>>>>>>>>
>>>>>>>> 3) Regarding the "--origin argument" and refering to my context (see 
>>>>>>>> attached files please), what would you suggest, what should I pass as 
>>>>>>>> the origin values? The detecetor origin is at 0,0 but for the Volume I 
>>>>>>>> am not quit sure if I should provide some values and which (actually 
>>>>>>>> isocenter should be at 0,0,0 and if I provide these values I still get 
>>>>>>>> no result ). Probably this would solve my problem.
>>>>>>>>
>>>>>>>> Again, many thanks for your time and thank you for your help.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Milan
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 20.08.2018 um 14:26 schrieb Andreas Andersen:
>>>>>>>>
>>>>>>>> Hi Milan
>>>>>>>>
>>>>>>>> I didn't open the dropbox link, but I think in general one should take 
>>>>>>>> an extra look at the rtkfdk arguments if nothing "meaningful" comes 
>>>>>>>> out:
>>>>>>>>  Is your spacing in the correct unit (mm)? it seems quite small in 
>>>>>>>> relation to the dimensions.
>>>>>>>>  Also try adding the --origin argument.
>>>>>>>>
>>>>>>>> Additional 1:
>>>>>>>> Slicer is a good tool for exactly that.
>>>>>>>> ( I have also made a similar tool with some reconstruction options, 
>>>>>>>> mainly for scatter correction: cbctrecon )
>>>>>>>> Additional 2:
>>>>>>>> try giving " -o fdk.raw" instead of  "-o fdk.mha", the default output 
>>>>>>>> value type is 32-bit floating point.
>>>>>>>>
>>>>>>>> Best regards
>>>>>>>>  Andreas
>>>>>>>>
>>>>>>>> __________________________________
>>>>>>>>
>>>>>>>> Andreas Gravgaard Andersen
>>>>>>>>
>>>>>>>> Department of Oncology,
>>>>>>>>
>>>>>>>> Aarhus University Hospital
>>>>>>>>
>>>>>>>> Nørrebrogade 44,
>>>>>>>>
>>>>>>>> 8000, Aarhus C
>>>>>>>>
>>>>>>>> Mail:     [email protected]
>>>>>>>>
>>>>>>>> Cell:      +45 3165 8140
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sun, 19 Aug 2018 at 23:44, Milan Manasijevic 
>>>>>>>> <[email protected]> wrote:
>>>>>>>>>
>>>>>>>>> Hi RTK-users,
>>>>>>>>>
>>>>>>>>> I am trying to reconstruct a sample scanned using the CBCT. Rtk seems 
>>>>>>>>> to
>>>>>>>>> be the best chioce for that, but unfortenately I have no success.
>>>>>>>>> Hopefully, some of you guys can help.
>>>>>>>>>
>>>>>>>>> The outcome of the scanning are 2500 projections (each 2024x2024 
>>>>>>>>> pixels).
>>>>>>>>> The increasement of the rotation angle is 0.144 degree
>>>>>>>>> To reduce the reconstruction time I use just 79 projection images and
>>>>>>>>> angle increasement is 4.608 degree.
>>>>>>>>>
>>>>>>>>> The data regarding the scanning process are (test.pca, test.pcj and
>>>>>>>>> test.pcr) dropped
>>>>>>>>> here:https://www.dropbox.com/sh/on7c049aqx5ep1r/AAA7THDCkIHPF_9DBRl7MwROa?dl=0
>>>>>>>>>
>>>>>>>>>  From these three files I have the following values required for the
>>>>>>>>> reconstruction:
>>>>>>>>> [Geometry]
>>>>>>>>> FDD=940.59570922
>>>>>>>>> FOD=180.61168750
>>>>>>>>> VoxelSizeX=0.03840368
>>>>>>>>> VoxelSizeY=0.03840368
>>>>>>>>>
>>>>>>>>> [VolumeData]
>>>>>>>>> Volume_SizeX=421
>>>>>>>>> Volume_SizeY=533
>>>>>>>>> Volume_SizeZ=471
>>>>>>>>>
>>>>>>>>> [Detector]
>>>>>>>>> PixelsizeX=0.20000000
>>>>>>>>> PixelsizeY=0.20000000
>>>>>>>>> NrPixelsX=2024
>>>>>>>>> NrPixelsY=2024
>>>>>>>>>
>>>>>>>>> Finally, these are commands that I used to reconstruct the volume:
>>>>>>>>>
>>>>>>>>> ==========================================================================================================================================
>>>>>>>>> rtksimulatedgeometry --output="geometry.xml" --nproj=79 --arc=364.032
>>>>>>>>> --sdd=940.59570922 --sid=180.611687 --source_y=-16.412937
>>>>>>>>> rtkprojections --path "d:\data\test\tiffs" --output "projections.mha"
>>>>>>>>> --regexp .tif --newspacing 0.2
>>>>>>>>> rtkfdk -p . -r projections.mha -o fdk.mha -g geometry.xml
>>>>>>>>> --spacing=0.03840368,0.03840368,0.03840368 --dimension=421,533,471
>>>>>>>>> ==========================================================================================================================================
>>>>>>>>>
>>>>>>>>> I use the VV, the 4D Slicer to check the results fro both,
>>>>>>>>> projections.mha and fdk.mha. The first one looks fine and shows tha
>>>>>>>>> sample correctly, but fdk.mha does not show any meaningfull 
>>>>>>>>> information.
>>>>>>>>> The jpgs that show that, you can also find in the dropbox.
>>>>>>>>>
>>>>>>>>> Probably, I need to include the ROI values given in the test.pcr file
>>>>>>>>> but I am not sure how. Would that be the neworigin value. (I have 
>>>>>>>>> tried
>>>>>>>>> but no success).
>>>>>>>>>
>>>>>>>>> Any help on that is highly appreciated!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> In addition I would have another two questions:
>>>>>>>>> 1. Can anyone advice a proper tool to check the reconstruction result
>>>>>>>>> (the reconstructed volume)?
>>>>>>>>> 2. I am using the Voreen (https://www.uni-muenster.de/Voreen/) and 
>>>>>>>>> would
>>>>>>>>> rather have the reconstruction result in a raw file format (containing
>>>>>>>>> intensities as a 32-Bit floats). How can I convert mha into raw? (I
>>>>>>>>> tried to split the mha into mhd and raw, but no success)
>>>>>>>>>
>>>>>>>>> Best Regards,
>>>>>>>>> Milan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Rtk-users mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://public.kitware.com/mailman/listinfo/rtk-users
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Rtk-users mailing list
>>>>>>> [email protected]
>>>>>>> https://public.kitware.com/mailman/listinfo/rtk-users
>>>>>>
>>>>>> _______________________________________________
>>>>>> Rtk-users mailing list
>>>>>> [email protected]
>>>>>> https://public.kitware.com/mailman/listinfo/rtk-users
_______________________________________________
Rtk-users mailing list
[email protected]
https://public.kitware.com/mailman/listinfo/rtk-users

Reply via email to