网上的直接参考资料

1. https://zhuanlan.zhihu.com/p/36896537

2. https://blog.csdn.net/m0_38049850/article/details/80980365

ISP-OB

13.1. 基本概念

13.1.1. What is OB & Why OB

OBC全称为Optical Black Correct,指的是光学暗区矫正。因为sensor本身存在暗电流,导致在没有外部光线照射的时候,也有一定的输出电压。最终sensor的输出需要减去这个数值,那么这个数值如何获取呢?具体如下图所示:

如上图所示,sensor上预留了一些完全没有曝光的像素,通过读取这些像素值的大小,可以实时得到optical black level,此时sensor的输出RAW = sensor input - optical black level 。

尽管这些black lines已经充分考虑到了不同column的OB不同,但因为在sensor边缘的black lines会受到PCB layout、电源纹波、模组结构设计等等因素的影响,故此时OB扣除的还是可能不准确,导致部分相机厂商不使用这个功能,但是在安防类或车载类摄像头上,部分厂商还是使能了OBC功能的。

然后考虑到sensor输出的信噪比,故一般sensor输出数据时又会垫上一个基底pedestal,此时sensor的RAW = sensor input - optical black level + pedestal。对于芯片处理来说,一般拿到的就是这个数据,此时需要在ISP处理流程的起始部分减去这个基底。在芯片内部一般叫做BLC,即Black Level Correct黑电平校正。

综上,黑电平校正可能是做过两遍的,第一遍做在了sensor内部,第二遍做在了芯片ISP处理的开始。而因为黑电平的存在,会损失画面中部分高亮处的细节,但考虑到人眼对于画面暗处更敏感,故可认为这里画面亮处的损失忽略不计。

13.1.2. Again与OB分布

单纯的从Again上,OB的分布满足如下规律:

随着增益的增加,OB的均值可能不变,但是方差会增加。主要原因是sensor内OB是做在Again之后,故随着Again的增加,噪声的影响增大,故OB的方差增加。

这个时候如果还是按照OB的均值扣除,画面暗处就有可能出现偏色的问题。例如下图所示:

注意看画面中的暗处部分,会有偏紫的问题。原因是因为OB的方差加大,如果再按照OB的均值扣除,那么就可能会有较多的残余,受白平衡(Rgain、Bgain)的影响,故画面暗处会偏紫。

此时的解决方法为:1.多扣一点OB,缺点为破坏了噪声形态会引入较多噪点 2.分通道扣除OB,缺点为偏色的情况会受环境色温影响。

下图为B通道多扣了一点OB的结果:

那么OB随增益联动是否能解决这个问题呢?答案是从一定程度上能够解决。但是因为OB的精度和ISO的精度并不匹配(ISO精度更高),所以OB仍然会有时候多扣,有时候少扣,但是这种差异给图像带来的影响并不显著。

13.1.3. 温度与OB分布

OB还会随着温度而发生偏移,故如果OB的扣除没有跟随温度而变化的话,画面就会出现偏色的现象。如下图所示,为高温60度下的图像效果:

此时,重置sensor的OB,效果图如下:

故最后扣除OB时还需考虑温度的影响。

13.1.4. 扣除OB位置的影响

在ISP流程中,可以从两个地方扣除OB,一个是Raw域去噪之前扣除,一个是Raw域去噪之后扣除。结论为OB在之前扣除清晰度更优,OB在之后扣除噪声更优。

13.2. 算法设计

在ISP处理中,OB一般为第一个模块,当然也可以放在RAW域去噪之后。

最简单扣除OB的方法是减去均值,然后再对G通道做线性拉伸,举例来说就是Goutput = Ginput*255/(255-Black Level)。做线性拉伸的原因是扣除OB后RGB通道均不饱和,而R、B通道因为白平衡增益(Rgain、Bgain)的存在可以达到饱和,Ggain的增益一般为1,这样在画面接近过曝的地方就会偏紫。

除了减去均值,还可以使用最大值、中值、局部均值等等方法扣除OB。

此外,因为OB跟增益相关,故可以根据不同的增益扣除不同的OB。

