Group work for a Monash Research Methods course
1import numpy as np
2
3def image_cut(image, size0, size1):
4 """
5 Takes an image and cuts it into smaller images of specified dimensions.
6 Images must be cut before axis rolling.
7 """
8 dims = image.shape
9 assert dims[0] >= size0
10 assert dims[1] >= size1
11 return np.array([image[size0 * i:size0 * (i+1), size1 * j:size1 * (j+1), :] \
12 for i in range(dims[0] // size0) for j in range(dims[1] // size1)] + \
13 [image[size0 * i:size0 * (i+1), dims[1]-size1:] \
14 for i in range(dims[0] // size0) if dims[1] % size1 != 0] + \
15 [image[dims[0]-size0:, size1 * j:size1 * (j+1)] \
16 for j in range(dims[1] // size1) if dims[0] % size0 != 0] \
17 )
18
19
20if __name__ == '__main__':
21 # test = np.random.rand(5,4,3)
22 test = np.array([[
23 [k + 4*j, k + 4*j] for k in range(4)
24 ] for j in range(5)])
25 print(test)
26 print(image_cut(test, 2, 2))