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

标签 python numpy noise

我正在查看 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 中所读到的那样随机正态有平均值和标准差。如果要模拟噪声,平均值应为零,标准差相当于噪声的大小。

这样你就可以用一个参数来控制噪音量

关于python - 如何量化添加到图像中的噪声量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083777/

相关文章:

python - 在 Amazon EC2 上安装 numpy

python - 使用python降噪将其他人的声音视为噪音

python - 将函数应用于 ndarray 的 0 维

python - 将 2D numpy 数组重组为 3D

python - 了解python的主要方法

Python Pandas 在中心指示器后去除字母 "|"

python - 使用python生成编码器信号波形

javascript - 如果它们相距很远,则将点数组分成多个点数组

python - 是否可以在子进程中运行函数而无需线程或编写单独的文件/脚本。

python - Jinja2 模板渲染 {{variable}} 代替空字符串(如果未设置变量)