mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-29 10:28:15 +08:00
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from os.path import abspath, dirname, join as pjoin
|
|
|
|
import numpy as np
|
|
from scipy.signal import convolve2d
|
|
|
|
import skimage
|
|
from skimage.data import camera
|
|
from skimage import restoration
|
|
from skimage.restoration import uft
|
|
|
|
test_img = skimage.img_as_float(camera())
|
|
|
|
|
|
def test_wiener():
|
|
psf = np.ones((5, 5)) / 25
|
|
data = convolve2d(test_img, psf, 'same')
|
|
np.random.seed(0)
|
|
data += 0.1 * data.std() * np.random.standard_normal(data.shape)
|
|
deconvolved = restoration.wiener(data, psf, 0.05)
|
|
|
|
path = pjoin(dirname(abspath(__file__)), 'camera_wiener.npy')
|
|
np.testing.assert_allclose(deconvolved, np.load(path), rtol=1e-3)
|
|
|
|
_, laplacian = uft.laplacian(2, data.shape)
|
|
otf = uft.ir2tf(psf, data.shape, is_real=False)
|
|
deconvolved = restoration.wiener(data, otf, 0.05,
|
|
reg=laplacian,
|
|
is_real=False)
|
|
np.testing.assert_allclose(np.real(deconvolved),
|
|
np.load(path),
|
|
rtol=1e-3)
|
|
|
|
|
|
def test_unsupervised_wiener():
|
|
psf = np.ones((5, 5)) / 25
|
|
data = convolve2d(test_img, psf, 'same')
|
|
np.random.seed(0)
|
|
data += 0.1 * data.std() * np.random.standard_normal(data.shape)
|
|
deconvolved, _ = restoration.unsupervised_wiener(data, psf)
|
|
|
|
path = pjoin(dirname(abspath(__file__)), 'camera_unsup.npy')
|
|
np.testing.assert_allclose(deconvolved, np.load(path), rtol=1e-3)
|
|
|
|
_, laplacian = uft.laplacian(2, data.shape)
|
|
otf = uft.ir2tf(psf, data.shape, is_real=False)
|
|
np.random.seed(0)
|
|
deconvolved = restoration.unsupervised_wiener(
|
|
data, otf, reg=laplacian, is_real=False,
|
|
user_params={"callback": lambda x: None})[0]
|
|
path = pjoin(dirname(abspath(__file__)), 'camera_unsup2.npy')
|
|
np.testing.assert_allclose(np.real(deconvolved),
|
|
np.load(path),
|
|
rtol=1e-3)
|
|
|
|
|
|
def test_richardson_lucy():
|
|
psf = np.ones((5, 5)) / 25
|
|
data = convolve2d(test_img, psf, 'same')
|
|
np.random.seed(0)
|
|
data += 0.1 * data.std() * np.random.standard_normal(data.shape)
|
|
deconvolved = restoration.richardson_lucy(data, psf, 5)
|
|
|
|
path = pjoin(dirname(abspath(__file__)), 'camera_rl.npy')
|
|
np.testing.assert_allclose(deconvolved, np.load(path), rtol=1e-3)
|