对于MT6589平台camera调试的学习总结,camera调试学习的是对于raw类sensor的调试,对于yuv格式的sensor是由FAE帮助我们调试的。 首先在调试一个camera 之前要准备好调试所需要的环境,实验室是必须的,另外还要有调试的工具安装。调试camera之前要确保安装好三个工具: 1.CCT (Camera Calibration Tool)camera的大部分调试工作都是在这个工具下完成的 2.Imatest 在camera 调试CCM 部分和PCA部分所需要用到的picture分析工具 3.Customer_DP 这个工具在调试AF参数的时候可以用到以及可以验证当前的照片和所用的软件代码是否一致,以及确定camera调试的好坏。 对于CCT TOOL的使用, 一、OB的调试: OB形成的原因是: 1)在全黑的环境下,理论上sensor感应到的电流值应该为零,但是由于暗电流的存在,则形成了OB 2)影响OB的原因还有热燥点,模组漏光,模组的电路打样等等原因。 我们在开始调试一个camrea之前要先看一下这个camera的模糊的好坏,若效果不好,是否可以通过软件的方法进行优化,这时我们就要看这颗sensor的OB 是否合理。操作方法:在一个完全黑的环境下,将camera用黑色的遮光片遮住,保证不能漏光(调试之前确认软件已经将meta模式下的闪光灯关掉,否则会影响最后的OB值),OB值可以通过两种方法得到,如图一选择菜单CDVT Sensor Test 中的OB Stability选项,然后run,大概两分钟左右就会出现结果,点图下边的RAW Anglysis Result,这时候我们可以先把分析验证出来的结果给export出来,然后分析这颗sensor 的性能是否OK,基本上对于不同的sensor IC的OB值是不同的,但是同一个SENSOR IC的OB 值是差不多的,如果性能够好,则OB值相差的范围在(1~-1)左右,像我们经常使用的OV5647的OB值大概是14左右,而OV8825的OB值则是64左右。若是跑出来的OB值跟这个值有很大的悬殊,则说明这颗SENSOR的性能太差,软件调试很难改善效果。2 \! C) J$ J& P4 p- V: f
1.通过RAW Anglysis Result得到的图标如图二所示:
( ^ |2 D# W$ b% g
+ q8 C- E$ O# S2.另外一种得出OB值得方法如图三所示:0 O! y9 r4 s. t; b/ K; |8 X2 P! Z$ _
1 J# J8 |4 N7 }7 L
在CDVT SENSOR Calibration 菜单中直接得出OB的值,操作方法和上边一样,若客户在最后的时候说我们的sensor在capture和preivew的时候颜色,亮度等不一样,有可能是我们这颗sensor的性能不是很好,这时我们可以分别测试一下preview和capture两种情况下的OB,然后在后续调试的过程中对于preview和capture扣不同的OB,但是在一般情况下我们只需要测试一种OB即可,在得到OB之后,我们需要将OB的参数写到我们的NVRAM里边,操作菜单如图四所示:
8 i$ `- r. S$ y4 M/ ^$ q4 b2 w
: f. ~ u) n3 Y在OB所对应的框中将调试得到的OB值填到前边的四个框中,一般情况下这四个值我们都是填的一样的,但是如果客户喜欢图片偏红一点,这时我们可以红色少扣一点,而蓝色多扣一些,这时我们R 可以填16,B就可以填17,设置完成这四个值之后,我们就按下边的按钮Calculat计算出来gain和offset,在计算完成之后我们看到图四左边还有两个对话框这时我们要将OB的值给写到对应的寄存器里边,我们总共有0~11,12组OB的数值,我们要将每组到写进去,每次写完都要点Apply to register菜单,在12组写完之后我们可以直接点Save to NVRAM,给保存到NVRAM中去。一般情况下我们在调完一个功能的时候都会保存一个对应的.csv格式的文件,以备我们后续使用。到这里我们的OB调试已经结束,接下来我们要调试shading。
" M) b, J2 g, x; w8 ^+ S& Y2 v二、shading 调试: F1 ?+ H- R6 R3 ]) G& @
对于shading 的调试比较麻烦是因为我们要拍出高、中、低三个色温下对应的preview catpuer video三组的九张照片,但是若对于要求不是很苛刻的客户,一般情况下我们可以低色温和中色温都在TL84这个色温下去拍,因为中色温和低色温的颜色本来也比较接近。在开始拍照之前我们要做好以下几个工作:1.手机平放在色温箱中,且要将滤光片放置在camera的上方 2.设置好牌照的条件,如图五所示:
$ A/ k5 b! z1 }( ?! L5 |2 ]9 a3 z$ S& k) s( ~/ [, d" C
Banding要设成50HZ,将MF设置成100,且要APPLY,保证在capture的过程中AF是在同一个距离不动,设置好之后我们就可以拍照了,拍照的格式可以选择jpeg,然后照片大小设置成1:1,mode要自己设置,shading 的调试框如图六所示:
) U' W/ f3 z! T( Y9 {5 j0 e e
在我们设置完拍照模式之后,选择tuning para按钮,可设定shding要补偿的比列,通常建议设置成85%~90%,我们现在一般都设置成85%,tuning完之后我们依次按下calculate,Apply para and table ,Apply para按钮,且save to nvram,设置完之后就可以capture了。Capture后我们可以在左上方看到拍到的照片,可以按边上的那些条件,看我们图片的shading 如何,同时可以看下边的RGBY四条曲线,好的曲线是四条线差不多重合在一起的,且是光滑和平滑的。拍完九组照片之后,我们要把参数save to NVRAM。在这步操作完之后,我们可以将图五中shding enable这个选项给勾上,去验证我们的shading是否ok,若最后拍出来的照片RGBY四条曲线是基本平稳的,则说明我们的shading 已经调试ok.(需要注意的是我们在选择capture mode的时候,图片的大小要改成16X16的,因为默认的是32X32的)。调试完shading 之后我们要去调试AE.
7 r* P( Q+ l. ^三.AE的调试:MTK不建议我们自己去调试AE,而我们在调试sensor的过程中只需要去将EV去客制化,如下图七所示:1 z7 d& s. A( H( f+ z, N
, C# ~. b: g0 o. o! H. \' o因为mtk已经帮我们定好了一个标准,因此我们在调试AE的时候,只需要将Target LV给固定为116,calibrate 出EV Offset的值,然后给SAVE TO NVRAM中,然后再整个的apply and save to NVRAM即可。AE在调试完之后,需要调AWB.3 C! \# k* z; v7 X v$ p3 Y% `
四、AWB的调试1 @0 S1 x, `6 I: W
AWB的调试没有什么技巧,但是是比较费时且需要耐心的一个过程,因为我们在调试AWB的时候要拍摄(D75、DNP、Strobe)高色温、(CWF、TL84)(中色温)、(Horizon、A)低色温等七种色温的图片,这个要用灰卡进行拍摄。手机需要将整个灰卡铺满整个屏幕。且手机是固定的,拍摄之前需要将条件设置好,在图五的基础上我们只需要再进行如下设置即可,如下图八所示:8 Z6 H/ F" f3 g7 [7 U- l* @
; r' K/ _: X' \0 d$ h+ D! U; l4 A! d因为在上边我们已经调试好shading ,因此在这里我们可以将shading enable这个选项给勾上,同时在调不同色温的时候,要根据色温的高低选择low mid high按钮,且在进行awb调试的时候我们mode要选择为capture ,拍照模式要选择pro Raw --10bit的(也可以选择pro raw --8bit),但是我们刚开始调试一般都选择10bit的,拍完照片之后,在如图九所示的图中:+ {& H9 N2 n8 q( V( K5 X
2 R8 @$ n5 I8 u: y! N* h) u3 G的左边就会出现我们刚拍的照片,我们要在照片上框一个框,然后在对应的下边的色温条中双击此时拍照模式下的色温条,则会出现这个色温下的RGB所占的权重,在拍闪光灯的时候,我们应将图五中的flash enable给勾选上拍照,在拍完七组照片之后,AUTO TUNING 的按钮就可以使用了,点AWB Light Area按钮,此时可以看到七个色温所对应的的温度框,如下图十所示:
$ N! z* Y7 ^" }$ J1 J& _7 V
2 }; W! K$ Q0 f2 S, P/ d一般情况下我们都会自己在增加一个daylight fluolescent的框以保证所有的点都会落在框中,在增加完之后我们update,就可以看到我们新加的框了,在蓝色的框下边。* A1 C: `, D) k* W/ q% }5 W
这时候我们再按preference gain按钮,将RGB三个拉BAR都拉到最左端,保证颜色肯定是灰色的,且没有偏色,一般情况下我们都不用自己手动去调节RGB的值(默认的都是512),但是若在AWB调完之后我们发现某个场景的照片有偏色也可以自己去调节RGB的值,但是不要太大。如下图11所示:0 t3 p% J4 q) i# N: |
0 H& D% w# r& r& g调试完这些参数之后,我们就可以将所有的参数给save to NVRAM,之后我们在将图五中的AWB ENABLE给勾选上,就可以拍照进行验证了。在验证的过程中,我们就可以用jpeg格式的照片验证,这样比较快,对于我们调试的AWB效果是否好,我们可以看图九中有一个表格,在表格下方有一个get按钮,我们可以get一下,对于高色温下一般都会占到90%以上,对于中色温和低色温则是分布的比较开,但是只要你现在的这个色温占到45%以上都是OK的。调试完awb之后,一般camera的效果都可以可以的,若还要继续调试,则可以在调试AF(因为AF 是用DP 调的,因此在说完CCT之后,我们再说AF 的调试),接下来是调试GAMMA
: T4 j, z6 g/ A6 e四、GAMMA的调试
; O. T, M- k% C0 NGamma的调试是要拍灰阶卡的,根据我们拍出来的照片去调试gamma曲线,mtk会给我们几组之前别人调过的比较好的gamma曲线,一般情况下我们只要用那些曲线就可以了,不用自己去调gamma曲线,因为调试的不好会出现图片的对比度和噪点有很大的差别。Gamma调试完之后,就是CCM的调试
7 }2 _1 R4 {2 v$ k/ A五、CCM的调试
) }" C6 X; k' X( oCCM的调试有一半是用CCT调的,还有一半是用Imatest调试的,CCM调试要拍24色卡,且也要拍高中低三组色温下的照片,且在调试CCM的时候,对于拍照的模式和拍出来的照片的命名方式都是有要求的。照片模式我们要选择pro raw --10bit,照片的命名方式跟工厂模式中camera拍出来的照片的命名方式是一样的,如D65__2528x1868_10_0.raw,其中这个照片的信息D65就是在D65的这个光源下拍的,2528和1868是照片的大小,10是10bit,0是颜色格式(B:0,GB:1,GR:2,R:3),在调试CCM 的时候要确定有一个目标原W文件和gamma.csv文件,以及我们自己的照片,如下图12所示:* j/ e/ u7 E' I c
在我们将目标文件和我们自己的文件都导进去的时候一定要再图片上将二十色颜色都框上,同时点AUTO SELECT按钮,且弹出对话框要按no,确定不在重新导进文件。在选完之后我们要按Optimize按钮,去优化我们的图片,这时候我们可以看到上边的那个矩阵的数字变化,对角线的数字分别代表补偿的RGB的值,我们分析可以看到对于中低色温就蓝色补偿的多一些,高色温就红色的补偿的多一些。进行完这些操作的时候在我们安装工具的目录下有一个名字为optResult_CCM的文件,我们可以先点Reset polu data按钮,将这个execl表格中的内容清空,然后按add new poly data 按钮增加一组数据,再点Gen para,apply para,apply,save to nvram,再各个色温拍照优化完之后,且进行完这些所有的操作之后,我们就可以拍照验证我们调试的CCM 结果。这时我们需要将图五中的Dynamic ccm这个给勾选上,拍照的时候我们要拍JPEG 的照片格式,只有这样Imatest才能打开,在打开imatest的时候我们就可以分析我们现在照片的饱和度以及颜色是否偏差很大,会有一个图表出来。
& k8 S- k; W' g: q9 R& ]1 u; a ( ?1 Q, ~; O6 e
七、PCA的调试:
$ g p6 p* U7 Y8 w, y) e
0 P- |7 l" _! C* s. @八、AF的调试:
0 h+ `# [ ~& d& a AF的调试的基本是要进工厂模式下,在 Hardware Testing下有camera测试项,进入进行设置,capture size选择就是capture size,cpture type可以选择为jpeg only(为了节省手机空间,也可以选择pure raw,这时会生成两张照片,一张raw,一张jpeg),Capture number就选择为single,iso speed可以用默认的,strobe mode选择为off将闪光灯关掉,AF选择为FULL SCAN,并从中选择一张最清晰的照片进行选择,然后开始preview开始拍照,因为每次AF都要跑1024步,因此拍一张照片的时间会比较长,一般情况下我们只需要对特定距离进行拍照,远景可以选择3m,2.5m,2m,中景可以选择1.5m,1m,80cm,在70cm一下就是近景了,因为在近景的情况下AF动的会比较小,且比较细,因此在70cm一下,我们就要每隔10cm进行一次拍摄,最近的距离要根据厂家提供给我们的马达可以达到的最近距离去试,一般情况下我们就测到10cm,拍完这几组照片之后,就可以用DP工具去分析AF的性能了。' I9 y! K% n1 x7 a4 d6 f1 G
运行DEBUG Parser工具,在里边有AF Table Gen功能,在这里我们可以将照片都打开,这时候在工具中就可以根据分析最近的照片得到AF的offset,且我们可以看到在不同距离,马达所在不同位置时camera达到拍照的最清晰点,我们可以直接自己计算将lens_para_FM50AF.cpp文件中AF的参数进行填写,如下所示:
; K b( [. x u" S# N! C* n s0 {const NVRAM_LENS_PARA_STRUCT FM50AF_LENS_PARA_DEFAULT_VALUE =1 e, @7 t* X/ h3 K
{
2 Z! ~; R, ~; E# \: Q //Version3 Q9 l2 H$ M# T( A R. v( j: k
NVRAM_CAMERA_LENS_FILE_VERSION,
7 e1 H" u$ Y! l; H ( g9 {5 W5 g6 J: r9 m
// Focus Range NVRAM
1 {! o9 |% d: b8 @0 T {0, 1023},7 N' F" @. r4 y; l7 y+ W Q
# w+ P3 e+ `: c4 E1 R# T7 W3 d
// AF NVRAM
# L6 k, D; b; m8 ~8 i& E {
9 g* i' i0 }! {3 I // -------- AF ------------
2 z& m6 w" R5 K+ ^) F+ N) J: i {100, // i4Offset
5 j' X+ N% O/ N8 ?% D& T% w4 z 12, // i4NormalNum
- Y# \( e/ }- ~5 ^; X8 C; p 12, // i4MacroNum
6 s6 T l A7 @& Q7 A! N# h7 q3 ]$ O' A0 p 0, // i4InfIdxOffset
! U8 l- \( g3 G2 w 0, //i4MacroIdxOffset * k( B. ?4 S! X' q( g1 Z
{
4 b6 u8 F- I: U+ X% C) l; f 0, 20, 44, 72, 100, 144, 189, 242, 305, 379,! g4 }6 _7 r7 u5 P
453, 527, 0, 0, 0, 0, 0, 0, 0, 0,
1 C; i& a8 R& u' C" e k! d2 ?4 Y 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
O7 L# d8 H$ c p# k: j6 E/ l },
~0 u: o' b! [0 o. t第一组参数{0,1023}是指AF总共可以运动1024步,下边的100是指AF的起始值,AF在100以后才会达到第一次最清晰的点,下边的两个12,是指下边数组中AF可以移动的步数,即下边数组中AF移动的步数的个数,我们可以自己手动填这个文件,也可以将这些数给输入到CCT工具里,自动生成参数,如下图所示:- g& q+ w( F8 }( ]0 P
' _9 U n: |, i3 A1 C' B若我们马达的静深不够深,我们会发现在我们拍的照片中,每个照片所达到最清晰状态,AF移动的距离都很小,这时我们就要将我们camera近距离拍照的距离再缩短一些,可以每5cm拍一张照片,否则在近距离拍照的时候,有可能会错过最清晰的点,则拍出来的照片效果会不好,照片增多了,我们上边数组中的个数也要增加,如{# A1 U; g! ]9 {1 E! R
0, 20, 44, 72, 100, 144, 189, 242, 305, 379,
, S ]* G' _! }8 a2 _/ G 453, 527, 0, 0, 0, 0, 0, 0, 0, 0,
5 u. H$ w7 S: T0 J 0, 0, 0, 0, 0, 0, 0, 0, 0, 06 u( {* B: Z& D' h1 T' y$ h
}这个数组所示,基本上AF每步移动的距离都是差不多的,因此我们再调试的过程中也要注意AF的移动步数不要有太大的跳变,否则会影响照片效果。
$ D- F2 E4 M& {
0 ?& F: W8 y, z. \
! w" R) V- m: {5 _( e5 x |