diff options
| author | dkazanc <dkazanc@hotmail.com> | 2019-03-12 17:29:07 +0000 | 
|---|---|---|
| committer | dkazanc <dkazanc@hotmail.com> | 2019-03-12 17:29:07 +0000 | 
| commit | 420e71a0dcb42e91e1aa93306c2e2f688b309620 (patch) | |
| tree | 116a2e9d8cbd0ed5297497c99d3747feba5a79c2 | |
| parent | b901525766f8e3473ef58a19bf3fadc178d3778c (diff) | |
| download | regularization-420e71a0dcb42e91e1aa93306c2e2f688b309620.tar.gz regularization-420e71a0dcb42e91e1aa93306c2e2f688b309620.tar.bz2 regularization-420e71a0dcb42e91e1aa93306c2e2f688b309620.tar.xz regularization-420e71a0dcb42e91e1aa93306c2e2f688b309620.zip  | |
cmakelists fixes, matlab wrappers done
26 files changed, 106 insertions, 121 deletions
diff --git a/demos/SoftwareX_supp/Demo_RealData_Recon_SX.py b/demos/SoftwareX_supp/Demo_RealData_Recon_SX.py index 01491d9..ca8f1d2 100644 --- a/demos/SoftwareX_supp/Demo_RealData_Recon_SX.py +++ b/demos/SoftwareX_supp/Demo_RealData_Recon_SX.py @@ -111,7 +111,7 @@ RectoolsIR = RecToolsIR(DetectorsDimH =  np.size(det_y_crop),  # DetectorsDimH #                      datafidelity='LS',# data fidelity, choose LS, PWLS (wip), GH (wip), Student (wip)                      nonnegativity='ENABLE', # enable nonnegativity constraint (set to 'ENABLE')                      OS_number = None, # the number of subsets, NONE/(or > 1) ~ classical / ordered subsets -                    tolerance = 1e-08, # tolerance to stop outer iterations earlier +                    tolerance = 0.0, # tolerance to stop inner (regularisation) iterations earlier                      device='gpu')  #%%  print ("Reconstructing with ADMM method using SB-TV penalty") @@ -228,4 +228,4 @@ for i in range(0,np.size(RecADMM_reg_tgv,0)):  # Saving recpnstructed data with a unique time label  np.save('Dendr_ADMM_TGV'+str(time_label)+'.npy', RecADMM_reg_tgv)  del RecADMM_reg_tgv -#%%
\ No newline at end of file +#%% diff --git a/demos/SoftwareX_supp/Demo_SimulData_ParOptimis_SX.py b/demos/SoftwareX_supp/Demo_SimulData_ParOptimis_SX.py index 59ffc0e..be99afe 100644 --- a/demos/SoftwareX_supp/Demo_SimulData_ParOptimis_SX.py +++ b/demos/SoftwareX_supp/Demo_SimulData_ParOptimis_SX.py @@ -77,7 +77,7 @@ RectoolsIR = RecToolsIR(DetectorsDimH = Horiz_det,  # DetectorsDimH # detector d                      datafidelity='LS',# data fidelity, choose LS, PWLS (wip), GH (wip), Student (wip)                      nonnegativity='ENABLE', # enable nonnegativity constraint (set to 'ENABLE')                      OS_number = None, # the number of subsets, NONE/(or > 1) ~ classical / ordered subsets -                    tolerance = 1e-08, # tolerance to stop outer iterations earlier +                    tolerance = 0.0, # tolerance to stop inner (regularisation) iterations earlier                      device='gpu')  #%%  param_space = 30 diff --git a/demos/SoftwareX_supp/Demo_SimulData_Recon_SX.py b/demos/SoftwareX_supp/Demo_SimulData_Recon_SX.py index 99b9fe8..ae2bfba 100644 --- a/demos/SoftwareX_supp/Demo_SimulData_Recon_SX.py +++ b/demos/SoftwareX_supp/Demo_SimulData_Recon_SX.py @@ -78,7 +78,6 @@ plt.title('3D Phantom, coronal (Y-Z) view')  plt.subplot(133)  plt.imshow(phantom[:,:,sliceSel],vmin=0, vmax=1, cmap="PuOr")  plt.title('3D Phantom, sagittal view') -  """  plt.show()  #%% @@ -164,7 +163,7 @@ RectoolsIR = RecToolsIR(DetectorsDimH = Horiz_det,  # DetectorsDimH # detector d                      datafidelity='LS',# data fidelity, choose LS, PWLS (wip), GH (wip), Student (wip)                      nonnegativity='ENABLE', # enable nonnegativity constraint (set to 'ENABLE')                      OS_number = None, # the number of subsets, NONE/(or > 1) ~ classical / ordered subsets -                    tolerance = 1e-08, # tolerance to stop inner iterations earlier +                    tolerance = 0.0, # tolerance to stop inner (regularisation) iterations earlier                      device='gpu')  #%%  print ("Reconstructing with ADMM method using SB-TV penalty") diff --git a/demos/demoMatlab_3Ddenoise.m b/demos/demoMatlab_3Ddenoise.m index cf2c88a..ec0fd88 100644 --- a/demos/demoMatlab_3Ddenoise.m +++ b/demos/demoMatlab_3Ddenoise.m @@ -23,7 +23,8 @@ lambda_reg = 0.03; % regularsation parameter for all methods  fprintf('Denoise a volume using the ROF-TV model (CPU) \n');  tau_rof = 0.0025; % time-marching constant   iter_rof = 300; % number of ROF iterations -tic; u_rof = ROF_TV(single(vol3D), lambda_reg, iter_rof, tau_rof); toc;  +epsil_tol =  0.0; % tolerance +tic; [u_rof,infovec] = ROF_TV(single(vol3D), lambda_reg, iter_rof, tau_rof, epsil_tol); toc;   energyfunc_val_rof = TV_energy(single(u_rof),single(vol3D),lambda_reg, 1);  % get energy function value  rmse_rof = (RMSE(Ideal3D(:),u_rof(:)));  fprintf('%s %f \n', 'RMSE error for ROF is:', rmse_rof); @@ -39,8 +40,8 @@ figure; imshow(u_rof(:,:,7), [0 1]); title('ROF-TV denoised volume (CPU)');  %%  fprintf('Denoise a volume using the FGP-TV model (CPU) \n');  iter_fgp = 300; % number of FGP iterations -epsil_tol =  1.0e-05; % tolerance -tic; u_fgp = FGP_TV(single(vol3D), lambda_reg, iter_fgp, epsil_tol); toc;  +epsil_tol =  0.0; % tolerance +tic; [u_fgp,infovec] = FGP_TV(single(vol3D), lambda_reg, iter_fgp, epsil_tol); toc;   energyfunc_val_fgp = TV_energy(single(u_fgp),single(vol3D),lambda_reg, 1); % get energy function value  rmse_fgp = (RMSE(Ideal3D(:),u_fgp(:)));  fprintf('%s %f \n', 'RMSE error for FGP-TV is:', rmse_fgp); @@ -56,8 +57,8 @@ figure; imshow(u_fgp(:,:,7), [0 1]); title('FGP-TV denoised volume (CPU)');  %%  fprintf('Denoise a volume using the SB-TV model (CPU) \n');  iter_sb = 150; % number of SB iterations -epsil_tol =  1.0e-05; % tolerance -tic; u_sb = SB_TV(single(vol3D), lambda_reg, iter_sb, epsil_tol); toc;  +epsil_tol =  0.0; % tolerance +tic; [u_sb,infovec] = SB_TV(single(vol3D), lambda_reg, iter_sb, epsil_tol); toc;   energyfunc_val_sb = TV_energy(single(u_sb),single(vol3D),lambda_reg, 1);  % get energy function value  rmse_sb = (RMSE(Ideal3D(:),u_sb(:)));  fprintf('%s %f \n', 'RMSE error for SB-TV is:', rmse_sb); @@ -76,7 +77,8 @@ lambda_ROF = lambda_reg; % ROF regularisation parameter  lambda_LLT = lambda_reg*0.35; % LLT regularisation parameter  iter_LLT = 300; % iterations   tau_rof_llt = 0.0025; % time-marching constant  -tic; u_rof_llt = LLT_ROF(single(vol3D), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt); toc;  +epsil_tol =  0.0; % tolerance +tic; [u_rof_llt, infovec] = LLT_ROF(single(vol3D), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt, epsil_tol); toc;   rmse_rof_llt = (RMSE(Ideal3D(:),u_rof_llt(:)));  fprintf('%s %f \n', 'RMSE error for ROF-LLT is:', rmse_rof_llt);  figure; imshow(u_rof_llt(:,:,7), [0 1]); title('ROF-LLT denoised volume (CPU)'); @@ -86,7 +88,7 @@ figure; imshow(u_rof_llt(:,:,7), [0 1]); title('ROF-LLT denoised volume (CPU)');  % lambda_LLT = lambda_reg*0.35; % LLT regularisation parameter  % iter_LLT = 300; % iterations   % tau_rof_llt = 0.0025; % time-marching constant  -% tic; u_rof_llt_g = LLT_ROF_GPU(single(vol3D), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt); toc;  +% tic; u_rof_llt_g = LLT_ROF_GPU(single(vol3D), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt, epsil_tol); toc;   % rmse_rof_llt = (RMSE(Ideal3D(:),u_rof_llt_g(:)));  % fprintf('%s %f \n', 'RMSE error for ROF-LLT is:', rmse_rof_llt);  % figure; imshow(u_rof_llt_g(:,:,7), [0 1]); title('ROF-LLT denoised volume (GPU)'); @@ -96,7 +98,8 @@ iter_diff = 300; % number of diffusion iterations  lambda_regDiff = 0.025; % regularisation for the diffusivity   sigmaPar = 0.015; % edge-preserving parameter  tau_param = 0.025; % time-marching constant  -tic; u_diff = NonlDiff(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber'); toc;  +epsil_tol =  0.0; % tolerance +tic; [u_diff, infovec]  = NonlDiff(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber', epsil_tol); toc;   rmse_diff = (RMSE(Ideal3D(:),u_diff(:)));  fprintf('%s %f \n', 'RMSE error for Diffusion is:', rmse_diff);  figure; imshow(u_diff(:,:,7), [0 1]); title('Diffusion denoised volume (CPU)'); @@ -106,7 +109,7 @@ figure; imshow(u_diff(:,:,7), [0 1]); title('Diffusion denoised volume (CPU)');  % lambda_regDiff = 0.025; % regularisation for the diffusivity   % sigmaPar = 0.015; % edge-preserving parameter  % tau_param = 0.025; % time-marching constant  -% tic; u_diff_g = NonlDiff_GPU(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber'); toc;  +% tic; u_diff_g = NonlDiff_GPU(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber', epsil_tol); toc;   % rmse_diff = (RMSE(Ideal3D(:),u_diff_g(:)));  % fprintf('%s %f \n', 'RMSE error for Diffusion is:', rmse_diff);  % figure; imshow(u_diff_g(:,:,7), [0 1]); title('Diffusion denoised volume (GPU)'); @@ -116,7 +119,8 @@ iter_diff = 300; % number of diffusion iterations  lambda_regDiff = 3.5; % regularisation for the diffusivity   sigmaPar = 0.02; % edge-preserving parameter  tau_param = 0.0015; % time-marching constant  -tic; u_diff4 = Diffusion_4thO(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param); toc;  +epsil_tol =  0.0; % tolerance +tic; u_diff4 = Diffusion_4thO(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, epsil_tol); toc;   rmse_diff4 = (RMSE(Ideal3D(:),u_diff4(:)));  fprintf('%s %f \n', 'RMSE error for Anis.Diff of 4th order is:', rmse_diff4);  figure; imshow(u_diff4(:,:,7), [0 1]); title('Diffusion 4thO denoised volume (CPU)'); @@ -126,7 +130,7 @@ figure; imshow(u_diff4(:,:,7), [0 1]); title('Diffusion 4thO denoised volume (CP  % lambda_regDiff = 3.5; % regularisation for the diffusivity   % sigmaPar = 0.02; % edge-preserving parameter  % tau_param = 0.0015; % time-marching constant  -% tic; u_diff4_g = Diffusion_4thO_GPU(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param); toc;  +% tic; u_diff4_g = Diffusion_4thO_GPU(single(vol3D), lambda_regDiff, sigmaPar, iter_diff, tau_param, epsil_tol); toc;   % rmse_diff4 = (RMSE(Ideal3D(:),u_diff4_g(:)));  % fprintf('%s %f \n', 'RMSE error for Anis.Diff of 4th order is:', rmse_diff4);  % figure; imshow(u_diff4_g(:,:,7), [0 1]); title('Diffusion 4thO denoised volume (GPU)'); @@ -136,7 +140,8 @@ lambda_TGV = 0.03; % regularisation parameter  alpha1 = 1.0; % parameter to control the first-order term  alpha0 = 2.0; % parameter to control the second-order term  iter_TGV = 500; % number of Primal-Dual iterations for TGV -tic; u_tgv = TGV(single(vol3D), lambda_TGV, alpha1, alpha0, iter_TGV); toc;  +epsil_tol =  0.0; % tolerance +tic; u_tgv = TGV(single(vol3D), lambda_TGV, alpha1, alpha0, iter_TGV, epsil_tol); toc;   rmseTGV = RMSE(Ideal3D(:),u_tgv(:));  fprintf('%s %f \n', 'RMSE error for TGV is:', rmseTGV);  figure; imshow(u_tgv(:,:,3), [0 1]); title('TGV denoised volume (CPU)'); @@ -146,7 +151,7 @@ figure; imshow(u_tgv(:,:,3), [0 1]); title('TGV denoised volume (CPU)');  % alpha1 = 1.0; % parameter to control the first-order term  % alpha0 = 2.0; % parameter to control the second-order term  % iter_TGV = 500; % number of Primal-Dual iterations for TGV -% tic; u_tgv_gpu = TGV_GPU(single(vol3D), lambda_TGV, alpha1, alpha0, iter_TGV); toc;  +% tic; u_tgv_gpu = TGV_GPU(single(vol3D), lambda_TGV, alpha1, alpha0, iter_TGV, epsil_tol); toc;   % rmseTGV = RMSE(Ideal3D(:),u_tgv_gpu(:));  % fprintf('%s %f \n', 'RMSE error for TGV is:', rmseTGV);  % figure; imshow(u_tgv_gpu(:,:,3), [0 1]); title('TGV denoised volume (GPU)'); @@ -163,7 +168,7 @@ vol3D_ref(vol3D_ref < 0) = 0;  % vol3D_ref = zeros(size(Im),'single'); % pass zero reference (dTV -> TV)  iter_fgp = 300; % number of FGP iterations -epsil_tol =  1.0e-05; % tolerance +epsil_tol =  0.0; % tolerance  eta =  0.2; % Reference image gradient smoothing constant  tic; u_fgp_dtv = FGP_dTV(single(vol3D), single(vol3D_ref), lambda_reg, iter_fgp, epsil_tol, eta); toc;   figure; imshow(u_fgp_dtv(:,:,7), [0 1]); title('FGP-dTV denoised volume (CPU)'); @@ -179,7 +184,7 @@ vol3D_ref(vol3D_ref < 0) = 0;  % vol3D_ref = zeros(size(Im),'single'); % pass zero reference (dTV -> TV)  iter_fgp = 300; % number of FGP iterations -epsil_tol =  1.0e-05; % tolerance +epsil_tol =  0.0; % tolerance  eta =  0.2; % Reference image gradient smoothing constant  tic; u_fgp_dtv_g = FGP_dTV_GPU(single(vol3D), single(vol3D_ref), lambda_reg, iter_fgp, epsil_tol, eta); toc;   figure; imshow(u_fgp_dtv_g(:,:,7), [0 1]); title('FGP-dTV denoised volume (GPU)'); diff --git a/demos/demoMatlab_denoise.m b/demos/demoMatlab_denoise.m index 7581068..377a447 100644 --- a/demos/demoMatlab_denoise.m +++ b/demos/demoMatlab_denoise.m @@ -14,10 +14,10 @@ u0 = Im + .05*randn(size(Im)); u0(u0 < 0) = 0;  figure; imshow(u0, [0 1]); title('Noisy image');  %%  fprintf('Denoise using the ROF-TV model (CPU) \n'); -lambda_reg = 0.02; % regularsation parameter for all methods +lambda_reg = 0.03; % regularsation parameter for all methods  iter_rof = 2000; % number of ROF iterations -tau_rof = 0.001; % time-marching constant  -epsil_tol =  0.0; % tolerance +tau_rof = 0.01; % time-marching constant  +epsil_tol =  0.0; % tolerance / 1.0e-06  tic; [u_rof,infovec] = ROF_TV(single(u0), lambda_reg, iter_rof, tau_rof, epsil_tol); toc;   energyfunc_val_rof = TV_energy(single(u_rof),single(u0),lambda_reg, 1);  % get energy function value  rmseROF = (RMSE(u_rof(:),Im(:))); @@ -26,14 +26,14 @@ fprintf('%s %f \n', 'RMSE error for ROF-TV is:', rmseROF);  fprintf('%s %f \n', 'MSSIM error for ROF-TV is:', ssimval);  figure; imshow(u_rof, [0 1]); title('ROF-TV denoised image (CPU)');  %% -% fprintf('Denoise using the ROF-TV model (GPU) \n'); -% tic; [u_rofG,infovec]  = ROF_TV_GPU(single(u0), lambda_reg, iter_rof, tau_rof, epsil_tol); toc;  -% figure; imshow(u_rofG, [0 1]); title('ROF-TV denoised image (GPU)'); +%fprintf('Denoise using the ROF-TV model (GPU) \n'); +%tic; [u_rofG,infovec]  = ROF_TV_GPU(single(u0), lambda_reg, iter_rof, tau_rof, epsil_tol); toc;  +%figure; imshow(u_rofG, [0 1]); title('ROF-TV denoised image (GPU)');  %%  fprintf('Denoise using the FGP-TV model (CPU) \n'); -lambda_reg = 0.02; +lambda_reg = 0.03;  iter_fgp = 500; % number of FGP iterations -epsil_tol =  1.0e-06; % tolerance +epsil_tol =  0.0; % tolerance  tic; [u_fgp,infovec] = FGP_TV(single(u0), lambda_reg, iter_fgp, epsil_tol); toc;   energyfunc_val_fgp = TV_energy(single(u_fgp),single(u0),lambda_reg, 1); % get energy function value  rmseFGP = (RMSE(u_fgp(:),Im(:))); @@ -48,8 +48,8 @@ figure; imshow(u_fgp, [0 1]); title('FGP-TV denoised image (CPU)');  %%  fprintf('Denoise using the SB-TV model (CPU) \n');  lambda_reg = 0.03; -iter_sb = 300; % number of SB iterations -epsil_tol =  1.0e-06; % tolerance +iter_sb = 200; % number of SB iterations +epsil_tol =  0.0; % tolerance  tic; [u_sb,infovec] = SB_TV(single(u0), lambda_reg, iter_sb, epsil_tol); toc;   energyfunc_val_sb = TV_energy(single(u_sb),single(u0),lambda_reg, 1);  % get energy function value  rmseSB = (RMSE(u_sb(:),Im(:))); @@ -67,7 +67,7 @@ iter_diff = 450; % number of diffusion iterations  lambda_regDiff = 0.025; % regularisation for the diffusivity   sigmaPar = 0.015; % edge-preserving parameter  tau_param = 0.02; % time-marching constant  -epsil_tol =  1.0e-06; % tolerance +epsil_tol =  0.0; % tolerance  tic; [u_diff,infovec] = NonlDiff(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber', epsil_tol); toc;   rmseDiffus = (RMSE(u_diff(:),Im(:)));  fprintf('%s %f \n', 'RMSE error for Nonlinear Diffusion is:', rmseDiffus); @@ -75,20 +75,17 @@ fprintf('%s %f \n', 'RMSE error for Nonlinear Diffusion is:', rmseDiffus);  fprintf('%s %f \n', 'MSSIM error for NDF is:', ssimval);  figure; imshow(u_diff, [0 1]); title('Diffusion denoised image (CPU)');  %% -% fprintf('Denoise using Nonlinear-Diffusion model (GPU) \n'); -% iter_diff = 450; % number of diffusion iterations -% lambda_regDiff = 0.025; % regularisation for the diffusivity  -% sigmaPar = 0.015; % edge-preserving parameter -% tau_param = 0.025; % time-marching constant  -% tic; u_diff_g = NonlDiff_GPU(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber'); toc;  -% figure; imshow(u_diff_g, [0 1]); title('Diffusion denoised image (GPU)'); +%fprintf('Denoise using Nonlinear-Diffusion model (GPU) \n'); +%tic; u_diff_g = NonlDiff_GPU(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param, 'Huber', epsil_tol); toc;  +%figure; imshow(u_diff_g, [0 1]); title('Diffusion denoised image (GPU)');  %%  fprintf('Denoise using the TGV model (CPU) \n'); -lambda_TGV = 0.045; % regularisation parameter +lambda_TGV = 0.035; % regularisation parameter  alpha1 = 1.0; % parameter to control the first-order term  alpha0 = 2.0; % parameter to control the second-order term -iter_TGV = 2500; % number of Primal-Dual iterations for TGV -tic; [u_tgv,infovec] = TGV(single(u0), lambda_TGV, alpha1, alpha0, iter_TGV); toc;  +iter_TGV = 20; % number of Primal-Dual iterations for TGV +epsil_tol =  0.0; % tolerance +tic; [u_tgv,infovec] = TGV(single(u0), lambda_TGV, alpha1, alpha0, iter_TGV, epsil_tol); toc;   rmseTGV = (RMSE(u_tgv(:),Im(:)));  fprintf('%s %f \n', 'RMSE error for TGV is:', rmseTGV);  [ssimval] = ssim(u_tgv*255,single(Im)*255); @@ -96,23 +93,15 @@ fprintf('%s %f \n', 'MSSIM error for TGV is:', ssimval);  figure; imshow(u_tgv, [0 1]); title('TGV denoised image (CPU)');  %%  % fprintf('Denoise using the TGV model (GPU) \n'); -% lambda_TGV = 0.034; % regularisation parameter -% alpha1 = 1.0; % parameter to control the first-order term -% alpha0 = 1.0; % parameter to control the second-order term -% iter_TGV = 500; % number of Primal-Dual iterations for TGV -% tic; u_tgv_gpu = TGV_GPU(single(u0), lambda_TGV, alpha1, alpha0, iter_TGV); toc;  -% rmseTGV_gpu = (RMSE(u_tgv_gpu(:),Im(:))); -% fprintf('%s %f \n', 'RMSE error for TGV is:', rmseTGV_gpu); -% [ssimval] = ssim(u_tgv_gpu*255,single(Im)*255); -% fprintf('%s %f \n', 'MSSIM error for TGV is:', ssimval); +% tic; u_tgv_gpu = TGV_GPU(single(u0), lambda_TGV, alpha1, alpha0, iter_TGV, epsil_tol); toc;   % figure; imshow(u_tgv_gpu, [0 1]); title('TGV denoised image (GPU)');  %%  fprintf('Denoise using the ROF-LLT model (CPU) \n');  lambda_ROF = 0.02; % ROF regularisation parameter -lambda_LLT = 0.01; % LLT regularisation parameter -iter_LLT = 1000; % iterations  -tau_rof_llt = 0.0025; % time-marching constant  -epsil_tol =  1.0e-06; % tolerance +lambda_LLT = 0.015; % LLT regularisation parameter +iter_LLT = 2000; % iterations  +tau_rof_llt = 0.01; % time-marching constant  +epsil_tol = 0.0; % tolerance  tic; [u_rof_llt,infovec]  = LLT_ROF(single(u0), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt,epsil_tol); toc;   rmseROFLLT = (RMSE(u_rof_llt(:),Im(:)));  fprintf('%s %f \n', 'RMSE error for TGV is:', rmseROFLLT); @@ -121,21 +110,15 @@ fprintf('%s %f \n', 'MSSIM error for ROFLLT is:', ssimval);  figure; imshow(u_rof_llt, [0 1]); title('ROF-LLT denoised image (CPU)');  %%  % fprintf('Denoise using the ROF-LLT model (GPU) \n'); -% lambda_ROF = 0.016; % ROF regularisation parameter -% lambda_LLT = lambda_reg*0.25; % LLT regularisation parameter -% iter_LLT = 500; % iterations  -% tau_rof_llt = 0.0025; % time-marching constant  -% tic; u_rof_llt_g = LLT_ROF_GPU(single(u0), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt); toc;  -% rmseROFLLT_g = (RMSE(u_rof_llt_g(:),Im(:))); -% fprintf('%s %f \n', 'RMSE error for TGV is:', rmseROFLLT_g); +% tic; u_rof_llt_g = LLT_ROF_GPU(single(u0), lambda_ROF, lambda_LLT, iter_LLT, tau_rof_llt, epsil_tol); toc;   % figure; imshow(u_rof_llt_g, [0 1]); title('ROF-LLT denoised image (GPU)');  %%  fprintf('Denoise using Fourth-order anisotropic diffusion model (CPU) \n');  iter_diff = 800; % number of diffusion iterations -lambda_regDiff = 2.5; % regularisation for the diffusivity  +lambda_regDiff = 3; % regularisation for the diffusivity   sigmaPar = 0.03; % edge-preserving parameter -tau_param = 0.0015; % time-marching constant  -epsil_tol =  1.0e-06; % tolerance +tau_param = 0.0025; % time-marching constant  +epsil_tol =  0.0; % tolerance  tic; [u_diff4,infovec] = Diffusion_4thO(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param, epsil_tol); toc;   rmseDiffHO = (RMSE(u_diff4(:),Im(:)));  fprintf('%s %f \n', 'RMSE error for Fourth-order anisotropic diffusion is:', rmseDiffHO); @@ -143,13 +126,9 @@ fprintf('%s %f \n', 'RMSE error for Fourth-order anisotropic diffusion is:', rms  fprintf('%s %f \n', 'MSSIM error for DIFF4th is:', ssimval);  figure; imshow(u_diff4, [0 1]); title('Diffusion 4thO denoised image (CPU)');  %% -% fprintf('Denoise using Fourth-order anisotropic diffusion model (GPU) \n'); -% iter_diff = 800; % number of diffusion iterations -% lambda_regDiff = 3.5; % regularisation for the diffusivity  -% sigmaPar = 0.02; % edge-preserving parameter -% tau_param = 0.0015; % time-marching constant  -% tic; u_diff4_g = Diffusion_4thO_GPU(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param); toc;  -% figure; imshow(u_diff4_g, [0 1]); title('Diffusion 4thO denoised image (GPU)'); +%fprintf('Denoise using Fourth-order anisotropic diffusion model (GPU) \n'); +%tic; u_diff4_g = Diffusion_4thO_GPU(single(u0), lambda_regDiff, sigmaPar, iter_diff, tau_param); toc;  +%figure; imshow(u_diff4_g, [0 1]); title('Diffusion 4thO denoised image (GPU)');  %%  fprintf('Weights pre-calculation for Non-local TV (takes time on CPU) \n');  SearchingWindow = 7; @@ -177,7 +156,7 @@ u_ref = Im + .01*randn(size(Im)); u_ref(u_ref < 0) = 0;  lambda_reg = 0.04;  iter_fgp = 1000; % number of FGP iterations -epsil_tol =  1.0e-06; % tolerance +epsil_tol =  0.0; % tolerance  eta =  0.2; % Reference image gradient smoothing constant  tic; [u_fgp_dtv,infovec] = FGP_dTV(single(u0), single(u_ref), lambda_reg, iter_fgp, epsil_tol, eta); toc;   rmse_dTV= (RMSE(u_fgp_dtv(:),Im(:))); @@ -10,17 +10,17 @@ export CIL_VERSION=19.03  # install Python modules without CUDA  # cmake ../ -DBUILD_PYTHON_WRAPPER=ON -DBUILD_MATLAB_WRAPPER=OFF -DBUILD_CUDA=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install  # install Python modules with CUDA -cmake ../ -DBUILD_PYTHON_WRAPPER=ON -DBUILD_MATLAB_WRAPPER=OFF -DBUILD_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install +# cmake ../ -DBUILD_PYTHON_WRAPPER=ON -DBUILD_MATLAB_WRAPPER=OFF -DBUILD_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install  # install Matlab modules without CUDA -# cmake ../ -DBUILD_PYTHON_WRAPPER=OFF -DMatlab_ROOT_DIR=/dls_sw/apps/matlab/r2014a/ -DBUILD_MATLAB_WRAPPER=ON -DBUILD_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install +#cmake ../ -DBUILD_PYTHON_WRAPPER=OFF -DMatlab_ROOT_DIR=/dls_sw/apps/matlab/r2014a/ -DBUILD_MATLAB_WRAPPER=ON -DBUILD_CUDA=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install  # install Matlab modules with CUDA -# cmake ../ -DBUILD_PYTHON_WRAPPER=OFF -DMatlab_ROOT_DIR=/dls_sw/apps/matlab/r2014a/ -DBUILD_MATLAB_WRAPPER=ON -DBUILD_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install +cmake ../ -DBUILD_PYTHON_WRAPPER=OFF -DMatlab_ROOT_DIR=/dls_sw/apps/matlab/r2014a/ -DBUILD_MATLAB_WRAPPER=ON -DBUILD_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install  make install  #### Python  #cp install/lib/libcilreg.so install/python/ccpi/filters  # cd install/python -export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../lib -spyder +# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../lib +# spyder  ##### Matlab (Linux)  #PATH="/path/to/mex/:$PATH" LD_LIBRARY_PATH="/path/to/library:$LD_LIBRARY_PATH" matlab -#PATH="/home/kjy41806/Documents/SOFT/CCPi-Regularisation-Toolkit/build_proj/install/matlab/:$PATH" LD_LIBRARY_PATH="/home/kjy41806/Documents/SOFT/CCPi-Regularisation-Toolkit/build_proj/install/lib:$LD_LIBRARY_PATH" matlab +PATH="/home/kjy41806/Documents/SOFT/CCPi-Regularisation-Toolkit/build_proj/install/matlab/:$PATH" LD_LIBRARY_PATH="/home/kjy41806/Documents/SOFT/CCPi-Regularisation-Toolkit/build_proj/install/lib:$LD_LIBRARY_PATH" matlab diff --git a/src/Matlab/CMakeLists.txt b/src/Matlab/CMakeLists.txt index 6c5e6be..0897d7a 100755 --- a/src/Matlab/CMakeLists.txt +++ b/src/Matlab/CMakeLists.txt @@ -85,10 +85,10 @@ foreach(tgt RANGE 0 ${num})      )
  target_include_directories(${current_target}
 -   PUBLIC ${CMAKE_SOURCE_DIR}/Core/regularisers_CPU
 -   ${CMAKE_SOURCE_DIR}/Core/regularisers_GPU
 -   ${CMAKE_SOURCE_DIR}/Core/inpainters_CPU
 -   ${CMAKE_SOURCE_DIR}/Core/
 +   PUBLIC ${CMAKE_SOURCE_DIR}/src/Core/regularisers_CPU
 +   ${CMAKE_SOURCE_DIR}/src/Core/regularisers_GPU
 +   ${CMAKE_SOURCE_DIR}/src/Core/inpainters_CPU
 +   ${CMAKE_SOURCE_DIR}/src/Core/
     ${MATLAB_INCLUDE_DIR})
     set_property(TARGET ${current_target} PROPERTY C_STANDARD 99)
     list(APPEND CPU_MEX_TARGETS ${current_target})
 @@ -131,14 +131,16 @@ message("number of GPU files  " ${num})            )
          target_include_directories(${current_target}
 -        PUBLIC ${CMAKE_SOURCE_DIR}/Core/regularisers_CPU
 -               ${CMAKE_SOURCE_DIR}/Core/regularisers_GPU
 -               ${CMAKE_SOURCE_DIR}/Core/inpainters_CPU
 -               ${CMAKE_SOURCE_DIR}/Core/
 +        PUBLIC ${CMAKE_SOURCE_DIR}/src/Core/regularisers_CPU
 +               ${CMAKE_SOURCE_DIR}/src/Core/regularisers_GPU
 +               ${CMAKE_SOURCE_DIR}/src/Core/inpainters_CPU
 +               ${CMAKE_SOURCE_DIR}/src/Core/
                 ${MATLAB_INCLUDE_DIR})
          list(APPEND GPU_MEX_TARGETS ${current_target})
 -        INSTALL(TARGETS ${current_target} DESTINATION "${MATLAB_DEST}")
 +        INSTALL(TARGETS ${current_target} DESTINATION "${MATLAB_DEST}") +         +        
        endforeach()
        add_custom_target(MatlabWrapperGPU DEPENDS ${GPU_MEX_TARGETS})
 diff --git a/src/Matlab/mex_compile/installed/MEXed_files_location.txt b/src/Matlab/mex_compile/installed/MEXed_files_location.txt deleted file mode 100644 index e69de29..0000000 --- a/src/Matlab/mex_compile/installed/MEXed_files_location.txt +++ /dev/null diff --git a/src/Matlab/mex_compile/regularisers_CPU/Diffusion_4thO.c b/src/Matlab/mex_compile/regularisers_CPU/Diffusion_4thO.c index a003596..887a76d 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/Diffusion_4thO.c +++ b/src/Matlab/mex_compile/regularisers_CPU/Diffusion_4thO.c @@ -78,9 +78,9 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));          Diffus4th_CPU_main(Input, Output, infovec, lambda, sigma, iter_numb, tau, epsil, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_CPU/FGP_TV.c b/src/Matlab/mex_compile/regularisers_CPU/FGP_TV.c index f6db6c8..251ac52 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/FGP_TV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/FGP_TV.c @@ -89,7 +89,7 @@ void mexFunction(      if (number_of_dims == 3) {              Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));      }     -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL)); diff --git a/src/Matlab/mex_compile/regularisers_CPU/FGP_dTV.c b/src/Matlab/mex_compile/regularisers_CPU/FGP_dTV.c index 3122610..f1b70a8 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/FGP_dTV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/FGP_dTV.c @@ -101,10 +101,10 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      /* running the function */      dTV_FGP_CPU_main(Input, InputRef, Output, infovec, lambda, iter, epsil, eta, methTV, nonneg, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_CPU/LLT_ROF.c b/src/Matlab/mex_compile/regularisers_CPU/LLT_ROF.c index f630397..5c6de9d 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/LLT_ROF.c +++ b/src/Matlab/mex_compile/regularisers_CPU/LLT_ROF.c @@ -83,9 +83,9 @@ void mexFunction(      }          if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));    -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));         LLT_ROF_CPU_main(Input, Output, infovec, lambdaROF, lambdaLLT, iterationsNumb, tau, epsil, dimX, dimY, dimZ);     -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_CPU/NonlDiff.c b/src/Matlab/mex_compile/regularisers_CPU/NonlDiff.c index 57c8811..2ca17d2 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/NonlDiff.c +++ b/src/Matlab/mex_compile/regularisers_CPU/NonlDiff.c @@ -90,9 +90,9 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));          Diffusion_CPU_main(Input, Output, infovec, lambda, sigma, iter_numb, tau, penaltytype, epsil, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_CPU/Nonlocal_TV.c b/src/Matlab/mex_compile/regularisers_CPU/Nonlocal_TV.c index 014c0a0..34b9915 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/Nonlocal_TV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/Nonlocal_TV.c @@ -51,8 +51,8 @@ void mexFunction(      long number_of_dims,  dimX, dimY, dimZ;      int IterNumb, NumNeighb = 0;      unsigned short *H_i, *H_j, *H_k; -    const int  *dim_array; -    const int  *dim_array2; +    const mwSize  *dim_array; +    const mwSize *dim_array2;      float *A_orig, *Output=NULL, *Weights, lambda;      dim_array = mxGetDimensions(prhs[0]); diff --git a/src/Matlab/mex_compile/regularisers_CPU/PatchSelect.c b/src/Matlab/mex_compile/regularisers_CPU/PatchSelect.c index f942539..d2f6670 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/PatchSelect.c +++ b/src/Matlab/mex_compile/regularisers_CPU/PatchSelect.c @@ -53,10 +53,10 @@ void mexFunction(      int number_of_dims,  SearchWindow, SimilarWin, NumNeighb;      mwSize dimX, dimY, dimZ;      unsigned short *H_i=NULL, *H_j=NULL, *H_k=NULL; -    const int  *dim_array; +    mwSize  *dim_array;      float *A, *Weights = NULL, h; -    int dim_array2[3]; /* for 2D data */ -    int dim_array3[4]; /* for 3D data */ +    mwSize dim_array2[3]; /* for 2D data */ +    mwSize dim_array3[4]; /* for 3D data */      dim_array = mxGetDimensions(prhs[0]);      number_of_dims = mxGetNumberOfDimensions(prhs[0]); diff --git a/src/Matlab/mex_compile/regularisers_CPU/ROF_TV.c b/src/Matlab/mex_compile/regularisers_CPU/ROF_TV.c index a7d431f..ffe7b91 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/ROF_TV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/ROF_TV.c @@ -77,9 +77,9 @@ void mexFunction(          Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array_i, mxSINGLE_CLASS, mxREAL));      } -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      TV_ROF_CPU_main(Input, Output, infovec, lambda, iter_numb, tau, epsil, dimX, dimY, dimZ);     -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_CPU/SB_TV.c b/src/Matlab/mex_compile/regularisers_CPU/SB_TV.c index 495f1c9..d1bdb3a 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/SB_TV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/SB_TV.c @@ -82,7 +82,7 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));     diff --git a/src/Matlab/mex_compile/regularisers_CPU/TGV.c b/src/Matlab/mex_compile/regularisers_CPU/TGV.c index aab01b4..2c0fcbd 100644 --- a/src/Matlab/mex_compile/regularisers_CPU/TGV.c +++ b/src/Matlab/mex_compile/regularisers_CPU/TGV.c @@ -57,7 +57,7 @@ void mexFunction(      dim_array = mxGetDimensions(prhs[0]);      /*Handling Matlab input data*/ -    if ((nrhs < 2) || (nrhs > 6)) mexErrMsgTxt("At least 2 parameters is required, all parameters are: Image(2D), Regularisation parameter, alpha0, alpha1, iterations number, Lipshitz Constant"); +    if ((nrhs < 2) || (nrhs > 7)) mexErrMsgTxt("At least 2 parameters is required, all parameters are: Image(2D), Regularisation parameter, alpha0, alpha1, iterations number, Lipshitz Constant");      Input  = (float *) mxGetData(prhs[0]); /*noisy image/volume */      lambda =  (float) mxGetScalar(prhs[1]); /* regularisation parameter */ @@ -85,7 +85,7 @@ void mexFunction(          Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));      }     -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));     diff --git a/src/Matlab/mex_compile/regularisers_GPU/Diffusion_4thO_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/Diffusion_4thO_GPU.cpp index 7b7a220..42874ef 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/Diffusion_4thO_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/Diffusion_4thO_GPU.cpp @@ -78,9 +78,9 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));          Diffus4th_GPU_main(Input, Output, infovec, lambda, sigma, iter_numb, tau, epsil, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp index 5ccc2b2..d08e50d 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/FGP_TV_GPU.cpp @@ -89,10 +89,10 @@ void mexFunction(      if (number_of_dims == 3) {              Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));      }     -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      /* running the function */      TV_FGP_GPU_main(Input, Output, infovec, lambda, iter, epsil, methTV, nonneg, dimX, dimY, dimZ);     -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/FGP_dTV_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/FGP_dTV_GPU.cpp index 6662e0b..2db4556 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/FGP_dTV_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/FGP_dTV_GPU.cpp @@ -101,10 +101,10 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      /* running the function */      dTV_FGP_GPU_main(Input, InputRef, Output, infovec, lambda, iter, epsil, eta, methTV, nonneg, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/LLT_ROF_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/LLT_ROF_GPU.cpp index f27767e..ff5d577 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/LLT_ROF_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/LLT_ROF_GPU.cpp @@ -83,9 +83,9 @@ void mexFunction(      }          if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));    -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));         LLT_ROF_GPU_main(Input, Output, infovec, lambdaROF, lambdaLLT, iterationsNumb, tau, epsil, dimX, dimY, dimZ);     -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/NonlDiff_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/NonlDiff_GPU.cpp index 4ce983f..43627c8 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/NonlDiff_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/NonlDiff_GPU.cpp @@ -92,9 +92,9 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));         NonlDiff_GPU_main(Input, Output, infovec, lambda, sigma, iter_numb, tau, penaltytype, epsil, dimX, dimY, dimZ); -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp index 4172323..d9b7e83 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/ROF_TV_GPU.cpp @@ -75,9 +75,9 @@ void mexFunction(          Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array_i, mxSINGLE_CLASS, mxREAL));      } -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      TV_ROF_GPU_main(Input, Output, infovec, lambda, iter_numb, tau, epsil, dimX, dimY, dimZ);     -}
