从架构、流程、模块功能一起了解 ISP

从架构、流程、模块功能一起了解 ISP Keith_Cheung 2023-12-11 11:01:31 964

概述

ISP全称Image Signal Processing,即图像信号处理。主要用来对前端图像传感器输出信号处理的单元,以匹配不同厂商的图象传感器。在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。

ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括3A、坏点校正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理。ISP 包括逻辑部分以及运行在其上的firmware。

ISP 的控制结构如图1-1 所示,lens 将光信号投射到sensor 的感光区域后,sensor 经过光电转换,将Bayer 格式的原始图像送给ISP,ISP 经过算法处理,输出RGB 空间域的图像给后端的视频采集单元。在这个过程中,ISP 通过运行在其上的firmware 对ISP逻辑,lens 和sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。其中,firmware 的运转靠视频采集单元的中断驱动。PQ Tools 工具通过网口或者串口完成对ISP 的在线图像质量调节。


ISP 由ISP 逻辑及运行在其上的Firmware 组成,逻辑单元除了完成一部分算法处理外,还可以统计出当前图像的实时信息。Firmware 通过获取ISP 逻辑的图像统计信息,重新计算,反馈控制lens、sensor 和ISP 逻辑,以达到自动调节图像质量的目的。

架构

ISP 的Firmware 包含三部分,一部分是ISP 控制单元和基础算法库,一部分是AE/AWB/AF 算法库,一部分是sensor 库。Firmware 设计的基本思想是单独提供3A 算法库,由ISP 控制单元调度基础算法库和3A 算法库,同时sensor 库分别向ISP 基础算法库和3A 算法库注册函数回调,以实现差异化的sensor 适配。ISP firmware 架构如图1-2 所示。

不同的sensor 都以回调函数的形式,向ISP 算法库注册控制函数。ISP 控制单元调度基础算法库和3A 算法库时,将通过这些回调函数获取初始化参数,并控制sensor,如调节曝光时间、模拟增益、数字增益,控制lens 步进聚焦或旋转光圈等。

ISP pipeline 流程图

光线经过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 中处理。

各个模块功能简述

  • Bayer pattern

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

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

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

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

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

  • 颜色插值

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

  • 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)进行偏色的矫正:根据给出的增益, 算出偏色图像的矫正。

其中,灰度世界法和完美反射法等都是比较常用且有效的方法。

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

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

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

444422411420。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 图片提供方便。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Keith_Cheung
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区