最近看了一些关于图像去噪的论文,从传统的基于统计的方法,到现在很火的利用深度学习来进行去噪的方法。今天分享一篇在去噪领域算是标杆的算法,文章名称为 Image Denoising by Sparse 3-D Transform-Domain CollaborativeFiltering。简称为BM3D。
该算法由两部分组成(step1和step2),每一步的处理有一些不同,但大体相同。
该算法基于这样一个假设,通过一组基础元素的线性组合,真实的信号能够被很好的近似的表示出来。
信号在转换域被稀疏的表示出来。通过保存信号在转换域内高幅度的转换系数(传递大部分真实信号的能量),将剩余的系数(主要包含噪声)舍弃,真实的信号就能被很好的估计
step1
grouping by block-matching
首先是对噪声图像进行操作。首先选定一个参考块 Z x R Z_{xR} ZxR,以其左上点的坐标值为中心,设置一个一定大小的窗口,利用以下公式计算出当前块与参考块的相似度
其中, τ 2 D h t \tau_{2D}^{ht} τ2Dht是二维线性转换,常用的有二维离散余弦变换, γ ′ \gamma^{'} γ′为硬阈值函数,但是在代码中没有体现。 N 1 h t N^{ht}_1 N1ht为参考块的大小。
通过这个公式,计算出窗口内所有的图像块与参考块的 d d d,即相似性,将满足以下条件的图像块的坐标和图像块分别保存
τ m a t c h h t \tau_{match}^{ht}