TomographicImaging / CIL

A versatile python framework for tomographic imaging
https://tomographicimaging.github.io/CIL/
Apache License 2.0
95 stars 41 forks source link

TotalVariation and FGP_TV (FISTA algorithm) #1139

Open epapoutsellis opened 2 years ago

epapoutsellis commented 2 years ago

Both the TotalVariation function and FGP_TV from the CCPi regularisation toolkit solve the dual TV problem using the FISTA algorithm. In both cases, it is hardcoded and no acceleration is used. Since there is no FISTA algorithm in the CCPi regtlk, we cannot do something. However, the proximal method of the TotalVariation should set up the FISTA algorithm and get some acceleration by additional arguments in the FISTA signature.

To set up the FISTA algorithm for the dual of TV, we need a DivergenceOperator which basically has the same code as the GradientOperator where the direct is now adjoint and adjoint is direct for the DivergenceOperator. Maybe is better if we create a property in the LinearOperator class and can get this as .adjoint_operator, see also #754.

We also need the convex conjugate as a Function class. But in this case only the convex conjugate of L2NormSquared is also an L2NormSquared class (1/4*L2NormSquared).

epapoutsellis commented 2 years ago

There is a now a notebook with the above implementation.