|
本帖最后由 wbsn123 于 2019-6-17 09:47 编辑
) @2 b; b7 R. r: B0 w1 z
- M9 `4 A( r5 V6 z7 q3 u. s 楼主最近工作调整,现在再学习driver部分,啃代码中{:cry:},camera的驱动移植点亮很简单,但是完全看懂高通的surfaceview逻辑也是很头疼,现在也只能说看懂了30%。& I0 E% a! J: x1 q
今天抽时间写下一直想写的这个ISP pipeline部分,这个部分其实一直有在构思,想写好真的不是很容易。但是这个部分是非常重要的,ISP 的处理流程,这个部分是考验你对平台的理解怎么样,几乎所有的应聘里面面试官都会问到这个问题。所以我今天来谈谈我的理解,希望能够对大家带来帮助。6 r( H0 ?5 d# E& I. |6 i
下面列出我认为合理的pipeline(相对高通文档上面的处理过程,这里只是列出关键部分):
9 u+ v5 c2 @- n8 `5 l. ?2 G- c5 a6 m- t3 i6 r! t
8 { j- X/ ~' x- u Mipi–> BLC –> linearization –> DPC –> ABF –> Rolloff –> Demosaic –>Color Correction –> Gamma –> Luma Adaptation –> ACE(advancedchroma enhancement) –> WNR –> ASF
3 A; W9 q0 P; j5 O
6 o4 z& u. g2 D9 D0 ?7 N 高通将sensor吐出的RAW数据先后按顺序分为三部分处理: 1. Bayer RAW域 2. RGB域 3. YUV域 (上面红色部分标出色域转换的地方,下面挑重点讲一讲)。
/ |+ I) N6 A# N
' I$ V% ?$ Z# E- U. h; [- { BLC: 大家常说的黑电平校准产生的原因无非就两点:a. sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,因为人眼对暗部的细节变化更为敏感。
+ p- ^- J. L" T2 U8 b' }3 q b. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
2 h) Z, r( L2 F5 A( w: M) W& x z! T+ w" d$ f4 _
$ B) w$ g5 S* E" n4 E
gamma校正:是为了配合屏的gamma校准,为了让图像真实的还原到显示设备上。gamma的理论可以深入研究,可以参靠下面这个博客 https://blog.csdn.net/candycat1992/article/details/46228771; B4 K# p' l. [6 s, Y3 u( u- k
, M+ B7 E! O- F/ ?; P7 M
) W- }! k! \4 J# e% E CCM:每一个色温的R 、G、B的比例都不同,所以这就需要我们按照不同的比例来进行补偿。
! |+ A- |8 i- f7 k$ ]3 Y) _$ |/ R
/ Y4 K8 d* |0 E9 s2 L6 M 小波降噪(WNR):小波降噪能够从频域去除高低频噪声,并且能够较好的保留细节,高通采用一个双边滤波器来实现,参数用来控制滤波器以及去噪力度。, }& b% k8 |# _. }# e. u
2 o" V3 \% \+ M" k# @! b; W" \
Luma Adaptation(or GTM): global去控制所有像素,而LTM可以做到不同像素使用不同的 tone mapping cure.
* Y3 d C( M( W( U6 @% i/ S0 y7 [, g! c
* n( z9 B; y: F1 H) b& D( b
+ q+ B0 b+ D3 f8 \- P5 N4 L
4 V# R$ W) k1 |2 e, O% r$ Q, y! s0 F ?( l7 D
7 p9 l; i K, z! V" I/ V. @. t
; z" p3 K4 p7 i* l* R( g/ M) t * q9 ]5 h+ d. s/ R
7 ]2 j1 Q8 i, f: X9 E
, A) t* w7 [: ^; b8 \; }$ ^
" N, C& v: c. d" }
" ~) W" U' Q, _" G/ O 4 L7 f* b; w* a V/ c# z
% r( F% } B' }! h) Z
. I& K3 [7 C1 u& `2 e6 {3 _
8 o: ^* ?; z. N" t. D7 ^
$ b5 D( y b, k! `9 _: I6 d T4 a ' W9 k+ [# U# I2 a# K
; s# R- N8 J" ]7 B
9 [# G: Q3 q) s! u! q3 M/ Z
: O/ c3 S/ x" Z4 U% E$ I i 1 ]" K( P5 J& h- R5 R8 j
( l! n, E. {/ j
# W- y- j. `- `1 O9 p |
|