summaryrefslogtreecommitdiffstats
path: root/src/Python
diff options
context:
space:
mode:
authorDaniil Kazantsev <dkazanc@hotmail.com>2019-04-10 22:39:11 +0100
committerDaniil Kazantsev <dkazanc@hotmail.com>2019-04-10 22:39:11 +0100
commit2d436f37be6029d57d7f876d4c7c378ee712a11e (patch)
tree6bec355d839c5a1598af877e91c250a25ca83196 /src/Python
parentd6ee5585e696f855d1c687d34efa04328729e94c (diff)
downloadregularization-2d436f37be6029d57d7f876d4c7c378ee712a11e.tar.gz
regularization-2d436f37be6029d57d7f876d4c7c378ee712a11e.tar.bz2
regularization-2d436f37be6029d57d7f876d4c7c378ee712a11e.tar.xz
regularization-2d436f37be6029d57d7f876d4c7c378ee712a11e.zip
progress with bresenham
Diffstat (limited to 'src/Python')
-rw-r--r--src/Python/ccpi/filters/regularisers.py4
-rw-r--r--src/Python/src/cpu_regularisers.pyx10
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*****************#