|
|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑
( G N4 |. |1 D/ @% i
. Q7 F; I: C4 v5 v( N 楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。: r7 W. |% G1 y/ y# k4 w) A' d
今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。
, f8 q" K& k" o+ W9 x% l 下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):
/ f5 ]( R: q4 s( b% G, G) d+ ~9 Y5 y% K* u" Z8 E8 i: f( | N
) j# L# A0 n7 h$ j# w Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF( v* q) b/ U+ ]$ s
1 b% q0 W7 B) c& k X. m4 I8 d" {
高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。$ R* j6 T4 ]( F+ z* z
3 C0 _; V" ~# P
BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。 . C# l2 l+ o m& Q4 d/ D2 |
b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。 K; E: Y( ~: B4 F5 Y
: R( z: D. ]- o9 m6 W# d; P( y
+ [; H9 I0 @9 k# b: v$ o+ I gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771: G. \* e1 `! y; W3 Q, \ s2 g1 _
1 k7 Y+ w# ^7 i
2 E$ s! s4 y8 a" y0 Z, @' v, w. f CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。
7 I" _1 C. ]& E# H7 y0 U * ]6 E( b; @7 j4 x& n" C" [" M
小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。
: i/ l) k3 T- ^/ N 5 E. C' w! p; R% _
Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure. 9 r, G8 l7 L: z% [. K- u
( I1 r, C+ M' u' p3 b6 d
" J( ~" C( `0 B
- S" f( D6 x$ `! q1 c9 l! M
% d: s% \- q4 p- l1 m! L3 ~9 T+ h% {5 J! d# x# s2 S
0 k# u0 Y9 E2 X. r$ z4 g( ?
1 K4 X6 x2 z! e3 q# U: |
- p% h, S) ?9 P 8 m2 b o( g( l9 K; b5 `- J1 D
+ o* S, b! a I V: i. H
. W6 I1 Z6 g, e: `
$ K0 F2 ?- A9 I7 D5 t, @: a' h 2 ]/ m5 ^, z; J2 \4 X5 Y+ X
; l- ?- w$ l% `$ g/ @0 i$ F 3 }' C3 s* j$ T+ U5 u2 ~
; z4 Y5 W# m, i$ O7 o3 P1 T7 ~$ @) F3 z
& a3 D: `! \1 l. ]. }
h4 l, Z8 l5 ~. }. T: r$ J- b- r4 `2 T9 w3 S% n
; T: L: y, G/ m$ R0 Q3 Z( i( G/ s2 I
1 Y1 M/ A; Y, y4 @" q: d$ A 0 \# p1 v- B* \! y( a9 @& N
% K; y. J8 l$ ?% t% x% l; R3 K
6 ^! Z2 o+ v0 q% Y |
|