【ISP】对于ISP的关键算法补充

news2025/3/12 23:39:54

本篇是对于ISP的关键算法进行补充说明, 后面我们将开始逐渐深入讨论ISP的pipeline


1. 非局部均值(NLM, Non-Local Means)

原理

非局部均值(NLM)是一种基于 块匹配(Patch Matching) 的去噪算法,它利用了图像的 自相似性(Self-Similarity)来进行降噪。核心思想是:
一幅图像中的某个像素,其最佳去噪值可能不是简单地来自邻域均值,而是来自整幅图像中与它相似的区域

数学公式

给定一幅带噪图像 I ( x ) I(x) I(x),NLM 计算去噪后的像素值 I NLM ( x ) I_{\text{NLM}}(x) INLM(x) 为:

I NLM ( x ) = ∑ y ∈ Ω w ( x , y ) I ( y ) I_{\text{NLM}}(x) = \sum_{y \in \Omega} w(x, y) I(y) INLM(x)=yΩw(x,y)I(y)

其中:

  • x x x是当前像素点, y y y是搜索窗口内的像素点;
  • w ( x , y ) w(x, y) w(x,y)是相似性权重,基于 高斯核 计算:

w ( x , y ) = 1 Z ( x ) exp ⁡ ( − ∥ P ( x ) − P ( y ) ∥ 2 h 2 ) w(x, y) = \frac{1}{Z(x)} \exp \left( -\frac{\| P(x) - P(y) \|^2}{h^2} \right) w(x,y)=Z(x)1exp(h2P(x)P(y)2)

  • P ( x ) P(x) P(x) P ( y ) P(y) P(y)是以 x x x y y y为中心的局部 patch(通常是 7 × 7 7 \times 7 7×7 5 × 5 5 \times 5 5×5);
  • h h h是滤波参数,控制降噪强度;
  • Z ( x ) Z(x) Z(x)是归一化因子。

特点

  • 能有效保留边缘和纹理(因为利用了整幅图像的冗余信息)。
  • 计算量大,复杂度为 O ( N 2 ) O(N^2) O(N2),需要优化(如 快速 NLM,FFT 加速)。
  • 适用于自然图像降噪

2. BM3D(Block Matching and 3D Filtering)

原理

BM3D(块匹配和 3D 变换域滤波)是一种更先进的降噪算法,它扩展了 NLM 的思想,通过 分组(Grouping)、变换(Transform)和阈值(Thresholding) 实现高效降噪。

步骤

  1. 分组(Grouping)

    • 对于每个小块(通常为 8 × 8 8 \times 8 8×8),在整幅图像中寻找相似的块。
    • 这些相似块组成一个 3D 立方体(Stack)。
  2. 3D 变换(Transform)

    • 对 3D 立方体进行 离散余弦变换(DCT)或小波变换
  3. 阈值滤波(Thresholding)

    • 在变换域内进行软阈值处理(Soft Thresholding),去除噪声成分。
  4. 反变换(Inverse Transform)

    • 将去噪后的数据反变换回时域,并进行块重叠加权。
  5. 重建(Aggregation)

    • 通过加权平均,将多个重叠块合并,得到最终的去噪图像。

特点

  • 比 NLM 更强大,能更好地去噪并保留细节。
  • 计算量大,但可以使用 GPU 加速。
  • 适用于医学图像、遥感、低光环境下的降噪

3. TNR(Temporal Noise Reduction,时域降噪)

原理

TNR 主要用于视频降噪,它利用视频帧之间的 时间相关性 来降低噪声,同时避免运动模糊。基本思路是:

  • 静止区域,使用多帧平均(Frame Averaging)。
  • 运动区域,进行运动补偿(Motion Compensation)以避免鬼影。

主要方法

(1) 帧融合(Frame Blending)
  • 对当前帧 I t I_t It和过去几帧 I t − 1 , I t − 2 , … I_{t-1}, I_{t-2}, \dots It1,It2,进行加权平均:

I TNR ( x ) = α I t ( x ) + ( 1 − α ) I t − 1 ( x ) I_{\text{TNR}}(x) = \alpha I_t(x) + (1 - \alpha) I_{t-1}(x) ITNR(x)=αIt(x)+(1α)It1(x)

其中 α \alpha α是一个时间平滑参数。

(2) 运动补偿(Motion Compensation)
  • 计算 光流(Optical Flow) 来估计物体运动:
    • 若光流稳定,则认为区域是静止的,进行时域降噪。
    • 若光流大,则认为是运动区域,减少时域滤波力度。

