• ISP(图像信号处理)
    • Sensor的问题以及ISP的处理原理
      • 问题一:Sensor有漏电流
      • 问题二:通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕
      • 问题三:Senor上有的像素点的输出有坏点。
      • 问题四:Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)。
      • 问题五:Senor获取的图像中有大量噪声。
      • 问题六:Senor获取的图像容易受到光源颜色的影响。
      • 问题七:Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差。
      • 问题八:人眼对暗部细节比Sensor敏感。
      • 问题九:Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽。
      • 问题十:Senor一定曝光量下较暗部分或较亮部分的细节显示不充分。
      • 问题十一:YUV色彩空间需要进一步降噪和锐化。
      • 问题十二:图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间。
      • 问题十三:变焦镜头需要自动调节焦距。
    • 3A
    • ISP的主要结构
    • 参考链接

ISP(图像信号处理)

 凡是和图像领域工作的人,都会经常听到ISP(Image Signal Process,图像信号处理),知道ISP对图像质量非常重要。比如华为和小米竞争手机拍照和录像效果,主要的竞争领域就是ISP;做AI(Artificial Intelligence,人工智能)的人也知道,如果ISP不给力,后续的AI处理效果会受到影响。
 ISP在图像输入流中的位置如下(图中的成像引擎):

Sensor的问题以及ISP的处理原理

 镜头和Sensor的物理缺陷(不完美)导致以下问题,需要ISP模块去补偿。

 ISP主要坐下面的工作:

 AEC(自动曝光控制)、AGC(自动增益控制)、AWB(自动白平衡)、色彩校正、Lens Shading、Gamma 校正、祛除坏点、Auto Black Level、Auto White Level

问题一:Sensor有漏电流

 由于Sensor漏电流存在,刚把镜头放入一个全黑的环境,Sensor输出的原始数据不为0;而我们希望全黑时原始数据为0.

 处理模块名称:BLC(BlackLevel Correction)------黑电平校正

 处理原理:我们需要找到一个矫正值,所有像素值都减去这个值,就得到一个矫正成功的结果。一般情况下,sensor的传感器周边,还有一小部分区域是有感光器的,但是没有光透射进来。可以把这部分的传感器的信号作为矫正值,从可感光部分的信号中减去,就可获得校正后信号。

 处理流程:在运行时调整,不需要依赖人工矫正。

 处理效果:处理方案成熟。

问题二:通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕

 这是由于随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少。导致Senor捕获的图像中间亮度高,周围边缘亮度低。

 处理模块名称:LSC(Lens Shade Correction)------镜头阴影校正

 处理原理:首先检测出图像中间亮度比较均匀的部分,认为这部分不需要矫正,然后以此为中心,计算出周围区域需要补偿的因子(增益)。实际项目中,可以把镜头对准白色物体,检查图像四周是否有暗角。

 处理流程:在运行前依赖人工矫正。

 处理效果:处理方案成熟

问题三:Senor上有的像素点的输出有坏点。

 由于Sensor是物理器件,有坏点是难以避免的;而且使用时间长了坏点会越来越多。通过在全黑环境下观察输出的彩点和亮点,或在白色物体下观察输出的彩点和黑点,就可以看到无规律的散落在各处的坏点。

 处理模块名称:BPC(Bad Point Correction)------坏点校正

 也叫Defect Pixel Correction(DPC)

 处理原理:

 第一步:检测坏点。在RGB域上做5x5的评估,如果某个点和周围的点偏离度超过阈值的点为坏点。为了防止误判,还需要更复杂的逻辑,如连续评估N帧。

 第二步:纠正坏点。对找到的坏点做中值滤波,替换原来的值即可。

 处理流程:在运行时调整,不需要依赖人工矫正。

