LSC(Lens Shading Correction)是ISP算法中的一个重要组成部分,用于校正镜头遮挡(lens shading)现象。镜头遮挡是由于镜头和图像传感器的光学特性导致的图像亮度不均匀的现象。通常,图像的中心部分较亮,而边缘部分较暗。LSC算法的目标是通过校正这种亮度不均匀,使得图像在整个视场中具有相同的亮度水平。
1、产生原因
镜头遮挡(Lens Shading)是一种导致图像亮度不均匀的现象,通常表现为图像中心较亮,边缘部分较暗。镜头遮挡的产生原因有以下几点:
-
光学透镜特性:透镜在将光线聚焦到图像传感器上时,会出现光线衰减现象。由于透镜的几何形状和折射特性,光线在经过透镜边缘部分时,衰减程度通常较大。这导致图像边缘部分的亮度降低。通常镜头的衰减符合:。
-
光源角度:在拍摄过程中,入射光线的角度对镜头遮挡现象也有影响。当光线从不同的角度入射时,透镜边缘部分的光线损失会更加严重,从而导致更明显的遮挡效果。
-
传感器接收特性:图像传感器(如CMOS或CCD传感器)在接收光线时,由于其表面特性和感光元件排列方式,边缘像素对光线的接收效果可能会降低。这会导致图像边缘部分亮度不足。
-
透镜涂层:为减少反射、降低眩光并提高透镜性能,透镜通常涂有多层薄膜。这些涂层会影响透镜的光学特性,有时也会导致图像边缘亮度降低。
2、矫正方法
2.1LUT矫正法
-
捕获一幅平坦照明图像:在均匀照明条件下拍摄一张图像。这张图像应该包含镜头遮挡现象,可以作为校正的基准。
-
生成理想的平坦照明图像:创建一幅理想的平坦照明图像,该图像的亮度在整个视场中应该是均匀的。这可以通过计算一个与实际图像尺寸相同的均匀灰度图像来实现。
-
计算校正表(Correction Table):比较实际拍摄的图像和理想的平坦照明图像,计算出一个校正表。校正表可以表示为一个一维或二维的查找表,表中的每个元素表示相应像素位置的亮度校正系数。
-
生成LUT:将校正表转换为一个查找表(LUT),以便在实时图像处理过程中快速查找和应用。LUT可以存储在硬件或软件中,以实现高效的计算和校正。
-
应用LUT校正:在实时图像处理过程中,对原始图像的每个像素值使用LUT进行校正。这可以通过查找表中与原始像素值对应的亮度校正系数,并将其应用于原始像素值来实现。
通常情况下为每个像素点创建表要存储的东西就太大了,因此一般不这么做。
1)radial shading correct
上面有提到衰减符合cos(θ)的四次方规律,而θ在三维空间对各个方向是一致的,所以各个方向的衰减如下图 图中相同颜色可以理解成亮度是一样的,也就是图中红色一圈圈的像素需要的增益是一样的,所以就可以用半径为变量来求出不同半径像素需要的增益。然后把半径对应的增益值储存在内存中,到了要用的时候再拿出来用,从而完成矫正。但是不可能把所有像素的半径都存储起来,所以就通过采样的方式提取特征半径的增益存储到内存,然后其他半径对应的增益在矫正的时候通过插值算法求出来。这种方式对内存的硬件要求就低了。这就是radial shading correct。
2)mesh shading correct
和半径不同,这种方式是把整幅图像分成n*n个网格,然后针对网格顶点求出矫正的增益,然后把这些顶点的增益储存到内存中,同理其他的点的增益也是通过插值的方式求出。
2.2多项式拟合
多项式拟合的方式就是用半径为采样点,然后把这些采样点通过高次拟合的方式拟合成一个高次曲线,然后把高次曲线的参数储存起来,用的时候把半径带入公式就能求出对应的gain值用于矫正。