应用

  • 夜间视频降噪
  • 安防监控
  • HDR 视频

4. 光流(Optical Flow)

原理

光流是计算图像序列中像素的运动向量,在 TNR、目标跟踪、视频增强等领域非常重要。

主流方法

(1) 经典方法
  1. Lucas-Kanade 方法
    • 通过对局部窗口进行梯度计算,估计小范围光流。
  2. Horn-Schunck 方法
    • 通过全局优化方法求解稠密光流场。
(2) 现代方法
  • DeepFlow、RAFT、PWC-Net:基于深度学习,精度高但计算量大。

应用

  • 视频稳定
  • 目标跟踪
  • 自动驾驶(计算运动物体的轨迹)

5. Retinex 算法(用于增强和去雾)

原理

Retinex 是 人眼视觉模型 的一种模拟,它认为图像的颜色信息和亮度信息是分离的,并试图恢复真实场景的对比度。

数学模型

R ( x ) = I ( x ) L ( x ) R(x) = \frac{I(x)}{L(x)} R(x)=L(x)I(x)
其中:

  • I ( x ) I(x) I(x)是输入图像,
  • L ( x ) L(x) L(x)是估计的光照分量,
  • R ( x ) R(x) R(x)是恢复的图像。

主要方法

  1. 单尺度 Retinex(SSR)
  2. 多尺度 Retinex(MSR)
  3. 带颜色恢复的 MSRCR

应用

  • 图像增强
  • 去雾
  • 低光照增强

6. USM(Unsharp Masking,反锐化掩膜)

原理

USM 通过增强边缘对比度来实现锐化,基本思想是:

  1. 计算高斯模糊图像 I blur ( x ) I_{\text{blur}}(x) Iblur(x)
  2. 计算锐化增强量:
    S ( x ) = I ( x ) − I blur ( x ) S(x) = I(x) - I_{\text{blur}}(x) S(x)=I(x)Iblur(x)
  3. 计算锐化图像:
    I sharp ( x ) = I ( x ) + k S ( x ) I_{\text{sharp}}(x) = I(x) + k S(x) Isharp(x)=I(x)+kS(x)
    其中 k k k控制锐化强度。

应用

  • 照片后期处理
  • 计算机视觉前处理

总结

算法主要功能适用场景
NLM非局部去噪细节保留降噪
BM3D3D 变换去噪高质量去噪
TNR视频降噪夜间监控
光流运动估计目标跟踪
Retinex去雾、增强低光图像
USM锐化细节增强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结

在 PyCharm 中创建虚拟环境是一个非常直接的过程,可以帮助你管理项目依赖,确保不同项目之间的依赖不会冲突。 通过 PyCharm 创建虚拟环境 打开 PyCharm 并选择或创建一个项目。 打开项目设置: 在 Windows/Linux 上,可以通过点击…

Ubuntu安装问题汇总

参考文章: 【Ubuntu常用快捷键总结】 【王道Python常用软件安装指引】 1. 无法连接虚拟设备 sat0:0 【问题】:出现下图所示弹框。 【问题解决】: 点击 “否” 。 点击左上角的 “虚拟机” → “设置…” → “CD/DVD (SATA)” ,…

Ceph(1):分布式存储技术简介

1 分布式存储技术简介 1.1 分布式存储系统的特性 (1)可扩展 分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为线性增长。分布式存储的水平扩展有以下几个特性: 节点…

从0开始的操作系统手搓教程43——实现一个简单的shell

