Skip to content
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

Siemens mMR single scatter has unexpected scale #1280

Closed
KrisThielemans opened this issue Oct 26, 2023 · 4 comments
Closed

Siemens mMR single scatter has unexpected scale #1280

KrisThielemans opened this issue Oct 26, 2023 · 4 comments
Assignees
Labels
Milestone

Comments

@KrisThielemans
Copy link
Collaborator

As observed in #1163, the scatter scale factors for the NEMA phantom had to be around .2, but normally STIR single scatter is scaled to have the correct absolute values. #1279 fixed the thresholds for the scale factor, such that the example now works, but it is still unclear why the scatter scales are so much lower than expected.

@KrisThielemans KrisThielemans self-assigned this Oct 26, 2023
@KrisThielemans
Copy link
Collaborator Author

This is still a problem for SIRF as it uses the default settings for the scatter estimator

this->min_scale_value = 0.4f;
this->max_scale_value = 100.f;

KrisThielemans added a commit to KrisThielemans/STIR-1 that referenced this issue Jun 23, 2024
Set default to 0.05 (was .4). This prevents problems with
the mMR (and others?).

Addresses UCL#1280
@markus-jehl
Copy link
Contributor

@KrisThielemans : can this be closed?

@KrisThielemans
Copy link
Collaborator Author

Sadly not. We still don't know why the single scatter estimate is wrongly scaled for the mMR.

@KrisThielemans
Copy link
Collaborator Author

This was indeed fixed by #1531. For the NEMA IQ data used in the examples, I now get the following scale factors (before filtering) when disabling all thresholding:
Image
Corresponding axial profile through the reconstruction image (averaged over a central square of size 40x40 voxels):
Image
where the bump around 70 is due to the spheres.

Note that there is no bed in the current mu-map.

Plots generated with

import numpy
import matplotlib.pyplot as plt
import os
os.system("sed -n '/upsample_and_fit_scatter_estimate.*before/{;n;p;}' output/scatter.log|tr -d '{}' > scalefactors_before_threshold.csv")

b=numpy.loadtxt('scalefactors_before_threshold.csv',delimiter=',')
plt.figure()
plt.plot(b.transpose());
plt.legend(['1','2','3','4','5'])

import stir
im=stir.FloatVoxelsOnCartesianGrid.read_from_file('final_activity_image_42.hv')
import stirextra
arr=stirextra.to_numpy(im)
p=numpy.mean(arr[:,120:160,120:160],axis=(1,2))
plt.figure()
plt.plot(p)
plt.show()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants