Skip to content

Conversation

@KrisThielemans
Copy link
Member

Avoid issues with kappa being quite noisy for very low-count data. in particular, kappa can be quite low for certain voxels, causing underregularisation. Moreover, it is strange to use a prior that depends on the noise in the data.

The approximation we use in this PR is
$\kappa^2 = A^T . ({1 \over A.x + c} * A.1 )$
i.e. the "central part" of the Hessian $y/(A.x+c)^2$ is replaced.

Moreover, we first filter the initial image with a 3D Gaussian with the given FWHM (defaulting to 8mm).

WARNING: this makes the kappa calculation specific to Poisson obj funcs.

WARNING: compute_kappa_image now takes an acq_model as first argument, no longer the obj_fun

Other modifications:

  • create_initial_images now first chdir into <data_path>, so no longer needs to be run in the directory with the data.
  • LBFGSBPC uses kappa^2 as preconditioner

Note: currently on top of #29

@KrisThielemans KrisThielemans self-assigned this Dec 12, 2025
@KrisThielemans KrisThielemans added the enhancement New feature or request label Dec 12, 2025
@KrisThielemans
Copy link
Member Author

For Siemens-Vision600_ZrNEMAIQ kappa (slice 80)

before:
image
after (vmax=4000)
image

Note that the central value is changing quite a lot.

For very noisy data, H.1 becomes quite noisy itself,
with large impact on the kappa, and therefore a prior
that depends on the noise in the data.

The approximation we use now is
`kappa^2 = A^T . ((1 / (A.x + c)) * A.1 )`
i.e. the "central part" of the Hessian `y/(A.x+c)^2` is replaced.
Moreover, we first filter the initial image with a 3D Gaussian with
the given FWHM.

WARNING: this makes the kappa calculation specific to Poisson obj funcs.

WARNING: compute_kappa_image now takes an acq_model as first argument,
no longer the obj_fun
For noisy data, H_loglikelihood.1 can be noisy itself. It's
probably a bad idea to use a noisy preconditioner, so now
using the (not noisy) kappas.
@KrisThielemans KrisThielemans merged commit 5da510f into main Dec 17, 2025
3 checks passed
@KrisThielemans KrisThielemans deleted the new_kappa branch December 17, 2025 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants