import numpy as np
import matplotlib.pyplot as plt
import numpy.matlib
def generate_G(shape):#(width,height)
IMAGE_WIDTH, IMAGE_HEIGHT=shape
center_x=IMAGE_WIDTH/2
center_y=IMAGE_HEIGHT/2
R = np.sqrt(center_x**2 + center_y**2)
mask_x = np.matlib.repmat(center_x, IMAGE_HEIGHT, IMAGE_WIDTH)
mask_y = np.matlib.repmat(center_y, IMAGE_HEIGHT, IMAGE_WIDTH)
x1 = np.arange(IMAGE_WIDTH)
x_map = np.matlib.repmat(x1, IMAGE_HEIGHT, 1)
y1 = np.arange(IMAGE_HEIGHT)
y_map = np.matlib.repmat(y1, IMAGE_WIDTH, 1)
y_map = np.transpose(y_map)
Gauss_map = np.sqrt((x_map - mask_x) ** 2 + (y_map - mask_y) ** 2)
Gauss_map = np.exp(-2.5 * Gauss_map / R)
Gauss_map=(Gauss_map-np.min(Gauss_map))/(np.max(Gauss_map)-np.min(Gauss_map)+1e-20)
return Gauss_map*255
if __name__=='__main__':
Gauss_map=generate_G((100,100))
plt.figure()
plt.imshow(Gauss_map, plt.cm.gray)
plt.imsave('out_2.jpg', Gauss_map, cmap=plt.cm.gray)
plt.show()
python生成高斯蒙版
于 2023-03-08 16:16:21 首次发布
该代码定义了一个函数generate_G,用于创建指定尺寸的高斯滤波器图像。它首先计算中心点坐标,然后利用NumPy的矩阵操作创建二维坐标网格。接着,计算每个像素点到中心点的距离,应用高斯函数并归一化,最后将结果乘以255以适应0-255的灰度图像范围。在主程序中,生成了一个100x100的高斯映射,并显示及保存了结果图像。
摘要由CSDN通过智能技术生成