考虑到ISP处理及环境色温的影响,还可以根据RGB不同通道扣除不同的OB。

13.3. 调试方法

关于OB offset设置,建议使用推荐值。因为若offset设置过小,则无法cover噪声的range,负值部分可能无法完全移到正数;若设置过大,则数值较大部分可能溢出。Sensor厂商一般根据需求给出推荐值,并在推荐值的情况下测试sensor的线性度等,因此在实际操作中建议不要修改offset。

夜视的情况下可以适当少扣一点OB,可以保留更多的细节,且夜视没有偏色的问题。

因OB受到温度的影响较大,若sensor有温度传感器,则发现温度变化后最好实时重置sensor的BLC功能。

13.4. 测试方法

13.4.1. 客观测试

最简单的测试方法就是将镜头遮黑,查看各个增益下的画面亮度,一般认为均值为0-5即认为黑电平扣除正确。

13.4.2. 主观测试

黑电平是否设置的准确可观察以下现象:

1. 灰阶卡上各灰阶的RGB响应是否相同

2. 高增益下画面暗处是否偏色

3. 正常增益下画面中过曝处是否偏色

ISP概述

一、概述

ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。

Cmos YUV sensor 的 ISP 处理流程如图 1 所示:

景物通过 Lens 生成的光学图像投射到 sensor 表面上, 经过光电转换为模拟电信号, 消噪声后经过 A/D 转换后变为数字图像信号, 再送到数字信号处理芯片( DSP) 中加工处理。所以,从 sensor 端过来的图像是 Bayer 图像,经过黑电平补偿 ( black level compensation)、镜头矫正 ( lens shading correction)、坏像素矫正 ( bad pixel correction)、颜色插值 ( demosaic)、Bayer 噪声去除、 白平衡( awb) 矫正、 色彩矫正( color correction) 、 gamma 矫正、 色彩空间转换( RGB 转换为 YUV) 、 在 YUV 色彩空间上彩噪去除与边缘加强、 色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出 YUV( 或者 RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。

以下对各个模块的处理算法做简要概述。

1.Bayer

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

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

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

2.BLC(Black level Correction)

a.暗电流

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

b.Black Level

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)

a.坏点

坏点为全黑环境下输出图像中的白点, 高亮环境下输出图像中的黑点。

b.坏点修复方法

一般情况下, RGB 信号应与景物亮度呈线性响应关系, 但由于 Senor 部分 pixel 不良导致输出的信号不正常, 出现白点或黑点。

坏点修复方法通常有两种:

一种是自动检测坏点并自动修复, 另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是 OTP 的方式。

c.坏像素矫正原理

下面以自动检测坏点修复方法为例, 阐述坏像素矫正算法原理。

5.颜色插值

当光线通过 Bayer型 CFA(Color Filter Arrays) 阵列之后, 单色光线打在传感器上, 每个像素都为单色光, 从而理想的Bayer 图是一个较为昏暗的马赛克图。

6.Bayer Denoise

使用 cmos sensor获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。

但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。

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.Color Correction

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

9.Gamma Correction

人眼对外界光源的感光值与输入光强不是呈线性关系的, 而是呈指数型关系的。 在低照度下, 人眼更容易分辨出亮度的变化, 随着照度的增加, 人眼不易分辨出亮度的变化。 而摄像机感光与输入光强呈线性关系, 为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。

Gamma 矫正是对输入图像灰度值进行的非线性操作, 使输出图像灰度值与输入图像灰度值呈指数关系:

Vout =AVin

这个指数就是 Gamma, 横坐标是输入灰度值, 纵坐标是输出灰度值, 蓝色曲线是 gamma 值小于 1 时的输入输出关系, 红色曲线是 gamma 值大于 1 时的输入输出关系。 可以观察到, 当 gamma 值小于 1 时(蓝色曲线), 图像的整体亮度值得到提升, 同时低灰度处的对比度得到增加, 更利于分辩低灰度值时的图像细节。

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

11.Color Denoise

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

