OpenISP 模块拆解 · 第11讲:非局部均值降噪 (NLM)

OpenISP 模块拆解 · 第11讲:非局部均值降噪 (NLM)

模块作用

NLM 是非局部均值降噪。openISP 主流程中它处理 YUV 图像的 Y 通道,也就是亮度通道。

它的核心假设是:图像中存在重复或相似的小块。对于当前像素,不只看附近单个像素,而是在搜索窗口里寻找相似 patch,用相似程度作为权重做平均。

openISP 实现

源码类名为 NLM(img, ds, Ds, h, clip)。

参数 含义
ds patch 半径,1 表示 3x3 patch
Ds 搜索窗口半径
h 滤波强度
clip 输出上限

主程序调用:

python 复制代码
NLM(yuvimg_csc[:, :, 0], 1, 4, nlm_h, nlm_clip)

核心公式

计算候选 patch 与中心 patch 的距离:

text 复制代码
dist = sum(kernel * (neighbor_patch - center_patch)^2)

距离越小权重越大:

text 复制代码
w = exp(-dist / h^2)

输出为候选中心像素的加权平均。

代码流程

  1. 按搜索半径 Ds 做 reflect padding。
  2. 构造均匀 patch kernel。
  3. 对每个像素,在搜索窗口内遍历候选 patch。
  4. 计算 patch 距离和指数权重。
  5. 累加加权像素值。
  6. 用最大权重补偿中心像素自身。
  7. 输出裁剪结果。

学习重点

  • NLM 能比普通均值滤波更好保留重复纹理。
  • h 越大,降噪越强,但细节越容易被抹。
  • 搜索窗口越大,效果可能更好,但计算量明显增加。

读源码注意点

源码是纯 Python 循环,大图运行会很慢。calWeights() 中判断候选是否为中心的条件也比较粗糙,但不影响理解 NLM 基本思想。

面试问答

Q1: NLM 和均值滤波有什么区别?

均值滤波只按空间位置平均,容易模糊边缘。NLM 按 patch 相似度加权,相似纹理贡献更大,因此更能保留结构。

Q2: NLM 的 h 参数代表什么?

h 控制权重随 patch 距离衰减的速度。h 大,差异较大的 patch 也会参与平均,降噪强但更模糊;h 小,只有很相似的 patch 权重大,保细节但降噪弱。

Q3: NLM 为什么计算量大?

每个像素都要在搜索窗口内比较多个 patch,每个 patch 又包含多个像素,复杂度远高于普通 3x3 或 5x5 滤波。

Q4: 为什么 openISP 只对 Y 通道做 NLM?

亮度通道对视觉细节最重要。只处理 Y 可以降低计算量,并避免直接平滑 UV 导致颜色发灰或色彩边界异常。

Q5: NLM 适合所有噪声吗?

不一定。它适合具有相似 patch 的自然图像,对随机噪声有效,但可能对运动、强纹理、非重复结构或高 ISO 彩噪效果有限。

相关推荐
老王IT17 小时前
C语言语法基础语法介绍
c语言·开发语言·算法
SelectDB技术团队17 小时前
从实时入库到实时可用:Apache Doris 5.0 增量计算场景与实践
数据库·人工智能·开源·agent·实时数仓·apache doris·增量计算
paopaokaka_luck17 小时前
智慧电玩店管理系统(空闲机台随机分配、游玩时长概率模拟、积分自动结算、积分兑换闭环、 ECharts经营分析、 腾讯地图选址)
java·人工智能·mysql·echarts·推荐算法
AI人工智能+17 小时前
机动车登记证识别技术通过“图像矫正+版面分析+高精度OCR+业务校验”四步流水线,实现对“大绿本”的秒级精准识别
人工智能·深度学习·ocr·机动车登记证识别
武子康17 小时前
Embedding 替换怎么评测:把索引成本算进成功任务
人工智能·后端·agent
m0_7196408717 小时前
2026年适合课题研究的具身智能实验室建设方案有哪些可参考?
经验分享·算法
山东孙燕姿17 小时前
维修工单的转派与协同:两个人一起上
大数据·运维·服务器·网络·人工智能
LMT流氓兔17 小时前
第五单元——第9课:防止同一次操作重复执行
java·服务器·数据库·算法·ai·langchain
GPU实战笔记17 小时前
L40S 云端任务验证:从推理、微调到生成工作流的边界
人工智能·模型微调·gpu租用·nvidia l40s·gpu 云服务器
让学习成为一种生活方式17 小时前
厚朴(Magnolia officinalis)染色体水平基因组--iScience
大数据·人工智能