def test_default_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. assert_array_equal( gaussian(a, preserve_range=True), gaussian(a, preserve_range=True, sigma=1) )
def test_multichannel(channel_axis): a = np.zeros((5, 5, 3)) a[1, 1] = np.arange(1, 4) a = np.moveaxis(a, -1, channel_axis) gaussian_rgb_a = gaussian(a, sigma=1, mode='reflect', preserve_range=True, channel_axis=channel_axis) # Check that the mean value is conserved in each channel # (color channels are not mixed together) spatial_axes = tuple( [ax for ax in range(a.ndim) if ax != channel_axis % a.ndim] ) assert np.allclose(a.mean(axis=spatial_axes), gaussian_rgb_a.mean(axis=spatial_axes)) if channel_axis % a.ndim == 2: # Test legacy behavior equivalent to old (multichannel = None) with expected_warnings(['multichannel']): gaussian_rgb_a = gaussian(a, sigma=1, mode='reflect', preserve_range=True) # Check that the mean value is conserved in each channel # (color channels are not mixed together) assert np.allclose(a.mean(axis=spatial_axes), gaussian_rgb_a.mean(axis=spatial_axes)) # Iterable sigma gaussian_rgb_a = gaussian(a, sigma=[1, 2], mode='reflect', channel_axis=channel_axis, preserve_range=True) assert np.allclose(a.mean(axis=spatial_axes), gaussian_rgb_a.mean(axis=spatial_axes))
def test_difference_of_gaussians(s, s2): image = np.random.rand(10, 10) im1 = gaussian(image, s, preserve_range=True) im2 = gaussian(image, s2, preserve_range=True) dog = im1 - im2 dog2 = difference_of_gaussians(image, s, s2) assert np.allclose(dog, dog2)
def test_auto_sigma2(s): image = np.random.rand(10, 10) im1 = gaussian(image, s, preserve_range=True) s2 = 1.6 * np.array(s) im2 = gaussian(image, s2, preserve_range=True) dog = im1 - im2 dog2 = difference_of_gaussians(image, s, s2) assert np.allclose(dog, dog2)
def test_preserve_range(): """Test preserve_range parameter.""" ones = np.ones((2, 2), dtype=np.int64) filtered_ones = gaussian(ones, preserve_range=False) assert np.all(filtered_ones == filtered_ones[0, 0]) assert filtered_ones[0, 0] < 1e-10 filtered_preserved = gaussian(ones, preserve_range=True) assert np.all(filtered_preserved == 1.) img = np.array([[10.0, -10.0], [-4, 3]], dtype=np.float32) gaussian(img, 1)
def test_deprecated_multichannel(): a = np.zeros((5, 5, 3)) a[1, 1] = np.arange(1, 4) with expected_warnings(["`multichannel` is a deprecated argument"]): gaussian_rgb_a = gaussian(a, sigma=1, mode='reflect', multichannel=True) # Check that the mean value is conserved in each channel # (color channels are not mixed together) assert np.allclose(a.mean(axis=(0, 1)), gaussian_rgb_a.mean(axis=(0, 1))) # check positional multichannel argument warning with expected_warnings(["Providing the `multichannel` argument"]): gaussian_rgb_a = gaussian(a, 1, None, 'reflect', 0, True)
def test_1d_ok(): """Testing Gaussian Filter for 1D array. With any array consisting of positive integers and only one zero - it should filter all values to be greater than 0.1 """ nums = np.arange(7) filtered = gaussian(nums, preserve_range=True) assert np.all(filtered > 0.1)
def test_preserve_output(dtype): image = np.arange(9, dtype=dtype).reshape((3, 3)) output = np.zeros_like(image, dtype=dtype) gaussian_image = gaussian(image, sigma=1, output=output, preserve_range=True) assert gaussian_image is output
def test_multichannel(): a = np.zeros((5, 5, 3)) a[1, 1] = np.arange(1, 4) gaussian_rgb_a = gaussian(a, sigma=1, mode='reflect', multichannel=True) # Check that the mean value is conserved in each channel # (color channels are not mixed together) assert np.allclose([a[..., i].mean() for i in range(3)], [gaussian_rgb_a[..., i].mean() for i in range(3)]) # Test multichannel = None with expected_warnings(['multichannel']): gaussian_rgb_a = gaussian(a, sigma=1, mode='reflect') # Check that the mean value is conserved in each channel # (color channels are not mixed together) assert np.allclose([a[..., i].mean() for i in range(3)], [gaussian_rgb_a[..., i].mean() for i in range(3)]) # Iterable sigma gaussian_rgb_a = gaussian(a, sigma=[1, 2], mode='reflect', multichannel=True) assert np.allclose([a[..., i].mean() for i in range(3)], [gaussian_rgb_a[..., i].mean() for i in range(3)])
def test_negative_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. with pytest.raises(ValueError): gaussian(a, sigma=-1.0) with pytest.raises(ValueError): gaussian(a, sigma=[-1.0, 1.0]) with pytest.raises(ValueError): gaussian(a, sigma=np.asarray([-1.0, 1.0]))
def test_negative_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. with testing.raises(ValueError): gaussian(a, sigma=-1.0) with testing.raises(ValueError): gaussian(a, sigma=[-1.0, 1.0]) with testing.raises(ValueError): gaussian(a, sigma=np.asarray([-1.0, 1.0]))
def ConvertSkech(input_path, output_path): extensions = ['jpg'] file_list = [] for extension in extensions: file_glob = os.path.join(input_path, '*.' + extension) # get all the images of one folder of the input_path file_list.extend(glob.glob(file_glob)) for image in file_list: img = io.imread(image) img = img_as_float(img) I_out = (img[:, :, 0] + img[:, :, 1] + img[:, :, 2]) / 3.0 I_invert = 1.0 - I_out I_gauss = gaussian(I_invert, sigma=5) delta = 0.0001 I_dodge = (I_out + delta) / (1 + delta - I_gauss) th = 0.95 mask = I_dodge > th max_val = I_dodge.max() I_dodge = I_dodge * (1 - mask) + (th + I_dodge / max_val * (1 - th)) * mask img_out = I_dodge.copy() image_name = os.path.basename(os.path.splitext(image)[0]) image_suffix = os.path.splitext(image)[1] scipy.misc.toimage(img_out).save(output_path + image_name + image_suffix)
def test_energy_decrease(): a = np.zeros((3, 3)) a[1, 1] = 1. gaussian_a = gaussian(a, sigma=1, mode='reflect') assert gaussian_a.std() < a.std()
def test_default_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. assert np.all(gaussian(a) == gaussian(a, sigma=1))
def test_null_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. assert np.all(gaussian(a, 0) == a)
def test_preserve_range(): img = np.array([[10.0, -10.0], [-4, 3]], dtype=np.float32) gaussian(img, 1, preserve_range=True)
def test_4d_ok(): img = np.zeros((5,) * 4) img[2, 2, 2, 2] = 1 res = gaussian(img, 1, mode='reflect') assert np.allclose(res.sum(), 1)
def blur(image): return gaussian(image.astype(float), sigma=2)
def test_null_sigma(): a = np.zeros((3, 3)) a[1, 1] = 1. assert np.all(gaussian(a, 0, preserve_range=True) == a)
def test_output_error(): image = np.arange(9, dtype=np.float32).reshape((3, 3)) output = np.zeros_like(image, dtype=np.uint8) with pytest.raises(ValueError): gaussian(image, sigma=1, output=output, preserve_range=True)
from skimage import img_as_float import matplotlib.pyplot as plt from skimage import io from skimage.filters._gaussian import gaussian file_name='D:/Visual Effects/PS Algorithm/4.jpg' img=io.imread(file_name) img = img_as_float(img) I_out = (img[:, :, 0] + img[:, :, 1] + img[:, :, 2]) / 3.0 I_invert = 1.0 - I_out I_gauss = gaussian(I_invert, sigma=5) delta = 0.0001 I_dodge = (I_out + delta) / (1 + delta - I_gauss) th = 0.95 mask = I_dodge > th max_val = I_dodge.max() I_dodge = I_dodge * (1-mask) + (th + I_dodge / max_val * (1 - th)) * mask img_out = I_dodge.copy() plt.figure(1) plt.imshow(img) plt.axis('off') plt.figure(2)
from skimage import img_as_float import matplotlib.pyplot as plt from skimage import io from skimage.filters._gaussian import gaussian file_name = 'D:/Visual Effects/PS Algorithm/4.jpg' img = io.imread(file_name) img = img_as_float(img) img_out = gaussian(img, sigma=3, multichannel=True) plt.figure(1) plt.imshow(img) plt.axis('off') plt.figure(2) plt.imshow(img_out) plt.axis('off')