非局部均值滤波(Non-Local Means,NL-Means)是一种非线性的图像去噪算法。它基于图像中的像素具有相似结构这一假设,利用图像的全局信息来对图像进行去噪。 1.1 全局算法 VS 局部算法 非局部均值滤波在计算每个像素点的估计值时,会考虑图像中所有与该像素点具有相似邻域结构的像素点。因此,非局部均值滤波是一种全局算法。
2. 快速NL-means算法主体函数代码 voidfastNLmeans(Matsrc,Mat&dst,intds,intDs,floath){Matsrc_tmp;src.convertTo(src_tmp,CV_32F);intm=src_tmp.rows;intn=src_tmp.cols;intboardSize=Ds+ds+1;Matsrc_board;copyMakeBorder(src_tmp,src_board,boardSize,boardSize,boardSize,boardSize,BORDER_REFLECT);...
高斯滤波与均值滤波类似,都是计算矩形窗口内所有像素点的像素值加权和,只不过其权重与均值滤波不一样,高斯滤波的权重服从二维正态分布,越靠近窗口中心点(也即当前滤波点),权重越大。 本文我们主要讲非局部均值(NL-means)滤波算法的原理与实现。其核心思路与高斯滤波很相似:计算矩形窗口内所有像素点的像素值加权和,...
简介:非局部均值滤波算法(NL-means)。非局部均值滤波算法最早于2005年由Buades等人发表在CVPR上,论文原文:A non-local algorithm for image denoising,还有一篇2011年的论文:Non-Local Means Denoising。之后还会继续介绍DCT(离散余弦变换滤波)、TV(全变分滤波)、BM3D(3维块匹配滤波)等算法。 上一篇文章介绍了均值滤波...
非局部均值滤波(NL-means)算法的积分图加速原理与C++实现 1. 使用CUDA并行计算内两层循环 由上篇文章,我们知道使用积分图加速的计算顺序是:外两层循环是搜索窗口循环,内两层循环是原图像循环。 for搜索窗口的每一行{for搜索窗口的每一列//在这一层循环确定了所有搜索窗口中相同偏移位置的点{for原图像的每一行{...
在百度上能够搜索到的大部分文章所描述的提速算法都是使用积分图来提升NL-Means的速度,这也是目前来说唯一比较靠谱的优化技术,通过积分图,可以做到算法和块半径PatchRadius的大小基本无关,和Delta也无关,和SearchRadius成平方关系。 因此,在我们很多的严重的噪音图像中,SearchRadius至少需要取到7以上(涉及15*15= 225...
NL-means的基本理念与高斯滤波相似,都是基于像素值的加权平均,但计算权重的方式有所不同。高斯滤波使用像素间的空间欧式距离,而NL-means则依赖于邻域块的相似度,这个相似度通过如均方误差(MSE)等指标来衡量。在NL-means中,两个关键参数是ksize和ssize,分别定义邻域块和搜索窗口的大小。滤波过程涉及...
function[output]=NLmeansfilter(input,t,f,h)[m n]=size(input);%t:搜索框半径;f:相似框半径;h:滤波频率百分比 Output=zeros(m,n);input2=padarray(input,[f f],'symmetric');%将边缘对称折叠上去%f:加宽的宽度值 kernel=make_kernel(f);%计算得到一个高斯核,用于后续的计算 ...
本文提出了基于支持向量机的图像去噪算法和基于非局部均值滤波的图像去噪算法,其具体算法如下: (1)频域小波矩的非局部均值图像去噪算法 为了很好地去除噪声,提高图像质量,对原始的非局部均值滤波(NL-Means)进行了改进,采用小波矩来代替传统的像素计算相似度方法,提出了频域小波矩的非局部均值滤波图像去噪算法.首先对...
R1= cv2.medianBlur(I1, 5)printu'中值滤波PSNR',psnr(I, R1) R2= cv2.fastNlMeansDenoising(I1, None, sigma, 5, 11)printu'opencv的NLM算法',psnr(I, R2) R3= double2uint8(NLmeansfilter(I1.astype(np.float), sigma, 5, 11))printu'NLM PSNR',psnr(I, R3)...