1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
import cv2 import numpy as np import matplotlib.pyplot as plt # Grayscale def BGR2GRAY(img): # Grayscale gray = 0.2126 * img[..., 2 ] + 0.7152 * img[..., 1 ] + 0.0722 * img[..., 0 ] return gray # Bi-Linear interpolation def bl_interpolate(img, ax = 1. , ay = 1. ): if len (img.shape) > 2 : H, W, C = img.shape else : H, W = img.shape C = 1 aH = int (ay * H) aW = int (ax * W) # get position of resized image y = np.arange(aH).repeat(aW).reshape(aW, - 1 ) x = np.tile(np.arange(aW), (aH, 1 )) # get position of original position y = (y / ay) x = (x / ax) ix = np.floor(x).astype(np. int ) iy = np.floor(y).astype(np. int ) ix = np.minimum(ix, W - 2 ) iy = np.minimum(iy, H - 2 ) # get distance dx = x - ix dy = y - iy if C > 1 : dx = np.repeat(np.expand_dims(dx, axis = - 1 ), C, axis = - 1 ) dy = np.repeat(np.expand_dims(dy, axis = - 1 ), C, axis = - 1 ) # interpolation out = ( 1 - dx) * ( 1 - dy) * img[iy, ix] + dx * ( 1 - dy) * img[iy, ix + 1 ] + ( 1 - dx) * dy * img[iy + 1 , ix] + dx * dy * img[iy + 1 , ix + 1 ] out = np.clip(out, 0 , 255 ) out = out.astype(np.uint8) return out # make image pyramid def make_pyramid(gray): # first element pyramid = [gray] # each scale for i in range ( 1 , 6 ): # define scale a = 2. * * i # down scale p = bl_interpolate(gray, ax = 1. / a, ay = 1. / a) # add pyramid list pyramid.append(p) return pyramid # Read image img = cv2.imread( "../bird.png" ).astype(np. float ) gray = BGR2GRAY(img) # pyramid pyramid = make_pyramid(gray) for i in range ( 6 ): cv2.imwrite( "out_{}.jpg" . format ( 2 * * i), pyramid[i].astype(np.uint8)) plt.subplot( 2 , 3 , i + 1 ) plt.title( '1/' + str ((i + 1 ) * * 2 ) ) plt.imshow(pyramid[i], cmap = 'gray' ) plt.axis( 'off' ) plt.xticks(color = "None" ) plt.yticks(color = "None" ) plt.show() |
以上就是python实现图像高斯金字塔的示例代码的详细内容,更多关于python 图像高斯金字塔的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/wojianxin/p/12565234.html