图像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法
圖像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法
- 圖像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法
- 1. 基本原理
- 2. matlab代碼
- 3. 補充
圖像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法
1. 基本原理
Variance Stabilizing Transform算法指將高斯泊松噪聲轉化為高斯噪聲的一系列算法,對該算法最早的研究開始于1918年,可以說是非常經典了,其在圖像降噪上的應用可以參考坦佩雷大學Alessandro Foi組的一系列工作,著名的BM3D算法也是由這個組提出的,這里我們主要介紹其中應用較為廣泛的的Generalization Anscombe Transform算法。
首先,我們知道,實際由圖像傳感器拍攝的圖像上的噪聲是接近高斯泊松噪聲,高斯噪聲部分好理解,通常由熱噪聲造成,而泊松噪聲主要是由于光照響應非均勻性造成的,所謂光照響應非均勻性就是說傳感器接受光子的不確定性是和信號相關的。下圖就展示了高斯泊松噪聲的特點,方差曲線隨著均值增大而逐漸升高的部分即為泊松噪聲,而方差曲線上抖動的部分即為高斯噪聲。
- *高斯泊松噪聲數學建模如下:x^=ap+n\hat{x}=a p+n x^=ap+nη=x^?y^\eta=\hat{x}-\hat{y} η=x^?y^?其中η\etaη就是高斯泊松噪聲,x^\hat{x}x^為帶噪圖像,y^\hat{y}y^?為無噪圖像,aaa為泊松噪聲增益,p~P(y^/a)p \sim \mathcal{P}(\hat{y} /a)p~P(y^?/a)為泊松噪聲部分,其均值mmm和方差vvv滿足m=v=y^/am=v=\hat{y} /am=v=y^?/a**,n~N(m,σ^2)n \sim \mathcal{N}\left(m, \hat{\sigma}^{2}\right)n~N(m,σ^2)為高斯噪聲部分
我們目前使用的大多數算法,例如NLM, BM3D,都是針對高斯噪聲模型設計的,其效果在高斯泊松噪聲圖像上會大打折扣,如果我們能有這么一種變換將高斯泊松噪聲轉化為高斯噪聲,對高斯噪聲降噪后再將圖像變換回去,不就非常完美了嗎,這種變換就是Generalization Anscombe Transform算法。下面介紹該變換:
正變換:f(x^)={2aax^+38a2+σ^2?am,x^>?38a?σ^2a+m0,x^≤?38a?σ^2a+mf(\hat{x})=\left\{\begin{array}{ll} \frac{2}{a} \sqrt{a \hat{x}+\frac{3}{8} a^{2}+\hat{\sigma}^{2}-a m}, & \hat{x}>-\frac{3}{8} a-\frac{\hat{\sigma}^{2}}{a}+m \\ 0, & \hat{x} \leq-\frac{3}{8} a-\frac{\hat{\sigma}^{2}}{a}+m \end{array}\right. f(x^)={a2?ax^+83?a2+σ^2?am?,0,?x^>?83?a?aσ^2?+mx^≤?83?a?aσ^2?+m?如果我們對增益進行歸一化x=x^?ma,σ=σ^ax=\frac{\hat{x}-m}{a}, \sigma=\frac{\hat{\sigma}}{a} x=ax^?m?,σ=aσ^?也就是說如果我們將輸入圖像歸一化為一個單位泊松變量疊加一個均值為零,標準差為σ\sigmaσ的高斯噪聲,那么該變換可以簡化為fσ(x)={2x+38+σ2,x>?38?σ20,x≤?38?σ2f_{\sigma}(x)=\left\{\begin{array}{ll} 2 \sqrt{x+\frac{3}{8}+\sigma^{2}}, & x>-\frac{3}{8}-\sigma^{2} \\ 0, & x \leq-\frac{3}{8}-\sigma^{2} \end{array}\right. fσ?(x)={2x+83?+σ2?,0,?x>?83??σ2x≤?83??σ2?
逆變換:
設yyy為降噪后的圖像,閉合形式可以近似為fσ(y)?1=14y2+1432y?1?118y?2+5832y?3?18?σ2f_{\sigma}(y)^{-1}= \frac{1}{4} y^{2}+\frac{1}{4} \sqrt{\frac{3}{2}} y^{-1}-\frac{11}{8} y^{-2}+\frac{5}{8} \sqrt{\frac{3}{2}} y^{-3}-\frac{1}{8}-\sigma^{2} fσ?(y)?1=41?y2+41?23??y?1?811?y?2+85?23??y?3?81??σ2當σ\sigmaσ和yyy特別大時,其漸近逆為:fσ(y)?1=14y2?18?σ2f_{\sigma}(y)^{-1}=\frac{1}{4} y^{2}-\frac{1}{8}-\sigma^{2} fσ?(y)?1=41?y2?81??σ2
我們可以來看下Generalized Anscombe Transform算法正變換后方差如下圖(b)所示:
可以看到,當σ=0.01,,1,2,3\sigma=0.01,,1,2,3σ=0.01,,1,2,3時,通過正變換后方差穩定在1左右,而不隨yyy發生變化了,也就是通過Generalization Anscombe Transform算法將高斯泊松噪聲轉變成了高斯噪聲
2. matlab代碼
這個算法的代碼很簡單,就不貼在這里了,大家可以去參考matlab代碼Denoising software for Poisson and Poisson-Gaussian data,這里有兩點需要注意:
3. 補充
Anscombe Transform為Generalization Anscombe Transfrom的特殊形式,Generalization Anscombe Transform是將高斯泊松噪聲轉換為近似高斯分布,而Anscombe Transform可以將泊松分布轉換為近似高斯分布。例如,泊松分布變量x~P(x^)x \sim \mathcal{P}(\hat{x})x~P(x^),有m=v=x^m=v=\hat{x}m=v=x^,Anscombe Transform正變換為:A:x→2x+38A: x \rightarrow 2 \sqrt{x+\frac{3}{8}} A:x→2x+83??Anscombe Transform逆變換為:A?1:y→(y2)2?38A^{-1}: y \rightarrow\left(\frac{y}{2}\right)^{2}-\frac{3}{8} A?1:y→(2y?)2?83?以上形式逆變換為代數逆,該逆變換會給均值引入不友好的偏置,因此還有一個精確無偏逆的閉合形式的近似解:y→14y2+1432y?1?118y?2+5832y?3?18y \rightarrow \frac{1}{4} y^{2}+\frac{1}{4} \sqrt{\frac{3}{2}} y^{-1}-\frac{11}{8} y^{-2}+\frac{5}{8} \sqrt{\frac{3}{2}} y^{-3}-\frac{1}{8} y→41?y2+41?23??y?1?811?y?2+85?23??y?3?81?
Genrealization Anscombe Transform的推到過程可以參考博客VST變換
我們可以從另一個角度來理解高斯泊松噪聲這個問題,高斯泊松噪聲實際上就是信號強的地方噪聲大,信號小的地方噪聲小這樣一個噪聲分布,Generalization Anscombe Transform是通過將不同區域噪聲變得一致來解決這個問題,那在設計降噪算法的時候是不是也可以通過在不同區域實施不同強度的降噪水平來解決這個問題呢?
此外,這里我寫一個各種算法的總結目錄圖像降噪算法——圖像降噪算法總結,對圖像降噪算法感興趣的同學歡迎參考
總結
以上是生活随笔為你收集整理的图像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eigen有哪些需要注意的操作
- 下一篇: 图像降噪算法——DnCNN / FFDN