问题四:Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)。

 按道理sensor输出的是RGB的raw data,每个像素点都感知RGB 3个分量的数字这样最准确。但是这样需要3套感光板,而且RGB的3套数据还需要时间同步和对齐,这样成本高,难度大。

 所以,我们通常采用一个叫Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)的滤光板,放在一个感光板。

 如下图是一个8x8的分辨率的感光面板,图(a)中彩色部分是Bayer色彩滤波阵列,RGB三种颜色间隔排列。这样一次拍照就产生图(b)的RGB三幅图片,图片中彩色的是有感光数字的,白色空白是没有感光数字的点。我们需要通过Demosaic(颜色插值)的方法,把白色的像素点的值给补上。
 图(b)绿色的像素点数目是红色或蓝色的2倍,是因为人员对绿色更敏感。

 Bayer色彩滤波阵列的结构:(a)在Sensor表面的CFA; (b)颜色分量的光分离和导致的传感器的不同像素点

 注:Bayer色彩滤波阵列并不是唯一选择,他只是柯达公司科学家Bayer发明的。华为P30pro夜间拍摄牛逼,用到了RYYB的滤镜阵列设计,RYYB就是将两个绿色像素(G)换成黄色像素(Y)替代, Y(红色和绿色组合)。

 处理模块名称:Demosaic------颜色插值

 处理原理:在补充图(b)中白色像素点的数值时,我们可以认为每个白色像素点的值,和他附近的同色点的值相近。所以,最简单的方法是内插法。

 处理流程:在运行时调整,不需要依赖人工矫正。

 处理效果:较成熟。

问题五:Senor获取的图像中有大量噪声。

 Senor的感光器件包含模拟部分,所以信号中的噪声很难避免,ADC器件本身也会引入噪声。另外,当光线较暗时,整个系统需要将信号放大,这样噪声也跟着放大。

 我们在看没有经过降噪处理的图片时,会感觉到图片上浮了一层彩色雪花点。

 处理模块名称:Bayer Denoise-----去除噪声

 处理原理:对图像进行降噪处理的传统方法有均值滤波、高斯滤波,本质是低通滤波器。

 普通的高斯滤波只考虑像素的空间距离关系,这样会导致滤波后图像变得模糊,为了避免图像变模糊,就需要保持图像的边缘,这时,就还要考虑相邻像素和本像素的相似程度,对于相似度高的像素给予更高的权重,我们称这种滤波为双边滤波。

 处理流程:部分参数可提前调校(tuning),如调整滤波强弱。

 处理效果:比较成熟。

问题六:Senor获取的图像容易受到光源颜色的影响。

 人类的视觉系统有一定的颜色恒常性特点,不会受到光源颜色的影响。实际生活中,不论是晴天、阴天、室内白炽灯或日光灯下,人们所看到的白色物体总是是白色的,这就是视觉修正的结果。人脑对物体的颜色有一定先验知识,可识别物体并且更正这种色差。

 但是Sensor不具备这样的特点,比如一张白纸,在不同光线下,Sensor输出的是不同颜色,在低色温下偏黄,在高色温下偏蓝。如白炽灯照明下拍出的照片易偏黄;而在户外日光充足则拍摄出来景物也会偏蓝。

 我们就需要,让不同色温光线条件下白色物体,Sensor的输出都转换为更接近白色。

 处理模块名称:AWB(Automatic White Balance)------自动白平衡

 处理原理:比较常用的WEB算法有灰度世界、完美反射法等。

 灰度世界(Gray World)算法基于一个假设:平均来讲,世界是灰色的。所以,白平衡就是调整R/B增益,达到R、G、B 相等。

 白平衡有3个步骤:

(1)检测色温,如果手工调节,就知道图像中什么位置是白色物体了,色温容易检测;如果是自动调节,就需要估计出(猜出)图像中的白色位置,这是最重要的一环;

 实际计算中为了实时操作,减少计算量,通常选取某个特定区域(如图像中央)像素进行计算。但若图像颜色较为单一或选定区域正好落入大的色块(红光下的白墙),以上算法求得的色温会非常不准确。为此,必须根据一定的约束条件,挑选出白色像素来计算色差。

(2)计算增益,计算R和B要调整的增益;调整增益将Cb和Cr调整到0 (或接近0)的两个系数,即R=G=B。

(3)色温矫正,根据增益调整整幅图片的色温。

 处理流程:自动校正。

 处理效果:现阶段大多数的数码相机、拍照手机的白平衡的功能都已相当准确。

 白平衡对色彩效果影响很大,一个好的算法能够使色彩效果更逼真,也可以利用白平衡达到艺术效果。

