0-基础知识
手机摄像头:PCB板、镜头、固定器和滤色片、DSP(CCD用)、传感器等部件组成。
工作原理为:拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到手机处理器中进行处理,最终转换成手机屏幕上能够看到的图像
焦点:
景深:
根据公式可以得到
(1)、镜头光圈:光圈越大,景深越小;光圈越小,景深越大;
(2)、镜头焦距:镜头焦距越长,景深越小;焦距越短,景深越大;
(3)、拍摄距离:距离越远,景深越大;距离越近,景深越小。
ISP芯片的作用就是对传感器输入的信号进行运算处理,最终得出经过线性纠正、噪点去除、坏点修补、颜色插值、白平衡校正、曝光校正等处理后的结果。
例子:
RGB565 每个像素用16位表示,RGB分量分别使用5位、6位、5位
光学变焦:光学变焦是通过移动镜头内部镜片的相对位置来改变焦点的位置,改变镜头焦距的长短,并改变镜头的视角大小,从而实现影像的放大与缩小。光学变焦不会牺牲清晰度
数字变焦: 数字变焦是通过可拍照手机处理器,把图片内的每个像素面积增大,从而达到放大的目的,就像我们在ACDSEE等图像处理软件中,强行拉大图像的像素一样。数字变焦显著牺牲清晰度
自动对焦算法有很多种, 相位,图像等等。 Voice Coil Motor(音圈马达VCM) 需要这种马达才可以调整自动对焦。
FV: Focus Value, 用来衡量图像AF的清晰度。
DOF: Deep Of Field, 景深,表示物距清晰的范围,景深越长表示物距前后清晰的范围越大
FV 与DOF 有了对应关系(如下图曲线的顶点位置),就可以定于拍摄的最佳位置,自动AF 就可以想办法做了
1-ISP 流程
备注:pipeline 中虽然 AWB 在 shading 校正之后,但 shading 校正需会要 AWB 根据统计资料推算出来的 CCT 值,且shading 是否校正对 AWB 影响较小,因此建议先做 AWB 色温曲线范围的调整,等 ALSC 校正完后再回来检查 AWB色温曲线范围是否需要微调。
上面的流程只是建议,如何调试看自己,大致流程基本一直。
2-其他概念知识
关于raw(bayer)数据转换rgb数据
RGB图, 即为三色图, 一个像素点就由RGB三种颜色构成的混合色, 而bayer图一个像素就只有一个颜色, 或R或G或B. 因为bayer一个像素点只有一种颜色, 需要借助这个像素点周围的颜色对它进行插值(填充)另外的两种颜色, 它本身的颜色就不用插了.关于色温的规律:
色温越高,光色越偏蓝;色温越低则偏红关于白平衡:
白平衡就是针对不同色温条件下,通过调整摄像机内部的色彩电路使拍摄出来的影像抵消偏色,更接近人眼的视觉习惯。 原理就是补充蓝色、红色, 在不同的温度下接近白色关于坏点矫正BPC(Bad Pixel Correction):
坏点为全黑环境下输出图像中的白点, 高亮环境下输出图像中的黑点。
3-shading
-
Y shading
Y 就是亮度,下面的图片看成单色图片就可以,关心亮度值
1.一般我们是计算出中心亮度L0和四个角的亮度L1,L2,L3,L4。
2.计算出他们分别和中心亮度的比值:
Y1 = L1/L0 Y2 = L2/L0
Y3 = L1/L0 Y4 = L2/L0
3.对于他们进行平均值,他们中的最大值,最小值,最大值和最小值的差
Rvg = (Y1+Y2+Y3+Y4)/4
Y_Max = max(Y1,Y2,Y3,Y4)
Y_Min = min(Y1,Y2,Y3,Y4)
Y_Diff = Y_Max - Y_Min
就是四角与中心的的Y(亮度)达到一直
-
color shading
假设下面的颜色不一致,怎么调整,调整的依据是什么
1.根据图片,在图片上选择13block区域,再分别计算出13block区域的R/G,B/G
中心:B0/G0 R0/G0
四周:B1/G1 R1/G1,B2/G2 R2/G2,B3/G3 R3/G3..........B12/G12 R12/G12
2.根据四周的12block区域R/G,B/G与中心进行比值:
R/G:
RG1 = (R1/G1) / (R0/G0)
RG2 = (R2/G2) / (R0/G0)
RG12 = (R12/G12) / (R0/G0)
B/G:
BG1 = (B1/G1) / (B0/G0)
BG2 = (B2/G2) / (B0/G0)
BG12 = (B12/G12) / (B0/G0)
3.计算出12block区域RG,BG与中心的相对偏差比值:
RG_offset:
RG1_offset = abs((R1/G1 - R0/G0) / R0/G0)
RG2_offset = abs((R2/G2 - R0/G0) / R0/G0)
RG12_offset = abs((R12/G12 - R0/G0) / R0/G0)
BG_offset:
BG1_offset = abs((B1/G1 - B0/G0) / B0/G0
BG2_offset = abs((B2/G2 - B0/G0) / B0/G0)
BG12_offset = abs((B12/G12 - B0/G0) / B0/G0)
4.计算出12block区域的offset的偏差值
R/G:
RG_offset_max = Max{RG1_offset,RG2_offset,......,RG12_offset}
RG_offset_min = Min{RG1_offset,RG2_offset,......,RG12_offset}
RG_offset_Diff = RG_offset_max - RG_offset_min
B/G:
BG_offset_max = Max{BG1_offset,BG2_offset,......,BG12_offset}
BG_offset_min = Min{BG1_offset,BG2_offset,......,BG12_offset}
BG_offset_Diff = BG_offset_max - BG_offset_min
3-颜色矩阵
M是颜色矩阵,C颜色矩阵分量是图片中包含的RGBA信息,C1矩阵是用M应用于C之后的新的颜色矩阵分量。
M中数据含义 :第一行决定红色、第二行决定绿色、第三行决定蓝色、第四行决定了透明度。第五列是颜色的偏移量。
改变颜色分量时可以通过修改第5列的颜色偏移量来实现
4-fix pattern noise(FPN)与 temporal noise
从色彩空间上分,可以分为luma noise亮度噪声与chroma noise彩色噪声。
从时态上分,可以分为fix pattern noise与temporal noise。
- Fix pattern noise 与时间无关,表现上看就是噪声幅度不随时间变化。
-
Temporal noise是随时间变化,在低光下录制的视频中不断变化的细小信号就是temporal noise。
也有的分法把fix pattern noise定义为在图像行或者列存在的一条条的噪声,如下图所示
Temporal noise视觉上是一种高频噪声。
temporal noise的方法就是多帧平均加运动检测,如果存在图像存在变化就不累加,如果图像无变化就累加平均。
5-畸变类型,如何处理畸变
畸变类型: 径向畸变,切向畸变
**5.1径向畸变 **
径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。
泰勒级数原理
x0 = k1x+k2x²+k3*x³;
y0 = k1y+......
因此k1,k2,k3 三个参数确定就能校正。
5.1切向畸变
下图的r 可以看成常数;
因此p1,p2 就可以校准了。
根据畸变的方式,只要确定了五个k1,k2,k3,p1,p2参数,就可以进行校准了;
REF:
ISP各模块功能介绍及调试经验