1: |
function TGV-MR-PET(u0, v0, c0, λ, μ) |
2: |
M ← rescale_operator(M, ζM) |
3: |
P ← rescale_operator(P, ζP) |
4: |
u0 ← rescale_data(M*u0) · u0
|
5: |
(v0, c) ← rescale_data(P*(v0 – c0)) · (v0, c0) |
6: |
u ← M*u0, v ← P*(v0 – c0), (ū, v̄) ← (u, v) |
7: |
w → 0, w̄ ← 0, p ← 0, q ← 0, r ← 0, s ← 0 |
8: |
choose η > 0, σ > 0, τ = σ/η2
|
9: |
repeat
|
10: |
p ← projα1 (p + σ(∇(ū, v̄) – w̄)) |
11: |
q ← projα0 (q + ) |
12: |
r ← prox(),σ(r + σMū – σu0) |
13: |
s ← prox(),σ(s + σPv̄ + σc0) |
14: |
(u+, v+) ← (u, v) – τ(−div p + (M*r, P*s)) |
15: |
(u+, v+) ← projc((u+, v+)) |
16: |
w+ ← w – τ(−p − div2
q) |
17: |
(ū, v̄, w̄) ← 2(u+, v+, w+) – (u, v, w) |
18: |
|
19: |
τ+ ← σ+/η2
|
20: |
(u, v, w) ← (u+, v+, w+) |
21: |
until Stopping criterion fulfiled |
22: |
return (u+, v+) |
23: |
end function |