return ws[np.argmin([mse(x, deconv_wiener(y, h, w)) for w in ws])] if __name__ == "__main__": np.random.seed(0) # 2d from matplotlib.pyplot import imread s = 0.05 x = imread("data/usaf.png") x *= 0 x[200:400, 200:400] = 1.0 mu = 10000.0 rho = 10.0 scale = 100 x *= 1.0 * scale h = psf(x.shape, (6.0, 6.0)) y = myconvolve(x, h) + s * np.amax(x) * np.random.uniform(0, 1, x.shape) # u = deconv_tv_al([y,y2],[h,h2]) u = deconv_tv_al(y, h, mu, rho) u2 = deconv_wiener(y, h, rho / mu)
rnorm = rnorm_new return f if __name__ == '__main__': from matplotlib.pyplot import imread from pydeconv.utils import myconvolve, psf im = imread("../tests2/data/usaf.png") np.random.seed(0) hx = (5.,5.) h = psf(im.shape,hx) g = myconvolve(im ,h) g += .01*np.amax(im)*np.random.normal(0,1.,im.shape) mu = 10000. rho = 2. def wien(y_f,alpha = .1): u_f = h_f.conjugate()*y_f u_f /= np.abs(h_f)**2 + alpha return np.abs(np.fft.ifftn(u_f)) def _fun(u , mu):