高斯噪聲是一個均值爲 0 方差爲 的正態分佈,是一個加性噪聲。但要正確地給圖片添加高斯噪聲,還要取決於程序中讀入圖片的數據格式。python
若是圖片的數據格式爲 uint8,也即數據的範圍爲 [0, 255],那麼直接生成對應方差的噪聲,而後加到圖片上去。dom
# clean_image uint8 (128, 128)
noise_image = clean_image + np.random.randn(128, 128) * sigma
複製代碼
此處 np.random.rand(128, 128) 生成一個均值爲 0 方差爲 1 的正態分佈,而後咱們乘以 ,將方差調整到
,再加到圖片上便可。ui
若是圖片的數據格式爲浮點型,並且數據的範圍爲 [0, 1],那麼咱們須要對噪聲的方差作一些調整,真正加到圖片上的噪聲方差應該爲 ,也即
。spa
# clean_image float32 (128, 128)
noise_image = clean_image + np.random.randn(128, 128) * sigma / 255
複製代碼
此處 np.random.rand(128, 128) 生成一個均值爲 0 方差爲 1 的正態分佈,而後咱們乘以 ,將真實方差調整到
,再加到圖片上便可。code
在 MATLAB 中,imnoise 會對圖片進行處理,將像素值縮放到 [0, 1] 之間,所以咱們在傳入方差的時候也必需要先進行調整。cdn
noise_image = imnoise(clean_image, 'gaussian', 0, sigma^2/255^2)
複製代碼
有時候,咱們真的須要對知識抱有敬畏之心,任何一個小的知識點都沒有那麼簡單。但若是你在這些小的知識點上犯了小錯誤,後果倒是不可想象的。千里之堤毀於蟻穴,與君共勉!圖片
獲取更多精彩,請關注「seniusen」! string