问题七:Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差。

 所以,Sensor图像传感器获取的图像,于人们期望的颜色有距离,必须矫正。

 AWB已经将白色校准了,CCM就是用来校准除白色以外其他颜色的准确度的,

 处理模块名称:CCM(Color Correction Matrix)------颜色校正

 处理原理:一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵,一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。

 用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。Ccm矫正最终结果可以通过拍摄24色卡图片然后用imatest(一款专业的图像分析软件,具有强大的图像分析和处理功能)分析来做分析参考

 处理流程:依赖手工校正。

问题八:人眼对暗部细节比Sensor敏感。

 人眼不同于摄像机,接收光子来感知光线。比如:在一间小黑屋中每增加一盏灯,摄像机都能线性增加亮度。但是人眼在黑暗时增加一盏灯时感受明显,往后随着灯的个数增长人眼并不会有明显感受。如果将实验做成图表,如下图所示,蓝色为人眼,紫色为摄像机。

 处理模块名称:RGB Gamma------Gamma校正

 处理原理:Gamma编码后的图像相比于线性编码的图像,明显有更多的暗部色阶。Gamma编码刚好满足了人眼对暗部细节敏感的特性。即人眼是按照gamma < 1的曲线对输入图像进行处理的(公式f(I)=I^gamma,I为原图像素值)。

 现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值。

 处理流程:可手工校正Gamma参数。

问题九:Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽。

 在YUV 色彩空间上进行彩色噪声去除、 边缘增强等更方便。

 处理模块名称:RGBToYUV------色彩空间转换

 处理原理:YUV 是一种基本色彩空间, 人眼对亮度Y改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。所以,只有YUV444格式的YUV数据的比例是1:1:1,其他各种格式,如YUV422,YUV420等格式,UV的数据量都小于Y,达到节省存储空间和传输带宽的目的。YUV数据的概念就是这样简单。(在编程时查一下文档,再搞清楚内存排布即可)

 第二,RGB和YUV转换有固定的公式。

 另外, 在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

 YCbCr与RGB的相互转换
    Y=0.299R+0.587G+0.114B
    Cb=0.564(B-Y)
    Cr=0.713(R-Y)
     R=Y+1.402Cr
     G=Y-0.344Cb-0.714Cr
     B=Y+1.772Cb

 处理流程:实时计算,不需要提前调校。

 处理效果:人眼看不出图像质量变化。

问题十:Senor一定曝光量下较暗部分或较亮部分的细节显示不充分。

 自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力相对较窄,而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范围内高亮,极暗环境的中的细节分辨率。

 为保证人眼看到的世界和显示器或者摄像头采集的图像的亮度范围相差无几,甚至更好,需要通过tone mapping,将暗处和亮出细节再现。这是一种纯粹为了视觉感受而进行的处理,并非真正的HDR。也有人称为WDR(Wide Dynamic Range)。

 简而言之,宽动态技术可以使场景中特别亮的区域和特别暗的区域在最终成像中同时看清楚。

 处理模块名称:HDR(High-Dynamic Range)------高动态范围

 处理原理:

 主要是通过tone mapping的方法,将像素值在特别暗的区域拉高,在特别亮的区域拉低。

 Tone mapping有以下几种:

  1. global tone mapping

    (a) 单一tone mapping曲线。对整幅图低拉高,高拉低。(缺点,蒙上一层雾感觉,因为数值压缩后忘中间靠拢,局部对比度下降)

    (b) 双边滤波tone mapping。在图像中局部边缘处不会进行tone mapping,以保持局部细节。

  2. local tone mapping

    (a) 虚拟曝光。通过多帧相加确定哪些区域是高亮区,哪些区域是低亮区。然后分区进行local tone mapping

    (b) local gamma。图片分成多块,对每块进行gamma矫正。主要根据每块的亮度直方图进行动态调整gamma曲线。

 处理流程:实时计算,且需要提前调校。

 处理效果:HDR或WDR仍然是手机相机重点竞争的领域,说明这个方向有长足进度,但仍然有提升空间,而且是难点。

