summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniil Kazantsev <dkazanc@hotmail.com>2018-04-09 13:41:06 +0100
committerDaniil Kazantsev <dkazanc@hotmail.com>2018-04-09 13:41:06 +0100
commitb9fafd363d1d181a4a8b42ea4038924097207913 (patch)
treecdc7c4469e210a52cb416b2747ca2d954da073cc
parenta5b5872b76bf00023a7e7cee97e028003ccbc45e (diff)
downloadregularization-b9fafd363d1d181a4a8b42ea4038924097207913.tar.gz
regularization-b9fafd363d1d181a4a8b42ea4038924097207913.tar.bz2
regularization-b9fafd363d1d181a4a8b42ea4038924097207913.tar.xz
regularization-b9fafd363d1d181a4a8b42ea4038924097207913.zip
major renaming and new 3D demos for Matlab
-rw-r--r--CMakeLists.txt6
-rw-r--r--Core/CCPiDefines.h2
-rw-r--r--Core/CMakeLists.txt36
-rw-r--r--Core/regularisers_CPU/FGP_TV_core.c (renamed from Core/regularizers_CPU/FGP_TV_core.c)2
-rw-r--r--Core/regularisers_CPU/FGP_TV_core.h (renamed from Core/regularizers_CPU/FGP_TV_core.h)0
-rw-r--r--Core/regularisers_CPU/ROF_TV_core.c (renamed from Core/regularizers_CPU/ROF_TV_core.c)0
-rw-r--r--Core/regularisers_CPU/ROF_TV_core.h (renamed from Core/regularizers_CPU/ROF_TV_core.h)0
-rw-r--r--Core/regularisers_CPU/utils.c (renamed from Core/regularizers_CPU/utils.c)0
-rw-r--r--Core/regularisers_CPU/utils.h (renamed from Core/regularizers_CPU/utils.h)0
-rwxr-xr-xCore/regularisers_GPU/TV_FGP_GPU_core.cu (renamed from Core/regularizers_GPU/TV_FGP_GPU_core.cu)2
-rwxr-xr-xCore/regularisers_GPU/TV_FGP_GPU_core.h (renamed from Core/regularizers_GPU/TV_FGP_GPU_core.h)0
-rwxr-xr-xCore/regularisers_GPU/TV_ROF_GPU_core.cu (renamed from Core/regularizers_GPU/TV_ROF_GPU_core.cu)0
-rwxr-xr-xCore/regularisers_GPU/TV_ROF_GPU_core.h (renamed from Core/regularizers_GPU/TV_ROF_GPU_core.h)0
-rw-r--r--Readme.md14
-rw-r--r--Wrappers/Matlab/demos/demoMatlab_3Ddenoise.m44
-rw-r--r--Wrappers/Matlab/demos/demoMatlab_denoise.m8
-rw-r--r--Wrappers/Matlab/mex_compile/compileCPU_mex.m8
-rw-r--r--Wrappers/Matlab/mex_compile/compileGPU_mex.m8
-rw-r--r--Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c (renamed from Wrappers/Matlab/mex_compile/regularizers_CPU/FGP_TV.c)0
-rw-r--r--Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c~91
-rw-r--r--Wrappers/Matlab/mex_compile/regularisers_CPU/ROF_TV.c (renamed from Wrappers/Matlab/mex_compile/regularizers_CPU/ROF_TV.c)0
-rw-r--r--Wrappers/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp (renamed from Wrappers/Matlab/mex_compile/regularizers_GPU/FGP_TV_GPU.cpp)0
-rw-r--r--Wrappers/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp (renamed from Wrappers/Matlab/mex_compile/regularizers_GPU/ROF_TV_GPU.cpp)0
-rw-r--r--Wrappers/Python/CMakeLists.txt20
-rw-r--r--Wrappers/Python/ccpi/filters/regularisers.py (renamed from Wrappers/Python/ccpi/filters/regularizers.py)18
-rw-r--r--Wrappers/Python/conda-recipe/bld.bat4
-rw-r--r--Wrappers/Python/conda-recipe/build.sh4
-rw-r--r--Wrappers/Python/conda-recipe/meta.yaml6
-rw-r--r--Wrappers/Python/demo/test_cpu_regularisers.py (renamed from Wrappers/Python/demo/test_cpu_regularizers.py)177
-rw-r--r--Wrappers/Python/fista-recipe/bld.bat13
-rw-r--r--Wrappers/Python/fista-recipe/build.sh10
-rw-r--r--Wrappers/Python/fista-recipe/meta.yaml29
-rw-r--r--Wrappers/Python/setup-fista.py27
-rw-r--r--Wrappers/Python/setup-regularisers.py.in (renamed from Wrappers/Python/setup-regularizers.py.in)12
-rw-r--r--Wrappers/Python/src/cpu_regularisers.pyx (renamed from Wrappers/Python/src/cpu_regularizers.pyx)28
-rw-r--r--Wrappers/Python/src/gpu_regularisers.pyx (renamed from Wrappers/Python/src/gpu_regularizers.pyx)28
-rw-r--r--Wrappers/Python/test/test_cpu_regularisers.py (renamed from Wrappers/Python/test/test_cpu_regularizers.py)0
-rw-r--r--Wrappers/Python/test/test_cpu_vs_gpu_regularisers.py (renamed from Wrappers/Python/test/test_cpu_vs_gpu_regularizers.py)18
-rw-r--r--Wrappers/Python/test/test_gpu_regularisers.py (renamed from Wrappers/Python/test/test_gpu_regularizers.py)110
-rw-r--r--Wrappers/Python/test/test_regularisers_3d.py (renamed from Wrappers/Python/test/test_regularizers_3d.py)0
-rw-r--r--Wrappers/Python/test/test_regularizers.py395
-rw-r--r--recipes/regularisers/bld.bat (renamed from recipes/regularizers/bld.bat)0
-rw-r--r--recipes/regularisers/build.sh (renamed from recipes/regularizers/build.sh)0
-rw-r--r--recipes/regularisers/meta.yaml (renamed from recipes/regularizers/meta.yaml)4
44 files changed, 262 insertions, 862 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e39dacd..6d931ee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,12 +14,12 @@
cmake_minimum_required (VERSION 3.0)
-project(FISTA)
+project(RGL)
#https://stackoverflow.com/questions/13298504/using-cmake-with-setup-py
# The version number.
-set (FISTA_VERSION_MAJOR 1)
-set (FISTA_VERSION_MINOR 0)
+set (RGL_VERSION_MAJOR 1)
+set (RGL_VERSION_MINOR 0)
set (CIL_VERSION_MAJOR 0)
set (CIL_VERSION_MINOR 9)
diff --git a/Core/CCPiDefines.h b/Core/CCPiDefines.h
index c6ddc7d..d3038f9 100644
--- a/Core/CCPiDefines.h
+++ b/Core/CCPiDefines.h
@@ -3,7 +3,7 @@ This work is part of the Core Imaging Library developed by
Visual Analytics and Imaging System Group of the Science Technology
Facilities Council, STFC
-Copyright 2017 Srikanth Nagella, Edoardo Pasca
+Copyright 2017 Srikanth Nagella, Edoardo Pasca, Daniil Kazantsev
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt
index f53c538..3bc5ceb 100644
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@ -1,7 +1,7 @@
# Copyright 2018 Edoardo Pasca
cmake_minimum_required (VERSION 3.0)
-project(RegularizerLibrary)
+project(RGL)
#https://stackoverflow.com/questions/13298504/using-cmake-with-setup-py
# The version number.
@@ -41,8 +41,8 @@ if (OPENMP_FOUND)
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
-## Build the regularizers package as a library
-message("Creating Regularizers as shared library")
+## Build the regularisers package as a library
+message("Creating Regularisers as a shared library")
message("CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
@@ -76,26 +76,26 @@ elseif(UNIX)
endif()
message("CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
-## Build the regularizers package as a library
-message("Adding regularizers as shared library")
+## Build the regularisers package as a library
+message("Adding regularisers as a shared library")
#set(CMAKE_C_COMPILER /apps/pgi/linux86-64/17.4/bin/pgcc)
#set(CMAKE_C_FLAGS "-acc -Minfo -ta=tesla:cc20 -openmp")
#set(CMAKE_C_FLAGS "-acc -Minfo -ta=multicore -openmp -fPIC")
add_library(cilreg SHARED
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/FGP_TV_core.c
- #${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/LLT_model_core.c
- #${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/PatchBased_Regul_core.c
- #${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/SplitBregman_TV_core.c
- #${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/TGV_PD_core.c
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/ROF_TV_core.c
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/utils.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/FGP_TV_core.c
+ #${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/LLT_model_core.c
+ #${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/PatchBased_Regul_core.c
+ #${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/SplitBregman_TV_core.c
+ #${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/TGV_PD_core.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/ROF_TV_core.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/utils.c
)
target_link_libraries(cilreg ${EXTRA_LIBRARIES} )
include_directories(cilreg PUBLIC
${LIBRARY_INC}/include
${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_CPU/ )
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_CPU/ )
#GENERATE_EXPORT_HEADER( cilreg
# BASE_NAME cilreg
# EXPORT_MACRO_NAME CCPiCore_EXPORTS
@@ -120,15 +120,15 @@ message ("I'd install into ${CMAKE_INSTALL_PREFIX} lib bin")
)
endif()
-# GPU Regularizers
+# GPU Regularisers
find_package(CUDA)
if (CUDA_FOUND)
set(CUDA_NVCC_FLAGS "-Xcompiler -fPIC -shared -D_FORCE_INLINES")
message("CUDA FLAGS ${CUDA_NVCC_FLAGS}")
CUDA_ADD_LIBRARY(cilregcuda SHARED
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_GPU/TV_ROF_GPU_core.cu
- ${CMAKE_CURRENT_SOURCE_DIR}/regularizers_GPU/TV_FGP_GPU_core.cu
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/TV_ROF_GPU_core.cu
+ ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/TV_FGP_GPU_core.cu
)
if (UNIX)
message ("I'd install into ${CMAKE_INSTALL_PREFIX}/lib")
@@ -149,6 +149,6 @@ else()
endif()
-#add_executable(regularizer_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test_regularizer.cpp)
+#add_executable(regulariser_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test_regulariser.cpp)
-#target_link_libraries (regularizer_test LINK_PUBLIC regularizers_lib)
+#target_link_libraries (regulariser_test LINK_PUBLIC regularisers_lib)
diff --git a/Core/regularizers_CPU/FGP_TV_core.c b/Core/regularisers_CPU/FGP_TV_core.c
index 462c3f7..15bb45c 100644
--- a/Core/regularizers_CPU/FGP_TV_core.c
+++ b/Core/regularisers_CPU/FGP_TV_core.c
@@ -255,7 +255,7 @@ float Grad_func3D(float *P1, float *P2, float *P3, float *D, float *R1, float *R
{
float val1, val2, val3, multip;
int i,j,k, index;
- multip = (1.0f/(8.0f*lambda));
+ multip = (1.0f/(26.0f*lambda));
#pragma omp parallel for shared(P1,P2,P3,D,R1,R2,R3,multip) private(index,i,j,k,val1,val2,val3)
for(i=0; i<dimX; i++) {
for(j=0; j<dimY; j++) {
diff --git a/Core/regularizers_CPU/FGP_TV_core.h b/Core/regularisers_CPU/FGP_TV_core.h
index 37e32f7..37e32f7 100644
--- a/Core/regularizers_CPU/FGP_TV_core.h
+++ b/Core/regularisers_CPU/FGP_TV_core.h
diff --git a/Core/regularizers_CPU/ROF_TV_core.c b/Core/regularisers_CPU/ROF_TV_core.c
index 9ffb905..9ffb905 100644
--- a/Core/regularizers_CPU/ROF_TV_core.c
+++ b/Core/regularisers_CPU/ROF_TV_core.c
diff --git a/Core/regularizers_CPU/ROF_TV_core.h b/Core/regularisers_CPU/ROF_TV_core.h
index 14daf58..14daf58 100644
--- a/Core/regularizers_CPU/ROF_TV_core.h
+++ b/Core/regularisers_CPU/ROF_TV_core.h
diff --git a/Core/regularizers_CPU/utils.c b/Core/regularisers_CPU/utils.c
index 0c02c45..0c02c45 100644
--- a/Core/regularizers_CPU/utils.c
+++ b/Core/regularisers_CPU/utils.c
diff --git a/Core/regularizers_CPU/utils.h b/Core/regularisers_CPU/utils.h
index bd76bf0..bd76bf0 100644
--- a/Core/regularizers_CPU/utils.h
+++ b/Core/regularisers_CPU/utils.h
diff --git a/Core/regularizers_GPU/TV_FGP_GPU_core.cu b/Core/regularisers_GPU/TV_FGP_GPU_core.cu
index 61097fb..314a367 100755
--- a/Core/regularizers_GPU/TV_FGP_GPU_core.cu
+++ b/Core/regularisers_GPU/TV_FGP_GPU_core.cu
@@ -493,7 +493,7 @@ extern "C" void TV_FGP_GPU_main(float *Input, float *Output, float lambdaPar, in
cudaMemset(R2, 0, ImSize*sizeof(float));
cudaMemset(R3, 0, ImSize*sizeof(float));
/********************** Run CUDA 3D kernel here ********************/
- multip = (1.0f/(8.0f*lambdaPar));
+ multip = (1.0f/(26.0f*lambdaPar));
/* The main kernel */
for (i = 0; i < iter; i++) {
diff --git a/Core/regularizers_GPU/TV_FGP_GPU_core.h b/Core/regularisers_GPU/TV_FGP_GPU_core.h
index 107d243..107d243 100755
--- a/Core/regularizers_GPU/TV_FGP_GPU_core.h
+++ b/Core/regularisers_GPU/TV_FGP_GPU_core.h
diff --git a/Core/regularizers_GPU/TV_ROF_GPU_core.cu b/Core/regularisers_GPU/TV_ROF_GPU_core.cu
index 1a54d02..1a54d02 100755
--- a/Core/regularizers_GPU/TV_ROF_GPU_core.cu
+++ b/Core/regularisers_GPU/TV_ROF_GPU_core.cu
diff --git a/Core/regularizers_GPU/TV_ROF_GPU_core.h b/Core/regularisers_GPU/TV_ROF_GPU_core.h
index d772aba..d772aba 100755
--- a/Core/regularizers_GPU/TV_ROF_GPU_core.h
+++ b/Core/regularisers_GPU/TV_ROF_GPU_core.h
diff --git a/Readme.md b/Readme.md
index 3ec20dc..4931ee4 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,7 +1,7 @@
-# CCPi-Regularization Toolkit (CCPi-RGL)
+# CCPi-Regularisation Toolkit (CCPi-RGL)
-**Iterative image reconstruction (IIR) methods normally require regularization to stabilize the convergence and make the reconstruction problem more well-posed.
-CCPi-RGL software consist of 2D/3D regularization modules for single-channel and multi-channel reconstruction problems. The modules especially suited for IIR, however,
+**Iterative image reconstruction (IIR) methods normally require regularisation to stabilise the convergence and make the reconstruction problem more well-posed.
+CCPi-RGL software consist of 2D/3D regularisation modules for single-channel and multi-channel reconstruction problems. The modules especially suited for IIR, however,
can also be used as image denoising iterative filters. The core modules are written in C-OMP and CUDA languages and wrappers for Matlab and Python are provided.**
## Prerequisites:
@@ -24,13 +24,13 @@ can also be used as image denoising iterative filters. The core modules are writ
### Python (conda-build)
```
export CIL_VERSION=0.9.2
- conda build recipes/regularizers --numpy 1.12 --python 3.5
- conda install cil_regularizer=0.9.2 --use-local --force
+ conda build recipes/regularisers --numpy 1.12 --python 3.5
+ conda install cil_regulariser=0.9.2 --use-local --force
cd Wrappers/Python
conda build conda-recipe --numpy 1.12 --python 3.5
- conda install ccpi-regularizer=0.9.2 --use-local --force
+ conda install ccpi-regulariser=0.9.2 --use-local --force
cd test/
- python test_cpu_vs_gpu_regularizers.py
+ python test_cpu_vs_gpu_regularisers.py
```
### Matlab
```
diff --git a/Wrappers/Matlab/demos/demoMatlab_3Ddenoise.m b/Wrappers/Matlab/demos/demoMatlab_3Ddenoise.m
new file mode 100644
index 0000000..f5c3ad1
--- /dev/null
+++ b/Wrappers/Matlab/demos/demoMatlab_3Ddenoise.m
@@ -0,0 +1,44 @@
+% Volume (3D) denoising demo using CCPi-RGL
+
+addpath('../mex_compile/installed');
+addpath('../../../data/');
+
+N = 256;
+slices = 30;
+vol3D = zeros(N,N,slices, 'single');
+Im = double(imread('lena_gray_256.tif'))/255; % loading image
+for i = 1:slices
+vol3D(:,:,i) = Im + .05*randn(size(Im));
+end
+vol3D(vol3D < 0) = 0;
+figure; imshow(vol3D(:,:,15), [0 1]); title('Noisy image');
+
+%%
+fprintf('Denoise using ROF-TV model (CPU) \n');
+lambda_rof = 0.03; % regularisation parameter
+tau_rof = 0.0025; % time-marching constant
+iter_rof = 1000; % number of ROF iterations
+tic; u_rof = ROF_TV(single(vol3D), lambda_rof, iter_rof, tau_rof); toc;
+figure; imshow(u_rof(:,:,15), [0 1]); title('ROF-TV denoised volume (CPU)');
+%%
+% fprintf('Denoise using ROF-TV model (GPU) \n');
+% lambda_rof = 0.03; % regularisation parameter
+% tau_rof = 0.0025; % time-marching constant
+% iter_rof = 1000; % number of ROF iterations
+% tic; u_rofG = ROF_TV_GPU(single(vol3D), lambda_rof, iter_rof, tau_rof); toc;
+% figure; imshow(u_rofG(:,:,15), [0 1]); title('ROF-TV denoised volume (GPU)');
+%%
+fprintf('Denoise using FGP-TV model (CPU) \n');
+lambda_fgp = 0.03; % regularisation parameter
+iter_fgp = 500; % number of FGP iterations
+epsil_tol = 1.0e-05; % tolerance
+tic; u_fgp = FGP_TV(single(vol3D), lambda_fgp, iter_fgp, epsil_tol); toc;
+figure; imshow(u_fgp(:,:,15), [0 1]); title('FGP-TV denoised volume (CPU)');
+%%
+% fprintf('Denoise using FGP-TV model (GPU) \n');
+% lambda_fgp = 0.03; % regularisation parameter
+% iter_fgp = 500; % number of FGP iterations
+% epsil_tol = 1.0e-05; % tolerance
+% tic; u_fgpG = FGP_TV_GPU(single(vol3D), lambda_fgp, iter_fgp, epsil_tol); toc;
+% figure; imshow(u_fgpG(:,:,15), [0 1]); title('FGP-TV denoised volume (GPU)');
+%% \ No newline at end of file
diff --git a/Wrappers/Matlab/demos/demoMatlab_denoise.m b/Wrappers/Matlab/demos/demoMatlab_denoise.m
index 7258e5e..ab4e95d 100644
--- a/Wrappers/Matlab/demos/demoMatlab_denoise.m
+++ b/Wrappers/Matlab/demos/demoMatlab_denoise.m
@@ -9,28 +9,28 @@ figure; imshow(u0, [0 1]); title('Noisy image');
%%
fprintf('Denoise using ROF-TV model (CPU) \n');
-lambda_rof = 0.03; % regularization parameter
+lambda_rof = 0.03; % regularisation parameter
tau_rof = 0.0025; % time-marching constant
iter_rof = 2000; % number of ROF iterations
tic; u_rof = ROF_TV(single(u0), lambda_rof, iter_rof, tau_rof); toc;
figure; imshow(u_rof, [0 1]); title('ROF-TV denoised image (CPU)');
%%
% fprintf('Denoise using ROF-TV model (GPU) \n');
-% lambda_rof = 0.03; % regularization parameter
+% lambda_rof = 0.03; % regularisation parameter
% tau_rof = 0.0025; % time-marching constant
% iter_rof = 2000; % number of ROF iterations
% tic; u_rofG = ROF_TV_GPU(single(u0), lambda_rof, iter_rof, tau_rof); toc;
% figure; imshow(u_rofG, [0 1]); title('ROF-TV denoised image (GPU)');
%%
fprintf('Denoise using FGP-TV model (CPU) \n');
-lambda_fgp = 0.03; % regularization parameter
+lambda_fgp = 0.03; % regularisation parameter
iter_fgp = 1000; % number of FGP iterations
epsil_tol = 1.0e-05; % tolerance
tic; u_fgp = FGP_TV(single(u0), lambda_fgp, iter_fgp, epsil_tol); toc;
figure; imshow(u_fgp, [0 1]); title('FGP-TV denoised image (CPU)');
%%
% fprintf('Denoise using FGP-TV model (GPU) \n');
-% lambda_fgp = 0.03; % regularization parameter
+% lambda_fgp = 0.03; % regularisation parameter
% iter_fgp = 1000; % number of FGP iterations
% epsil_tol = 1.0e-05; % tolerance
% tic; u_fgpG = FGP_TV_GPU(single(u0), lambda_fgp, iter_fgp, epsil_tol); toc;
diff --git a/Wrappers/Matlab/mex_compile/compileCPU_mex.m b/Wrappers/Matlab/mex_compile/compileCPU_mex.m
index fcee53a..8da81ad 100644
--- a/Wrappers/Matlab/mex_compile/compileCPU_mex.m
+++ b/Wrappers/Matlab/mex_compile/compileCPU_mex.m
@@ -1,10 +1,10 @@
% execute this mex file in Matlab once
-copyfile ../../../Core/regularizers_CPU/ regularizers_CPU/
-copyfile ../../../Core/CCPiDefines.h regularizers_CPU/
+copyfile ../../../Core/regularisers_CPU/ regularisers_CPU/
+copyfile ../../../Core/CCPiDefines.h regularisers_CPU/
-cd regularizers_CPU/
+cd regularisers_CPU/
-fprintf('%s \n', 'Compiling CPU regularizers...');
+fprintf('%s \n', 'Compiling CPU regularisers...');
mex ROF_TV.c ROF_TV_core.c utils.c CFLAGS="\$CFLAGS -fopenmp -Wall -std=c99" LDFLAGS="\$LDFLAGS -fopenmp"
movefile ROF_TV.mex* ../installed/
diff --git a/Wrappers/Matlab/mex_compile/compileGPU_mex.m b/Wrappers/Matlab/mex_compile/compileGPU_mex.m
index df29a3e..45236fa 100644
--- a/Wrappers/Matlab/mex_compile/compileGPU_mex.m
+++ b/Wrappers/Matlab/mex_compile/compileGPU_mex.m
@@ -9,12 +9,12 @@
% tested on Ubuntu 16.04/MATLAB 2016b
-copyfile ../../../Core/regularizers_GPU/ regularizers_GPU/
-copyfile ../../../Core/CCPiDefines.h regularizers_GPU/
+copyfile ../../../Core/regularisers_GPU/ regularisers_GPU/
+copyfile ../../../Core/CCPiDefines.h regularisers_GPU/
-cd regularizers_GPU/
+cd regularisers_GPU/
-fprintf('%s \n', 'Compiling GPU regularizers (CUDA)...');
+fprintf('%s \n', 'Compiling GPU regularisers (CUDA)...');
!/usr/local/cuda/bin/nvcc -O0 -c TV_ROF_GPU_core.cu -Xcompiler -fPIC -I~/SOFT/MATLAB9/extern/include/
mex -g -I/usr/local/cuda-7.5/include -L/usr/local/cuda-7.5/lib64 -lcudart -lcufft -lmwgpu ROF_TV_GPU.cpp TV_ROF_GPU_core.o
movefile ROF_TV_GPU.mex* ../installed/
diff --git a/Wrappers/Matlab/mex_compile/regularizers_CPU/FGP_TV.c b/Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c
index ba06cc7..ba06cc7 100644
--- a/Wrappers/Matlab/mex_compile/regularizers_CPU/FGP_TV.c
+++ b/Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c
diff --git a/Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c~ b/Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c~
new file mode 100644
index 0000000..30d61cd
--- /dev/null
+++ b/Wrappers/Matlab/mex_compile/regularisers_CPU/FGP_TV.c~
@@ -0,0 +1,91 @@
+/*
+ * This work is part of the Core Imaging Library developed by
+ * Visual Analytics and Imaging System Group of the Science Technology
+ * Facilities Council, STFC
+ *
+ * Copyright 2017 Daniil Kazantsev
+ * Copyright 2017 Srikanth Nagella, Edoardo Pasca
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "matrix.h"
+#include "mex.h"
+#include "FGP_TV_core.h"
+
+/* C-OMP implementation of FGP-TV [1] denoising/regularization model (2D/3D case)
+ *
+ * Input Parameters:
+ * 1. Noisy image/volume
+ * 2. lambdaPar - regularization parameter
+ * 3. Number of iterations
+ * 4. eplsilon: tolerance constant
+ * 5. TV-type: methodTV - 'iso' (0) or 'l1' (1)
+ * 6. nonneg: 'nonnegativity (0 is OFF by default)
+ * 7. print information: 0 (off) or 1 (on)
+ *
+ * Output:
+ * [1] Filtered/regularized image
+ *
+ * This function is based on the Matlab's code and paper by
+ * [1] Amir Beck and Marc Teboulle, "Fast Gradient-Based Algorithms for Constrained Total Variation Image Denoising and Deblurring Problems"
+ */
+
+
+void mexFunction(
+ int nlhs, mxArray *plhs[],
+ int nrhs, const mxArray *prhs[])
+
+{
+ int number_of_dims, iter, dimX, dimY, dimZ, methTV, printswitch;
+ const int *dim_array;
+ float *Input, *Output, lambda, epsil;
+
+ number_of_dims = mxGetNumberOfDimensions(prhs[0]);
+ dim_array = mxGetDimensions(prhs[0]);
+
+ /*Handling Matlab input data*/
+ if ((nrhs < 2) || (nrhs > 6)) mexErrMsgTxt("At least 2 parameters is required: Image(2D/3D), Regularization parameter. The full list of parameters: Image(2D/3D), Regularization parameter, iterations number, tolerance, penalty type ('iso' or 'l1'), print switch");
+
+ Input = (float *) mxGetData(prhs[0]); /*noisy image (2D/3D) */
+ lambda = (float) mxGetScalar(prhs[1]); /* regularization parameter */
+ iter = 300; /* default iterations number */
+ epsil = 0.0001; /* default tolerance constant */
+ methTV = 0; /* default isotropic TV penalty */
+ printswitch = 0; /*default print is switched off - 0 */
+
+ if (mxGetClassID(prhs[0]) != mxSINGLE_CLASS) {mexErrMsgTxt("The input image must be in a single precision"); }
+
+ if ((nrhs == 3) || (nrhs == 4) || (nrhs == 5) || (nrhs == 6)) iter = (int) mxGetScalar(prhs[2]); /* iterations number */
+ if ((nrhs == 4) || (nrhs == 5) || (nrhs == 6)) epsil = (float) mxGetScalar(prhs[3]); /* tolerance constant */
+ if ((nrhs == 5) || (nrhs == 6)) {
+ char *penalty_type;
+ penalty_type = mxArrayToString(prhs[4]); /* choosing TV penalty: 'iso' or 'l1', 'iso' is the default */
+ if ((strcmp(penalty_type, "l1") != 0) && (strcmp(penalty_type, "iso") != 0)) mexErrMsgTxt("Choose TV type: 'iso' or 'l1',");
+ if (strcmp(penalty_type, "l1") == 0) methTV = 1; /* enable 'l1' penalty */
+ mxFree(penalty_type);
+ }
+ if (nrhs == 6) {
+ printswitch = (int) mxGetScalar(prhs[5]);
+ if ((printswitch != 0) || (printswitch != 1)) {mexErrMsgTxt("Print can be enabled by choosing 1 or off - 0"); }
+ }
+
+ /*Handling Matlab output data*/
+ dimX = dim_array[0]; dimY = dim_array[1]; dimZ = dim_array[2];
+
+ if (number_of_dims == 2) {
+ dimZ = 1; /*2D case*/
+ Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(2, dim_array, mxSINGLE_CLASS, mxREAL));
+ }
+ if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));
+
+
+ TV_FGP_CPU_main(Input, Output, lambda, iter, epsil, methTV, nonneg, printswitch, dimX, dimY, dimZ)
+}
diff --git a/Wrappers/Matlab/mex_compile/regularizers_CPU/ROF_TV.c b/Wrappers/Matlab/mex_compile/regularisers_CPU/ROF_TV.c
index 6b9e1ea..6b9e1ea 100644
--- a/Wrappers/Matlab/mex_compile/regularizers_CPU/ROF_TV.c
+++ b/Wrappers/Matlab/mex_compile/regularisers_CPU/ROF_TV.c
diff --git a/Wrappers/Matlab/mex_compile/regularizers_GPU/FGP_TV_GPU.cpp b/Wrappers/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp
index 9ed9ae0..9ed9ae0 100644
--- a/Wrappers/Matlab/mex_compile/regularizers_GPU/FGP_TV_GPU.cpp
+++ b/Wrappers/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp
diff --git a/Wrappers/Matlab/mex_compile/regularizers_GPU/ROF_TV_GPU.cpp b/Wrappers/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp
index 7bbe3af..7bbe3af 100644
--- a/Wrappers/Matlab/mex_compile/regularizers_GPU/ROF_TV_GPU.cpp
+++ b/Wrappers/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp
diff --git a/Wrappers/Python/CMakeLists.txt b/Wrappers/Python/CMakeLists.txt
index eb3bac7..fb00706 100644
--- a/Wrappers/Python/CMakeLists.txt
+++ b/Wrappers/Python/CMakeLists.txt
@@ -1,7 +1,7 @@
# Copyright 2018 Edoardo Pasca
cmake_minimum_required (VERSION 3.0)
-project(RegularizerPython)
+project(regulariserPython)
#https://stackoverflow.com/questions/13298504/using-cmake-with-setup-py
# The version number.
@@ -25,8 +25,8 @@ if (PYTHONINTERP_FOUND)
endif()
-## Build the regularizers package as a library
-message("Creating Regularizers as shared library")
+## Build the regularisers package as a library
+message("Creating Regularisers as shared library")
message("CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
@@ -52,7 +52,7 @@ elseif(UNIX)
)
endif()
-# GPU Regularizers
+# GPU regularisers
find_package(CUDA)
if (CUDA_FOUND)
@@ -60,12 +60,12 @@ if (CUDA_FOUND)
set (SETUP_GPU_WRAPPERS "extra_libraries += ['cilregcuda']\n\
setup( \n\
name='ccpi', \n\
- description='CCPi Core Imaging Library - Image Regularizers GPU',\n\
+ description='CCPi Core Imaging Library - Image regularisers GPU',\n\
version=cil_version,\n\
cmdclass = {'build_ext': build_ext},\n\
- ext_modules = [Extension('ccpi.filters.gpu_regularizers',\n\
+ ext_modules = [Extension('ccpi.filters.gpu_regularisers',\n\
sources=[ \n\
- os.path.join('.' , 'src', 'gpu_regularizers.pyx' ),\n\
+ os.path.join('.' , 'src', 'gpu_regularisers.pyx' ),\n\
],\n\
include_dirs=extra_include_dirs, \n\
library_dirs=extra_library_dirs, \n\
@@ -80,9 +80,9 @@ else()
set(SETUP_GPU_WRAPPERS "#CUDA NOT FOUND")
endif()
-configure_file("setup-regularizers.py.in" "setup-regularizers.py")
+configure_file("setup-regularisers.py.in" "setup-regularisers.py")
-#add_executable(regularizer_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test_regularizer.cpp)
+#add_executable(regulariser_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test_regulariser.cpp)
-#target_link_libraries (regularizer_test LINK_PUBLIC regularizers_lib)
+#target_link_libraries (regulariser_test LINK_PUBLIC regularisers_lib)
diff --git a/Wrappers/Python/ccpi/filters/regularizers.py b/Wrappers/Python/ccpi/filters/regularisers.py
index d6dfa8c..039daab 100644
--- a/Wrappers/Python/ccpi/filters/regularizers.py
+++ b/Wrappers/Python/ccpi/filters/regularisers.py
@@ -2,30 +2,30 @@
script which assigns a proper device core function based on a flag ('cpu' or 'gpu')
"""
-from ccpi.filters.cpu_regularizers_cython import TV_ROF_CPU, TV_FGP_CPU
-from ccpi.filters.gpu_regularizers import TV_ROF_GPU, TV_FGP_GPU
+from ccpi.filters.cpu_regularisers_cython import TV_ROF_CPU, TV_FGP_CPU
+from ccpi.filters.gpu_regularisers import TV_ROF_GPU, TV_FGP_GPU
-def ROF_TV(inputData, regularization_parameter, iterations,
+def ROF_TV(inputData, regularisation_parameter, iterations,
time_marching_parameter,device='cpu'):
if device == 'cpu':
return TV_ROF_CPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
time_marching_parameter)
elif device == 'gpu':
return TV_ROF_GPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
time_marching_parameter)
else:
raise ValueError('Unknown device {0}. Expecting gpu or cpu'\
.format(device))
-def FGP_TV(inputData, regularization_parameter,iterations,
+def FGP_TV(inputData, regularisation_parameter,iterations,
tolerance_param, methodTV, nonneg, printM, device='cpu'):
if device == 'cpu':
return TV_FGP_CPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -33,7 +33,7 @@ def FGP_TV(inputData, regularization_parameter,iterations,
printM)
elif device == 'gpu':
return TV_FGP_GPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -41,4 +41,4 @@ def FGP_TV(inputData, regularization_parameter,iterations,
printM)
else:
raise ValueError('Unknown device {0}. Expecting gpu or cpu'\
- .format(device)) \ No newline at end of file
+ .format(device))
diff --git a/Wrappers/Python/conda-recipe/bld.bat b/Wrappers/Python/conda-recipe/bld.bat
index 850905c..e47f8d9 100644
--- a/Wrappers/Python/conda-recipe/bld.bat
+++ b/Wrappers/Python/conda-recipe/bld.bat
@@ -11,7 +11,7 @@ cd %SRC_DIR%\ccpi\Python
:: issue cmake to create setup.py
cmake .
-%PYTHON% setup-regularizers.py build_ext
+%PYTHON% setup-regularisers.py build_ext
if errorlevel 1 exit 1
-%PYTHON% setup-regularizers.py install
+%PYTHON% setup-regularisers.py install
if errorlevel 1 exit 1
diff --git a/Wrappers/Python/conda-recipe/build.sh b/Wrappers/Python/conda-recipe/build.sh
index 9ea4161..8b05663 100644
--- a/Wrappers/Python/conda-recipe/build.sh
+++ b/Wrappers/Python/conda-recipe/build.sh
@@ -13,7 +13,7 @@ echo "$SRC_DIR/ccpi/Python"
cmake .
-$PYTHON setup-regularizers.py build_ext
-$PYTHON setup-regularizers.py install
+$PYTHON setup-regularisers.py build_ext
+$PYTHON setup-regularisers.py install
diff --git a/Wrappers/Python/conda-recipe/meta.yaml b/Wrappers/Python/conda-recipe/meta.yaml
index f4cb471..5336d14 100644
--- a/Wrappers/Python/conda-recipe/meta.yaml
+++ b/Wrappers/Python/conda-recipe/meta.yaml
@@ -1,5 +1,5 @@
package:
- name: ccpi-regularizer
+ name: ccpi-regulariser
version: {{ environ['CIL_VERSION'] }}
@@ -17,7 +17,7 @@ requirements:
#- boost ==1.64.0
#- boost-cpp ==1.64.0
- cython
- - cil_regularizer
+ - cil_regulariser
- vc 14 # [win and py35]
- vc 9 # [win and py27]
- cmake
@@ -26,7 +26,7 @@ requirements:
- python
- numpy x.x
#- boost ==1.64
- - cil_regularizer
+ - cil_regulariser
- vc 14 # [win and py35]
- vc 9 # [win and py27]
diff --git a/Wrappers/Python/demo/test_cpu_regularizers.py b/Wrappers/Python/demo/test_cpu_regularisers.py
index 76b9de7..4e4a2dd 100644
--- a/Wrappers/Python/demo/test_cpu_regularizers.py
+++ b/Wrappers/Python/demo/test_cpu_regularisers.py
@@ -5,24 +5,13 @@ Created on Fri Aug 4 11:10:05 2017
@author: ofn77899
"""
-
import matplotlib.pyplot as plt
import numpy as np
import os
from enum import Enum
import timeit
-from ccpi.filters.cpu_regularizers_boost import SplitBregman_TV, LLT_model, PatchBased_Regul, TGV_PD
-from ccpi.filters.regularizers import ROF_TV, FGP_TV
+from ccpi.filters.regularisers import ROF_TV, FGP_TV
###############################################################################
-#https://stackoverflow.com/questions/13875989/comparing-image-in-url-to-image-in-filesystem-in-python/13884956#13884956
-#NRMSE a normalization of the root of the mean squared error
-#NRMSE is simply 1 - [RMSE / (maxval - minval)]. Where maxval is the maximum
-# intensity from the two images being compared, and respectively the same for
-# minval. RMSE is given by the square root of MSE:
-# sqrt[(sum(A - B) ** 2) / |A|],
-# where |A| means the number of elements in A. By doing this, the maximum value
-# given by RMSE is maxval.
-
def nrmse(im1, im2):
a, b = im1.shape
rmse = np.sqrt(np.sum((im2 - im1) ** 2) / float(a * b))
@@ -51,17 +40,8 @@ def printParametersToString(pars):
# 2D Regularizers
#
###############################################################################
-#Example:
-# figure;
-# Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# u0 = Im + .05*randn(size(Im)); u0(u0 < 0) = 0;
-# u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-
# assumes the script is launched from the test directory
filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
-#filename = r"C:\Users\ofn77899\Documents\GitHub\CCPi-FISTA_reconstruction\data\lena_gray_512.tif"
-#filename = r"/home/ofn77899/Reconstruction/CCPi-FISTA_Reconstruction/data/lena_gray_512.tif"
-#filename = r'/home/algol/Documents/Python/STD_test_images/lena_gray_512.tif'
Im = plt.imread(filename)
Im = np.asarray(Im, dtype='float32')
@@ -86,48 +66,14 @@ imgplot = plt.imshow(u0,cmap="gray"
reg_output = []
##############################################################################
-# Call regularizer
-
-####################### SplitBregman_TV #####################################
-# u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-
-start_time = timeit.default_timer()
-pars = {'algorithm' : SplitBregman_TV , \
- 'input' : u0,
- 'regularization_parameter':15. , \
- 'number_of_iterations' :40 ,\
- 'tolerance_constant':0.0001 , \
- 'TV_penalty': 0
-}
-
-out = SplitBregman_TV (pars['input'], pars['regularization_parameter'],
- pars['number_of_iterations'],
- pars['tolerance_constant'],
- pars['TV_penalty'])
-splitbregman = out[0]
-rms = rmse(Im, splitbregman)
-pars['rmse'] = rms
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-
-a=fig.add_subplot(2,4,2)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(splitbregman,\
- cmap="gray"
- )
+# Call regularisers
###################### FGP_TV #########################################
start_time = timeit.default_timer()
pars = {'algorithm' : FGP_TV , \
'input' : u0,\
- 'regularization_parameter':0.07, \
+ 'regularisation_parameter':0.07, \
'number_of_iterations' :300 ,\
'tolerance_constant':0.00001,\
'methodTV': 0 ,\
@@ -136,7 +82,7 @@ pars = {'algorithm' : FGP_TV , \
}
fgp = FGP_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['tolerance_constant'],
pars['methodTV'],
@@ -163,129 +109,18 @@ imgplot = plt.imshow(fgp, \
a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
verticalalignment='top', bbox=props)
-
-###################### LLT_model #########################################
-start_time = timeit.default_timer()
-
-pars = {'algorithm': LLT_model , \
- 'input' : u0,
- 'regularization_parameter': 5,\
- 'time_step':0.00035, \
- 'number_of_iterations' :350,\
- 'tolerance_constant':0.0001,\
- 'restrictive_Z_smoothing': 0
-}
-out = LLT_model(pars['input'],
- pars['regularization_parameter'],
- pars['time_step'] ,
- pars['number_of_iterations'],
- pars['tolerance_constant'],
- pars['restrictive_Z_smoothing'] )
-
-llt = out[0]
-rms = rmse(Im, out[0])
-pars['rmse'] = rms
-
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,4,4)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(llt,\
- cmap="gray"
- )
-# ###################### PatchBased_Regul #########################################
-# # Quick 2D denoising example in Matlab:
-# # Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# # u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-# # ImDen = PB_Regul_CPU(single(u0), 3, 1, 0.08, 0.05);
-
-start_time = timeit.default_timer()
-
-pars = {'algorithm': PatchBased_Regul , \
- 'input' : u0,
- 'regularization_parameter': 0.05,\
- 'searching_window_ratio':3, \
- 'similarity_window_ratio':1,\
- 'PB_filtering_parameter': 0.06
-}
-out = PatchBased_Regul(pars['input'],
- pars['regularization_parameter'],
- pars['searching_window_ratio'] ,
- pars['similarity_window_ratio'] ,
- pars['PB_filtering_parameter'])
-pbr = out[0]
-rms = rmse(Im, out[0])
-pars['rmse'] = rms
-
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-
-a=fig.add_subplot(2,4,5)
-
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(pbr ,cmap="gray")
-
-
-# ###################### TGV_PD #########################################
-# # Quick 2D denoising example in Matlab:
-# # Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# # u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-# # u = PrimalDual_TGV(single(u0), 0.02, 1.3, 1, 550);
-
-start_time = timeit.default_timer()
-
-pars = {'algorithm': TGV_PD , \
- 'input' : u0,\
- 'regularization_parameter':0.07,\
- 'first_order_term': 1.3,\
- 'second_order_term': 1, \
- 'number_of_iterations': 550
- }
-out = TGV_PD(pars['input'],
- pars['regularization_parameter'],
- pars['first_order_term'] ,
- pars['second_order_term'] ,
- pars['number_of_iterations'])
-tgv = out[0]
-rms = rmse(Im, out[0])
-pars['rmse'] = rms
-
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,4,6)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(tgv, cmap="gray")
-
# ###################### ROF_TV #########################################
start_time = timeit.default_timer()
pars = {'algorithm': ROF_TV , \
'input' : u0,\
- 'regularization_parameter':0.07,\
+ 'regularisation_parameter':0.07,\
'marching_step': 0.0025,\
'number_of_iterations': 300
}
rof = ROF_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['marching_step'], 'cpu')
diff --git a/Wrappers/Python/fista-recipe/bld.bat b/Wrappers/Python/fista-recipe/bld.bat
deleted file mode 100644
index 32c1bc6..0000000
--- a/Wrappers/Python/fista-recipe/bld.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-IF NOT DEFINED CIL_VERSION (
-ECHO CIL_VERSION Not Defined.
-exit 1
-)
-
-mkdir "%SRC_DIR%\ccpifista"
-xcopy /e "%RECIPE_DIR%\.." "%SRC_DIR%\ccpifista"
-
-cd "%SRC_DIR%\ccpifista"
-::%PYTHON% setup-fista.py -q bdist_egg
-:: %PYTHON% setup.py install --single-version-externally-managed --record=record.txt
-%PYTHON% setup-fista.py install
-if errorlevel 1 exit 1
diff --git a/Wrappers/Python/fista-recipe/build.sh b/Wrappers/Python/fista-recipe/build.sh
deleted file mode 100644
index e3f3552..0000000
--- a/Wrappers/Python/fista-recipe/build.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-if [ -z "$CIL_VERSION" ]; then
- echo "Need to set CIL_VERSION"
- exit 1
-fi
-mkdir "$SRC_DIR/ccpifista"
-cp -r "$RECIPE_DIR/.." "$SRC_DIR/ccpifista"
-
-cd $SRC_DIR/ccpifista
-
-$PYTHON setup-fista.py install
diff --git a/Wrappers/Python/fista-recipe/meta.yaml b/Wrappers/Python/fista-recipe/meta.yaml
deleted file mode 100644
index 4e5cba6..0000000
--- a/Wrappers/Python/fista-recipe/meta.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-package:
- name: ccpi-fista
- version: {{ environ['CIL_VERSION'] }}
-
-
-build:
- preserve_egg_dir: False
- script_env:
- - CIL_VERSION
-# number: 0
-
-requirements:
- build:
- - python
- - numpy
- - setuptools
-
- run:
- - python
- - numpy
- #- astra-toolbox
- - ccpi-regularizer
-
-
-
-about:
- home: http://www.ccpi.ac.uk
- license: Apache v.2.0 license
- summary: 'CCPi Core Imaging Library (Viewer)'
diff --git a/Wrappers/Python/setup-fista.py b/Wrappers/Python/setup-fista.py
deleted file mode 100644
index c5c9f4d..0000000
--- a/Wrappers/Python/setup-fista.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from distutils.core import setup
-#from setuptools import setup, find_packages
-import os
-
-cil_version=os.environ['CIL_VERSION']
-if cil_version == '':
- print("Please set the environmental variable CIL_VERSION")
- sys.exit(1)
-
-setup(
- name="ccpi-fista",
- version=cil_version,
- packages=['ccpi','ccpi.reconstruction'],
- install_requires=['numpy'],
-
- zip_safe = False,
-
- # metadata for upload to PyPI
- author="Edoardo Pasca",
- author_email="edo.paskino@gmail.com",
- description='CCPi Core Imaging Library - FISTA Reconstructor module',
- license="Apache v2.0",
- keywords="tomography interative reconstruction",
- url="http://www.ccpi.ac.uk", # project home page, if any
-
- # could also include long_description, download_url, classifiers, etc.
-)
diff --git a/Wrappers/Python/setup-regularizers.py.in b/Wrappers/Python/setup-regularisers.py.in
index 0811372..a1c1ab6 100644
--- a/Wrappers/Python/setup-regularizers.py.in
+++ b/Wrappers/Python/setup-regularisers.py.in
@@ -33,9 +33,9 @@ extra_link_args = []
extra_libraries = ['cilreg']
extra_include_dirs += [os.path.join(".." , ".." , "Core"),
- os.path.join(".." , ".." , "Core", "regularizers_CPU"),
- os.path.join(".." , ".." , "Core", "regularizers_GPU" , "TV_FGP" ) ,
- os.path.join(".." , ".." , "Core", "regularizers_GPU" , "TV_ROF" ) ,
+ os.path.join(".." , ".." , "Core", "regularisers_CPU"),
+ os.path.join(".." , ".." , "Core", "regularisers_GPU" , "TV_FGP" ) ,
+ os.path.join(".." , ".." , "Core", "regularisers_GPU" , "TV_ROF" ) ,
"."]
if platform.system() == 'Windows':
@@ -46,11 +46,11 @@ else:
setup(
name='ccpi',
- description='CCPi Core Imaging Library - Image Regularizers',
+ description='CCPi Core Imaging Library - Image regularisers',
version=cil_version,
cmdclass = {'build_ext': build_ext},
- ext_modules = [Extension("ccpi.filters.cpu_regularizers_cython",
- sources=[os.path.join("." , "src", "cpu_regularizers.pyx" ) ],
+ ext_modules = [Extension("ccpi.filters.cpu_regularisers_cython",
+ sources=[os.path.join("." , "src", "cpu_regularisers.pyx" ) ],
include_dirs=extra_include_dirs,
library_dirs=extra_library_dirs,
extra_compile_args=extra_compile_args,
diff --git a/Wrappers/Python/src/cpu_regularizers.pyx b/Wrappers/Python/src/cpu_regularisers.pyx
index f993e54..248bad1 100644
--- a/Wrappers/Python/src/cpu_regularizers.pyx
+++ b/Wrappers/Python/src/cpu_regularisers.pyx
@@ -25,14 +25,14 @@ cdef extern float TV_FGP_CPU_main(float *Input, float *Output, float lambdaPar,
#****************************************************************#
#********************** Total-variation ROF *********************#
#****************************************************************#
-def TV_ROF_CPU(inputData, regularization_parameter, iterationsNumb, marching_step_parameter):
+def TV_ROF_CPU(inputData, regularisation_parameter, iterationsNumb, marching_step_parameter):
if inputData.ndim == 2:
- return TV_ROF_2D(inputData, regularization_parameter, iterationsNumb, marching_step_parameter)
+ return TV_ROF_2D(inputData, regularisation_parameter, iterationsNumb, marching_step_parameter)
elif inputData.ndim == 3:
- return TV_ROF_3D(inputData, regularization_parameter, iterationsNumb, marching_step_parameter)
+ return TV_ROF_3D(inputData, regularisation_parameter, iterationsNumb, marching_step_parameter)
def TV_ROF_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterationsNumb,
float marching_step_parameter):
cdef long dims[2]
@@ -43,13 +43,13 @@ def TV_ROF_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
np.zeros([dims[0],dims[1]], dtype='float32')
# Run ROF iterations for 2D data
- TV_ROF_CPU_main(&inputData[0,0], &outputData[0,0], regularization_parameter, iterationsNumb, marching_step_parameter, dims[0], dims[1], 1)
+ TV_ROF_CPU_main(&inputData[0,0], &outputData[0,0], regularisation_parameter, iterationsNumb, marching_step_parameter, dims[0], dims[1], 1)
return outputData
def TV_ROF_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
int iterationsNumb,
- float regularization_parameter,
+ float regularisation_parameter,
float marching_step_parameter):
cdef long dims[3]
dims[0] = inputData.shape[0]
@@ -60,7 +60,7 @@ def TV_ROF_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
np.zeros([dims[0],dims[1],dims[2]], dtype='float32')
# Run ROF iterations for 3D data
- TV_ROF_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularization_parameter, iterationsNumb, marching_step_parameter, dims[0], dims[1], dims[2])
+ TV_ROF_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularisation_parameter, iterationsNumb, marching_step_parameter, dims[0], dims[1], dims[2])
return outputData
@@ -68,14 +68,14 @@ 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, regularization_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM):
+def TV_FGP_CPU(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM):
if inputData.ndim == 2:
- return TV_FGP_2D(inputData, regularization_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
+ return TV_FGP_2D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
elif inputData.ndim == 3:
- return TV_FGP_3D(inputData, regularization_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
+ return TV_FGP_3D(inputData, regularisation_parameter, iterationsNumb, tolerance_param, methodTV, nonneg, printM)
def TV_FGP_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterationsNumb,
float tolerance_param,
int methodTV,
@@ -90,7 +90,7 @@ def TV_FGP_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
np.zeros([dims[0],dims[1]], dtype='float32')
#/* Run ROF iterations for 2D data */
- TV_FGP_CPU_main(&inputData[0,0], &outputData[0,0], regularization_parameter,
+ TV_FGP_CPU_main(&inputData[0,0], &outputData[0,0], regularisation_parameter,
iterationsNumb,
tolerance_param,
methodTV,
@@ -101,7 +101,7 @@ def TV_FGP_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
return outputData
def TV_FGP_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterationsNumb,
float tolerance_param,
int methodTV,
@@ -116,7 +116,7 @@ def TV_FGP_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
np.zeros([dims[0], dims[1], dims[2]], dtype='float32')
#/* Run ROF iterations for 3D data */
- TV_FGP_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularization_parameter,
+ TV_FGP_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularisation_parameter,
iterationsNumb,
tolerance_param,
methodTV,
diff --git a/Wrappers/Python/src/gpu_regularizers.pyx b/Wrappers/Python/src/gpu_regularisers.pyx
index a44bd1d..7ebd011 100644
--- a/Wrappers/Python/src/gpu_regularizers.pyx
+++ b/Wrappers/Python/src/gpu_regularisers.pyx
@@ -23,23 +23,23 @@ cdef extern void TV_FGP_GPU_main(float *Input, float *Output, float lambdaPar, i
# Total-variation Rudin-Osher-Fatemi (ROF)
def TV_ROF_GPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
time_marching_parameter):
if inputData.ndim == 2:
return ROFTV2D(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
time_marching_parameter)
elif inputData.ndim == 3:
return ROFTV3D(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
time_marching_parameter)
# Total-variation Fast-Gradient-Projection (FGP)
def TV_FGP_GPU(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -47,7 +47,7 @@ def TV_FGP_GPU(inputData,
printM):
if inputData.ndim == 2:
return FGPTV2D(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -55,7 +55,7 @@ def TV_FGP_GPU(inputData,
printM)
elif inputData.ndim == 3:
return FGPTV3D(inputData,
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -66,7 +66,7 @@ def TV_FGP_GPU(inputData,
#********************** Total-variation ROF *********************#
#****************************************************************#
def ROFTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterations,
float time_marching_parameter):
@@ -80,7 +80,7 @@ def ROFTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
# Running CUDA code here
TV_ROF_GPU_main(
&inputData[0,0], &outputData[0,0],
- regularization_parameter,
+ regularisation_parameter,
iterations ,
time_marching_parameter,
dims[0], dims[1], 1);
@@ -88,7 +88,7 @@ def ROFTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
return outputData
def ROFTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterations,
float time_marching_parameter):
@@ -103,7 +103,7 @@ def ROFTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
# Running CUDA code here
TV_ROF_GPU_main(
&inputData[0,0,0], &outputData[0,0,0],
- regularization_parameter,
+ regularisation_parameter,
iterations ,
time_marching_parameter,
dims[0], dims[1], dims[2]);
@@ -114,7 +114,7 @@ def ROFTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
#****************************************************************#
#******** Total-variation Fast-Gradient-Projection (FGP)*********#
def FGPTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterations,
float tolerance_param,
int methodTV,
@@ -130,7 +130,7 @@ def FGPTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
# Running CUDA code here
TV_FGP_GPU_main(&inputData[0,0], &outputData[0,0],
- regularization_parameter,
+ regularisation_parameter,
iterations,
tolerance_param,
methodTV,
@@ -141,7 +141,7 @@ def FGPTV2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
return outputData
def FGPTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
- float regularization_parameter,
+ float regularisation_parameter,
int iterations,
float tolerance_param,
int methodTV,
@@ -159,7 +159,7 @@ def FGPTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
# Running CUDA code here
TV_FGP_GPU_main(
&inputData[0,0,0], &outputData[0,0,0],
- regularization_parameter ,
+ regularisation_parameter ,
iterations,
tolerance_param,
methodTV,
diff --git a/Wrappers/Python/test/test_cpu_regularizers.py b/Wrappers/Python/test/test_cpu_regularisers.py
index 9713baa..9713baa 100644
--- a/Wrappers/Python/test/test_cpu_regularizers.py
+++ b/Wrappers/Python/test/test_cpu_regularisers.py
diff --git a/Wrappers/Python/test/test_cpu_vs_gpu_regularizers.py b/Wrappers/Python/test/test_cpu_vs_gpu_regularisers.py
index 63be1a0..15e9042 100644
--- a/Wrappers/Python/test/test_cpu_vs_gpu_regularizers.py
+++ b/Wrappers/Python/test/test_cpu_vs_gpu_regularisers.py
@@ -12,7 +12,7 @@ import matplotlib.pyplot as plt
import numpy as np
import os
import timeit
-from ccpi.filters.regularizers import ROF_TV, FGP_TV
+from ccpi.filters.regularisers import ROF_TV, FGP_TV
###############################################################################
def printParametersToString(pars):
@@ -54,7 +54,7 @@ print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
## plot
fig = plt.figure(1)
-plt.suptitle('Comparison of ROF-TV regularizer using CPU and GPU implementations')
+plt.suptitle('Comparison of ROF-TV regulariser using CPU and GPU implementations')
a=fig.add_subplot(1,4,1)
a.set_title('Noisy Image')
imgplot = plt.imshow(u0,cmap="gray")
@@ -62,14 +62,14 @@ imgplot = plt.imshow(u0,cmap="gray")
# set parameters
pars = {'algorithm': ROF_TV, \
'input' : u0,\
- 'regularization_parameter':0.04,\
+ 'regularisation_parameter':0.04,\
'number_of_iterations': 1200,\
'time_marching_parameter': 0.0025
}
print ("#############ROF TV CPU####################")
start_time = timeit.default_timer()
rof_cpu = ROF_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['time_marching_parameter'],'cpu')
rms = rmse(Im, rof_cpu)
@@ -92,7 +92,7 @@ plt.title('{}'.format('CPU results'))
print ("##############ROF TV GPU##################")
start_time = timeit.default_timer()
rof_gpu = ROF_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['time_marching_parameter'],'gpu')
@@ -132,7 +132,7 @@ print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
## plot
fig = plt.figure(2)
-plt.suptitle('Comparison of FGP-TV regularizer using CPU and GPU implementations')
+plt.suptitle('Comparison of FGP-TV regulariser using CPU and GPU implementations')
a=fig.add_subplot(1,4,1)
a.set_title('Noisy Image')
imgplot = plt.imshow(u0,cmap="gray")
@@ -140,7 +140,7 @@ imgplot = plt.imshow(u0,cmap="gray")
# set parameters
pars = {'algorithm' : FGP_TV, \
'input' : u0,\
- 'regularization_parameter':0.04, \
+ 'regularisation_parameter':0.04, \
'number_of_iterations' :1200 ,\
'tolerance_constant':0.00001,\
'methodTV': 0 ,\
@@ -151,7 +151,7 @@ pars = {'algorithm' : FGP_TV, \
print ("#############FGP TV CPU####################")
start_time = timeit.default_timer()
fgp_cpu = FGP_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['tolerance_constant'],
pars['methodTV'],
@@ -179,7 +179,7 @@ plt.title('{}'.format('CPU results'))
print ("##############FGP TV GPU##################")
start_time = timeit.default_timer()
fgp_gpu = FGP_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['tolerance_constant'],
pars['methodTV'],
diff --git a/Wrappers/Python/test/test_gpu_regularizers.py b/Wrappers/Python/test/test_gpu_regularisers.py
index 640b3f9..2103c0e 100644
--- a/Wrappers/Python/test/test_gpu_regularizers.py
+++ b/Wrappers/Python/test/test_gpu_regularisers.py
@@ -11,8 +11,7 @@ import numpy as np
import os
from enum import Enum
import timeit
-from ccpi.filters.gpu_regularizers import Diff4thHajiaboli, NML
-from ccpi.filters.regularizers import ROF_TV, FGP_TV
+from ccpi.filters.regularisers import ROF_TV, FGP_TV
###############################################################################
def printParametersToString(pars):
txt = r''
@@ -32,9 +31,6 @@ def rmse(im1, im2):
return rmse
filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
-#filename = r"C:\Users\ofn77899\Documents\GitHub\CCPi-FISTA_reconstruction\data\lena_gray_512.tif"
-#filename = r"/home/ofn77899/Reconstruction/CCPi-FISTA_Reconstruction/data/lena_gray_512.tif"
-#filename = r'/home/algol/Documents/Python/STD_test_images/lena_gray_512.tif'
Im = plt.imread(filename)
Im = np.asarray(Im, dtype='float32')
@@ -56,112 +52,20 @@ a.set_title('noise')
imgplot = plt.imshow(u0,cmap="gray")
-## Diff4thHajiaboli
-start_time = timeit.default_timer()
-pars = {
-'algorithm' : Diff4thHajiaboli , \
- 'input' : u0,
- 'edge_preserv_parameter':0.1 , \
-'number_of_iterations' :250 ,\
-'time_marching_parameter':0.03 ,\
-'regularization_parameter':0.7
-}
-
-
-d4h = Diff4thHajiaboli(pars['input'],
- pars['edge_preserv_parameter'],
- pars['number_of_iterations'],
- pars['time_marching_parameter'],
- pars['regularization_parameter'])
-rms = rmse(Im, d4h)
-pars['rmse'] = rms
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,4,2)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.75)
-# place a text box in upper left in axes coords
-a.text(0.15, 0.25, txtstr, transform=a.transAxes, fontsize=12,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(d4h, cmap="gray")
-
-a=fig.add_subplot(2,4,6)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, 'd4h - u0', transform=a.transAxes, fontsize=12,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow((d4h - u0)**2, vmin=0, vmax=0.03, cmap="gray")
-plt.colorbar(ticks=[0, 0.03], orientation='vertical')
-
-
-## Patch Based Regul NML
-start_time = timeit.default_timer()
-"""
-pars = {'algorithm' : NML , \
- 'input' : u0,
- 'SearchW_real':3 , \
-'SimilW' :1,\
-'h':0.05 ,#
-'lambda' : 0.08
-}
-"""
-pars = {
-'algorithm' : NML , \
- 'input' : u0,
- 'regularization_parameter': 0.01,\
- 'searching_window_ratio':3, \
- 'similarity_window_ratio':1,\
- 'PB_filtering_parameter': 0.2
-}
-
-nml = NML(pars['input'],
- pars['searching_window_ratio'],
- pars['similarity_window_ratio'],
- pars['PB_filtering_parameter'],
- pars['regularization_parameter'])
-rms = rmse(Im, nml)
-pars['rmse'] = rms
-txtstr = printParametersToString(pars)
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,4,3)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.75)
-# place a text box in upper left in axes coords
-a.text(0.15, 0.25, txtstr, transform=a.transAxes, fontsize=12,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(nml, cmap="gray")
-
-a=fig.add_subplot(2,4,7)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, 'nml - u0', transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow((nml - u0)**2, vmin=0, vmax=0.03, cmap="gray")
-plt.colorbar(ticks=[0, 0.03], orientation='vertical')
-
-
-## Rudin-Osher-Fatemi (ROF) TV regularization
+## Rudin-Osher-Fatemi (ROF) TV regularisation
start_time = timeit.default_timer()
pars = {
'algorithm' : ROF_TV , \
'input' : u0,
- 'regularization_parameter': 0.04,\
+ 'regularisation_parameter': 0.04,\
'number_of_iterations':300,\
'time_marching_parameter': 0.0025
}
rof_tv = TV_ROF_GPU(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['time_marching_parameter'],'gpu')
@@ -190,13 +94,13 @@ imgplot = plt.imshow((rof_tv - u0)**2, vmin=0, vmax=0.03, cmap="gray")
plt.colorbar(ticks=[0, 0.03], orientation='vertical')
plt.show()
-## Fast-Gradient Projection TV regularization
+## Fast-Gradient Projection TV regularisation
"""
start_time = timeit.default_timer()
pars = {'algorithm' : FGP_TV, \
'input' : u0,\
- 'regularization_parameter':0.04, \
+ 'regularisation_parameter':0.04, \
'number_of_iterations' :1200 ,\
'tolerance_constant':0.00001,\
'methodTV': 0 ,\
@@ -205,7 +109,7 @@ pars = {'algorithm' : FGP_TV, \
}
fgp_gpu = FGP_TV(pars['input'],
- pars['regularization_parameter'],
+ pars['regularisation_parameter'],
pars['number_of_iterations'],
pars['tolerance_constant'],
pars['methodTV'],
diff --git a/Wrappers/Python/test/test_regularizers_3d.py b/Wrappers/Python/test/test_regularisers_3d.py
index 2d11a7e..2d11a7e 100644
--- a/Wrappers/Python/test/test_regularizers_3d.py
+++ b/Wrappers/Python/test/test_regularisers_3d.py
diff --git a/Wrappers/Python/test/test_regularizers.py b/Wrappers/Python/test/test_regularizers.py
deleted file mode 100644
index cf5da2b..0000000
--- a/Wrappers/Python/test/test_regularizers.py
+++ /dev/null
@@ -1,395 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Fri Aug 4 11:10:05 2017
-
-@author: ofn77899
-"""
-
-#from ccpi.viewer.CILViewer2D import Converter
-#import vtk
-
-import matplotlib.pyplot as plt
-import numpy as np
-import os
-from enum import Enum
-import timeit
-#from PIL import Image
-#from Regularizer import Regularizer
-from ccpi.filters.Regularizer import Regularizer
-
-###############################################################################
-#https://stackoverflow.com/questions/13875989/comparing-image-in-url-to-image-in-filesystem-in-python/13884956#13884956
-#NRMSE a normalization of the root of the mean squared error
-#NRMSE is simply 1 - [RMSE / (maxval - minval)]. Where maxval is the maximum
-# intensity from the two images being compared, and respectively the same for
-# minval. RMSE is given by the square root of MSE:
-# sqrt[(sum(A - B) ** 2) / |A|],
-# where |A| means the number of elements in A. By doing this, the maximum value
-# given by RMSE is maxval.
-
-def nrmse(im1, im2):
- a, b = im1.shape
- rmse = np.sqrt(np.sum((im2 - im1) ** 2) / float(a * b))
- max_val = max(np.max(im1), np.max(im2))
- min_val = min(np.min(im1), np.min(im2))
- return 1 - (rmse / (max_val - min_val))
-###############################################################################
-
-###############################################################################
-#
-# 2D Regularizers
-#
-###############################################################################
-#Example:
-# figure;
-# Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# u0 = Im + .05*randn(size(Im)); u0(u0 < 0) = 0;
-# u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-
-
-filename = r"C:\Users\ofn77899\Documents\GitHub\CCPi-FISTA_reconstruction\data\lena_gray_512.tif"
-#filename = r"/home/ofn77899/Reconstruction/CCPi-FISTA_Reconstruction/data/lena_gray_512.tif"
-#filename = r'/home/algol/Documents/Python/STD_test_images/lena_gray_512.tif'
-
-#reader = vtk.vtkTIFFReader()
-#reader.SetFileName(os.path.normpath(filename))
-#reader.Update()
-Im = plt.imread(filename)
-#Im = Image.open('/home/algol/Documents/Python/STD_test_images/lena_gray_512.tif')/255
-#img.show()
-Im = np.asarray(Im, dtype='float32')
-
-
-
-
-#imgplot = plt.imshow(Im)
-perc = 0.05
-u0 = Im + (perc* np.random.normal(size=np.shape(Im)))
-# map the u0 u0->u0>0
-f = np.frompyfunc(lambda x: 0 if x < 0 else x, 1,1)
-u0 = f(u0).astype('float32')
-
-## plot
-fig = plt.figure()
-#a=fig.add_subplot(3,3,1)
-#a.set_title('Original')
-#imgplot = plt.imshow(Im)
-
-a=fig.add_subplot(2,3,1)
-a.set_title('noise')
-imgplot = plt.imshow(u0,cmap="gray")
-
-reg_output = []
-##############################################################################
-# Call regularizer
-
-####################### SplitBregman_TV #####################################
-# u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-
-start_time = timeit.default_timer()
-reg = Regularizer(Regularizer.Algorithm.SplitBregman_TV)
-print (reg.pars)
-reg.setParameter(input=u0)
-reg.setParameter(regularization_parameter=10.)
-# or
-# reg.setParameter(input=u0, regularization_parameter=10., #number_of_iterations=30,
- #tolerance_constant=1e-4,
- #TV_Penalty=Regularizer.TotalVariationPenalty.l1)
-plotme = reg(output_all=True) [0]
-pars = reg.pars
-txtstr = reg.printParametersToString()
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-
-
-a=fig.add_subplot(2,3,2)
-
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(plotme,cmap="gray")
-
-###################### FGP_TV #########################################
-# u = FGP_TV(single(u0), 0.05, 100, 1e-04);
-start_time = timeit.default_timer()
-reg = Regularizer(Regularizer.Algorithm.FGP_TV)
-out2 = reg(input=u0, regularization_parameter=5e-4,
- number_of_iterations=10)
-txtstr = reg.printParametersToString()
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-
-
-a=fig.add_subplot(2,3,3)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-imgplot = plt.imshow(out2,cmap="gray")
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-
-###################### LLT_model #########################################
-# * u0 = Im + .03*randn(size(Im)); % adding noise
-# [Den] = LLT_model(single(u0), 10, 0.1, 1);
-#Den = LLT_model(single(u0), 25, 0.0003, 300, 0.0001, 0);
-#input, regularization_parameter , time_step, number_of_iterations,
-# tolerance_constant, restrictive_Z_smoothing=0
-
-del out2
-start_time = timeit.default_timer()
-reg = Regularizer(Regularizer.Algorithm.LLT_model)
-out2 = reg(input=u0, regularization_parameter=25,
- time_step=0.0003,
- tolerance_constant=0.001,
- number_of_iterations=300)
-txtstr = reg.printParametersToString()
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,3,4)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(out2,cmap="gray")
-
-
-# ###################### PatchBased_Regul #########################################
-# # Quick 2D denoising example in Matlab:
-# # Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# # u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-# # ImDen = PB_Regul_CPU(single(u0), 3, 1, 0.08, 0.05);
-start_time = timeit.default_timer()
-reg = Regularizer(Regularizer.Algorithm.PatchBased_Regul)
-out2 = reg(input=u0, regularization_parameter=0.05,
- searching_window_ratio=3,
- similarity_window_ratio=1,
- PB_filtering_parameter=0.08)
-txtstr = reg.printParametersToString()
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-
-a=fig.add_subplot(2,3,5)
-
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(out2,cmap="gray")
-
-
-# ###################### TGV_PD #########################################
-# # Quick 2D denoising example in Matlab:
-# # Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# # u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-# # u = PrimalDual_TGV(single(u0), 0.02, 1.3, 1, 550);
-
-start_time = timeit.default_timer()
-reg = Regularizer(Regularizer.Algorithm.TGV_PD)
-out2 = reg(input=u0, regularization_parameter=0.05,
- first_order_term=1.3,
- second_order_term=1,
- number_of_iterations=550)
-txtstr = reg.printParametersToString()
-txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
-print (txtstr)
-a=fig.add_subplot(2,3,6)
-
-# these are matplotlib.patch.Patch properties
-props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-# place a text box in upper left in axes coords
-a.text(0.05, 0.95, txtstr, transform=a.transAxes, fontsize=14,
- verticalalignment='top', bbox=props)
-imgplot = plt.imshow(out2,cmap="gray")
-
-
-plt.show()
-
-################################################################################
-##
-## 3D Regularizers
-##
-################################################################################
-##Example:
-## figure;
-## Im = double(imread('lena_gray_256.tif'))/255; % loading image
-## u0 = Im + .05*randn(size(Im)); u0(u0 < 0) = 0;
-## u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-#
-##filename = r"C:\Users\ofn77899\Documents\GitHub\CCPi-Reconstruction\python\test\reconstruction_example.mha"
-#filename = r"C:\Users\ofn77899\Documents\GitHub\CCPi-Simpleflex\data\head.mha"
-#
-#reader = vtk.vtkMetaImageReader()
-#reader.SetFileName(os.path.normpath(filename))
-#reader.Update()
-##vtk returns 3D images, let's take just the one slice there is as 2D
-#Im = Converter.vtk2numpy(reader.GetOutput())
-#Im = Im.astype('float32')
-##imgplot = plt.imshow(Im)
-#perc = 0.05
-#u0 = Im + (perc* np.random.normal(size=np.shape(Im)))
-## map the u0 u0->u0>0
-#f = np.frompyfunc(lambda x: 0 if x < 0 else x, 1,1)
-#u0 = f(u0).astype('float32')
-#converter = Converter.numpy2vtkImporter(u0, reader.GetOutput().GetSpacing(),
-# reader.GetOutput().GetOrigin())
-#converter.Update()
-#writer = vtk.vtkMetaImageWriter()
-#writer.SetInputData(converter.GetOutput())
-#writer.SetFileName(r"C:\Users\ofn77899\Documents\GitHub\CCPi-FISTA_reconstruction\data\noisy_head.mha")
-##writer.Write()
-#
-#
-### plot
-#fig3D = plt.figure()
-##a=fig.add_subplot(3,3,1)
-##a.set_title('Original')
-##imgplot = plt.imshow(Im)
-#sliceNo = 32
-#
-#a=fig3D.add_subplot(2,3,1)
-#a.set_title('noise')
-#imgplot = plt.imshow(u0.T[sliceNo])
-#
-#reg_output3d = []
-#
-###############################################################################
-## Call regularizer
-#
-######################## SplitBregman_TV #####################################
-## u = SplitBregman_TV(single(u0), 10, 30, 1e-04);
-#
-##reg = Regularizer(Regularizer.Algorithm.SplitBregman_TV)
-#
-##out = reg(input=u0, regularization_parameter=10., #number_of_iterations=30,
-## #tolerance_constant=1e-4,
-## TV_Penalty=Regularizer.TotalVariationPenalty.l1)
-#
-#out2 = Regularizer.SplitBregman_TV(input=u0, regularization_parameter=10., number_of_iterations=30,
-# tolerance_constant=1e-4,
-# TV_Penalty=Regularizer.TotalVariationPenalty.l1)
-#
-#
-#pars = out2[-2]
-#reg_output3d.append(out2)
-#
-#a=fig3D.add_subplot(2,3,2)
-#
-#
-#textstr = out2[-1]
-#
-#
-## these are matplotlib.patch.Patch properties
-#props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-## place a text box in upper left in axes coords
-#a.text(0.05, 0.95, textstr, transform=a.transAxes, fontsize=14,
-# verticalalignment='top', bbox=props)
-#imgplot = plt.imshow(reg_output3d[-1][0].T[sliceNo])
-#
-####################### FGP_TV #########################################
-## u = FGP_TV(single(u0), 0.05, 100, 1e-04);
-#out2 = Regularizer.FGP_TV(input=u0, regularization_parameter=0.005,
-# number_of_iterations=200)
-#pars = out2[-2]
-#reg_output3d.append(out2)
-#
-#a=fig3D.add_subplot(2,3,2)
-#
-#
-#textstr = out2[-1]
-#
-#
-## these are matplotlib.patch.Patch properties
-#props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-## place a text box in upper left in axes coords
-#a.text(0.05, 0.95, textstr, transform=a.transAxes, fontsize=14,
-# verticalalignment='top', bbox=props)
-#imgplot = plt.imshow(reg_output3d[-1][0].T[sliceNo])
-#
-####################### LLT_model #########################################
-## * u0 = Im + .03*randn(size(Im)); % adding noise
-## [Den] = LLT_model(single(u0), 10, 0.1, 1);
-##Den = LLT_model(single(u0), 25, 0.0003, 300, 0.0001, 0);
-##input, regularization_parameter , time_step, number_of_iterations,
-## tolerance_constant, restrictive_Z_smoothing=0
-#out2 = Regularizer.LLT_model(input=u0, regularization_parameter=25,
-# time_step=0.0003,
-# tolerance_constant=0.0001,
-# number_of_iterations=300)
-#pars = out2[-2]
-#reg_output3d.append(out2)
-#
-#a=fig3D.add_subplot(2,3,2)
-#
-#
-#textstr = out2[-1]
-#
-#
-## these are matplotlib.patch.Patch properties
-#props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-## place a text box in upper left in axes coords
-#a.text(0.05, 0.95, textstr, transform=a.transAxes, fontsize=14,
-# verticalalignment='top', bbox=props)
-#imgplot = plt.imshow(reg_output3d[-1][0].T[sliceNo])
-#
-####################### PatchBased_Regul #########################################
-## Quick 2D denoising example in Matlab:
-## Im = double(imread('lena_gray_256.tif'))/255; % loading image
-## u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-## ImDen = PB_Regul_CPU(single(u0), 3, 1, 0.08, 0.05);
-#
-#out2 = Regularizer.PatchBased_Regul(input=u0, regularization_parameter=0.05,
-# searching_window_ratio=3,
-# similarity_window_ratio=1,
-# PB_filtering_parameter=0.08)
-#pars = out2[-2]
-#reg_output3d.append(out2)
-#
-#a=fig3D.add_subplot(2,3,2)
-#
-#
-#textstr = out2[-1]
-#
-#
-## these are matplotlib.patch.Patch properties
-#props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-## place a text box in upper left in axes coords
-#a.text(0.05, 0.95, textstr, transform=a.transAxes, fontsize=14,
-# verticalalignment='top', bbox=props)
-#imgplot = plt.imshow(reg_output3d[-1][0].T[sliceNo])
-#
-
-###################### TGV_PD #########################################
-# Quick 2D denoising example in Matlab:
-# Im = double(imread('lena_gray_256.tif'))/255; % loading image
-# u0 = Im + .03*randn(size(Im)); u0(u0<0) = 0; % adding noise
-# u = PrimalDual_TGV(single(u0), 0.02, 1.3, 1, 550);
-
-
-#out2 = Regularizer.TGV_PD(input=u0, regularization_parameter=0.05,
-# first_order_term=1.3,
-# second_order_term=1,
-# number_of_iterations=550)
-#pars = out2[-2]
-#reg_output3d.append(out2)
-#
-#a=fig3D.add_subplot(2,3,2)
-#
-#
-#textstr = out2[-1]
-#
-#
-## these are matplotlib.patch.Patch properties
-#props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
-## place a text box in upper left in axes coords
-#a.text(0.05, 0.95, textstr, transform=a.transAxes, fontsize=14,
-# verticalalignment='top', bbox=props)
-#imgplot = plt.imshow(reg_output3d[-1][0].T[sliceNo])
diff --git a/recipes/regularizers/bld.bat b/recipes/regularisers/bld.bat
index 6f2f7e7..6f2f7e7 100644
--- a/recipes/regularizers/bld.bat
+++ b/recipes/regularisers/bld.bat
diff --git a/recipes/regularizers/build.sh b/recipes/regularisers/build.sh
index 0b8bce2..0b8bce2 100644
--- a/recipes/regularizers/build.sh
+++ b/recipes/regularisers/build.sh
diff --git a/recipes/regularizers/meta.yaml b/recipes/regularisers/meta.yaml
index 37e447e..f204a6b 100644
--- a/recipes/regularizers/meta.yaml
+++ b/recipes/regularisers/meta.yaml
@@ -1,5 +1,5 @@
package:
- name: cil_regularizer
+ name: cil_regulariser
version: {{ environ['CIL_VERSION'] }}
#source:
@@ -37,4 +37,4 @@ requirements:
about:
home: http://www.ccpi.ac.uk
license: Apache v2.0
- summary: Regularizer package from CCPi
+ summary: Regulariser package from CCPi