UCL / UCL/STIR

Backprojection without restrict to cylindrical FOV can result in images with 0 boundaries

Open
#683 6 comments 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

Using the executable comand:
back_project my_back_projection.hv my_sino.hs template_image.hv backward_projection.par
where backward_projection.par is:

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

and my_sino.hs is a Discovery 690 sinogram and template_image.hv is

Origin in mm {z,y,x}    :{0, 0, 0}
Voxel-size in mm {z,y,x}:{3.27, 2.1306, 2.1306}
Min_indices {z,y,x}     :{0, -125, -125}
Max_indices {z,y,x}     :{46, 124, 124}
Number of voxels {z,y,x}:{47, 250, 250}
Physical coordinate of first index in mm {z,y,x} :{0, -266.325, -266.325}
Physical coordinate of last index in mm {z,y,x}  :{150.42, 264.194, 264.194}
Physical coordinate of first edge in mm {z,y,x} :{-1.635, -267.39, -267.39}
Physical coordinate of last edge in mm {z,y,x}  :{152.055, 265.26, 265.26}

The resulting back projection has a 1 voxel wide gap along the edges that each have value 0.0. The following image is a single slice of the backprojected image, imported into numpy and displayed using matplotlib.pyplot.
image


FORWARD PROJECTION

Thresholding and setting all voxel values to zero and along the image boundary, each of the voxel is set to 1. The forward projection using a similar forward_projection parameter file has a sum of 0. These voxel values are therefore not utilised in either the foward or backwards projections. Therefore, this is not a big issue, just something that should be documented.

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 by reproducing the back_project command with backward_projection.par, my_sino.hs, and template_image.hv, then compare the boundary behavior with restrict to cylindrical FOV enabled and disabled. Document the one-voxel zero-valued boundary and the reported forward/backprojection behavior, including the Discovery 690 context.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision, documentation
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.