コード例 #1
0
    def proximal_numpy(self, in_arr, tau, out = None):
        res = regularisers.TNV(in_arr, 
              self.regularisation_parameter,
              self.iterationsTNV,
              self.tolerance)

        return res, []
コード例 #2
0
 def proximal_numpy(self, in_arr, tau):
     if in_arr.ndim != 3:
         # https://github.com/vais-ral/CCPi-Regularisation-Toolkit/blob/413c6001003c6f1272aeb43152654baaf0c8a423/src/Python/src/cpu_regularisers.pyx#L584-L588
         raise ValueError('Only 3D data is supported. Passed data has {} dimensions'.format(in_arr.ndim))
     res = regularisers.TNV(in_arr, 
           self.alpha * tau,
           self.max_iteration,
           self.tolerance)
     return res, []
コード例 #3
0
    def proximal(self, x, tau, out=None):
        in_arr = np.asarray(x.as_array(), dtype=np.float32, order='C')
        res = regularisers.TNV(in_arr, self.regularisation_parameter,
                               self.iterationsTNV, self.tolerance)

        if out is not None:
            out.fill(res)
        else:
            out = x.copy()
            out.fill(res)
            return out
コード例 #4
0
    def proximal(self, x, tau, out=None):
        pars = {'algorithm' : TNV, \
               'input' : np.asarray(x.as_array(), dtype=np.float32),\
                'regularisation_parameter':self.regularisation_parameter, \
                'number_of_iterations' :self.iterationsTNV,\
                'tolerance_constant':self.tolerance}

        res = regularisers.TNV(pars['input'], pars['regularisation_parameter'],
                               pars['number_of_iterations'],
                               pars['tolerance_constant'])

        #self.info = info

        if out is not None:
            out.fill(res)
        else:
            out = x.copy()
            out.fill(res)
            return out
コード例 #5
0
    def test_functionality_TNV(self):

        # fake a 2D+channel image
        d = dataexample.SYNCHROTRON_PARALLEL_BEAM_DATA.get()
        ig = ImageGeometry(160, 135, channels=91)
        data = ig.allocate(None)
        data.fill(d)
        del d
    
        datarr = data.as_array()
        from cil.plugins.ccpi_regularisation.functions import TNV
        from ccpi.filters import regularisers

        tau = 1.
        
        # CIL defaults
        outrgl = regularisers.TNV(datarr, 1, 100, 1e-6 )
        
        fcil = TNV()
        outcil = fcil.proximal(data, tau=tau)
        np.testing.assert_almost_equal(outrgl, outcil.as_array())