|
|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑 V* n+ [- n; w% w( r( s
+ S) l* o) u m8 _$ ~% r+ o 楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。. k6 \% f* {2 F
今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。
5 |( v. G3 O% [) C 下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):$ X# \ e* s# j: v, Y: T& K
/ ~0 v& H3 |, W) @* [( C3 a% j* ~. k }2 P# o6 H' |6 z8 {
Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF: M; N2 M5 n3 E6 S- l9 D( i
3 V$ o6 W/ g: Q: C# f# ]3 l6 c9 x- P* G
高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。
; q1 X# V9 A+ o8 @* c
$ |: L, y% o% _8 m) X BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。
% I& l4 I `8 ^ o: X! x& R. r2 z b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
: N' c' x+ Q, Z
% |% X' u" o% _" M
7 V Y( J; h( {6 o. R) \( { gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771
' L! _6 G m8 G* R; _3 b3 m r: c4 m
* n V1 ^; b+ {4 T# X$ J/ X/ u4 Z
CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。1 m' k! b/ T% `$ S1 a
9 q) o0 V5 X' p8 ]! \5 U
小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。
, q7 V; z6 I. Z1 G6 c# }- H + `/ `9 ~4 P7 O9 X+ z! g, U
Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure. 8 _7 {, z, C9 ?) S' l
3 M. L" A/ U- x
. P! t/ s3 A. t! K9 n( d
. D: z+ `6 k1 @ 1 G+ T/ J) g( h
' u- v1 L9 b/ h, O* A* ^/ c! X
) B4 L: z" |# |0 `8 c( U3 o% h
0 z& S2 G0 |, @+ b# W/ ^
+ p J+ u3 \0 H
# w" C& a( u$ _: [) l& v* Y) E( J" o; `: c+ V+ A
" I( ?) Y0 n; \0 H6 I, V
" X3 X: F/ X; B: O; @( _* x
0 v' `9 x s* d# ] 7 r$ V7 n# y: _" B+ }
8 w6 u% j- V$ R; x% Y) Q+ [! x0 ?4 s% w7 ^0 W% j
?, F! f4 i0 G0 f
7 B: E4 U* d0 o, e l# H
' ~6 J: A9 @3 ` g! A; |* B/ } s% S; m+ e% j
) X) x9 M& x# O& ^
; O& A6 _# ?) r/ G2 g' k
, O& @! U+ _: G( k1 }# O/ M% f7 f
|
|