11#=
2- # [Fan-beam tomography: arc detector ](@id 06-fan-short)
2+ # [Fan-beam tomography: short scan ](@id 06-fan-short)
33
44This page describes fan-beam tomographic image reconstruction
55using the Julia package
@@ -45,14 +45,14 @@ using ImagePhantoms: SheppLogan, shepp_logan, radon, phantom
4545using MIRTjim: jim, prompt
4646
4747
48- # The following line is helpful when running this example.jl file as a script;
48+ # The following line is helpful when running this file as a script;
4949# this way it will prompt user to hit a key after each figure is displayed.
5050
5151isinteractive () ? jim (:prompt , true ) : prompt (:draw );
5252
5353
5454#=
55- ### Fan-beam sinogram of Shepp-Logan phantom
55+ ## Fan-beam sinogram of Shepp-Logan phantom
5656
5757For illustration,
5858we start by synthesizing
@@ -67,13 +67,19 @@ but units are optional.
6767# Use `ImageGeom` to define the image geometry.
6868ig = ImageGeom (MaskCircle (); dims= (128 ,126 ), deltas = (2 mm,2 mm) )
6969
70- # Use `SinoFanArc` to define the sinogram geometry,
71- # with the `:short` option for `orbit` to make a short scan.
70+ #=
71+ Use `SinoFanArc` to define the sinogram geometry,
72+ with the `:short` option for `orbit` to make a short scan.
73+ Note that even though we specify `na = 100`
74+ we end up with `na = 67` views
75+ because of the `:short` option.
76+ =#
7277sg = SinoFanArc ( :short , ;
7378 nb = 130 , d = 3.2 mm, na = 100 , dsd = 400 mm, dod = 140 mm,
7479)
7580
76- # Examine the geometry to verify the FOV:
81+ # Examine the geometry to verify the FOV.
82+ # The `na=67` blue dots show the `:short` scan.
7783jim (axes (ig), ig. mask; prompt= false )
7884sino_geom_plot! (sg, ig)
7985
@@ -86,7 +92,7 @@ ob = shepp_logan(SheppLogan(); fovs = fovs(ig), u = (1, 1, μ))
8692
8793# Short arc fan-beam sinogram for Shepp-Logan phantom:
8894sino = radon (rays (sg), ob)
89- jim (sg . r, sg . ad , sino; title= " Shepp-Logan 'short' sinogram" ,
95+ jim (axes (sg) , sino; title= " Shepp-Logan 'short' sinogram" ,
9096 xlabel= " r" , ylabel= " ϕ" )
9197
9298
@@ -98,17 +104,21 @@ which would save work if we were reconstructing many images.
98104
99105plan = plan_fbp (sg, ig)
100106
101- # Examine Parker weights
102- jim (sg . r, sg . ad , plan. parker_weight; title = " Parker weights" ,
107+ # Examine Parker weights:
108+ jim (axes (sg) , plan. parker_weight; title = " Parker weights" ,
103109 xlabel= " r" , ylabel= " ϕ" )
104110
105- # Finally perform FBP
111+ # Finally perform FBP:
106112fbp_image, sino_filt = fbp (plan, sino);
107113
108114# A narrow color window is needed to see the soft tissue structures:
109115clim = (0.9 , 1.1 ) .* μ
110116jim (axes (ig), fbp_image, " FBP image for 'short' arc case" ; clim)
111117
112- # For comparison, here is the ideal phantom image
118+ # For comparison, here is the ideal phantom image:
113119true_image = phantom (axes (ig)... , ob, 2 )
114120jim (axes (ig)... , true_image, " True phantom image" ; clim)
121+
122+ # Here is the difference image.
123+ # Better sampling would reduce the errors.
124+ jim (axes (ig)... , fbp_image - true_image, " Error image" )
0 commit comments