Example #1
0
 def proximal_numpy(self, in_arr, tau, out = None):
     res , info = regularisers.FGP_dTV(\
             in_arr,\
             self.reference,\
             self.alpha*tau,\
             self.max_iteration,\
             self.tolerance,\
             self.eta,\
             self.methodTV,\
             self.nonnegativity,\
             self.device)
     return res, info
    def test_functionality_FGP_dTV(self):

        data = dataexample.CAMERA.get(size=(256,256))
        datarr = data.as_array()
        ref = data*0.3
        from cil.plugins.ccpi_regularisation.functions import FGP_dTV
        from ccpi.filters import regularisers

        tau = 1.
        fcil = FGP_dTV(ref)
        outcil = fcil.proximal(data, tau=tau)
        # use CIL defaults
        outrgl, info = regularisers.FGP_dTV(datarr, ref.as_array(), fcil.alpha*tau, fcil.max_iteration, fcil.tolerance, 0.01, 0, 1, 'cpu' )
        np.testing.assert_almost_equal(outrgl, outcil.as_array())
Example #3
0
 def proximal(self, x, tau, out=None):
     in_arr = np.asarray(x.as_array(), dtype=np.float32, order='C')
     res , info = regularisers.FGP_dTV(\
             in_arr,\
             self.reference,\
             self.alpha*tau,\
             self.max_iteration,\
             self.tolerance,\
             self.eta,\
             self.methodTV,\
             self.nonnegativity,\
             self.device)
     if out is not None:
         out.fill(res)
     else:
         out = x.copy()
         out.fill(res)
         return out
Example #4
0
 def proximal(self, x, tau, out=None):
     pars = {'algorithm' : FGP_dTV, \
            'input' : np.asarray(x.as_array(), dtype=np.float32),\
             'regularization_parameter':self.lambdaReg*tau, \
             'number_of_iterations' :self.iterationsTV ,\
             'tolerance_constant':self.tolerance,\
             'methodTV': self.methodTV ,\
             'nonneg': self.nonnegativity ,\
             'eta_const' : self.eta,\
             'refdata':self.refData}
     #inputData, refdata, regularisation_parameter, iterations,
     #              tolerance_param, eta_const, methodTV, nonneg, device='cpu'
     res, info = regularisers.FGP_dTV(pars['input'], pars['refdata'],
                                      pars['regularization_parameter'],
                                      pars['number_of_iterations'],
                                      pars['tolerance_constant'],
                                      pars['eta_const'], pars['methodTV'],
                                      pars['nonneg'], self.device)
     if out is not None:
         out.fill(res)
     else:
         out = x.copy()
         out.fill(res)
         return out