|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑
8 Y; Y3 e/ _, |; }& V1 \3 Y7 m
; {+ d- x% H3 B0 q2 l 楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。
! D% `0 q0 b+ y; ? 今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。$ ?4 `0 R$ I+ M) w& _$ I
下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):- S# _. J+ \+ T* t7 F3 K
5 R$ ]7 `/ h. ^% S Y( a; P2 M
* H4 `; H+ Z; a: r7 u
Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF( s7 g- O4 M J
# T2 ?& \5 \+ N2 d5 V 高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。
( M4 u, G4 T% \" n3 s1 e
7 F5 C$ H) r! q BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。 7 |" x0 @! `+ A$ _8 q
b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
- ~, N2 X% f) \- ^8 g# H$ ^
. G# M0 s B* t3 y& H$ t
2 p2 m& R2 Y: i% I" U# {9 g gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771% a2 U9 s6 l- n6 i
/ c/ N% \0 k! B, R
& x5 M' I" `0 o CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。
/ u. O* P% A8 b/ ~; S- v
( b n2 e- a$ o K2 _+ f1 `# C 小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。
& |8 E, U! r/ L3 l
9 f8 P* P3 o- Z( Z' m Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure.
$ @. X) v$ p9 S, a+ e6 }3 [% p, i' O6 h. h' i; O E
4 c8 v) i" A/ w s: H. w* e * \/ J# x/ d' |) |# E
3 p: I' F# D: l/ b( @
) ^# j4 d2 W9 n* i) N8 r
3 u9 G7 q5 G! Z& K' k ! u8 E& v% Y8 `# h$ v
7 F2 p$ b2 J6 F8 ~
8 Y& s2 u- h( u+ R1 W
& S9 T9 K' m. @9 x. Q. c. U. s( ^2 p# q" s( L& P- p3 F) ~5 n
8 H# T# c! u7 z4 S0 q ) R3 {) B6 P+ j6 r" ?2 V8 ?% @
7 X8 G, |5 p& O
/ H# Z( p( F5 z# O) q5 ^% v
! `* S6 @1 Y w; O& ?+ }; @" ?* |7 i5 f) r: {* }! U
. c% |" ]/ i- |# e; O: j
4 C/ V* E# G9 o/ H& _9 c9 S/ Y% U6 a1 N8 n- h$ a
8 u5 `+ B/ o% Y 6 [0 N- s0 I3 W# }
( j7 h, ^0 s& f- j; o
9 W. j: v5 z8 q! Z/ X$ G7 N p |
|