mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-20 12:40:31 +08:00
59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
import numpy as np
|
|
from numpy.testing import assert_equal
|
|
|
|
from skimage.measure import structural_similarity as ssim
|
|
import scipy.optimize as opt
|
|
|
|
def test_ssim_patch_range():
|
|
N = 51
|
|
X = (np.random.random((N, N)) * 255).astype(np.uint8)
|
|
Y = (np.random.random((N, N)) * 255).astype(np.uint8)
|
|
|
|
assert(ssim(X, Y, win_size=N) < 0.1)
|
|
assert_equal(ssim(X, X, win_size=N), 1)
|
|
|
|
def test_ssim_image():
|
|
N = 100
|
|
X = (np.random.random((N, N)) * 255).astype(np.uint8)
|
|
Y = (np.random.random((N, N)) * 255).astype(np.uint8)
|
|
|
|
S0 = ssim(X, X, win_size=3)
|
|
assert_equal(S0, 1)
|
|
|
|
S1 = ssim(X, Y, win_size=3)
|
|
assert(S1 < 0.3)
|
|
|
|
## Come up with a better way of testing the gradient
|
|
##
|
|
## def test_ssim_grad():
|
|
## N = 30
|
|
## X = np.random.random((N, N)) * 255
|
|
## Y = np.random.random((N, N)) * 255
|
|
|
|
## def func(Y):
|
|
## return ssim(X, Y, dynamic_range=255)
|
|
|
|
## def grad(Y):
|
|
## return ssim(X, Y, dynamic_range=255, gradient=True)[1]
|
|
|
|
## assert(np.all(opt.check_grad(func, grad, Y) < 0.05))
|
|
|
|
def test_ssim_dtype():
|
|
N = 30
|
|
X = np.random.random((N, N))
|
|
Y = np.random.random((N, N))
|
|
|
|
S1 = ssim(X, Y)
|
|
|
|
X = (X * 255).astype(np.uint8)
|
|
Y = (X * 255).astype(np.uint8)
|
|
|
|
S2 = ssim(X, Y)
|
|
|
|
assert S1 < 0.1
|
|
assert S2 < 0.1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
np.testing.run_module_suite()
|