diff options
author | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-04 17:37:35 +0100 |
---|---|---|
committer | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-04 17:37:35 +0100 |
commit | 3fbc6020ac3eecf228133d69bd7683b946cba9bf (patch) | |
tree | 4b1289b17913963ab0dda28cc13a80cc99477a8f | |
parent | 2ee7afd4cb57a51071ba454e79880e78ce24c03b (diff) | |
download | framework-3fbc6020ac3eecf228133d69bd7683b946cba9bf.tar.gz framework-3fbc6020ac3eecf228133d69bd7683b946cba9bf.tar.bz2 framework-3fbc6020ac3eecf228133d69bd7683b946cba9bf.tar.xz framework-3fbc6020ac3eecf228133d69bd7683b946cba9bf.zip |
add precond example
-rw-r--r-- | Wrappers/Python/wip/pdhg_TV_denoising_precond.py | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/Wrappers/Python/wip/pdhg_TV_denoising_precond.py b/Wrappers/Python/wip/pdhg_TV_denoising_precond.py index 518ead2..6792f43 100644 --- a/Wrappers/Python/wip/pdhg_TV_denoising_precond.py +++ b/Wrappers/Python/wip/pdhg_TV_denoising_precond.py @@ -24,7 +24,7 @@ from skimage.util import random_noise # ############################################################################ # Create phantom for TV denoising -N = 100 +N = 500 data = np.zeros((N,N)) data[round(N/4):round(3*N/4),round(N/4):round(3*N/4)] = 0.5 data[round(N/8):round(7*N/8),round(3*N/8):round(5*N/8)] = 1 @@ -74,34 +74,52 @@ else: ########################################################################### #%% -diag_precon = True +diag_precon = False if diag_precon: - tmp_tau = operator.sum_abs_row() - tmp_sigma = operator.sum_abs_col() - tmp_sigma[0][0].as_array()[tmp_sigma[0][0].as_array()==0]=1 - tmp_sigma[0][1].as_array()[tmp_sigma[0][1].as_array()==0]=1 - tmp_sigma[1].as_array()[tmp_sigma[1].as_array()==0]=1 + tmp_tau = 1/operator.sum_abs_row() + tmp_sigma = 1/operator.sum_abs_col() - tau = 1/tmp_tau - sigma = 1/tmp_sigma + tmp_sigma[0][0].as_array()[tmp_sigma[0][0].as_array()==np.inf]=0 + tmp_sigma[0][1].as_array()[tmp_sigma[0][1].as_array()==np.inf]=0 + tmp_sigma[1].as_array()[tmp_sigma[1].as_array()==np.inf]=0 + tau = tmp_tau + sigma = tmp_sigma + else: # Compute operator Norm normK = operator.norm() print ("normK", normK) # Primal & dual stepsizes - sigma = 1 - tau = 1/(sigma*normK**2) + sigma = 1/normK + tau = 1/normK +# tau = 1/(sigma*normK**2) #%% -#opt = {'niter':2000} +opt = {'niter':2000} +# +res = PDHG_old(f, g, operator, tau = tau, sigma = sigma, opt = opt) + +aaa = res[0].as_array() +# +plt.imshow(aaa) +plt.colorbar() +plt.show() +#c2 = aaa +#del aaa +#%% -#res = PDHG_old(f, g, operator, tau = tau, sigma = sigma, opt = opt) - - +#c2 = aaa +##%% +#%% +z = c1 - c2 +plt.imshow(np.abs(z[0:95,0:95])) +plt.colorbar() + +#%% #pdhg = PDHG(f=f,g=g,operator=operator, tau=tau, sigma=sigma) #pdhg.max_iteration = 2000 #pdhg.update_objective_interval = 10 |