-
Notifications
You must be signed in to change notification settings - Fork 26
Description
I am trying to add a unittest that compares the solution from FGP_dTV vs a solution coming from cxvpy.
The input data and the reference data are:


Case 1
The parameters for the FGD_dTV are:
alpha = 10.0
eta = 0.01
pars = {'algorithm' : FGP_dTV, \
'input' : data,\
'refdata' : reference,\
'regularisation_parameter': alpha, \
'number_of_iterations' : 50000 ,\
'tolerance_constant':0.0,\
'eta_const':eta,\
'methodTV': 0 ,\
'nonneg': 0}and the solutions pass the unittest up to two decimal points.
Case 2
The parameters for the FGD_dTV are:
alpha = 10.0
eta = 1.0
pars = {'algorithm' : FGP_dTV, \
'input' : data,\
'refdata' : reference,\
'regularisation_parameter': alpha, \
'number_of_iterations' : 50000 ,\
'tolerance_constant':0.0,\
'eta_const':eta,\
'methodTV': 0 ,\
'nonneg': 0}Now, I increased eta and the solution coming from cvxpy is:
This is "a constant" image and it should be as the reference image has no influence for this value of eta.
https://github.com/vais-ral/CCPi-Regularisation-Toolkit/blob/413c6001003c6f1272aeb43152654baaf0c8a423/src/Core/regularisers_CPU/FGP_dTV_core.c#L202-L205
Therefore B_x,B_y are small, and R1,R2 do not change
https://github.com/vais-ral/CCPi-Regularisation-Toolkit/blob/413c6001003c6f1272aeb43152654baaf0c8a423/src/Core/regularisers_CPU/FGP_dTV_core.c#L219-L220
In fact it behaves like a TV reconstruction and the solution should converge to the mean value of data, i.e., np.mean(data) = 0.171875
However, the solution coming from FGP_dTV is:
Am I doing something wrong when I set up the FGD_dTV parameters?

