mirror of
https://github.com/wassname/scikit-image.git
synced 2026-08-19 12:40:22 +08:00
57 lines
1.3 KiB
Python
57 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)
|
|
|
|
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()
|