Skip to main content
. Author manuscript; available in PMC: 2016 Jan 21.
Published in final edited form as: Phys Med Biol. 2015 Jan 7;60(2):841–868. doi: 10.1088/0031-9155/60/2/841
1: β(1) ← 1; βred ← 0.99; α(1) ← 0.05; αred ← 0.9;
2: tol ← 0.11; NTV ← 20; rmax ← 0.9;
3: λ(1) ← 1; γ ← 4;
4: MaxIteration ← 1000; Δfmin ← 2 × 10−4;
5: f⃗(0)f⃗FDK ⊲ Use FDK image as the initial image
6: for k ← 1, MaxIteration do ⊲ main loop
7:   for j ← 1,N do ⊲ POCS step via SART with positivity constraint.
8:     fPOCS,j(k)max{fj(k1)+β(k)i=1MRi,ji=1MRi,jj=1NRi,j[pi(Rf(k1))i],0}
9:   end for
10:   ΔfPOCS(k)fPOCS(k)f(k1)
11:   f(k)fPOCS(k)
12:   res(k) ← ‖Rf⃗(k)
13:   if k = 1 then
14:     α(1)α(1)×ΔfPOCS(1) ⊲ Initialize TV step size
15:   end if
16:    fSeg(k) ← AnatomySegmentation (f⃗(k))
17:   for kTV ← 1,NTV do
18:     dfAATVf(k)TV(f(k))+λ(k)fSeg(k)TV(fSeg(k))f(k)TV(f(k))
19:     f⃗(k)f⃗(k) + α(k)d⃗fAATV
20:   end for
21:   ΔfAATV(k)f(k)fPOCS(k)
22:   if f(k)f(k1)/N<Δfmin then ⊲ Stopping criterion
23:     break;
24:   else
25:     β(k+1) ← β(k) × βred ⊲ Calculate new step sizes
26:     if ΔfAATV(k)>rmaxΔfPOCS(k) and res(k) > tol then
27:       α(k+1) ← α(k) × αred
28:     end if
29:     λ(k+1)=[α(k+1)α(1)]1/γ
30:   end if
31: end for
32: return
fPOCS(k)