\ No newline at end of file +} diff --git a/src/Matlab/mex_compile/regularisers_GPU/SB_TV_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/SB_TV_GPU.cpp index 8ec95ab..562dc65 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/SB_TV_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/SB_TV_GPU.cpp @@ -72,7 +72,7 @@ void mexFunction(      }      if (number_of_dims == 3) Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL)); -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));     diff --git a/src/Matlab/mex_compile/regularisers_GPU/TGV_GPU.cpp b/src/Matlab/mex_compile/regularisers_GPU/TGV_GPU.cpp index bdfd85b..eb1f043 100644 --- a/src/Matlab/mex_compile/regularisers_GPU/TGV_GPU.cpp +++ b/src/Matlab/mex_compile/regularisers_GPU/TGV_GPU.cpp @@ -60,7 +60,7 @@ void mexFunction(      dim_array = mxGetDimensions(prhs[0]);      /*Handling Matlab input data*/ -    if ((nrhs < 2) || (nrhs > 6)) mexErrMsgTxt("At least 2 parameters is required, all parameters are: Image(2D), Regularisation parameter, alpha0, alpha1, iterations number, Lipshitz Constant"); +    if ((nrhs < 2) || (nrhs > 7)) mexErrMsgTxt("At least 2 parameters is required, all parameters are: Image(2D), Regularisation parameter, alpha0, alpha1, iterations number, Lipshitz Constant");      Input  = (float *) mxGetData(prhs[0]); /*noisy image/volume */      lambda =  (float) mxGetScalar(prhs[1]); /* regularisation parameter */ @@ -88,7 +88,7 @@ void mexFunction(          Output = (float*)mxGetPr(plhs[0] = mxCreateNumericArray(3, dim_array, mxSINGLE_CLASS, mxREAL));      }     -    int vecdim[1]; +    mwSize vecdim[1];      vecdim[0] = 2;      infovec = (float*)mxGetPr(plhs[1] = mxCreateNumericArray(1, vecdim, mxSINGLE_CLASS, mxREAL));      | 