问题十一:YUV色彩空间需要进一步降噪和锐化。

 主要是对yuv降噪处理,同时为了消除降噪过程中对图像细节的损失,需要对图像进行锐化处理,还原图像的相关细节。因为在YUV色彩空间,这些处理更方便。

 处理模块名称:Color denoise / sharpness

 处理原理:为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理。

 在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出YUV(或者RGB) 格式的数据, 再通过I/O 接口传输到CPU 中处理

 处理流程:实时计算,且需要提前调校。

 处理效果:降噪的要求和效果总是不断提高的,而且降噪和锐化是互相矛盾的,所以会有各种不同算法。

问题十二:图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间。

 不同场景下,光照的强度有着很大的差别。人眼有着自适应的能力因此可以很快的调整,使自己可以感应到合适的亮度。而图像传感器却不具有这种自适应能力,因此必须使用自动曝光功能来确保拍摄的照片获得准确的曝光从而具有合适的亮度。

 处理模块名称:AEC(Automatic Exposure Control)----自动曝光

 处理原理:

 自动曝光的实现一般包括三个步骤:

 1)光强测量。光强测量的过程是利用图像的曝光信息来获得当前光照信息的过程。可以统计图像的全部像素,也可以统计图像中间部分、也可以将图像分成不同部分且每部分赋予不同权重。

 2)场景分析。场景分析是指为了获得当前光照的特殊情况而进行的处理,比如有没有背光照射或者正面强光等场景下。对这些信息的分析,可以提升图像传感器的易用性,并且能大幅度提高图像的质量,这是自动曝光中最为关键的技术。目前常用的场景分析的技术主要有模糊逻辑和人工神经网络算法。这些算法比起固定分区测光算法具有更高的可靠性,主要是因为在模糊规则制定或者神经网络的训练过程中已经考虑了各种不同光照条件。

 3)曝光补偿。

 在完成了光强测量和场景分析之后,就要控制相应的参数使得曝光调节生效。主要是通过设定曝光时间和曝光增益来实现的。

 处理流程:实时计算,且需要提前调校。

 处理效果:自动曝光的要求总是不断提高的。

问题十三:变焦镜头需要自动调节焦距。

 处理模块名称:AF自动对焦

 处理原理:

 AF算法的基本步骤是先判断图像的模糊程度,通过合适的模糊度评价函数求得采集的每一副图像的评价值, 然后通过搜索算法得到一系列评价值的峰值, 最后通过电机驱动将采集设备调节到峰值所在的位置, 得到最清晰的图像。

 对焦评价函数:

 评价函数有很多种, 主要考虑的图像因素有图像频率(清晰的图像纹理多, 高频分布较多), 还有图像的灰度分量的分布(图像对应的灰度图的分量分布范围越大,说明图像的细节较多, 反应的图像的清晰程度)

 常用的搜索算法有爬山算法, 搜索窗口有黄金分割点对焦嵌套窗口等.

 处理流程:实时计算,且需要提前调校。

 处理效果:大家体验一下自己的手机摄像头的对焦体验,大部分时间是准的。

3A

ISP的主要结构

 作为一个商用的ISP,还需要更多的功能模块。如下图中,还需要有X-talk(串扰),VSM(Video Stablization Measurement)视频稳定。

 下面的名词的概念上文中都提到了:
  DPCC(Defect Pixel Cluster Correction)坏点簇纠正
  DPF(De-noising Pre-Filter)降噪预滤波
  蓝框框里是“去马赛克”单元,包含CAC(Cromatic Aberration Correction色彩失常校正)、降噪滤波器
  CNR(Croma Noise Reduction)色度噪点降低
  CSM(Color Space Matrix)

参考链接

 参考链接:https://blog.csdn.net/brandon2015/article/details/104110955

      https://blog.csdn.net/qq_40732350/article/details/88017749

