BM3D算法是图像与视频去噪领域效果较好的算法,它结合空域思想和转换变换的方法来提升图像效果,其主要分为两步骤:1、基础估计;2、最终估计。每一步又可分为三小步:1、分块组合;2、协同滤波;3、整合。
一、基础估计
1、分块组合
针对图像目标块,通过滑动搜索框的方式最多找到N个相似块,为了避免噪声的影响,将图像经过DCT变换后再采用欧式距离的方式衡量相似图,按照从小到大进行排序,选择其中的N块组成三维数组。
2、协同滤波
三维数组叠加之后,将每个块同一位置的像素点构成数组,采用硬阈值的方式将小于超参数的值置于0,同时统计非零成分的数量,作为后续权重的参考,最后进行三维矩阵逆变换。
3、整合
将逆变换后的块放回原位置,利用非零成分数量统计叠加数权重,最后将叠放后的图除以每个点的权重就得到基础估计的图像。
二、最终估计
基础估计能够较好的消除图像中的噪点。
1、分块组合
基于含噪声图像,直接利用基础图根据欧式距离衡量块与噪声图像之间的相似度,按照距离从小到大进行排序,取前N个,将基础图估计块和含噪声图像分别组合成两个三维数组。
2、协同滤波
两个三维矩阵都进行二维和一维变换,这里的二维变换采用DCT变换。用维纳滤波(Wiener Filtering)将噪声图形成的三维矩阵进行系数放缩,该系数通过基础估计的三维矩阵的值以及噪声强度得出。
3、聚合
将系数与含噪3D图块相乘放回原处,最后做加权平均调整即可得到最终估计图。相对于基础估计图,还原了更多原图的细节。