summaryrefslogtreecommitdiffstats
path: root/src/Python
diff options
context:
space:
mode:
authordkazanc <dkazanc@hotmail.com>2019-03-06 15:13:58 +0000
committerdkazanc <dkazanc@hotmail.com>2019-03-06 15:13:58 +0000
commit39baef90c4b209090f006e5308653cb0a3348c4e (patch)
treee85f827c91fa98a39cef941090dc260db1c76b6c /src/Python
parent5a12eb57a4965dea7241093c1fe7bf50dfac9659 (diff)
downloadregularization-39baef90c4b209090f006e5308653cb0a3348c4e.tar.gz
regularization-39baef90c4b209090f006e5308653cb0a3348c4e.tar.bz2
regularization-39baef90c4b209090f006e5308653cb0a3348c4e.tar.xz
regularization-39baef90c4b209090f006e5308653cb0a3348c4e.zip
tol work
Diffstat (limited to 'src/Python')
-rw-r--r--src/Python/ccpi/filters/regularisers.py7
-rw-r--r--src/Python/setup-regularisers.py.in2
-rw-r--r--src/Python/src/cpu_regularisers.pyx38
3 files changed, 24 insertions, 23 deletions
diff --git a/src/Python/ccpi/filters/regularisers.py b/src/Python/ccpi/filters/regularisers.py
index 588ea32..fb2c999 100644
--- a/src/Python/ccpi/filters/regularisers.py
+++ b/src/Python/ccpi/filters/regularisers.py
@@ -29,15 +29,14 @@ def ROF_TV(inputData, regularisation_parameter, iterations,
.format(device))
def FGP_TV(inputData, regularisation_parameter,iterations,
- tolerance_param, methodTV, nonneg, printM, device='cpu'):
+ tolerance_param, methodTV, nonneg, device='cpu'):
if device == 'cpu':
return TV_FGP_CPU(inputData,
regularisation_parameter,
iterations,
tolerance_param,
methodTV,
- nonneg,
- printM)
+ nonneg)
elif device == 'gpu' and gpu_enabled:
return TV_FGP_GPU(inputData,
regularisation_parameter,
@@ -45,7 +44,7 @@ def FGP_TV(inputData, regularisation_parameter,iterations,
tolerance_param,
methodTV,
nonneg,
- printM)
+ 1)
else:
if not gpu_enabled and device == 'gpu':
raise ValueError ('GPU is not available')
diff --git a/src/Python/setup-regularisers.py.in b/src/Python/setup-regularisers.py.in
index 82d9f9f..39b820a 100644
--- a/src/Python/setup-regularisers.py.in
+++ b/src/Python/setup-regularisers.py.in
@@ -44,7 +44,7 @@ extra_include_dirs += [os.path.join(".." , "Core"),
os.path.join(".." , "Core", "regularisers_GPU" , "LLTROF" ) ,
os.path.join(".." , "Core", "regularisers_GPU" , "NDF" ) ,
os.path.join(".." , "Core", "regularisers_GPU" , "dTV_FGP" ) ,
- os.path.join(".." , "Core", "regularisers_GPU" , "DIFF4th" ) ,
+ os.path.join(".." , "Core", "regularisers_GPU" , "Diff4th" ) ,
os.path.join(".." , "Core", "regularisers_GPU" , "PatchSelect" ) ,
"."]
diff --git a/src/Python/src/cpu_regularisers.pyx b/src/Python/src/cpu_regularisers.pyx
index 11a0617..b7d029d 100644
--- a/src/Python/src/cpu_regularisers.pyx
+++ b/src/Python/src/cpu_regularisers.pyx
@@ -19,7 +19,7 @@ import numpy as np
cimport numpy as np
cdef extern float TV_ROF_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float tau, int dimX, int dimY, int dimZ);
-cdef extern float TV_FGP_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int nonneg, int printM, int dimX, int dimY, int dimZ);
+cdef extern float TV_FGP_CPU_main(float *Input, float *Output, float *infovector, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int nonneg, int dimX, int dimY, int dimZ);
cdef extern float SB_TV_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int printM, int dimX, int dimY, int dimZ);
cdef extern float LLT_ROF_CPU_main(float *Input, float *Output, float lambdaROF, float lambdaLLT, int iterationsNumb, float tau, int dimX, int dimY, int dimZ);
cdef extern float TGV_main(float *Input, float *Output, float lambdaPar, float alpha1, float alpha0, int iterationsNumb, float L2, int dimX, int dimY, int dimZ);
@@ -45,7 +45,7 @@ def TV_ROF_CPU(inputData, regularisation_parameter, iterationsNumb, marching_ste
def TV_ROF_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
float regularisation_parameter,
- int iterationsNumb,
+ int iterationsNumb,
float marching_step_parameter):
cdef long dims[2]
dims[0] = inputData.shape[0]
@@ -80,45 +80,46 @@ def TV_ROF_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
#********************** Total-variation FGP *********************#
#****************************************************************#
#******** Total-variation Fast-Gradient-Projection (FGP)*********#
-def TV_FGP_CPU(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM):
+def TV_FGP_CPU(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg):
if inputData.ndim == 2:
- return TV_FGP_2D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
+ return TV_FGP_2D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg)
elif inputData.ndim == 3:
- return TV_FGP_3D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
+ return TV_FGP_3D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg)
def TV_FGP_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
float regularisation_parameter,
int iterationsNumb,
float tolerance_param,
int methodTV,
- int nonneg,
- int printM):
-
+ int nonneg):
+
cdef long dims[2]
dims[0] = inputData.shape[0]
dims[1] = inputData.shape[1]
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=2, mode="c"] infovec = \
+ np.ones([dims[0],dims[1]], dtype='float32')
+
#/* Run FGP-TV iterations for 2D data */
- TV_FGP_CPU_main(&inputData[0,0], &outputData[0,0], regularisation_parameter,
+ TV_FGP_CPU_main(&inputData[0,0], &outputData[0,0], &infovec[0,0], regularisation_parameter,
iterationsNumb,
tolerance_param,
methodTV,
nonneg,
- printM,
dims[1],dims[0],1)
- return outputData
+ return (outputData,infovec)
def TV_FGP_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
float regularisation_parameter,
int iterationsNumb,
float tolerance_param,
int methodTV,
- int nonneg,
- int printM):
+ int nonneg):
+
cdef long dims[3]
dims[0] = inputData.shape[0]
dims[1] = inputData.shape[1]
@@ -126,16 +127,17 @@ def TV_FGP_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
cdef np.ndarray[np.float32_t, ndim=3, mode="c"] outputData = \
np.zeros([dims[0], dims[1], dims[2]], dtype='float32')
-
+ cdef np.ndarray[np.float32_t, ndim=1, mode="c"] infovec = \
+ np.zeros([2], dtype='float32')
+
#/* Run FGP-TV iterations for 3D data */
- TV_FGP_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularisation_parameter,
+ TV_FGP_CPU_main(&inputData[0,0,0], &outputData[0,0,0], &infovec[0], regularisation_parameter,
iterationsNumb,
tolerance_param,
methodTV,
nonneg,
- printM,
dims[2], dims[1], dims[0])
- return outputData
+ return (outputData,infovec)
#***************************************************************#
#********************** Total-variation SB *********************#