基础
ShaneHolmes的图像处理专栏:图像各种噪声及消除方法 中记录了噪声来源、分类和处理噪声的基本方法
高斯白噪声:加性噪声的理想模型,通信系统中的热噪声统计上符合高斯白噪声。
非局部均值去噪(NL-means)
基本思想:像素的估计值
u
^
\hat{u}
u^由与之具有相似邻域结构的像素加权平均得到。其权重
w
(
p
,
q
)
w(p,q)
w(p,q)等于两点的相似度。这个邻域
(
2
r
+
1
)
×
(
2
r
+
1
)
(2r+1)\times(2r+1)
(2r+1)×(2r+1)也称为搜索区域。
u
^
i
(
p
)
=
1
C
(
p
)
∑
q
∈
B
(
p
,
r
)
u
i
(
q
)
w
(
p
,
q
)
\hat{u}_{i}(p)=\frac{1}{C(p)}\sum_{q\in B(p,r)}{u_i(q)w(p,q)}
u^i(p)=C(p)1q∈B(p,r)∑ui(q)w(p,q)
C
(
p
)
=
∑
q
∈
B
(
p
,
r
)
w
(
p
,
q
)
C(p)=\sum_{q\in B(p,r)}{w(p,q)}
C(p)=q∈B(p,r)∑w(p,q)
衡量相似度的方法有非常多,文章中给出的是两个像素的亮度值的差的平方。
d
2
(
B
(
p
,
f
)
,
B
(
q
,
f
)
=
1
3
(
2
f
+
1
)
2
∑
i
=
1
3
∑
j
∈
B
(
0
,
f
)
(
u
i
(
p
+
j
)
−
u
i
(
q
+
j
)
)
2
d^{2}(B(p,f), B(q,f)=\frac{1}{3(2f+1)^2}\sum_{i=1}^{3}{\sum_{j\in B(0,f)}{(u_i(p+j)-u_i(q+j))^2}}
d2(B(p,f),B(q,f)=3(2f+1)21i=1∑3j∈B(0,f)∑(ui(p+j)−ui(q+j))2
降低噪声影响,我们考虑两个像素的邻域
(
2
f
+
1
)
×
(
2
f
+
1
)
(2f+1)\times(2f+1)
(2f+1)×(2f+1),只有邻域相似度高,才能说明这两个像素相似度高。
w
(
p
,
q
)
=
e
−
m
a
x
(
d
2
−
2
σ
2
,
0.0
)
h
2
w(p,q)=e^{-\frac{max(d^2-2\sigma^2, 0.0)}{h^2}}
w(p,q)=e−h2max(d2−2σ2,0.0)
h
h
h是滤波系数,控制指数函数衰减从而改变欧氏距离的权重。
如上图所示,
p
p
p为去噪的点,因为
q
1
q1
q1和
q
2
q2
q2的邻域与
p
p
p相似,所以权重和比较大,而邻域相差比较大的点
q
3
q3
q3的权重值很小。
参考资料:
xiaoluo91 非局部均值去噪(NL-means):含python代码
图像去噪算法:NL-Means和BM3D(转载+个人笔记)
最经典最新的图像去噪算法
论文:
- Antoni Buades, Bartomeu Coll, and Jean-Michel Morel, Non-Local Means Denoising, Image Processing On Line, 1 >(2011). http://dx.doi.org/10.5201/ipol.2011.bcm_nlm
- Jacques Froment, Parameter-Free Fast Pixelwise Non-Local Means Denoising, Image Processing On Line, 4 (2014), pp. 300–326. http://dx.doi.org/10.5201/ipol.2014.120
NL-means加速算法
构造积分图像:
S
t
(
x
)
=
∑
z
1
≤
x
1
,
z
1
≤
x
2
s
t
(
z
)
,
x
=
(
x
1
,
x
2
)
S_t(x)=\sum_{z_{1} \leq x_1, z_{1} \leq x_2}s_t(z),x=(x_1,x_2)
St(x)=z1≤x1,z1≤x2∑st(z),x=(x1,x2)
其中,
s
t
(
z
)
=
∑
i
=
1
3
∑
j
∈
B
(
0
,
f
)
(
u
i
(
p
+
j
)
−
u
i
(
q
+
j
)
)
2
s_t(z)=\sum_{i=1}^{3}\sum_{j\in B(0,f)}(u_i(p+j)-u_i(q+j))^2
st(z)=∑i=13∑j∈B(0,f)(ui(p+j)−ui(q+j))2。
则,计算
x
x
x与
y
=
x
+
t
y=x+t
y=x+t间的距离:
d
2
(
B
(
x
,
f
)
,
B
(
y
,
f
)
)
=
1
3
(
2
f
+
1
)
2
∑
i
=
1
3
∑
j
∈
B
(
0
,
f
)
(
u
i
(
p
+
j
)
−
u
i
(
q
+
j
)
)
2
d^2(B(x,f),B(y,f))=\frac{1}{3(2f+1)^2}\sum_{i=1}^{3}{\sum_{j\in B(0,f)}{(u_i(p+j)-u_i(q+j))^2}}
d2(B(x,f),B(y,f))=3(2f+1)21i=1∑3j∈B(0,f)∑(ui(p+j)−ui(q+j))2
参考资料:
积分图像的应用(二):非局部均值去噪(NL-means)
论文:Jacques Froment, Parameter-Free Fast Pixelwise Non-Local Means Denoising, Image Processing On Line, 4 (2014), pp. 300–326. http://dx.doi.org/10.5201/ipol.2014.120
BM3D 3维块匹配滤波 去噪算法
图像去噪算法大致可以分为:空域方法(spatial method) 利用图片中不同位置的相似信息进行去噪,例如上面的NL-means和NL-Bayes;变换域方法(transform method),转换到其他空间,如频域,在利用对有效信号与噪声的特性进行降噪,例如小波萎缩法。BM3D算法综合了NLM和小波萎缩两种算法,利用了NLM的块之间相关性(inter-patch correlation)和小波萎缩法的块内相关性(intra-patch correclation),是当前行之有效的去噪算法。
BM3D算法流程如上,分为两大步:Step 1 基础估计;Step 2 最终估计。
每个步骤中分为三小步:相似块分组(Grouping),协同滤波(Collaborative Filtering)和聚合(Aggregation)。Step 1中用Hard-thresholding进行协同滤波,Step 2中用维纳滤波方法进行协同滤波。
在资料最经典最新的图像去噪算法中,博文论述的每一步的具体步骤。下文会进行转载与加工。
协同滤波
协同取自字面意思,就是说同组内的 n n n个块以某种合作的方式来滤波。假设每一个块都有独立的二维变换, n n n个块的总有效变换系数为 α n \alpha n αn;然而我们的这一组块取的是相似度高的一些块,这样会有很多冗余信息。所以,作者提出对整租进行三维变换(即对二维变换后的所有块再进行一个一维变换),其有效变换系数近似于 α \alpha α。
两个小块之间的相似度匹配
参考资料:
BM3D图像去噪算法
最经典最新的图像去噪算法
论文:
- K. Dabov, A. Foi, V. Katkovnik, and K. Egiazarian, “Image denoising by sparse 3D transform-domain collaborative filtering,” IEEE Trans. Image Process., vol. 16, no. 8, pp. 2080-2095, August 2007.
- K. Dabov, A. Foi, V. Katkovnik, and K. Egiazarian, “Image denoising with block-matching and 3D filtering,” Proc. SPIE Electronic Imaging '06, no. 6064A-30, San Jose, California, USA, January 2006.
- http://www.cs.tut.fi/~foi/GCF-BM3D/
- Marc Lebrun, An Analysis and Implementation of the BM3D Image Denoising Method, Image Processing On Line, 2 (2012), pp. 175–213.
Randomized Redundant DCT
前面两种算法感觉都有点慢,这篇文章作者给出的算法确实效率很高,但还是达不到笔者想要的效果。最终还是回归深度学习。
文章主页:Randomized Redundant DCT: Efficient Denoising by Using Random Subsampling of DCT Patches
Code: git