如何量化添加到图像中的噪声量

How to quantify the amount of noise you add to an image

我正在查看存在于 3D 体积中的灰度数据,该数据可以导入为值从 -1 到 1 的 3D numpy 数组。数据是在成像系统上获取的,并描绘了具有更高值的 3D 体积和背景噪声作为随机值。

为了测试对齐程序,我目前正在尝试向这个 numpy 数组添加不同级别的噪声。我目前的方法如下:

def RandomNoise():
    """Function to make a numpy array of 100x100x100 of random noise"""
    NoiseArray = np.random.normal(-0.5,0.5,size=(100,100,100))

    return NoiseArray

然后我只是改变值 -0.5 或 0.5 来改变我创造的噪音量。

然后我通过以下方式添加噪音:

Noise = RandomNoise()

Volumewithnoise = (np.clip((Volume + Noise) * (1 - Volume), -1, 1))

虽然这确实让我的图像变得嘈杂,但我真的不知道如何以任何方式量化我添加的相对于初始图像的噪声量。有谁知道更好的方法吗?

你的函数有错误,实际上random.normal是一个高斯噪声函数而不是均匀分布,所以[-0.5, 0.5]并不意味着噪声在0.5和-0.5之间

你应该像这样制作你的函数

def RandomNoise( magnitude ):
    """Function to make a numpy array of 100x100x100 of random noise"""
    NoiseArray = np.random.normal(0, magnitude ,size=(100,100,100))

    return NoiseArray

正如您在 docs 中看到的那样,随机正态分布具有均值和标准差。如果要模拟噪声,则均值应为零,标准差等于噪声的大小。

所以这样你就有一个参数来控制噪声量