10分钟理解相机ISP(图像信号处理)整体流程相关推荐

  1. 5分钟理解相机ISP(图像信号处理)

    原文:https://mp.weixin.qq.com/s/UanwwJAPuJGXZCiuZ-QoSQ 目录 引言 Sensor输出的原始数据和人类预期的图像有巨大差异 Sensor的不完美以及IS ...

  2. Sensor ISP 图像信号处理系统

    ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正.噪声去除.坏点去除.内插.白平衡.自动曝光控制等,依赖于ISP才 ...

  3. 【Android camera】开发之三:深入理解相机ISP(图像信号处理)必看文章

    目录 成像引擎 我们带着以下问题来了解isp 需要ISP模块的原因有2个方面 一个是镜头和Sensor的物理缺陷(不完美) 二是拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过 ...

  4. 快速理解ISP图像信号处理

    原文链接:http://www.voycn.com/article/5fenzhonglijiexiangjiisptuxiangxinhaochuli 引言 凡是和图像领域工作的人,都会经常听到IS ...

  5. ISP(图像信号处理)之关于相机名词的理解(ISO感光度、CRA主光线角度、DOF景深)

    在学习成像系统的ISP流程过程中经常要遇到这些基础名词,现在对这些名词进行整理,明白其含义和作用. ISO--感光度 CRA--主光线角度(chief ray angle) DOF--景深(depth ...

  6. 【CV】10分钟理解Focal loss数学原理与Pytorch代码

    原文链接:https://amaarora.github.io/2020/06/29/FocalLoss.html 原文作者:Aman Arora Focal loss 是一个在目标检测领域常用的损失 ...

  7. pytorch gather_【CV】10分钟理解Focal loss数学原理与Pytorch代码

    原文链接:https://amaarora.github.io/2020/06/29/FocalLoss.html 原文作者:Aman Arora Focal loss 是一个在目标检测领域常用的损失 ...

  8. 10 分钟理解 BFC 原理

    一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至 ...

  9. 10分钟学会树莓派3B+图像边缘识别OpenCV3.3.1+QT5

    做毕设接触的树莓派,查了很多资料,成功做出一个小项目,在本文总结自己的学习过程,从建立开发环境开始一步一步完成项目,希望帮助大家入门并体验到玩树莓派的乐趣. 准备 树莓派3B+.opencv(USB接 ...

最新文章

  1. shell中获取时间
  2. java測試動態方法_java反射学习
  3. android 设备占用_如何查看正在占用Android设备的空间
  4. 用Rocker制作模板
  5. maven 强制更新_maven入坑指南
  6. 杭电2571 命运
  7. 数字人民币APP(试点版)上线引关注 | 产业区块链发展周报
  8. 苹果CMSV10黑色自适应简约炫酷影视网站模板
  9. 【基础知识】【模块介绍】8位8段数码管(74HC595)【硬件部分】
  10. 如何用计算机算十进制,计算器怎么,计算机是怎么转换二进制为十进制的
  11. phpspider 简单用法和学习,分类一对多爬取数据
  12. Adobe将支持HTTP流媒体直播 预示着ipad将可以用flash吗?
  13. ConvTrans: [Neurips 2019]
  14. day1 -- ELMO语言模型
  15. fnl+wrf 报错记录
  16. ubuntu16 无法调节亮度问题
  17. rs.next()为false导致resultset遍历不出数据
  18. RTL8762 开发板试用
  19. r语言做绘制精美pcoa图_R语言:Bary-Curtis PCoA
  20. 大数据体系构建数据仓库

热门文章

  1. 巴特沃斯滤波器设计案例
  2. 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
  3. arduino 嗡鸣器 音乐_Arduino教程——蜂鸣器发声
  4. Android屏幕锁定详解(一)
  5. 软件汉化:脱壳--音速启动 (VStart)
  6. 浙江省计算机一级linux,浙江省大学计算机一级Linux浙江省大学计算机三级Linux网络管理应用.doc...
  7. 三级linux网络管理及应用技术,浙江省大学计算机三级Linux网络管理及应用.doc
  8. 修复MAC系统下“邮件”出现QQ邮箱顽固无法登陆
  9. 第一课:人工智能在嵌入式中的机会
  10. 学术论文下载网站、国内pip下载镜像,GAN研究汇总