ISP之LSC

我只是一个虾纸丫 提交于 2020-04-12 19:00:26

                                                            ISP之LSC

1.1. 基本概念

1.1.1. What is Shading & Why Shading Correct?

镜头阴影(Shading)分为亮度阴影(Lens Shading)和色彩阴影(Color Shading),简单来说它们都是由镜头的光学特性所导致的图像的亮度和色彩不均匀的现象。其中,Lens Shading是由于Sensor边缘接受到的光线比sensor中心弱,从而造成了中心亮四周暗的现象(有的文档也称这种现象为“渐晕”)。Color Shading是由于入射光中不同波长的光的折射率不同,导致入射光中不同波长的光落在感光器件的不同位置上,造成图像的色彩不均匀的现象。Color Shading一般与镜头和sensor的CRA不匹配相关。

1.1.2. 影响因素:linearization

一般来说画面局部偏色还可能与linearization相关,评估sensor时应关注sensor线性化的特性,部分DSP处理中也会在ISP pipeline的开始加入sensor linearization的矫正。

1.1.3. 影响因素:OB

部分国产sensor的性能较差,画面边缘的OB可能和中心不同(高温下尤其明显),如果OB仅整体扣除一个数值,反映到最终图像效果上可能会造成lens shading或者color shading。

1.1.4. 影响因素:AWB

AWB并不会造成color shading,但是AWB会放大color shading的影响。

1.1.5. 影响因素:lens和sensor

Shading的根本影响因素是lens和sensor,物料选型时应注意sensor、lens的CRA匹配,sensor靶面大小与lens匹配。

1.2. 算法设计

1.2.1. ISP pipeline

Shading一般在OB和DPC的后面。额外注意,如果3A的统计数据在shading之后获取,那么shanding会影响3A的统计数据。

1.2.2. 矫正方法

Shading的矫正方法目前主流有两种:一种是同心圆法,一种网格法。

同心圆法的流程为:

1. 找到RGB三通道的圆心(一般选择为同一个点)

2. 以同心圆的形状将画面的中心和画面的边缘的三通道乘以不同的增益

具体如下图所示,一般来说考虑shading渐变的曲率从中心到边缘逐渐增大,所以等增益曲线中心稀疏,边缘密集。一般来说lens shading的增益最好不要超过2倍,因为会引入噪声。

下图为mesh shading的矫正方法,同一个方格中的增益一致,mesh的分布也是中心稀疏四角密集。

最后总结一下:同心圆矫正方法的优点是计算量小,缺点是镜头若装配时稍有不对称则矫正失败;网格矫正方法的优点是能够应对各种shanding情况,缺点是运算量大。

1.2.3. 联动方式

Lens shading可不做联动

Color shading可在三种色温下进行差值

1.3. 调试方法

拍摄不同色温的DNP,然后与目标值比较进行校正。

1.4. 测试方法

1.4.1. 客观测试

1.4.1.1. 测试设备

平板光源(DNP),最好包含三个色温(3000K\5000K\7500K)

如果没有平板光源,拍摄白纸或者白墙也可以,但是测试精度会差。本人实测,即使是DNP均匀度也只有95%-98%,灯墙内壁的均匀度大约为90%-95%。最不济可以自行制作平板光源,需要非常注意随着使用寿命增加光线不均匀的问题。

1.4.1.2. 测试标准

看各自喜好,有的手机厂商要求lens shading在80%以上,行车记录仪或者安防摄像头可适当降低。特别需要注意,如果镜头本身比较差,原始的lens shading为30%,切记不可强行提升过多,因为矫正shading的本质是增加图像边缘部分的增益,这样低照度下会带来非常大的噪声。

有的手机厂商要求color shading的比值在0.9-1.1之间(一般来说R/B的color shading会偏差最大,但不可只测R/B),有的不要求。

1.4.2. 主观测试

1. 拍摄灰墙或者白墙,观察四角发暗的情况

2. 观察图像四角的偏色情况

3. 观察图像四周的跳动噪声

 

 

FPGA ISP LensShading

关于LensShading 形成的原因, 参考资料众多,这里重点讲解FPGA上如何实现Mesh LensShading。

首先,给出FPGA实现的系统框图:

在算法设计时,对图像采用分块的方式,每个块中包含一定数目的像素点,实际需要根据处理的分辨率来设计块的大小,这个需要在资源和效果两方面需要考虑:采用较小的块均衡后效果会比较细腻,但是占用大量偏上存储资源保存系数;采用较大的块均衡后效果可能比较粗糙,但是对偏上存储资源要求低。
根据输入像素点,分别在行方向和列方向计数,确定当前像素点所在的行块、列块的系数,拼接形成地址,用于索引系数LUT。同时,行计数、列计数在每个块内会有一个局部的坐标,用于索引行权重、列权重。所以FPGA会用到3张查找表,用于计算当前像素点的均衡系数。

如果所示,在对黄色的pixel进行均衡时,知道块索引以后,可以得到当前像素点用于均衡的四个系数(保存于系数LUT),Weight coe1/2/3/4。同时知道黄色pixel在矩阵中相对位置,则可以根据双线性插值原理,计算pixel对应的权重。




最后则可以完成对pixel的均衡。
理论上mesh的方式要优于radius的方式,sensor毕竟是矩形。另外,海思芯片的ISP也是推荐采用mesh shading的方式。
 

转载自https://zhuanlan.zhihu.com/p/92164882

https://blog.csdn.net/wuyanbei24/article/details/104563633

发布了50 篇原创文章 · 获赞 159 · 访问量 33万+
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!