首页 > 其他分享 >ISP 基础知识储备

ISP 基础知识储备

时间:2023-11-05 23:15:09浏览次数:50  
标签:矫正 ISP 亮度 基础知识 灰度 图像 像素 储备

ISP(image signal processing),图像信号处理芯片,在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。

ISP pipeline 流程图如下:

image

光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。
然后,得到的bayer pattern的image,再经过BLC(black level compensation,黑电平补偿)、lens shading( lens shading correction,镜头阴影矫正)、BPC(bad pixel correction,去坏点)、CIP( demosaic,去马赛克插值)、DNS(denoise,去噪)、AWB(自动白平衡)、 color correction(颜色矫正) 、 gamma 矫正、 色彩空间转换( RGB 转换 YUV),然后输出 YUV( 或者 RGB) 格式的数据,再通过 I/O 接口传输到 CPU 中处理。

各个模块功能简述如下:

1. Bayer pattern

image
image

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

2. BLC(Black level Correction)

物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到pixel,
象素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行区分。Black Level 是用来定义图像数据为 0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。 所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下, 在传感器中, 实际像素要比有效像素多,像素区头几行作为不感光区,实际上这部分区域也做了 RGB 的 color filter , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。做了black level 矫正与没做black level 矫正对比, 没做black level矫正的图片会比较亮。

3. LSC(Lens Shading Correction)

由于镜头本身的物理性质, 造成图像四周亮度相对中心亮度逐渐降低,图像光照在透过镜头照射到 pixel 上时, 边角处的焦点夹角大于中心焦点夹角, 造成边角失光。 表现在图像上的效果就是亮度从图像中心到四周逐渐衰减, 且离图像中心越远亮度越暗。 为了补偿四周的亮度, 需要进行 Lens Shading 的矫正。Lens Shading 的矫正的方法是根据一定的算法计算每个像素对应的亮度矫正值, 从而补偿周边衰减的亮度。

4. BPC(Bad Pixel Correction)

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

5. DNS

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

6. 颜色插值

image

当光线通过 Bayer型 CFA(Color Filter Arrays) 阵列之后, 光线打在传感器上,分别得到了BGR数据,在这里,BGR的数据采样比为1:2:1,是因为人眼对绿色光(550nm)更为敏感,其中G也称作亮度信息,BR为色度信息。可以看出,在上面的Bayer图中,每一个pixel都只有BGR数据中的一个,所以就需要利用CIP插值来补充其他两个通道的颜色信息。才能形成一幅正常的全彩色image。
下图即为采集到的Bayer pattern格式的图片实际效果图,可以看出,整体显示出暗绿色,这也是绿色分量占了一半的原因造成的。另外附有最近邻和双线性插值的效果图。
image
image

7. AWB(Automatic White Balance)

自动白平衡的基本原理是在任意环境下, 把白色物体还原成白色物体, 也就是通过找到图像中的白块, 然后调整R/G/B 的比例, 如下关系:R’= R * R_Gain,G’ = G * G_Gain,B’ = B * B_Gain,R’ = G’= B’
AWB 算法通常包括的步骤如下:(1)色温统计: 根据图像统计出色温;(2)计算通道增益: 计算出R 和B 通道的增益;(3)进行偏色的矫正: 根据给出的增益, 算出偏色图像的矫正。
其中,灰度世界法和完美反射法等都是比较常用且有效的方法。

8. Gamma Correction

人眼对外界光源的感光值与输入光强不是呈线性关系的, 而是呈指数型关系的。 在低照度下, 人眼更容易分辨出亮度的变化, 随着照度的增加, 人眼不易分辨出亮度的变化。 而摄像机感光与输入光强呈线性关系, 为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。Gamma 矫正是对输入图像灰度值进行的非线性操作, 使输出图像灰度值与输入图像灰度值呈指数关系,这个指数就是 Gamma, 横坐标是输入灰度值, 纵坐标是输出灰度值, 蓝色曲线是 gamma 值小于 1 时的输入输出关系, 红色曲线是 gamma 值大于 1 时的输入输出关系。 可以观察到, 当 gamma 值小于 1 时(蓝色曲线), 图像的整体亮度值得到提升, 同时低灰度处的对比度得到增加, 更利于分辩低灰度值时的图像细节。

9. Color Correction

由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响, 得到的RGB 值颜色会存在偏差, 因此必须对颜色进行校正, 通常的做法是通过一个3x3 的颜色变化矩阵来进行颜色矫正。

10. 色彩空间转换

YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。
Laplacian 算子:
YCbCr 其实是YUV 经过缩放和偏移的改动版,Y 表示亮度,Cr、Cb 表示色彩的色差, 分别是红色和蓝色的分量。 在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG 均采用此格式。 一般人们所讲的YUV 大多是指YCbCr。YCbCr有许多取样格式,。

如 4∶4∶4,4∶2∶2, 4∶1∶1和 4∶2∶0。RGB 转换为YCbCr 的公式如下:

r 0.5 0.4178 0.0813 128
b 0.1678 0.33113 0.5 128
0.299 0.587 0.114

C R G B
C R G G
Y R G B

色彩空间转换这个模块, 是将RGB 转换为 YUV444, 然后在YUV 色彩空间上进行后续的彩色噪声去除、 边缘增强等, 也为后续输出转换为jpeg 图片提供方便。

ISP基础知识储备介绍到此,后续会根据ISP Pipeline逐个模块进行知识介绍学习。
转自:https://blog.csdn.net/qq_24965393/article/details/101533690

标签:矫正,ISP,亮度,基础知识,灰度,图像,像素,储备
From: https://www.cnblogs.com/chuqianyu/p/17811474.html

相关文章

  • Java基础知识回顾1-面向对象
    一、Java特性1.面向对象众所周知,Java是一个面向对象的语言,万物皆对象。面向对象基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。程序就是由无数个对象和......
  • Java之方法的基础知识
     1.方法概述1.1方法的概念方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用2.方法的定义和调用2.1无参数方法定义和调用定义格式:publicstaticvoid方法名(){......
  • Rockchip RK3399 - DRM encoder、connector基础知识
    3.1.3structdrm_connectorlinux内核使用structdrm_connector来表示一个连接器,用于连接编码器和显示设备。3.1.3structdrm_encoderlinux内核使用structdrm_encoder来表示一个编码器,用于连接CRT控制器和显示设备。3.2structdrm_devicelinux内核使用structdrm_device来......
  • Python基础知识
    1.python单行注释用#例如:#helloworld2.多行注释用""""""来表示例如:"""helloworld"""3.print语句:(1)输出多个数据格式:print(内容一,内容二,内容三,......)(2)print语句默认输出后换行(3)print语句输出不换行的语法:print("内容",end='......
  • SpringBoot 基础知识
    ​#SpringBoot#​‍本文基于SpringBoot2.0最新稳定版2.7.6;目前SpringBoot3.0已经发布,后续会体验新版新特性。官网:SpringBoot‍SpringBoot程序的优点起步依赖(简化依赖配置)自动配置(简化常用工程相关配置)辅助功能(内置服务器,.....)快速上手SpringBoot工程联网......
  • seo入门基础知识
    推广seo是什么意思怎么做seo,是搜索引擎优化的意思,是在遵循搜索引擎规律的情况下,结合网站进行优化,关键词的布局,内容的相关性做链接,同时需要做好内容与外链,提升网站的用户体验,使得网站在搜索引擎中有个不错的排名,提升提升网站的阅读量。那么企业进行SEO优化的目的是什么呢?其实就是......
  • x86平台SIMD编程入门(1):SIMD基础知识
    1、简介SIMD(SingleInstruction,MultipleData)是一种并行计算技术,它通过向量寄存器存储多个数据元素,并使用单条指令同时对这些数据元素进行处理,从而提高了计算效率。SIMD已被广泛应用于需要大量数据并行计算的领域,包括图像处理、视频编码、信号处理、科学计算等。许多现代处理......
  • CodeWhisperer 的安装及体验
    文章作者:PonyCodeWhisperer是亚马逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。类似Cursor和GithubCopilot编码工具。官网:https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail在编写代码时,它会自动根据您现有的代码和注释生成建议。从单行代码建......
  • Java语言基础知识点梳理与总结
    Java语言基础知识点梳理与总结Java是一种广泛应用于软件开发的编程语言,具有丰富的特性和功能。在学习Java语言时,了解以下基础知识点对于建立坚实的编程基础非常重要。本博客将介绍Java语言中的标识符、运算符、流程控制、循环结构、分支结构、数组、方法、类与对象等主要知识点。......
  • 一文学习mysql基础知识
    1.常见的数据库产品    1)oracle   --甲骨文    2)DB2      --IBM    3)SQLsever--微软    4)MySql    --AB->SUN->甲骨文2.名词解释    字段   --表中的列    记录   --表中的行3.登录远程数据库    1)打开一个终端窗......