|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑 - R6 P3 m* {6 q' R! ~( w7 P8 W
% B+ I* G7 Q# n0 n1 j u
楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。0 L6 l1 l: r# h
今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。# n# i4 k a/ T9 ]
下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):8 _5 Q9 g" R! R3 T
" r) L4 y4 N3 ^1 `8 L6 A* K
7 c5 g: a2 {2 o% `: E9 b; z, u Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF8 w' u9 O& h: _' Q! M
) P1 W& T! n7 X7 s
高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。/ Z' q7 _1 c9 @5 ^* E
& o1 w5 r9 b. ^- a% A/ I& } BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。
6 E9 J& ]4 t3 ^) |! [ b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
0 |& E% {, k: J/ A$ ~0 l3 @3 P% B( B# X+ P9 i) q
) Z {- i7 W ^+ w1 n, f gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771
' Z, P1 I( N$ ~" P
1 ~7 F0 A# {" e$ H
. m3 R. W3 ~: x8 t- p# F8 N6 @ CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。+ n# t. l9 U T. J! l: }
3 p( s6 ~ H6 u4 M5 a 小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。
" N' i& H& z! T" w ) D- T7 o( T( Y" f! u+ J$ f
Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure. * H0 L( c6 i8 s7 F0 c
! Z% P0 G2 `- Y4 r. A: t
. k6 D( t; d1 L( i7 G+ |8 g
& G- y7 S v8 b3 j5 b. s6 r
$ J: s) ]# w$ u0 f. j# [2 c: F4 l1 v" S, i6 x7 A
% F3 D4 A" F( X# _2 K
0 i. U) T0 ^ p& t
0 k) i' Q6 j( p4 ~5 q9 I) q
( d% F& c3 p6 Z3 r! F2 f
) l: n6 }3 x* s1 S5 J8 O$ L
3 F% t9 K* l4 Y2 {, H ! P! h4 o* K' C c4 W
& @! H) L1 y+ g& [% y5 v) F
% e/ W- c6 i( J/ Y9 r. \
. a' P% \4 e6 S5 _& }. P$ p; i% P) M: F2 x" n7 ]
8 y3 S( ]9 c* B6 {- o; {$ w2 E
! W. {# z6 A, T1 ?6 t
% t! A7 W1 [3 X6 V
+ D% O/ K8 l9 h8 `4 S
* b7 s" A6 n: n& r( O% g' Q
7 M. H8 D+ M: k% @/ j/ n! T/ d. ?0 l$ A1 T* z
9 M/ C7 G# \. I, U, G. y |
|