ISP-OB, pedestal 以及ISP概述的更多相关文章

  1. Trie树的应用:查询IP地址的ISP

    1. 问题描述 给定一个IP地址,如何查询其所属的ISP,如:中国移动(ChinaMobile),中国电信(ChinaTelecom),中国铁通(ChinaTietong)?现有ISP的IP地址区段可 ...

  2. LPC1768之ISP

    一 使用到的芯片内部资源: 1必须是P2.10 2RESET引脚 3必须是串口0 4使用FLASH magic工具. 二操作方法: 先按下reset不放,然后按下ISP,抬起reset,抬起ISP就能 ...

  3. 新唐M0 ISP下载要点

    http://blog.csdn.net/rejoice818/article/details/7736029 一.注意:官方光盘内“Software Utilities”目录下,可找到ICP或ISP ...

  4. PHP语言、浏览器、操作系统、IP、地理位置、ISP

    )]; } else { $Isp = 'None'; } return $Isp; }}

  5. PHP获取操作系统、IP、地理位置、浏览器、ISP等信息_PHP类代码

    PHP语言.浏览器.操作系统.IP.地理位置.ISP,本PHP类里面有以下几种方法,同时也是用法说明: <?php class class_guest_info{ function GetLan ...

  6. 新唐的icp和isp

    ICP 的意思是 "在电路编程"(in Circuit Programming),PC 电脑可以运行 “NuMicro ICP Programming Tool”软件通过 Nu-L ...

  7. 面向对象的六大原则之 接口隔离原则——ISP

    ISP = Interface Segregation Principle   ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应 ...

  8. 摄像头ISP系统原理(下)

    摄像头ISP系统原理(下) l  WDR(Wide Dynamic Range)------宽动态 动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最 ...

  9. CPLD/FPGA厂商概述 .

    随着可编程逻辑器件应用的日益广泛,许多IC制造厂家涉足PLD/FPGA领域.目前世界上有十几家生产CPLD/FPGA的公司,最大的三家是:ALTERA,XILINX,Lattice,其中ALTERA和 ...

随机推荐

  1. Spring Security如何优雅的增加OAuth2协议授权模式

    一.什么是OAuth2协议? OAuth 2.0 是一个关于授权的开放的网络协议,是目前最流行的授权机制. 数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令 ...

  2. 教你如何在linux操作系统下玩【俄罗斯方块】高清+语音教程

    主讲人小冰QQ:986945193 新浪微博:http://weibo.com/mcxiaobing 百度贴吧:忆驹家族小冰 腾讯微博:http://t.qq.com/q986945193 高清视频 ...

  3. oracle 11g 导入表时 提示 ***值太大错误

    导入数据库时,总是提示**值太大,实际值是**的错误. 具体忘了错误代码是什么了 ——! 经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题, 解决方法: 如果可以的话就把数 ...

  4. akka-streams - 从应用角度学习:basic stream parts

    实际上很早就写了一系列关于akka-streams的博客.但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点.因为akka-streams是akka系列工具 ...

  5. Go语言使用swagger生成接口文档

    swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言.Swagger与一组开源软件工具一起使用,以设计.构建.记录和使用RESTful Web服 ...

  6. 判断Java程序是否在jar中运行

    URL url = TextRenderer.class.getResource(""); String protocol = url.getProtocol(); boolean ...

  7. 【API进阶之路】用API打造一条自动化内容生产流水线

    摘要:搞定了内容审核之后,我又把抓取工具.内容审核API.文本摘要生成API串联在一起,从抓到审再到编,建立了一条自动化的内容生产流水线,编辑团队只需要做优质内容的推荐就可以了. 上周,运营部将官网上 ...

  8. 软件定义网络(SDN)第二次实验报告

    目录 实验 2 :Mininet 实验--拓扑的命令脚本生成 一.实验目的 二.实验任务 三.实验要求 四.具体实验步骤 引导实验 Part 1 引导实验 Part 2 本周实验任务完成流程 五.注意 ...

  9. k8s报错解决思路

    问题1 1.报错信息如下 [root@ken1 ~]# kubectl get po The connection to the server 192.168.64.11:6443 was refus ...

  10. idea配置springboot项目记录

    配置文件application.properties server.port=80 server.servlet.context-path=/bookManage spring.mvc.static- ...