python生成高斯蒙版

该代码定义了一个函数generate_G,用于创建指定尺寸的高斯滤波器图像。它首先计算中心点坐标,然后利用NumPy的矩阵操作创建二维坐标网格。接着,计算每个像素点到中心点的距离,应用高斯函数并归一化,最后将结果乘以255以适应0-255的灰度图像范围。在主程序中,生成了一个100x100的高斯映射,并显示及保存了结果图像。
摘要由CSDN通过智能技术生成
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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值