diff options
Diffstat (limited to 'src/Python')
| -rw-r--r-- | src/Python/ccpi/filters/regularisers.py | 4 | ||||
| -rw-r--r-- | src/Python/src/cpu_regularisers.pyx | 10 | 
2 files changed, 10 insertions, 4 deletions
diff --git a/src/Python/ccpi/filters/regularisers.py b/src/Python/ccpi/filters/regularisers.py index 1e427bf..00afcc2 100644 --- a/src/Python/ccpi/filters/regularisers.py +++ b/src/Python/ccpi/filters/regularisers.py @@ -127,10 +127,11 @@ def NDF(inputData, regularisation_parameter, edge_parameter, iterations,      	    raise ValueError ('GPU is not available')          raise ValueError('Unknown device {0}. Expecting gpu or cpu'\                           .format(device)) -def NDF_MASK(inputData, diffuswindow, regularisation_parameter, edge_parameter, iterations, +def NDF_MASK(inputData, maskdata, diffuswindow, regularisation_parameter, edge_parameter, iterations,                       time_marching_parameter, penalty_type, tolerance_param, device='cpu'):      if device == 'cpu':          return NDF_MASK_CPU(inputData, +                     maskdata,                       diffuswindow,                       regularisation_parameter,                       edge_parameter, @@ -140,6 +141,7 @@ def NDF_MASK(inputData, diffuswindow, regularisation_parameter, edge_parameter,                       tolerance_param)      elif device == 'gpu' and gpu_enabled:          return NDF_MASK_CPU(inputData, +                     maskdata,                       diffuswindow,                       regularisation_parameter,                       edge_parameter, diff --git a/src/Python/src/cpu_regularisers.pyx b/src/Python/src/cpu_regularisers.pyx index 305ee1f..ca402c1 100644 --- a/src/Python/src/cpu_regularisers.pyx +++ b/src/Python/src/cpu_regularisers.pyx @@ -24,7 +24,7 @@ cdef extern float SB_TV_CPU_main(float *Input, float *Output, float *infovector,  cdef extern float LLT_ROF_CPU_main(float *Input, float *Output, float *infovector, float lambdaROF, float lambdaLLT, int iterationsNumb, float tau, float epsil, int dimX, int dimY, int dimZ);  cdef extern float TGV_main(float *Input, float *Output, float *infovector, float lambdaPar, float alpha1, float alpha0, int iterationsNumb, float L2, float epsil, int dimX, int dimY, int dimZ);  cdef extern float Diffusion_CPU_main(float *Input, float *Output, float *infovector, float lambdaPar, float sigmaPar, int iterationsNumb, float tau, int penaltytype, float epsil, int dimX, int dimY, int dimZ); -cdef extern float DiffusionMASK_CPU_main(float *Input, unsigned char *MASK, float *Output, float *infovector, int DiffusWindow, float lambdaPar, float sigmaPar, int iterationsNumb, float tau, int penaltytype, float epsil, int dimX, int dimY, int dimZ); +cdef extern float DiffusionMASK_CPU_main(float *Input, unsigned char *MASK, unsigned char *MASK_upd, float *Output, float *infovector, int DiffusWindow, float lambdaPar, float sigmaPar, int iterationsNumb, float tau, int penaltytype, float epsil, int dimX, int dimY, int dimZ);  cdef extern float Diffus4th_CPU_main(float *Input, float *Output,  float *infovector, float lambdaPar, float sigmaPar, int iterationsNumb, float tau, float epsil, int dimX, int dimY, int dimZ);  cdef extern float dTV_FGP_CPU_main(float *Input, float *InputRef, float *Output, float *infovector, float lambdaPar, int iterationsNumb, float epsil, float eta, int methodTV, int nonneg, int dimX, int dimY, int dimZ);  cdef extern float TNV_CPU_main(float *Input, float *u, float lambdaPar, int maxIter, float tol, int dimX, int dimY, int dimZ); @@ -403,18 +403,22 @@ def NDF_MASK_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,      dims[0] = inputData.shape[0]      dims[1] = inputData.shape[1] + +    cdef np.ndarray[np.uint8_t, ndim=2, mode="c"] mask_upd = \ +            np.zeros([dims[0],dims[1]], dtype='uint8')      cdef np.ndarray[np.float32_t, ndim=2, mode="c"] outputData = \              np.zeros([dims[0],dims[1]], dtype='float32')      cdef np.ndarray[np.float32_t, ndim=1, mode="c"] infovec = \                  np.zeros([2], dtype='float32') +      # Run constrained nonlinear diffusion iterations for 2D data -    DiffusionMASK_CPU_main(&inputData[0,0], &maskData[0,0], &outputData[0,0], &infovec[0], +    DiffusionMASK_CPU_main(&inputData[0,0], &maskData[0,0], &mask_upd[0,0], &outputData[0,0], &infovec[0],      diffuswindow, regularisation_parameter, edge_parameter, iterationsNumb,      time_marching_parameter, penalty_type,      tolerance_param,      dims[1], dims[0], 1) -    return (outputData,infovec) +    return (mask_upd,outputData,infovec)  #****************************************************************#  #*************Anisotropic Fourth-Order diffusion*****************#  | 
