经典非局部均值滤波(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] += (1.0/((2*d+1)**2))return kernel/kernel.sum()def NLmeans_filter(src, f, t, h):H, W = src.shapeout = np.zeros((H, W), np.uint8)pad_length = f+tsrc_padding = np.pad(src, (pad_length, pad_length), mode='symmetric').astype(np.float32)kernel = make_kernel(f)h2 = h*hfor i in range(0, H):for j in range(0, W):i1 = i + f + tj1 = j + f + tW1 = src_padding[i1-f:i1+f+1, j1-f:j1+f+1] # 领域窗口W1w_max = 0aver = 0weight_sum = 0# 搜索窗口for r in range(i1-t, i1+t+1):for c in range(j1-t, j1+t+1):if (r==i1) and (c==j1):continueelse:W2 = src_padding[r-f:r+f+1, c-f:c+f+1] # 搜索区域内的相似窗口Dist2 = (kernel*(W1-W2)*(W1-W2)).sum()w = np.exp(-Dist2/h2)if w > w_max:w_max = wweight_sum += waver += w*src_padding[r, c]aver += w_max*src_padding[i1, j1] # 自身领域取最大的权重weight_sum += w_maxout[i, j] = aver/weight_sumreturn outimg = cv2.imread("lena256gs10.bmp", 0)
out = NLmeans_filter(img, 2, 5, 10)
cv2.imwrite("result.bmp", out)

输出展示:
加了标准差为10的高斯噪声的lena图像:


滤波结果:


参考博文:
https://blog.csdn.net/literacy_wang/article/details/106937535
https://blog.csdn.net/nineship/article/details/82109363
https://blog.csdn.net/u010839382/article/details/48229579

经典非局部均值滤波(NLM)算法python实现(1)相关推荐

  1. 经典非局部均值滤波(NLM)算法python实现(2)

    经典非局部均值滤波(NLM)算法python实现(三通道图像版本) 单通道图像版本已发布: https://blog.csdn.net/yy0722a/article/details/11392408 ...

  2. 非局部相似性 matlab,非局部均值滤波(NLM)和MATLAB程序详解视频教程保持图像细节...

    [内容简介]<非局部均值滤波与应用和MATLAB程序详解视频>共6章28节视频,总学时698分钟,合11.6小时.主要内容包括:非局部均值滤波类算法入门,基于滤波参数自适应的非局部均值滤波 ...

  3. 非线性邻域滤波(NNFs)在MR-FBP图像重建算法中的应用(基于astra-toolbox开发, 实现双边滤波,非局部均值滤波(NLM)的惩戒项的改进,并进行MAE,MAR分析)

    本科荒废了两年,大三终于开始好好学习了,,,,但是跟无头苍蝇,只知道上课,大四即将找工作,心理慌得一批,由于自己太辣鸡,,,只能找到3,4000的,,,终于还是决定步入研究生大抗,,,上了后发现他娘的 ...

  4. 【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码

    1 简介 图像在获取和传输过程中,不可避免地受到外部和内部的干扰,常常因为各种因素的影响而被加入很多噪声,这十分严重的影响了人们对传输后图像信息的读取.因此通过一定方法将被噪声污染的图像进行去噪处理一 ...

  5. 浅谈NLM非局部均值滤波

    参考文献:<A non-local algorithm for image denoising> 非局部均值滤波,顾名思义,与高斯滤波等只利用待滤波点周围像素的局部滤波不同,非局部体现在利 ...

  6. 基于matlab 非局部均值(NLM)滤波图像去噪

    基于matlab 非局部均值(NLM)滤波图像去噪 一.简介 1 NLM滤波原理 2 Pixelwise Implementation 3 Patchwise Implementation 二.源代码 ...

  7. 非局部均值滤波算法(NL-means)

    非局部均值滤波算法(NL-means) 今天来学习一下另一类滤波算法:非局部均值滤波算法(NL-means).非局部均值滤波算法最早于2005年由Buades等人发表在CVPR上,论文原文:A non ...

  8. 详解非局部均值滤波原理以及用MATLAB源码实现

    详解非局部均值滤波原理以及用MATLAB源码实现 序言 均值滤波.中值滤波.高斯滤波在滤除噪声的过程中,无可避免的使图像的边缘细节和纹理信息所被滤除.针对此问题,Buades[1]等人提出了非局部均值 ...

  9. 高斯滤波、双边滤波、邻域滤波、非局部均值滤波(NL-means) 笔记

    1.高斯滤波以及高斯噪声 高斯滤波作为一种平滑线性滤波器,可以抑制图像的"尖锐"变化,对于抑制服从正态分布的噪声效果非常好,但同时会损失大量的边缘信息.学习高斯滤波首先要了解高斯核 ...

最新文章

  1. java 复制对象有哪些方式
  2. 二进制与格雷码之间的转换的Verilog实现(更多一点的讨论)
  3. MATLAB从入门到精通:Simulink仿真必看——连续模块之PID控制器(PID Controller)
  4. 51nod 1574 排列转换
  5. Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常
  6. C语言打印彩色字符——以(枚举法+字符串查找)为例展示
  7. IE 7 Standard 模式问题总结
  8. 关于软件测试里面的Fault Error Failure 差别
  9. 学生选课系统的源码-代码布局截图
  10. PHP - 日期和时间
  11. u大师制作linux系统,U大师官方下载|U大师U盘启动盘制作工具官方版 v4.7.37.56 最新版 - 系统天堂...
  12. 基于Python的课程管理系统【100010023】
  13. 简述人工智能的应用领域
  14. Delphi名称的由来(原作:Borland公司Danny Thorpe)
  15. GAN生成对抗网络基础知识
  16. js的Thunk函数的含义
  17. GLUT教程 - glutPostRedisplay函数
  18. 嵌入式STM32F767BGT6规格STM32F767BIT6引脚图 32Bit MCU+FPU
  19. 新ipad 充电测试软件,ipad8充电测试_ipad8充电功率
  20. 无胁科技-TVD每日漏洞情报-2022-7-31

热门文章

  1. java 防篡改_用JAVA写一个简易图片防篡改
  2. 第十二,十三周第12个容器架构
  3. 我永远喜欢我的偶像 KIKU
  4. KJ分析法(亲和图)的应用实例及知识分享
  5. 一文搞懂“正态分布”所有重要知识点
  6. acad.exe启动参数
  7. RISC-V向量扩展指令(一)
  8. 基于QT实现的alpha-beta剪枝算法搜索的象棋人机博弈游戏
  9. 很佩服的一个Google大佬,离职了。。
  10. Android摇一摇振动效果Demo