UCL / UCL/STIR

Listmode reconstruction with bin normalisation causes rotation of image xy for data but not sensitivity

Open
#407 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
160
Forks
113
Avg merge
12d 15h
Merged PRs (30d)
1

Description

List mode reconstruction using OSMAPOSL using data from Gate in root file format can cause a rotation in x-y from the sensitivity image. This occurs even if the sensitivy image is not recomputed. From debugging, if the Bin Normalisation is removed, the sensivitiy and root data are aligned.

Gate simulations using a D690 scanner lead to a small detector offset between Gate and STIR. This is corrected in the hroot file with: offset (num of detectors) := -4. Unlisting the root data using lm_to_projdata leads to correctly alligned reconstructions.

I have computed the attenuation correction with calculate_attenuation_coefficients --ACF my_norm output/simple_cylinder_1-MuMap.hv ../D690_full.hs, which is also the normalisation for this data that contains no scatter/randoms, using STIR.

Sinogram reconstructions using the unlisted data and this norm produce desirable image and a sensitivity image that takes into account the attenuation corrections.

List mode reconstruction:
Using the following parameter file, the reconstructed images contain a rotation in x-y, where the sensitivity (attenuation correction) is not rotated leading to regions of the same object not overlapping. Note here, the sensitivity is not recomputed but I use the sinogram produced sensitivity image.

If the Bin Normalisation parameters are removed then the backprojection activity and attenuation corrections match.

;LISTMODE RECONSTRUCTION PARAMETER FILE
OSMAPOSLParameters := 
objective function type:=  PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin
PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin Parameters:= 
	
  list mode filename := ../output/root_data_merged_12.hroot

	projector pair type := Matrix
  ;Projector Pair Using Matrix Parameters :=
  Matrix type := Ray Tracing
  Ray tracing matrix parameters :=
   number of rays in tangential direction to trace for each bin := 10
   do symmetry 90degrees min phi := 0
   do symmetry 180degrees min phi := 0
  End Ray tracing matrix parameters :=
  ;End Projector Pair Using Matrix Parameters :=

  Bin Normalisation type := from projdata
    Bin Normalisation From ProjData :=
    normalisation projdata filename:= ../my_norm.hs
    End Bin Normalisation From ProjData:=

	;num_events_to_use := 100
	recompute sensitivity := 0
	use subset sensitivities:= 0
	sensitivity filename:=  my_sensitivity_200.hv
	zoom :=  1
  xy output image size (in pixels) := 200
  
  prior type := RelativeDifference
  Relative Difference Prior Parameters:=
  penalisation factor := 0.1
  only 2D:= 0
  gamma value := 2
  END Relative Difference Prior Parameters:=

end PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin Parameters:= 
number of subsets:= 4
number of subiterations:= 4
save estimates at subiteration intervals:= 1

write update image := 0

output filename prefix := my_IMAGE_LM
END := 

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the OSMAPOSL list-mode path using the root_data_merged_12.hroot input, my_norm.hs Bin Normalisation, and my_sensitivity_200.hv; compare it with the unlisted lm_to_projdata reconstruction. Check how Bin Normalisation from ProjData handles the detector offset and verify that activity and sensitivity remain aligned when normalisation is enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.