目录 添加 read 系统调用,获取键盘输入 :sys_read putchar和clear 上班:实现一个简单的shell 测试上电 我们下面来实现一个简单的shell 添加 read 系统调用,获取键盘输入 :sys_read /* Read count bytes from the file pointed to by fi…

【Spring】基础/体系结构/核心模块

概述: Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架。 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect…

01 音视频知识学习(视频)

图像基础概念 ◼像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英 语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素” 之意。 ◼ 分辨率:是指图像…

vue3自定义hooks遇到的问题

问题 写了一个输入查询参数和url返回加载中状态、请求方法、接口返回列表的hooks,出现的结果是只有请求方法有效,加载状态无效,接口返回了数据,页面却不显示数据。 代码如下 只展示部分关键代码 import { ref, toRefs, toRef, o…

liunx磁盘挂载和jar启动命令

一、磁盘挂载 查看历史磁盘挂载命令:history | grep mount 查看所有挂载硬盘命令:mount 磁盘挂载命令:mount -t cifs -o usernamesh**,passwordP!ss**** //192.168.1.2/attachmentfilesShare2.2/pdfCert /home/nybzg/cnfai1/pdfCert 二、j…

gbase8s rss集群通信流程

什么是rss RSS是一种将数据从主服务器复制到备服务器的方法 实例级别的复制 (所有启用日志记录功能的数据库) 基于逻辑日志的复制技术,需要传输大量的逻辑日志,数据库需启用日志模式 通过网络持续将数据复制到备节点 如果主服务器发生故障,那么备用服务…

如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户。 随时近来 AI 大模型的火热,越来越多的客户,问…

【AI智能体报告】开源AI助手的革命:OpenManus深度使用报告

一、引言:当开源智能体走进生活 2025年3月,MetaGPT团队用一场"开源闪电战"改写了AI Agent的竞争格局。面对商业产品Manus高达10万元的邀请码炒作,他们仅用3小时便推出开源替代品OpenManus,首日即登顶GitHub趋势榜。 …

DeepSeek+Maxkb+Ollama+Docker搭建一个AI问答系统

DeepSeekMaxkbOllamaDocker搭建一个AI问答系统 文章目录 DeepSeekMaxkbOllamaDocker搭建一个AI问答系统前言一、创建同一内网的网络二、拉取两个镜像三、启动Ollama以及调试Maxkb4.Maxkb创建一个应用并建立知识库5、应用效果总结 前言 我觉得只要是使用Docker技术,…

江科大51单片机笔记【12】DS18B20温度传感器(上)

写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论…

P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS

P8662 [蓝桥杯 2018 省 AB] 全球变暖--dfs 题目 解析讲下DFS代码 题目 解析 这道题的思路就是遍历所有岛屿,判断每一块陆地是否会沉没。对于这种图的遍历,我们首先应该想到DFS。 代码的注意思想就是,在主函数中遍历找出所有岛屿&#xff0c…

Vue 侧边栏导航栏 el-menu单个item和多个item

在固钉的下面去写菜单导航栏。 <el-menu class"aside-menu" router :default-active"$route.path" :collapse"isCollapse" background-color"#131b27" text-color"#bfcbd9" active-text-color"#20a0ff" :defau…

Unity Dots从入门到精通之 Prefab引用 转 实体引用

文章目录 前言安装 DOTS 包实体引用Authoring 前言 DOTS&#xff08;面向数据的技术堆栈&#xff09;是一套由 Unity 提供支持的技术&#xff0c;用于提供高性能游戏开发解决方案&#xff0c;特别适合需要处理大量数据的游戏&#xff0c;例如大型开放世界游戏。 本文讲解我在…

无人机避障——XTDrone中运行VINS-Fusion+Ego-planner进行路径规划

本文聚焦于无人机避障技术领域的经典方案&#xff0c;重点探讨视觉双目VINS-Fusion建图与Ego-planner路径规划的组合应用。通过视觉双目VINS-Fusion实现精准的环境建图与自身定位&#xff0c;结合Ego-planner的高效路径规划能力&#xff0c;使无人机在复杂环境中实现自主避障飞…

【沐渥科技】氮气柜日常如何维护?

氮气柜的维护是确保其长期稳定运行、延长使用寿命和保持环境控制精度的关键。以下是沐渥氮气柜的日常维护和定期保养指南&#xff1a; 一、日常维护 柜体清洁 定期用软布擦拭柜体表面和内部&#xff0c;避免灰尘堆积。避免使用腐蚀性清洁剂&#xff0c;防止损伤密封条或传感器。…

MATLAB 控制系统设计与仿真 - 24

PID 控制器分析- 控制器的形式 连续控制器的结构&#xff1a; 为滤波时间常数&#xff0c;这类PID控制器在MATLAB系统控制工具箱称为并联PID控制器&#xff0c;可由MATLAB提供的pid函数直接输入&#xff0c;格式为&#xff1a; 其他类型的控制器也可以由该函数直接输入&#x…

linux(权限)

sudo 主要用来短暂的提权 权限 就是 >角色目标属性 这里面的角色就是---拥有者----所属组----other 所属组的目的&#xff1f; 更细化的管理 chmod 就是修改权限制 我们要是想要切换到体育的账号&#xff0c;我们可以去看一下有几个账号,我…