|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑
# X% h' x$ o7 e9 N2 ]6 z
/ v0 q5 t! [) O. k1 a9 d7 c) A3 W 楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。
: t0 }2 i1 [1 ~" a( N1 S% N 今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。
3 Y+ y: E- b7 B3 Q 下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):- D( \$ w) \& ^1 h/ i/ H. d
) z( N, K3 R2 d" q* C/ E( A2 L% [; h0 Y2 X1 ]2 O9 G' O
Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF) _% H8 ]0 F+ M
* E" c9 `9 G) ~% S$ T# s 高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。
8 U4 j# @. N; K( g' R1 [7 x3 D4 f
8 S `+ j9 m9 E/ {- l BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。
7 [, ~- I+ ? N b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。1 K. O; g2 W7 k4 K* O0 }9 ~ C
3 u8 y7 L8 j; e6 y' p2 @2 G- D6 P
gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771
% v' y& f% a" I9 A( {4 n/ r: ~3 R- x6 S- R: a
) p/ N, G1 e% p CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。" C1 ]8 B6 ^$ D+ A! Z" l$ a
# k4 z! R" M3 ]5 F
小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。
9 Z: d& a1 D3 E! i) A( m0 a" u' n9 N3 R 6 v* h9 j5 K; v7 ]% [/ u
Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure. 5 }! i% Z, ~; T- O, W
+ i0 i1 [: B$ j. V, @1 E+ g i1 y+ I& a/ T" Z. k9 H) h
4 b0 D" K+ B# r0 ^- ~2 B$ V! {
5 A8 }# t$ O) M0 P8 U
7 l: e/ J8 s- \/ d4 y R
+ _1 l" \ j: p B: f3 U# H3 e; w: \8 i$ v0 J
# y- X J' q* h3 X" _5 \
0 W) u2 l& ~' {! ^. R/ m
0 ]# R( w A7 ?: V
3 D [# S7 j6 W 2 l1 ]* ?5 S7 f0 p5 e! ^3 N9 ]
/ B5 F* I0 o' h1 I
3 e* y6 \& u0 l y4 ^* W; Q
: H8 @+ I& P- w* a/ Y4 Y7 i+ r1 s+ c& w( \. [" ^% Y8 E
6 v4 b* u0 s0 c( G# g5 z
8 \$ |+ O8 N5 D7 Q$ Q
7 L! j1 u$ K$ f& D) q# t7 \3 l9 _$ |! p8 a6 F
2 N5 V' W1 q% v, K) E, c: N * V- d! N; L5 a" b+ T; [ h& ^
% `4 F& q Y0 c% b W
. H8 i" R% I4 V: ~& ? |
|