知乎同名賬号同步釋出。如有錯誤,歡迎指正。
目錄
- 問題來源
- 一、基礎知識和生成AWGN步驟
- 二、從MATLAB生成含AWGN的noisy image入手分析
-
- 二.0、先放結論
- 三、小結
問題來源
讀這兩篇文章的時候,發現文中AWGN(加性高斯白噪聲)的方差用σ²表示,noise level用σ表示,符号使用似乎出現了沖突;
又發現作者預設已知噪聲模型 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2),生成的含噪聲圖像的ground-truth的noise level似乎也随之确定,一切都在暗示AWGN的方差和其noise level有千絲萬縷的關系。
一、基礎知識和生成AWGN步驟
引用這篇文章對matlab生成AWGN的講解,補充一些基礎知識:
awgn(x,snr,’measured’,'linear’)
的作用是向x加入信噪比為
snr
的AWGN。所謂信噪比,公式如下:
s n r = s i g P o w e r / n o i s e P o w e r snr = sigPower/noisePower snr=sigPower/noisePower
即信号的強度/噪聲的強度,或者信号功率/噪聲功率。
sigPower的計算方法隻需要看matlab代碼就一目了然:
sigPower = sum(abs(sig(: )).^2)/length(sig(: ))
(
.^2
指的是對矩陣每個元素都求平方,上述分母起到規範化的作用,
sig(: )
表示信号)
awgn()
函數的第一步,就是估計信号x的強度sigPower,然後計算出noisePower:
n o i s e P o w e r = s i g P o w e r / s n r noisePower = sigPower / snr noisePower=sigPower/snr
假如說要生成的噪聲的size是[1000, 1],那麼最終要添加的噪聲信号就是:
sqrt(noisePower) * randn(n, 1)
其中randn生成的是 N ( 0 , 1 ) N(0, 1) N(0,1)的噪聲,那麼這個噪聲信号服從的分布就是:
N ( 0 , n o i s e P o w e r ) N(0, noisePower) N(0,noisePower)
是以網上有篇文章,文中一句話說:
對于高斯噪聲,其方差和功率(噪聲強度)是一樣的
二、從MATLAB生成含AWGN的noisy image入手分析
二.0、先放結論
noisePower就是方差σ²,σ就是paper中的noise level。
取自FFDNet paper:對于clean image x,生成noise level為σ的noisy y:
imnoise(x, ’gaussian’, 0, (σ/255)²)
作用就是向x中加入高斯噪聲,這個噪聲服從的分布為:
N ( 0 , ( σ / 255 ) 2 ) N(0, (\sigma/255)^2) N(0,(σ/255)2)
當然,分母的255可能是因為将原始圖檔的像素值縮放到了0-1之間,是以noise level也需要除以255。如果沒有這樣做,那麼顯然噪聲服從的分布就是:
N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2)
那麼顯然,結合目前搜集到的資訊,noisePower就是方差σ²,σ就是paper中的noise level。再看一個FFDNet中的片段佐證這個觀點:
To synthesize spatially variant AWGN, we first generate an AWGN image v1 with unit standard deviation and a noise level map M of the same size. Then, element-wise multiplication is applied on v1 and M to produce the spatially variant AWGN, i.e., v = v1 ⊙ M.
上述noise level map M就是由不同位置的noise level σ組合而成的map。先生成v1,它擁有機關标準差,然後讓M(M中元素為noise level σ)和它做element-wise的相乘,顯然得到的v就擁有方差σ²,而論文稱σ為noise level,不就和上面的觀點對應上了麼。
再看CBDNet中所提到:
For a batch of real images, due to the unavailability of ground-truth noise level map, only Lrec and LT V are considered in training.
對于真實資料,是無法得到ground-truth的noise level map的,我當時很疑惑的點在于:對于合成資料,也沒有辦法得到ground-truth的noise level map,為什麼paper似乎在預設這個是能夠得到的?然而實際上,paper中提到了合成資料中噪聲服從的分布:
N ( 0 , σ 2 ( L ) ) N(0, \sigma^2(L)) N(0,σ2(L))
其中 σ 2 ( L ) = L ⋅ σ s 2 + σ c 2 \sigma^2(L) = L · \sigma^2_s+\sigma^2_c σ2(L)=L⋅σs2+σc2,(L是irradiance image)。
這樣,合成資料的ground-truth的noise level map不就直接是 σ ( L ) \sigma(L) σ(L)了麼(如果本文之前的推斷都沒問題的話)。
三、小結
-
确定的事情:
對于高斯噪聲,方差σ²就是噪聲強度noisePower;
如果已知噪聲服從的高斯分布,那麼對于根據這個分布+clean image合成的noisy image,可以直接得出其ground-truth的noise level or noise level map。
-
不太确定的事情:
另外讀到這裡你肯定發現了論文中的noise level和本文中的noisePower不是一個東西,網上沒有找到兩者特别明顯的概念差別,是以noise level可能是作者對σ起的專門的稱謂,這個稱謂是否為圖像去噪領域預設叫法,我還不太清楚。