ISP流程介绍(Rgb格式阶段)
一、ISP之Gamma
ISP流程里面加入Gamma,原因上来说大概有两类解释:
1、在液晶屏作为新一代显示器之前,早期的显示器设备主要是一种叫CRT的显示设备,这类显示器输入电压和屏幕亮度并不是线性关系,而是大概满足:gamma_2.2的映射关系,所以图像输入数据,需要反向进行gamma_1/2.2的调整,来保证图像显示正常。
2、人眼对环境亮度的响应并不是线性关系,而是对暗处环境变化更加敏感,所以通常我们希望对暗区提亮和拓宽暗区的动态范围。
相关的详细介绍可以参考资料:https://zhuanlan.zhihu.com/p/397813417
但是目前实际上来说,并不会完全参考所谓gamma_1/2.2之类操作,而是通常ISP调试时候,会根据不同硬件,不同应用场景和不同客户喜好,针对性的做不同强度的gamma调整。
并且随着动态范围和对比度调整算法的相关发展,除了全局gamma之外,各类局域gamma或者叫ltm调整之类算法,也被广泛应用在ISP内部芯片中。
最基本的全局Gamma操作和效果表现如下(图片引用来自:https://www.cnblogs.com/picassooo/p/11792182.html):
二、ISP之CCM
CCM(Color Correction Matrix)也就是颜色矫正矩阵,该模块引入的原因在于:
1、sensor本身并不能保证很好的色彩还原,不同的镜头/感光芯片对色彩的还原程度都有不同强度的偏差。
2、ISP前端处理,比如Gamma之类操作,会导致图像的色彩还原效果偏差变得更加严重。
因此,我们需要一步类似标定的颜色矫正工作,将不同硬件差异的sensor和不同gamma强度调整等操作后的图像,还原到真实色彩空间样子。
实现原理如下:
简单来说,就是我们希望得到一个3x3的M矩阵,可以让右边输入图像的R/G/B颜色,经过该矩阵变换后还原为左边颜色水平。反应到实际操作:
1、获取到当前sensor拍摄,待CCM矫正的RGB 24色卡图像,作为input图像。
2、使用现有拍摄好,色彩还原良好的24色卡图像作为ref(这个标准图像可以直接在网上找到),取出24色卡上各自对应色块信息填充到公式中(所以公式中的n=24, 有些计算里面色块最下面那排没有参加计算,这种情况下n=18)。
3、使用最小二乘法,求解出该sensor的颜色矫正矩阵M。
这里需要特别注意的是,通常来说ISP走到这一步的时候,基本是已经经过了AWB白平衡调整了,所以必须要保证这里做颜色矫正,不会破坏调整好的白平衡效果,那么就需要求解出的M矩阵还要满足一个特定条件:
让原本R=G=B的输入图像,在经过M矩阵矫正之后,还能满足Rnew=Gnew=Bnew。所以在前面第三步,求解M的时候,需要使用带约束条件的最小二乘法求解。
校正前和矫正之后图像可以参考如下图片(引用自:https://zhuanlan.zhihu.com/p/36896593)
更多细节的话,小伙伴们可以参考:
https://zhuanlan.zhihu.com/p/36896593
https://zhuanlan.zhihu.com/p/413851281
等相关文章。
三、ISP之CSC
CSC(Color Space Convert)也就是颜色空间转换,在ISP里面的物理意义,通常都是都是将RGB图像转换到YUV空间中。这一步的基本左右,在我理解里面主要是两方面考虑:
1、将rbg分离为Y(亮度)和UV(颜色)信息,由于人眼对亮度信息的敏感程度远大于颜色,因此在一些亮度调整,纹理信息处理(Y去噪/锐化)等操作,可以在Y通道针对性处理;而一些对亮度纹理信息不相关的颜色操作,就可以在uv通道上进行调整。
2、ISP里面通常转换后的UV通道图像尺寸,宽高都只有Y一半左右,也就是RGB转YUV数据之后,全图像的像素值数量减少一半,ISP需要处理的数据量大幅度降低。
常见的RGB转YUV方法,都是一些标准公式操作,我这边就不详细讲解了,小伙伴们可以参考:
https://zhuanlan.zhihu.com/p/505961727
https://www.zhihu.com/question/319663509/answer/2577524329
等文章,需要特别小心的就是,RGB和YUV的数据转换公式有很多套,当使用了某一个RGB转YUV格式之后,必须使用它配套的YUV转RGB公式,才能对应恢复出原图,不小心的话,容易出锅。
四、总结
本篇主要介绍了下ISP在RGB域图像上的图像处理,常见的主要操作是gamma亮度调整和CCM颜色矫正,之后将图像转换到YUV空间进行后续处理。