经典非局部均值滤波(NLM)算法python实现(单通道图像版本)
概述:非局部均值(NL-means)是近年来提出的一项新型的去噪技术。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征。基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的像素加权平均得到。
工作原理:请参照参考文献:https://blog.csdn.net/literacy_wang/article/details/106937535
以下是博主根据自己的一些个人理解和网上MATLAB代码翻译过来的代码, 适合单通道的图片场景:
# 传统的非局部均值滤波器
import cv2
import numpy as np
# 单通道
# f为相似窗口的半径, t为搜索窗口的半径, h为高斯函数平滑参数(一般取为相似窗口的大小)
def make_kernel(f):
kernel = np.zeros((2*f+1, 2*f+1), np.float32)
for d in range(1, f+1):
kernel[f-d:f+d+1, f-d:f+d+1