非局部平均滤波-NLMeans算法理论分析

“ 双边滤波采用了距离与相似度因素,进行权重的计算,但在相似度计算时,仅仅是通过像素间的均方差(相似度)来计算权重,容易受噪声影响。而非局部平均滤波采用块之间的相似度计算,有效的提高了匹配的准确度,对噪声的抑制及边缘的保护程度更好。本文重点介绍非局部平均滤波——NL-Menas的算法理论。​”

参考文章:

https://blog.csdn.net/xiaowanglili/article/details/108953418

https://blog.csdn.net/frankgoogle/article/details/52209901

https://blog.csdn.net/shandianfengfan/article/details/114006440

https://wenku.baidu.com/view/fc819b3b5022aaea988f0f1d.html

前面的文章中,我已经讲了几种滤波:

  1. 均值滤波:直接的加权平均,边缘模糊;
  2. 高斯滤波:考虑像素权重的正态分布,相比均值滤波对细节有一定的提升;
  3. 双边滤波:同时考虑距离和相似度,对边缘的保持效果较好;
  4. 引导滤波:根据梯度变化求解线性滤波系数,对边缘保持效果比双边要好;
  5. 非局部平均滤波:基于块相似度匹配来确认权重,计算量比较大,但能获得比较好的效果,对边缘的保护程度也还可以。

本文主要讲非局部平均滤波-NLMeans,通过算法理论的推导过程,以及FPGA并行加速来阐述该算法的实现流程。

高斯滤波和NLMeans的权重都符合高斯分布,区别是前者根据像素点之间的距离计算权重,后者根据块之间的相似度计算权重,如下图所示(左边是高斯滤波空间距离d,右边是非NLMeans相似度MSE)。要衡量两个邻域块的相似度,有多种指标,均方误差(MSE)是最常用的相似度衡量指标之一。非局部均值滤波算法就是使用MSE来计算两个邻域块的相似度。

非局部平均滤波-NLMeans算法理论分析_第1张图片

理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。但是考虑到效率问题,实现的时候,会设定两个固定大小的窗口:搜索窗N*N和邻域窗口n*n。邻域窗口在搜索窗口中滑动(如下图所示为例N=13,n=3),根据邻域间的相似性确定像素的权值。

非局部平均滤波-NLMeans算法理论分析_第2张图片

由于最终都需要归一化,那么直接去除固定参数,所以精简后的高斯参数与NLMeans的权重计算公式,如下所示:前者只考虑了距离,后者考虑了块之间的相似度。

非局部平均滤波-NLMeans算法理论分析_第3张图片

谢谢大家,I am CrazyBingo! 


 成也FPGA,败也FPGA;

        FPGA图像算法加速,我将持续的跟大家分享架构思维,愿能畅所欲言。

非局部平均滤波-NLMeans算法理论分析_第4张图片

你可能感兴趣的:(FPGA图像加速)