Python 我想将噪波应用于3D numpy阵列所描绘的体积

Python 我想将噪波应用于3D numpy阵列所描绘的体积,python,numpy,image-processing,noise-generator,Python,Numpy,Image Processing,Noise Generator,我有一个灰度卷,其中包含一个感兴趣的对象。我可以将它作为一个浮动介于-1和1之间的三维numpy数组导入python 我的问题有两个: 负浮点数不应该真的存在,但是我不知道如何用随机正浮点数替换每个负浮点数。我过去用于数组替换的方法对0以下的所有数字应用相同的规则。在此方面的任何帮助都将不胜感激。我试过下面这一行,但很明显,最后都被一个随机数取代了: numpyarray[numpyarray < 0] = random.uniform(0,1) 然后我可以把我的体积乘以这个数组,但是它

我有一个灰度卷,其中包含一个感兴趣的对象。我可以将它作为一个浮动介于-1和1之间的三维numpy数组导入python

我的问题有两个:

  • 负浮点数不应该真的存在,但是我不知道如何用随机正浮点数替换每个负浮点数。我过去用于数组替换的方法对0以下的所有数字应用相同的规则。在此方面的任何帮助都将不胜感激。我试过下面这一行,但很明显,最后都被一个随机数取代了:

    numpyarray[numpyarray < 0] = random.uniform(0,1)
    
    然后我可以把我的体积乘以这个数组,但是它不能很好地维护感兴趣的对象


    我想知道我是否能画出一条曲线,并且取决于曲线上的强度将定义如何实现噪声,但我很难想象这一切将如何工作。任何帮助都将不胜感激

    要用随机值替换负值,一种简单的方法是:

    numpyarray = np.where(numpyarray < 0, np.random.uniform(0, 1, size=numpyarray.shape), numpyarray)
    
    使用
    (1-numpyarray)
    将使音量中的强度越高,噪音越小。您还可以将
    (1-numpyarray)**k
    与一些
    k>0
    或类似于
    np.exp(1-1/(1-numpyarray+eps))的指数形式一起使用
    。你也可以有一些规则,比如“应用10%的噪音,并根据智能调整其他90%”

    numpyarray = np.where(numpyarray < 0, np.random.uniform(0, 1, size=numpyarray.shape), numpyarray)
    
    m = numpyarray < 0
    numpyarray[m] = np.random.uniform(0, 1, size=np.count_nonzero(m))
    
    numpyarray_noise = np.clip(numpyarray + RandomNoise() * (1 - numpyarray), 0, 1)