mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-28 02:30:57 +08:00
c0a0490eed
Fix handling of multiple warnings Update all test __init__ files Update segmentation pkg Update the color pkg Update the exposure pkg Update the filters pkg Update the io pkg Update the measure pkg Update morphology package Restructure test setup function Add expected_warnings to __all__ Update restoration pkg. Remove explicit filter check since it is done elsewhere Fix the image test helpers Update the transform pkg Fix util pkg Update viewer pkg
162 lines
4.4 KiB
Python
162 lines
4.4 KiB
Python
import numpy as np
|
|
from nose.tools import raises
|
|
from numpy.testing import assert_equal, assert_warns
|
|
|
|
from skimage.util.shape import view_as_blocks, view_as_windows
|
|
from skimage._shared._warnings import expected_warnings
|
|
|
|
|
|
@raises(TypeError)
|
|
def test_view_as_blocks_block_not_a_tuple():
|
|
A = np.arange(10)
|
|
view_as_blocks(A, [5])
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_blocks_negative_shape():
|
|
A = np.arange(10)
|
|
view_as_blocks(A, (-2,))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_blocks_block_too_large():
|
|
A = np.arange(10)
|
|
view_as_blocks(A, (11,))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_blocks_wrong_block_dimension():
|
|
A = np.arange(10)
|
|
view_as_blocks(A, (2, 2))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_blocks_1D_array_wrong_block_shape():
|
|
A = np.arange(10)
|
|
view_as_blocks(A, (3,))
|
|
|
|
|
|
def test_view_as_blocks_1D_array():
|
|
A = np.arange(10)
|
|
B = view_as_blocks(A, (5,))
|
|
assert_equal(B, np.array([[0, 1, 2, 3, 4],
|
|
[5, 6, 7, 8, 9]]))
|
|
|
|
|
|
def test_view_as_blocks_2D_array():
|
|
A = np.arange(4 * 4).reshape(4, 4)
|
|
B = view_as_blocks(A, (2, 2))
|
|
assert_equal(B[0, 1], np.array([[2, 3],
|
|
[6, 7]]))
|
|
assert_equal(B[1, 0, 1, 1], 13)
|
|
|
|
|
|
def test_view_as_blocks_3D_array():
|
|
A = np.arange(4 * 4 * 6).reshape(4, 4, 6)
|
|
B = view_as_blocks(A, (1, 2, 2))
|
|
assert_equal(B.shape, (4, 2, 3, 1, 2, 2))
|
|
assert_equal(B[2:, 0, 2], np.array([[[[52, 53],
|
|
[58, 59]]],
|
|
[[[76, 77],
|
|
[82, 83]]]]))
|
|
|
|
|
|
@raises(TypeError)
|
|
def test_view_as_windows_input_not_array():
|
|
A = [1, 2, 3, 4, 5]
|
|
view_as_windows(A, (2,))
|
|
|
|
|
|
@raises(TypeError)
|
|
def test_view_as_windows_window_not_tuple():
|
|
A = np.arange(10)
|
|
view_as_windows(A, [2])
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_windows_wrong_window_dimension():
|
|
A = np.arange(10)
|
|
view_as_windows(A, (2, 2))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_windows_negative_window_length():
|
|
A = np.arange(10)
|
|
view_as_windows(A, (-1,))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_windows_window_too_large():
|
|
A = np.arange(10)
|
|
view_as_windows(A, (11,))
|
|
|
|
|
|
@raises(ValueError)
|
|
def test_view_as_windows_step_below_one():
|
|
A = np.arange(10)
|
|
view_as_windows(A, (11,), step=0.9)
|
|
|
|
def test_view_as_windows_1D():
|
|
A = np.arange(10)
|
|
window_shape = (3,)
|
|
B = view_as_windows(A, window_shape)
|
|
assert_equal(B, np.array([[0, 1, 2],
|
|
[1, 2, 3],
|
|
[2, 3, 4],
|
|
[3, 4, 5],
|
|
[4, 5, 6],
|
|
[5, 6, 7],
|
|
[6, 7, 8],
|
|
[7, 8, 9]]))
|
|
|
|
|
|
def test_view_as_windows_2D():
|
|
A = np.arange(5 * 4).reshape(5, 4)
|
|
window_shape = (4, 3)
|
|
B = view_as_windows(A, window_shape)
|
|
assert_equal(B.shape, (2, 2, 4, 3))
|
|
assert_equal(B, np.array([[[[0, 1, 2],
|
|
[4, 5, 6],
|
|
[8, 9, 10],
|
|
[12, 13, 14]],
|
|
[[1, 2, 3],
|
|
[5, 6, 7],
|
|
[9, 10, 11],
|
|
[13, 14, 15]]],
|
|
[[[4, 5, 6],
|
|
[8, 9, 10],
|
|
[12, 13, 14],
|
|
[16, 17, 18]],
|
|
[[5, 6, 7],
|
|
[9, 10, 11],
|
|
[13, 14, 15],
|
|
[17, 18, 19]]]]))
|
|
|
|
|
|
def test_view_as_windows_with_skip():
|
|
A = np.arange(20).reshape((5, 4))
|
|
B = view_as_windows(A, (2, 2), step=2)
|
|
assert_equal(B, [[[[0, 1],
|
|
[4, 5]],
|
|
[[2, 3],
|
|
[6, 7]]],
|
|
[[[8, 9],
|
|
[12, 13]],
|
|
[[10, 11],
|
|
[14, 15]]]])
|
|
|
|
C = view_as_windows(A, (2, 2), step=4)
|
|
assert_equal(C.shape, (1, 1, 2, 2))
|
|
|
|
|
|
def test_views_non_contiguous():
|
|
A = np.arange(16).reshape((4, 4))
|
|
A = A[::2, :]
|
|
|
|
assert_warns(RuntimeWarning, view_as_blocks, A, (2, 2))
|
|
assert_warns(RuntimeWarning, view_as_windows, A, (2, 2))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
np.testing.run_module_suite()
|