ISP有感自发

一、黑电平

由于传感器,即便在无光的情况下,依然会产生微小的暗电流,这些暗电流可能是噪点会影响后期的调试。因此,我们便将这些电流处理为0,成为纯黑的颜色。可以在源头消除这些误差。

如何矫正黑电平:

在其中有个ob区域(Optical Black Region),这个区域是不感光的,但是也会接收到黑电平。因此,可以把有效区域的值减去ob区的值,这样就可以得到矫正后的值。

  1. 获取OB区数据:从传感器读取遮蔽区域的像素值(如每行的前若干列)。

  2. 计算基准值:取OB区所有像素的均值或中位数(避免异常值干扰)。

  3. 矫正图像数据

    矫正后像素=原始像素−OB区基准值矫正后像素=原始像素−OB区基准值
  4. 限幅处理:确保结果不小于0(避免负值)。

二、ISP的调试思路

1、明确ISP的调试顺序。

因为靠前的会影响到靠后顺序的模块。不同平台会不同,一定要问清楚对应的厂商。

如上是一个比较简单的 ISP pipeline,各家平台会有些差异,但其实大概的流程原理都是差不多的,可能会多些小的功能模块,及做一些数据转换处理,比如raw域去噪前,因为raw数据比较暗,可能会加一条曲线把暗部调亮一点,有助于去噪的处理。
简单过一下如上的流程图,可以分为3个模块来看,sensor 出来的是 bayer 格式的raw 数据,中间经过黑电平矫正(blc),去除暗电流、镜头阴影矫正(lsc),去掉边缘暗角及color shading、接着经过坏点矫正(dpc),去除sensor中的动静态坏点。
再经过 Demosaic 处理后,输出RGB格式的数据,接着会经过时/空域的去噪处理、白平衡(awb)、颜色矩阵矫正(ccm)、gamma的处理,后面会转换成YUV格式的数据输出,再经过自动曝光(ae)、降彩噪(CNR)、锐化等的处理,最后经过编码输出显示出来。

2、特征标定

特征标定是ISP调试的第一步,目的是通过实验室环境下的标准化测试,提取传感器模组的物理特性,并生成一组静态参数。

  • BLC(Black Level Correction,黑电平校正):消除传感器暗电流引起的基线噪声。

  • LSC(Lens Shading Correction,镜头阴影校正):补偿镜头边缘亮度衰减和颜色不均匀性。

  • Noise Profile(噪声特性分析):量化传感器在不同光照条件下的噪声分布,为降噪算法提供依据。

  • Gamma(伽马校正):调整图像对比度,使输出符合人眼感知特性。

  • AWB(Auto White Balance,自动白平衡):校正色温,确保白色物体在不同光照下呈现中性色。

  • CCM(Color Correction Matrix,颜色校正矩阵):补偿传感器颜色滤波阵列(CFA)的色偏。

  • CAC(Chromatic Aberration Correction,色差校正):修正镜头色散导致的颜色边缘偏移。

这些参数本质上是传感器模组的 "物理指纹",反映了其硬件特性(如感光能力、噪声特性、镜头缺陷等)。标定得到的参数是 静态的,即在特定实验室环境下(固定光照、色温、标定板等)生成的参数,理论上 不随场景变化。它们是后续在线调试的基准。如果不矫正好,会影响后续的模块。在标定完成后,ISP会进入 在线调试(Tuning) 阶段,即根据实际场景动态调整参数(如动态降噪强度、局部对比度增强等)。但这一阶段需要 基于准确的标定参数。

3、不同功能模块调试

亮度/对比度相关的模块,如 gamma、ltm、gtm、aeb、色彩相关模块,如 ccm、awb、gamma、blcc、清晰度相关模块,如 ae、lsc、2d/3d nr、demosaic、dpc

4、在线调试

 ①在线调试的第一步是AE。

        因为很多模块都是基于曝光的,AE里面会涉及gain值和噪点,如果AE不确定,其他模块的噪点也不确定,调试也是没有意义的。

②降噪和清晰度调试。

        接着可以是降噪和清晰度模块的调试,降噪过大肯定是会对清晰度有损失,调试时是需要平衡的, 还有调试时要注意是raw域还是yuv域的处理(如果是raw域锐化或去噪过大,可能就会放大噪声或者损失清晰度,你后续yuv域的去噪或锐化就做不出来了),另外清晰度不够时,要思考是否是 demosaic 模块细节没做出来,或者raw域去噪太强,导致细节损失了,而不是一味的去调整锐化强度。解释如下:

        在低光场景(ISO 3200),需 适度放松降噪强度 以保留暗部细节,同时 降低锐化强度 避免放大噪声;而在明亮场景(ISO 100),可 增强降噪和锐化 以提升清晰度。

③ RAW域与YUV域处理的差异

RAW域处理
  • 输入数据:传感器输出的原始RAW数据(Bayer格式,未插值)。

  • 关键操作

    • 降噪:优先在RAW域进行 基础降噪(如时域降噪、空域滤波),因为此时噪声尚未被后续处理(如Demosaic)放大。

    • 锐化:RAW域锐化需谨慎,避免在插值前破坏Bayer模式的结构(可能引入伪色或混叠噪声)。

风险

  • RAW域降噪过强:会抹除高频细节(如纹理、边缘),导致后续Demosaic无法恢复。

  • RAW域锐化过度:可能放大噪声或产生伪色,后续YUV域处理难以修正。

YUV域处理
  • 输入数据:经过Demosaic、色彩校正、Gamma后的YUV格式数据(亮度Y + 色度UV分离)。

  • 关键操作

    • 降噪:针对YUV分量的特性进行 精细化降噪(如亮度通道降噪、色度通道降噪分离)。

    • 锐化:在Y通道(亮度)进行边缘增强,或在UV通道抑制色噪。

  • RAW域:侧重 基础降噪(抑制固定模式噪声、时域噪声),避免过度处理。

  • YUV域:侧重 精细化降噪(如色度降噪、亮度通道自适应滤波)和 可控锐化

④色彩模块

色彩相关的模块可以单独去调影响不大,但ccm调整的过饱和时,会出现色噪。一般整体的偏色都是白平衡偏了,图像中某个颜色不对可以调整ccm,一般情况下不建议手动去调整ccm,因为这肯定是会影响到其他颜色的。另外gamma的调整会对颜色有影响(具体为啥会有影响,我后续文章会在具体总结)。

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

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

相关文章

数字信号处理-大实验1.1

MATLAB仿真实验目录 验证实验:常见离散信号产生和实现验证实验:离散系统的时域分析应用实验:语音信号的基音周期(频率)测定 目录 一、常见离散信号产生和实现 1.1 实验目的 1.2 实验要求与内容 1.3 实验…

【SSL证书系列】https双向认证中客户端认证的原理

HTTPS双向认证(也称为双向SSL/TLS认证)是一种增强安全性的机制,其中客户端和服务器都需要验证彼此的数字证书,以确保双方身份的真实性。以下是其核心原理和步骤的详细解析: 一、双向认证的核心目标 双向身份验证&#…

Linux系统编程——fork函数的使用方法

在 Linux 系统编程 中,fork() 函数是创建新进程的关键系统调用。fork() 在当前进程(父进程)中创建一个几乎完全相同的子进程。子进程和父进程从调用 fork() 的位置继续执行,但它们是两个独立的进程,每个进程都有自己的…

LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读

LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读 导读:这篇OpenAI帮助文档全面介绍了将GitHub连接到ChatGPT进行深度代码研究的方法、优势和注意事项。通过连接GitHub,用户可以充分利用ChatGPT强大的代码理解和生成…

flutter 视频通话flutter_webrtc

flutter 比较热门的库 flutter_webrtc | Flutter package agora_rtc_engine | Flutter package 我使用的是flutter_webrtc 下面是官方推荐的demo库 GitHub - flutter-webrtc/flutter-webrtc-demo: Demo for flutter-webrtc 其中 https://demo.cloudwebrtc.com:8086/ 已经停…

同设备访问php的多个接口会有先后等待问题

同设备访问php的多个接口会有先后等待问题 这个现象的核心原因通常与 PHP 的 Session 锁机制 有关,即使两个接口表面上无关联,也可能因共享 Session 导致请求排队。以下是详细分析: 关键背景:PHP 的 Session 锁机制 PHP 的 Sessi…

【免杀】C2免杀技术(三)shellcode加密

前言 shellcode加密是shellcode混淆的一种手段。shellcode混淆手段有多种:加密(编码)、偏移量混淆、UUID混淆、IPv4混淆、MAC混淆等。 随着杀毒软件的不断进化,其检测方式早已超越传统的静态特征分析。现代杀软往往会在受控的虚…

