我正在查看 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/