我正在查看存在于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))
尽管这确实使我的图像嘈杂,但我真的不知道如何以任何方式量化相对于初始图像我要添加的噪声量。有人知道更好的方法吗?
答案 0 :(得分:1)
您的函数存在错误,实际上是random。正态是高斯噪声函数,不是均匀分布,因此[-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中所读到的那样,随机法线具有均值和标准差。如果要模拟噪声,则平均值应为零,标准偏差应等于噪声的大小。
这样,您只需一个参数即可控制噪声量