From c409bd46a39357ca14b8ae48f6242700b1576396 Mon Sep 17 00:00:00 2001
From: algol <dkazanc@hotmail.com>
Date: Tue, 10 Apr 2018 10:45:41 +0100
Subject: #43 all python/matlab 2d/3d DEMOS work OK

---
 Wrappers/Python/demos/demo_cpu_regularisers.py | 23 ++++++++------
 Wrappers/Python/demos/demo_gpu_regularisers.py | 42 +++++++++++++-------------
 Wrappers/Python/demos/qualitymetrics.py        |  6 ++--
 Wrappers/Python/src/cpu_regularisers.pyx       |  6 ++--
 Wrappers/Python/src/gpu_regularisers.pyx       |  4 +--
 5 files changed, 41 insertions(+), 40 deletions(-)

(limited to 'Wrappers/Python')

diff --git a/Wrappers/Python/demos/demo_cpu_regularisers.py b/Wrappers/Python/demos/demo_cpu_regularisers.py
index 84d86c0..487bac7 100644
--- a/Wrappers/Python/demos/demo_cpu_regularisers.py
+++ b/Wrappers/Python/demos/demo_cpu_regularisers.py
@@ -27,7 +27,7 @@ def printParametersToString(pars):
             txt += '\n'
         return txt
 ###############################################################################
-
+#%%
 filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
 
 # read image
@@ -135,22 +135,24 @@ imgplot = plt.imshow(fgp_cpu, cmap="gray")
 plt.title('{}'.format('CPU results'))
 
 # Uncomment to test 3D regularisation performance 
+#%%
 """
 N = 512
 slices = 20
 
+filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
 Im = plt.imread(filename)
 Im = np.asarray(Im, dtype='float32')
 
 Im = Im/255
 perc = 0.05
 
-noisyVol = np.zeros((N,N,slices),dtype='float32')
-idealVol = np.zeros((N,N,slices),dtype='float32')
+noisyVol = np.zeros((slices,N,N),dtype='float32')
+idealVol = np.zeros((slices,N,N),dtype='float32')
 
 for i in range (slices):
-    noisyVol[:,:,i] = Im + np.random.normal(loc = 0 , scale = perc * Im , size = np.shape(Im))
-    idealVol[:,:,i] = Im
+    noisyVol[i,:,:] = Im + np.random.normal(loc = 0 , scale = perc * Im , size = np.shape(Im))
+    idealVol[i,:,:] = Im
 
 print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
 print ("_______________ROF-TV (3D)_________________")
@@ -161,7 +163,7 @@ fig = plt.figure(3)
 plt.suptitle('Performance of ROF-TV regulariser using the CPU')
 a=fig.add_subplot(1,2,1)
 a.set_title('Noisy 15th slice of a volume')
-imgplot = plt.imshow(noisyVol[:,:,10],cmap="gray")
+imgplot = plt.imshow(noisyVol[10,:,:],cmap="gray")
 
 # set parameters
 pars = {'algorithm': ROF_TV, \
@@ -189,7 +191,7 @@ 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=14,
          verticalalignment='top', bbox=props)
-imgplot = plt.imshow(rof_cpu3D[:,:,10], cmap="gray")
+imgplot = plt.imshow(rof_cpu3D[10,:,:], cmap="gray")
 plt.title('{}'.format('Recovered volume on the CPU using ROF-TV'))
 
 print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
@@ -201,7 +203,7 @@ fig = plt.figure(4)
 plt.suptitle('Performance of FGP-TV regulariser using the CPU')
 a=fig.add_subplot(1,2,1)
 a.set_title('Noisy Image')
-imgplot = plt.imshow(noisyVol[:,:,10],cmap="gray")
+imgplot = plt.imshow(noisyVol[10,:,:],cmap="gray")
 
 # set parameters
 pars = {'algorithm' : FGP_TV, \
@@ -238,6 +240,7 @@ 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=14,
          verticalalignment='top', bbox=props)
-imgplot = plt.imshow(fgp_cpu3D[:,:,10], cmap="gray")
+imgplot = plt.imshow(fgp_cpu3D[10,:,:], cmap="gray")
 plt.title('{}'.format('Recovered volume on the CPU using FGP-TV'))
-"""
\ No newline at end of file
+"""
+#%%
\ No newline at end of file
diff --git a/Wrappers/Python/demos/demo_gpu_regularisers.py b/Wrappers/Python/demos/demo_gpu_regularisers.py
index fd7b32c..5eb7876 100644
--- a/Wrappers/Python/demos/demo_gpu_regularisers.py
+++ b/Wrappers/Python/demos/demo_gpu_regularisers.py
@@ -27,7 +27,7 @@ def printParametersToString(pars):
             txt += '\n'
         return txt
 ###############################################################################
-
+#%%
 filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
 
 # read image
@@ -51,7 +51,7 @@ print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
 ## plot 
 fig = plt.figure(1)
 plt.suptitle('Performance of the ROF-TV regulariser using the GPU')
-a=fig.add_subplot(1,4,1)
+a=fig.add_subplot(1,2,1)
 a.set_title('Noisy Image')
 imgplot = plt.imshow(u0,cmap="gray")
 
@@ -75,7 +75,7 @@ pars['algorithm'] = ROF_TV
 txtstr = printParametersToString(pars)
 txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
 print (txtstr)
-a=fig.add_subplot(1,4,3)
+a=fig.add_subplot(1,2,2)
 
 # these are matplotlib.patch.Patch properties
 props = dict(boxstyle='round', facecolor='wheat', alpha=0.75)
@@ -93,7 +93,7 @@ print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
 ## plot 
 fig = plt.figure(2)
 plt.suptitle('Performance of the FGP-TV regulariser using the GPU')
-a=fig.add_subplot(1,4,1)
+a=fig.add_subplot(1,2,1)
 a.set_title('Noisy Image')
 imgplot = plt.imshow(u0,cmap="gray")
 
@@ -124,7 +124,7 @@ pars['algorithm'] = FGP_TV
 txtstr = printParametersToString(pars)
 txtstr += "%s = %.3fs" % ('elapsed time',timeit.default_timer() - start_time)
 print (txtstr)
-a=fig.add_subplot(1,4,3)
+a=fig.add_subplot(1,2,2)
 
 # these are matplotlib.patch.Patch properties
 props = dict(boxstyle='round', facecolor='wheat', alpha=0.75)
@@ -136,22 +136,24 @@ plt.title('{}'.format('GPU results'))
 
 
 # Uncomment to test 3D regularisation performance 
+#%%
 """
 N = 512
 slices = 20
 
