簡體   English   中英

根據像素值向圖像添加噪聲

[英]Adding noise to image based on pixel value

我想根據百分比為灰度圖像添加高斯噪聲在此處輸入圖像描述

我想將眼睛區域中任何像素強度值的 5% 作為噪聲添加到整個圖像中,所以我想要做的是 select 眼睛區域內的任何像素並給定它們的簡單像素強度添加 5% 的高斯噪聲到整個圖像。

def generate_noisy_image(x, variance):
    noise = np.random.normal(0, variance, (1, x.shape[0]))
    return x + noise

def loadimage(path):
    filepath_list = listdir(path)
    for filepath in filepath_list:
        img = Image.open(path + filepath)
        img = img.resize((81, 150))
        img = np.asarray(img)
        generate_noisy_image(img, 0.025)
        img = Image.fromarray(img)
        img.save('C:/Users/noisy-images/'+filepath, 'JPEG')



loadimage('C:/Users/my_images/')

ValueError:操作數無法與形狀一起廣播 (150,81) (1,150)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-96-1bebb687f5e7> in <module>
     11 
     12 
---> 13 loadimage('source path from images')
     14 

<ipython-input-96-1bebb687f5e7> in loadimage(path)
      5         img = img.resize((81, 150))
      6         img = np.asarray(img)
----> 7         generate_noisy_image(img, 0.025)
      8         print(generate_noisy_image.shape)
      9         img = Image.fromarray(img)

<ipython-input-95-7cc3346953f6> in generate_noisy_image(x, variance)
      1 def generate_noisy_image(x, variance):
      2     noise = np.random.normal(0, variance, (1, x.shape[0]))
----> 3     return x + noise

非常基本的示例,破解np.array的 dims 以使其工作。

import numpy as np


def generate_noisy_image(x: np.array, variance: float) -> np.array:
    noise = np.random.normal(loc=0, scale=variance, size=x.shape)
    return x + noise


if __name__ == "__main__":
    img_2D = np.random.random(size=(81, 150))
    img_2D_fake = generate_noisy_image(x=img_2D, variance=0.05)

    var = np.var(img_2D_fake - img_2D)
    sigma_by_var = var ** 0.5

    sigma = np.std(img_2D_fake - img2D)


    print(f"variance={var}\nsigma_by_var={sigma_by_var}\nsigma={sigma}")

請記住,標准推導是方差的平方根。 在上面的例子中,它應該打印一個 var ~0.0025 和一個 std ~0.05。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM