-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move internal DiscretisedDensity origin to vendor defined origin #223
Comments
See also SyneRBI/SIRF#193 and SyneRBI/SIRF#198 |
My initial work approach will be as follows:
In order to achieve (2/3), I need to modify the relevant |
Question: |
Following some discussion today: https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/Common/src/itkSpatialOrientationAdapter.cxx#L34 I can't find any documentation on what ITK officially uses. I did find some emails saying LPS, e.g., here: https://itk.org/pipermail/insight-users/2009-April/029874.html Then I also found this quote
here https://itk.org/Wiki/Proposals:Orientation#Current_ITK_Usage_and_sources_of_confusion Perhaps they are saying "ITK is LPS, but ITK encodes the negative of the identity direction matrix to LPS because we make our direction matrix point the direction that counting comes from" |
I've never liked what a south-easterly breeze meant, and that feeling translates into ITK's Direction matrices. |
@KrisThielemans @rijobro and I had further discussions on this topic today.
|
For latest info on this, see:
https://github.com/UCL/STIR/wiki/Proposals-for-new-features-major-changes#vendor-based-coordinate-system
I will attempt to keep it in-line with latest developments and discussion.
The proposal is to move STIR's reference system for images in line with the vendor's system. This would mean that reconstructed images can be directly compared with vendor reconstructions. The main change required is for DiscretisedDensity to be able to express voxel locations in DICOM-standard LPS space. However, this in turn requires that the internal origin for DiscretisedDensity to align with the vendor origin.
Proposed changes
ProjDataInfo.h
float bed_position
float bed_height
? OrCoordinate bed_position
?LOR ProjDataInfo::lor_gantry_to_bed(LOR lor)
Maps a LOR (i.e., encodedvia s, ϕ, t, θ) from Gantry space with origin at middle of scanner
to Bed space with origin at vendor origin.
BasicCoordinate ProjDataInfo::point_gantry_to_bed(BasicCoordinate point)
Maps a point (i.e., encoded by x, y, z) from Gantry space withorigin at middle of scanner to Bed space with origin at vendor
origin.
z based on
Scanner::default_vendor_origin_in_gantry_space
and
ProjDataInfo::bed_position
.float ProjDataInfo::get_s_bed(Bin bin)
float ProjDataInfo::get_phi_bed(Bin bin)
float ProjDataInfo::get_t_bed(Bin bin)
float ProjDataInfo::get_m_bed(Bin bin)
float ProjDataInfo::get_theta_bed(Bin bin)
LOR ProjDataInfo::get_LOR(Bin bin)
LOR ProjDataInfo::get_LOR_in_bed_space(Bin bin)
float LOR::get_s()
Everything inheriting will have to be checked for z offsets.
Scanner.h
BasicCoordinate default_vendor_origin_in_gantry_space
ProjMatrixByBinUsingRayTracing
calculate_proj_matrix_elems_for_one_bin()
Other
ProjMatrixByBin
DiscretisedDensity
CartesianCoordinate DiscretisedDensity::get_DICOM_LPS_for_indices(BasicCoordinate idx)
.ScatterEstimationByBin
integral_between_2_points
STIR/src/scatter_buildblock/single_scatter_integrals.cxx
Lines 100 to 141 in db0b3e9
and uses a z offset. Also
beforehand in
sample_scatter_points()
STIR/src/scatter_buildblock/sample_scatter_points.cxx
Lines 65 to 95 in db0b3e9
proj_data_info_ptr->image_bed_to_gantry(scatter_point)/voxel_size
,proj_data_info_ptr->image_bed_to_gantry(detector_coord)/voxel_size
,eliminating the need for
origin
.Symmetries
zoom.cxx
Zooms around image origin, will have to be changed.The text was updated successfully, but these errors were encountered: