ISP各模块功能介绍

--------声明,本文为转载整理-------

ISP各个模块功能介绍:

各模块前后效果对比:

黑电平补偿(BLC)

在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响,传感器存在着暗电流,使得没有光照射到的像素点也会产生响应。

72c30193305e0ce3e9f32ebe7dc3ffe1.png
▲ 黑电平补偿前效果图

5da7692234fa48edf99cdfd82f6e7a5f.png
▲ 黑电平补偿后效果图

a.暗电流

物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到象素,
象素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行区分。

b.Black Level

Black Level 是用来定义图像数据为 0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。 所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下, 在传感器中, 实际像素要比有效像素多, 如下图所示, 像素区头几行作为不感光区( 实际上, 这部分区域也做了 RGB 的 color filter) , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。

镜头校正(LSC)

由于镜头本身的物理性质,传感器捕获的图像会表现出中心亮度高、边缘亮度低的特点。为了输出一个亮度均匀的图像,需要对图像进行镜头阴影(Lens Shading)校正。

校正的方法是根据一定的算法计算每个像素对应的亮度校正值,从而补偿周边衰减的亮度。通常,镜头校正方法有二次项校正、四次项校正等。

8284563f0eb141fd15ae0301c80bf3de.png
▲ 镜头校正前效果图
96590291df4fe08ec804b70de80525f6.png
▲ 镜头校正后效果图

坏点校正(BPC)

由于传感器可能存在部分缺陷像素,导致一些像素点输出信号不正常,出现白点或黑点,也就是坏点。同时,随着传感器老化,也可能会出现更多的坏点。因此,需要对坏点进行修复。

所谓坏点,是指像素阵列中与周围像素点的变化表现出明显不同的像素,因为图像传感器是成千上万的元件工作在一起,因此出现坏点的概率很大。一般来讲,坏点分为三类:第一类是死点,即一直表现为最暗值的点;第二类是亮点,即一直表现为最亮值的点:第三类是漂移点,就是变化规律与周围像素明显不同的像素点。由于图像传感器中CFA的应用,每个像素只能得到一种颜色信息,缺失的两种颜色信息需要从周围像素中得到。如果图像中存在坏点的话,那么坏点会随着颜色插补的过程往外扩散,直到影响整幅图像。因此必须在颜色插补之前进行坏点的消除。


(1)坏点:坏点为全黑环境下输出图像中的白点, 高亮环境下输出图像中的黑点。
(2)坏点修复方法:一般情况下, RGB 信号应与景物亮度呈线性响应关系, 但由于 Senor 部分 pixel 不良导致输出的信号不正常, 出现白点或黑点。坏点修复方法通常有两种:一种是自动检测坏点并自动修复, 另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是 OTP 的方式。

0f5b64c0bbf5db93d2e89978416d9de6.png
▲ 坏点校正前效果图
c0cbd849de29423fcea78f336e57150e.png
▲ 坏点校正后效果图

去马赛克(Demosaic

因为传感器只能感知光的强度,而不能直接感知光谱信息。因此,需要在传感器前加上滤光板来选取波段。但是,如果每个像素点都同时感知RGB三个分量,则需要三块滤光板,这样不仅成本高,而且难度大。因此,通常采用Bayer型的色彩滤波阵列(Color Filter Arrays,CFA)来获取场景的光谱信息。

e2369f60a375a1cbbd16732a9859e09b.png
Bayer型CFA
83b26b40f3d4986f191b898f6e8ed9bb.png
传感器感光示意图

从上面的示意图可见,每个像素只能探测一个通道的光信息,所以理想的Bayer图是一个较为昏暗的马赛克图。然而,为了获得彩色图像,需要计算出每个像素缺失的其它两个通道的响应值,即进行颜色插值处理。通常,经典处理方法包括最近邻域法、Bilinear插值、Cubic插值等。

 去噪声(Denoise

使用 cmos sensor获取图像,光照程度和传感器问题是生成图像中产生大量噪声的主要因素。同时, 当信号经过ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊,而且丢失很多细节, 所以需要对图像进行去噪处理,空间去噪传统的方法有均值滤波、 高斯滤波等。但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。

不同ISP的去噪模块可能会在不同的环节进行,但去噪原理没有本质不同。

af9d6dc41558528fa966f201f3056038.png
▲ 去噪前效果图
cfe97383cb0a24d320f6e69012426fef.png
▲ 去噪后效果图

自动白平衡(AWB)

白平衡就是针对不同色温条件下,通过调整摄像机内部的色彩电路使拍摄出来的影像抵消偏色,更接近人眼的视觉习惯。白平衡可以简单地理解为在任意色温条件下,摄像机镜头所拍摄的标准白色经过电路的调整,使之成像后仍然为白色。这是一种经常出现的情况,但不是全部,白平衡其实是通过摄像机内部的电路调整(改变蓝、绿、红三个CCD电平的平衡关系)使反射到镜头里的光线都呈现为消色。如果以偏红的色光来调整白平衡,那么该色光的影像就为消色,而其他色彩的景物就会偏蓝(补色关系)。白平衡是一个很抽象的概念,最通俗的理解就是让白色所成的像依然为白色,如果白是白,那其他景物的影像就会接近人眼的色彩视觉习惯。调整白平衡的过程叫做白平衡调整,白平衡调整在前期设备上一般有三种方式:预置白平衡、手动白平衡调整和自动跟踪白平衡调整。通常按照白平衡调整的程序,推动白平衡的调整开关,白平衡调整电路开始工作,自动完成调校工作,并记录调校结果。如果掌握了白平衡的工作原理,那么使用起来会更加有的放矢,得心应手。


备注:消色就是指黑白灰三种颜色。黑白灰的物体对光源的光谱成分不是有选择地吸收和反射而是等量吸收和等量反射各种光谱成分。这时物体看上去没有了色彩。对各种光谱成分全部吸收的表面,看上去是黑色,等量吸收一部分等量反射一部分的表面是灰色,反射绝大部分而吸收极小部分是白色。消色和任何色彩搭配在一起,都显得和谐协调。

白平衡原理:摄像机内部有三个CCD电子耦合元件,他们分别感受蓝色、绿色、红色的光线,在预置情况下这三个感光电路电子放大比例是相同的,为1:1:1的关系,白平衡的调整就是根据被调校的景物改变了这种比例关系。比如被调校景物的蓝、绿、红色光的比例关系是2:1:1(蓝光比例多,色温偏高),那么白平衡调整后的比例关系为1:2:2,调整后的电路放大比例中明显蓝的比例减少,增加了绿和红的比例,这样被调校景物通过白平衡调整电路到所拍摄的影像,蓝、绿、红的比例才会相同。也就是说如果被调校的白色偏一点蓝,那么白平衡调整就改变正常的比例关系减弱蓝电路的放大,同时增加绿和红的比例,使所成影像依然为白色。 自动白平衡,是依赖数码相机里的测色温系统,测出红光和蓝光的相对比例。再依据次数据调整曝光,产生红、绿、蓝电信号的增益。自动白平衡最大的优势是;简单、快洁。但有时按它的调整拍摄离准确的色彩还原还相距甚远。有时它还会帮倒忙。

4de30134c487f946e1843240dfa18c0d.png
▲ 白平衡处理前效果图

22775708aec4e9586c27b4522a6e0afd.png
▲ 白平衡处理后效果图

颜色校正(Color Correction

在校正完白平衡后,需要进行彩色的校正。因为人眼对可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,故而得到的颜色RGB值会存在偏差,因此,必须对颜色进行校正。通常,可用一个3x3的颜色变化矩阵来进行颜色校正。

伽马校正(Gamma Correction)

人眼与相机的感光特性不同。为了让图像与人眼感知的色貌相符合,需要将相机采集的图像进行伽马校正;这里不多做介绍。

ddfc552460fbf47594bc369236b7097c.png
▲ 人眼与相机的感光特性

图像压缩

最后,为了减小图像占用的存储空间,通常会将图像数据进行压缩,丢弃那些肉眼无法识别的信息,再用一些编码技术来提高信息利用率。其中,最常用的编码格式当然就是JPG 格式了。

关于转换:

关于raw(bayer)数据转换rgb数据

RGB图, 即为三色图, 一个像素点就由RGB三种颜色构成的混合色, 而bayer图一个像素就只有一个颜色, 或R或G或B. 因为bayer一个像素点只有一种颜色, 需要借助这个像素点周围的颜色对它进行插值(填充)另外的两种颜色, 它本身的颜色就不用插了接下来介绍一下Bayer 。

图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红、 绿、 蓝三个分量的信息, 然后将红、 绿、 蓝三个分量的信息合成彩色图像。 该方案需要三块滤镜, 这样价格昂贵,且不好制造, 因为三块滤镜都必须保证每一个像素点都对齐。

通过在黑白 cmos 图像传感器的基础上, 增加彩色滤波结构和彩色信息处理模块就可以获得图像的彩色信息, 再对该彩色信息进行处理, 就可以获得色彩逼真的彩色图像。通常把彩色图像传感器表面覆盖的滤波称为彩色滤波阵列( Color Filter Arrays, CFA) 。

目前最常用的滤镜阵列是棋盘格式的, 已经有很多种类的, 其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列( Bayer Pattern CFA) , 如图 2 所示, R、 G、 B 分别表示透红色、 透绿色和透蓝色的滤镜阵列单元, 图 3 比较形象地展示了此过程。由于人的视觉对绿色最为敏感, 所以在 Bayer CFA 中 G 分量是 R 和 B 的二倍, 在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。

关于色彩空间转换

在传输和存储上可以节省带宽和存储空间,例如一个RGB图像可以在捕捉之后转换为YCbCr格式用来减少存储和传输负担。在显示图象之前,再转回为RGB;在不同场合上可以根据需要做出转换,适应各种图像格式的需要,例如在做图像处理时算法可能需要YUV格式图像,而图像在屏幕显示需要RGB格式图像,有了色彩空间转换,就可以用一种格式的图像满足不同的图像格式要求。YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。

其他:

关于色温

所谓色温,简而言之,就是定量地以开尔文温度(K)来表示色彩。英国著名物理学家开尔文认为,假定某一黑体物质,能够将落在其上的所有热量吸收,而没有损失,同时又能够将热量生成的能量全部以“光”的形式释放出来的话,它便会因受到热力的高低而变成不同的颜色。例如,当黑体受到的热力相当于500—550℃时,就会变成暗红色,达到1050-1150℃时,就变成黄色,温度继续升高会呈现蓝色。光源的颜色成分与该黑体所受的热力温度是相对应的,任何光线的色温是相当于上述黑体散发出同样颜色时所受到的“温度”,这个温度就用来表示某种色光的特性以区别其它,这就是色温。打铁过程中,黑色的铁在炉温中逐渐变成红色,这便是黑体理论的最好例子。色温现象在日常生活中非常普遍,相信人们对它并不陌生。钨丝灯所发出的光由于色温较低表现为黄色调,不同的路灯也会发出不同颜色的光,天然气的火焰是蓝色的,原因是色温较高。正午阳光直射下的色温约为5600 K,阴天更接近室内色温3200K。日出或日落时的色温约为2000K,烛光的色温约1000K。

关于色温的规律

色温越高,光色越偏蓝;色温越低则偏红。某一种色光比其它色光的色温高时,说明该色光比其它色光偏蓝,反之则偏红;同样,当一种色光比其它色光偏蓝时说明该色光的色温偏高,反之偏低。由于人眼具有独特的适应性,使我们有的时候不能发现色温的变化。比如在钨丝灯下呆久了,并不会觉得钨丝灯下的白纸偏红,如果突然把日光灯改为钨丝灯照明,就会觉查到白纸的颜色偏红了,但这种感觉也只能够持续一会儿。摄像机的CCD并不能像人眼那样具有适应性,所以如果摄像机的色彩调整同景物照明的色温不一致就会发生偏色。白平衡就是为了避免偏色的出现。从而引出白平衡概念。

总结:

本文介绍了相机在使用传感器记录拍摄景物的光学信号后进行的常见功能处理。可见,整个ISP处理流程非常复杂。在我们点击拍照按钮时,手机中的ISP芯片实际正在飞速地运转。也正是得益于这项成熟的技术,我们可以在瞬间记录下美好生活。

除了以上提到的,ISP中还有许多其它模块,如HDR、自动曝光控制 (AEC)、锐化等,这些模块都对最终成像结果产生了重要的影响。

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

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

相关文章

dockerfile实现lnmp

dockerfile实现lnmp 自定义镜像实现整个架构 (基础镜像centos7) nginx cd /opt mkdir nginx mysql php vim Dockerfile docker network create --subnet172.111.0.0/16 mynetwork #创建自定义网段 docker run -itd --name nginx -p 80:80 --cpu-quota 20000 -m 512m -v /op…

DeepSeek-V3技术报告

摘要 https://arxiv.org/pdf/2412.19437v1 我们介绍DeepSeek-V3,这是一个强大的混合专家(MoE)语言模型,具有6710亿个总参数,每个token激活37亿个参数。为了实现高效推理和经济实惠的训练,DeepSeek-V3采用了…

【spring mvc】文件上传、下载

文件上传,存储至本地目录中 一、代码1、工具类(敏感后缀过滤)2、文件上传,存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类(敏感后缀过滤&#x…

CryptoMamba:利用状态空间模型实现精确的比特币价格预测

“CryptoMamba: Leveraging State Space Models for Accurate Bitcoin Price Prediction” 论文地址:https://arxiv.org/pdf/2501.01010 Github地址:https://github.com/MShahabSepehri/CryptoMamba 摘要 预测比特币价格由于市场的高波动性和复杂的非线…

dockerfile2.0

dockerfile实现lnmp nginx centos7 mysql centos7 php centos7 自定义镜像来实现整个架构 cd /opt mkdir nginx mysql php cd nginx 拖入nginx和wordpress vim Dockerfile vim nginx.conf ↓ worker_processes 1; events {worker_connections 1024; } http {include …

C#类型转换

C#是静态类型的语言,变量一旦声明就无法重新声明或者存储其他类型的数据,除非进行类型转换。本章的主要任务就是学习类型转换的知识。类型转换有显式的,也有隐式的。所谓显式,就是我们必须明确地告知编译器,我们要把变…

智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)

近年来,随着物流行业智能化和自动化水平不断提升,数据的实时处理与智能决策成为推动物流运输、仓储管理和配送优化的重要手段。传统的集中式云平台虽然具备强大计算能力,但高延迟和带宽限制往往制约了物流现场的即时响应。为此,我…

【算法篇】前缀和

🔥个人主页:Quitecoder 🔥专栏:算法笔记仓 前缀和是一种常用于处理数组区间求和问题的技巧。它可以用来减少重复计算,使得多次查询区间和的时间复杂度从 O(n) 降低到 O(1) 目录 1. 一维模版2. 二维模版3. 除自身以外数…

第R4周:LSTM-火灾温度预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 一、代码流程1、导入包,设置GPU2、导入数据3、数据集可视化4、数据集预处理5、设置X,y6、划分数据集7、构建模型8、定义训练函…

机组存储系统

局部性 理论 程序执行,会不均匀访问主存,有些被频繁访问,有些很少被访问 时间局部性 被用到指令,不久可能又被用到 产生原因是大量循环操作 空间局部性 某个数据和指令被使用,附近数据也可能使用 主要原因是顺序存…

Windows图形界面(GUI)-QT-C/C++ - Qt图形绘制详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt绘图基础 QPainter概述 基本工作流程 绘图事件系统 paintEvent事件 重绘机制 文字绘制技术 基本文字绘制 ​编辑 高级文字效果 基本图形绘制 线条绘制 ​编辑 形状绘制 …

mapbox进阶,添加绘图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图控…

client-go 的 QPS 和 Burst 限速

1. 什么是 QPS 和 Burst ? 在 kubernetes client-go 中,QPS 和 Burst 是用于控制客户端与 Kubernetes API 交互速率的两个关键参数: QPS (Queries Per Second) 定义:表示每秒允许发送的请求数量,即限速器的平滑速率…

WeakAuras NES Script(lua)

WeakAuras NES Script 修星脚本字符串 脚本1:NES !WA:2!TMZFWXX1zDxVAs4siiRKiBN4eV(sTRKZ5Z6opYbhQQSoPtsxr(K8ENSJtS50(J3D7wV3UBF7E6hgmKOXdjKsgAvZFaPTtte0mD60XdCmmecDMKruyykDcplAZiGPfWtSsag6myGuOuq89EVDV9wPvKeGBM7U99EFVVVV33VFFB8Z2TJ8azYMlZj7Ur3QDR(…

【make】makefile 函数全解

目录 makefile简介函数全解介绍相关链接字符串处理函数subst 函数—字符串替换patsubst 函数 — 模式字符串替换strip 函数 — 去空格findstring 函数 — 查找字符串filter 函数 — 过滤器filter-out 函数 — 过滤器sort 函数 — 排序word 函数 — 取单词wordlist函数 — 取一串…

Android 15应用适配指南:所有应用的行为变更

Android系统版本适配,一直是影响App上架Google Play非常重要的因素。 当前Google Play政策规定 新应用和应用更新 必须以 Android 14(API 级别 34)为目标平台,才能提交到Google Play。现有应用 必须以 Android 13(AP…

Java Agent(三)、ASM 操作字节码入门

目录 1、前言 2、什么是ASM? 2.1、工作流程 2.2、ASM集合核心API 2.1.1、ClassReader 2.1.2、ClassWriter 2.1.3、 ClassVisitor 2.1.4、MethodVisitor 2.1.5、 FieldVisitor 2.1.6、Opcodes 3、简单示例 3.1、maven依赖 3.2、hello world 3.3、执行结…

MySQL数据库(SQL分类)

SQL分类 分类全称解释DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Languag…

[微服务]redis数据结构

介绍 我们常用的Redis数据类型有5种,分别是: StringListSetSortedSetHash 还有一些高级数据类型,比如Bitmap、HyperLogLog、GEO等,其底层都是基于上述5种基本数据类型。因此在Redis的源码中,其实只有5种数据类型。 …

PyQt5

PyQt5 环境搭建安装 pycharm安装 PyQt5 打包成exe安装 pyinstaller打包 报错进程已结束,退出代码-1073740791(0xC0000409) 环境搭建 安装 pycharm 安装 PyQt5 pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install …