【论文阅读】Dip-based Deep Embedded Clustering with k-Estimation

摘要 近年来,聚类与深度学习的结合受到了广泛关注。无监督神经网络,如自编码器,能够自主学习数据集中的关键结构。这一思想可以与聚类目标结合,实现对相关特征的自动学习。然而,这类方法通常基于 k-means 框架,因此继承了诸如聚类呈球形分布等各种假设。另一项常见假设(…

.NET8关于ORM的一次思考

文章目录 前言一、思路二、实现ODBC>SqlHelper.cs三、数据对象实体化四、SQL生成SqlBuilder.cs五、参数注入 SqlParameters.cs六、反射 SqlOrm.cs七、自定义数据查询八、总结 前言 琢磨着在.NET8找一个ORM,对比了最新的框架和性能。 框架批量操作性能SQL控制粒…

CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开

苹果公司近日针对macOS系统中新披露的CVE-2025-31258漏洞发布补丁,该漏洞可能允许恶意应用程序突破沙箱限制,获取未授权的系统资源访问权限。在安全研究员Seo Hyun-gyu公开概念验证(PoC)利用代码后,该漏洞已在macOS Se…

21.第二阶段x64游戏实战-分析采集物偏移

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:20.第二阶段x64游戏实战-代码实现遍历周围 上一个内容里把遍历周围的npc和玩家…

2025年全新 GPT 4.5 AI 大模型 国内免费调用

一、中转账号注册 第一步:打开宙流AI中转站,网站地址如下: 宙流AI中转站 按照上图中的操作步骤,通过邮箱进行账号注册,注册完毕后,网站初始会分配0.4刀的免费额度,获取额度后,即可…

基于事件驱动和策略模式的差异化处理方案

一、支付成功后事件驱动 1、支付成功事件 /*** 支付成功事件** author ronshi* date 2025/5/12 14:40*/ Getter Setter public class PaymentSuccessEvent extends ApplicationEvent {private static final long serialVersionUID 1L;private ProductOrderDO productOrderDO;…

简述Web和HTTP

目录 HTTP概述 非持续连接和持续连接 非持续连接 持续连接 HTTP报文格式 HTTP请求报文 HTTP响应报文 用户与服务器的交互:cookie Web缓存 条件GET方法 Web 即万维网,是一个基于超文本和 HTTP 协议的全球性信息系统,通过浏览器访问…

基于STM32的LCD信号波形和FFT频谱显示

一、项目准备 主要利用LCD驱动中的画点和画连线函数,驱动是正点原子给我写好了的画点和画线的函数等些相关函数 void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //画圆 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //画线 二、画波形图函数实…

Go 语言即时通讯系统开发日志-day1:从简单消息收发 Demo 起步

Go语言即时通讯系统开发日志day1,主要模拟实现的一个简单的发送消息和接受消息的小demo,因为也才刚学习go语言的语法,对go的json、net/http库了解不多,所以了解了一下go语言的encoding/json库和net/http库,以及websock…

基于vllm-ascend的华为atlas大模型部署

vllm-ascend介绍: vLLM 昇腾插件 (vllm-ascend) 是一个让vLLM在Ascend NPU无缝运行的后端插件。 此插件是 vLLM 社区中支持昇腾后端的推荐方式。它遵循[RFC]: Hardware pluggable所述原则:通过解耦的方式提供了vLLM对Ascend NPU的支持。 使用 vLLM 昇腾…

贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现

贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现 目录 贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.BO-TransformerSVM多变量时间序列预测&#xff0c…

状压DP总结

前言 一般来讲 n n n 数据范围在 10 ~ 25 之间都是可以进行状态压缩的 -> 2 n 2^n 2n 状压 The 2024 Shanghai Collegiate Programming Contest Problem G.象棋大师 知识点:线性DP,状压DP,预处理 辅助转移的技巧 首先看到 n*n 的方格…

SQLite 转换为 MySQL 数据库

一、导出 SQLite 数据库 1. 使用 SQLite 命令行工具 • 打开终端(在 Linux 或 macOS 上)或命令提示符(在 Windows 上)。 • 输入sqlite3 your_database_name.db(将 your_database_name.db 替换为你的 SQLite 数据库…