+filename = os.path.join(".." , ".." , ".." , "data" ,"lena_gray_512.tif")
 Im = plt.imread(filename)
 Im = np.asarray(Im, dtype='float32')
 
 Im = Im/255
 perc = 0.05
 
-noisyVol = np.zeros((N,N,slices),dtype='float32')
-idealVol = np.zeros((N,N,slices),dtype='float32')
+noisyVol = np.zeros((slices,N,N),dtype='float32')
+idealVol = np.zeros((slices,N,N),dtype='float32')
 
 for i in range (slices):
-    noisyVol[:,:,i] = Im + np.random.normal(loc = 0 , scale = perc * Im , size = np.shape(Im))
-    idealVol[:,:,i] = Im
+    noisyVol[i,:,:] = Im + np.random.normal(loc = 0 , scale = perc * Im , size = np.shape(Im))
+    idealVol[i,:,:] = Im
 
 print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
 print ("_______________ROF-TV (3D)_________________")
@@ -162,7 +164,7 @@ fig = plt.figure(3)
 plt.suptitle('Performance of ROF-TV regulariser using the GPU')
 a=fig.add_subplot(1,2,1)
 a.set_title('Noisy 15th slice of a volume')
-imgplot = plt.imshow(noisyVol[:,:,10],cmap="gray")
+imgplot = plt.imshow(noisyVol[10,:,:],cmap="gray")
 
 # set parameters
 pars = {'algorithm': ROF_TV, \
@@ -171,7 +173,7 @@ pars = {'algorithm': ROF_TV, \
         'number_of_iterations': 500,\
         'time_marching_parameter': 0.0025        
         }
-print ("#############ROF TV CPU####################")
+print ("#############ROF TV GPU####################")
 start_time = timeit.default_timer()
 rof_gpu3D = ROF_TV(pars['input'],
              pars['regularisation_parameter'],
@@ -190,7 +192,7 @@ 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=14,
          verticalalignment='top', bbox=props)
-imgplot = plt.imshow(rof_gpu3D[:,:,10], cmap="gray")
+imgplot = plt.imshow(rof_gpu3D[10,:,:], cmap="gray")
 plt.title('{}'.format('Recovered volume on the GPU using ROF-TV'))
 
 print ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
@@ -202,7 +204,7 @@ fig = plt.figure(4)
 plt.suptitle('Performance of FGP-TV regulariser using the GPU')
 a=fig.add_subplot(1,2,1)
 a.set_title('Noisy Image')
-imgplot = plt.imshow(noisyVol[:,:,10],cmap="gray")
+imgplot = plt.imshow(noisyVol[10,:,:],cmap="gray")
 
 # set parameters
 pars = {'algorithm' : FGP_TV, \
@@ -214,8 +216,8 @@ pars = {'algorithm' : FGP_TV, \
         'nonneg': 0 ,\
         'printingOut': 0 
         }
-        
-print ("#############FGP TV CPU####################")
+
+print ("#############FGP TV GPU####################")
 start_time = timeit.default_timer()
 fgp_gpu3D = FGP_TV(pars['input'], 
               pars['regularisation_parameter'],
@@ -223,9 +225,8 @@ fgp_gpu3D = FGP_TV(pars['input'],
               pars['tolerance_constant'], 
               pars['methodTV'],
               pars['nonneg'],
-              pars['printingOut'],'gpu')  
-             
-             
+              pars['printingOut'],'gpu')
+
 rms = rmse(idealVol, fgp_gpu3D)
 pars['rmse'] = rms
 
@@ -239,9 +240,8 @@ 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=14,
          verticalalignment='top', bbox=props)
-imgplot = plt.imshow(fgp_gpu3D[:,:,10], cmap="gray")
+imgplot = plt.imshow(fgp_gpu3D[10,:,:], cmap="gray")
 plt.title('{}'.format('Recovered volume on the GPU using FGP-TV'))
-
+#%%
 """
 
-
diff --git a/Wrappers/Python/demos/qualitymetrics.py b/Wrappers/Python/demos/qualitymetrics.py
index 32fa479..850829e 100644
--- a/Wrappers/Python/demos/qualitymetrics.py
+++ b/Wrappers/Python/demos/qualitymetrics.py
@@ -8,13 +8,11 @@ Created on Wed Feb 21 13:34:32 2018
 import numpy as np
 
 def nrmse(im1, im2):
-    a, b = im1.shape
-    rmse = np.sqrt(np.sum((im2 - im1) ** 2) / float(a * b))
+    rmse = np.sqrt(np.sum((im2 - im1) ** 2) / float(im1.size))
     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))
     
 def rmse(im1, im2):
-    a, b = im1.shape
-    rmse = np.sqrt(np.sum((im1 - im2) ** 2) / float(a * b))    
+    rmse = np.sqrt(np.sum((im1 - im2) ** 2) / float(im1.size))
     return rmse
diff --git a/Wrappers/Python/src/cpu_regularisers.pyx b/Wrappers/Python/src/cpu_regularisers.pyx
index 248bad1..0f08f7f 100644
--- a/Wrappers/Python/src/cpu_regularisers.pyx
+++ b/Wrappers/Python/src/cpu_regularisers.pyx
@@ -48,8 +48,8 @@ def TV_ROF_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData,
     return outputData
             
 def TV_ROF_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData, 
-                     int iterationsNumb,
                      float regularisation_parameter,
+                     int iterationsNumb,
                      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], regularisation_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[2], dims[1], dims[0])
 
     return outputData
 
@@ -122,5 +122,5 @@ def TV_FGP_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
                        methodTV,
                        nonneg,
                        printM,
-                       dims[0], dims[1], dims[2])
+                       dims[2], dims[1], dims[0])
     return outputData 
diff --git a/Wrappers/Python/src/gpu_regularisers.pyx b/Wrappers/Python/src/gpu_regularisers.pyx
index 7ebd011..ea746d3 100644
--- a/Wrappers/Python/src/gpu_regularisers.pyx
+++ b/Wrappers/Python/src/gpu_regularisers.pyx
@@ -106,7 +106,7 @@ def ROFTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
                        regularisation_parameter,
                        iterations , 
                        time_marching_parameter, 
-                       dims[0], dims[1], dims[2]);   
+                       dims[2], dims[1], dims[0]);   
      
     return outputData
 #****************************************************************#
@@ -165,6 +165,6 @@ def FGPTV3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData,
                        methodTV,
                        nonneg,
                        printM,
-                       dims[0], dims[1], dims[2]);   
+                       dims[2], dims[1], dims[0]);   
      
     return outputData    
-- 
cgit v1.2.3