查看: 10559|回复: 1
收起左侧

camera 调试输出格式及调试常见问题

[复制链接]
发表于 2015-6-29 13:28:12 | 显示全部楼层 |阅读模式
驱动者,三分硬件,三分格式,四分软件。; F2 ^2 A8 \$ F8 l$ y8 K, M
    在手机中,我们常将camera直接称为sensor,展讯平台的sensor就像lcd一样,已经十分的成熟了。沿袭前面的模式,先介绍一下硬件的基本知识。  d* P# N! p6 T

9 E$ ^( X+ i+ E3 ?  ^6 e
4 N7 q* I3 Z* V% d6 T# j$ P
. h% f  J! K* W9 v
    一、sensor的种类+ F) I, Q. }3 a4 z  T

( u' s6 J5 g9 y% u        其实这个对于驱动来说基本略知就可以了,处于那种说出来要知道是在说sensor的专业名次这种程度就OK了!一般来说,sensor有两大类,CMOS和CCD。8 [9 t8 h, C0 \# t0 u4 x, g
一般来说,CCD的功耗高,拍摄质量高,造价高,他更适合在数码相机或DV中使用,而我们的手机中,在像素要求本来就不是苛刻,但是对空间和成本有比较高要求的话,一般都会选择CMOS的摄像头。它的工作原理很简单,接收外界光线后转化为电能,再透过芯片上的模-数转换器(ADC)将获得的影像讯号转变为数字信号输出
" I) u, {2 |1 m5 ?( q1 g3 R
6 K3 f  t, w9 J. N二、sensor的输出格式

. ?3 h0 Q; s0 e; a8 S* C        同样,sensor的输出格式也不是单一的,可以分为YUV、JPEG、RGB、RAW,这几种格式。
! C$ |9 y5 \) ~/ h  m8 O! L  _        1、YUV: I" Q- C6 D" g2 B, x
“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma), 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的。8 Q# r2 t$ }  n( z5 y
        2、JPEG
3 Z5 T5 T: L3 @# C4 E7 U5 v0 k4 F
/ X1 M( d4 [- n) R
这个不用很介绍,作为一种存储格式它是非常普遍的,但是作为sensor的输出格式的话,一般是低分辨率的,其自带JPEG engine,可以直接输出压缩后的jpg格式的数据
, s7 P: g; e* v0 U& Q1 c     3、RGB) r9 F+ j5 a* c0 |
传统的红绿蓝格式,比如RGB565.通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。
1 D8 x& q6 B1 W+ `! E  Z    4、RAW
7 I6 q0 i. _( G7 O0 I( G' {图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。: L, F+ r. k6 k0 w0 N# ]
1 R1 l. d- [5 k5 \

3 t9 X! T* G1 x+ l, f5 @好了,介绍完他们的输出格式之后,我们有样的疑问,我该选择哪种格式作为输出呢?) S  u, |9 W5 j. m
     对于展讯平台,sensor的输出格式一般都为YUV的,他的流程是:摄像机的原始数据应该是RAW来记录的,里面的数据可能会是RAW RGB来表示,然后sensor模组里面自带的ISP会将数据转换成YUV格式的输出出来,输出到我们的AP里面后DSP会将YUV格式转换成RGB的,然后在输出到屏上,如果是拍摄出来的就要经过DSP将格式再转换成为JPEG的存储下来。
+ Y, H" Y- e/ h9 s3 e
' a. R0 S# m, G% _+ }
这就让我们很费解,既然能够输出RGB格式的数据,为什么又几经周折,转换来转换去,费时费力?在这里我们就要在照片质量和处理速度上做一个权衡。

  M* H6 i$ W% Z! k/ x0 u1 K0 j
# S. i9 P9 V. U4 j9 o* Z    首先,如果说数据量最小,那么莫过于RAW格式,但是,数据传输过来要经过一次性大量的计算才能将里面的信息提取出来,如果你想用,一般5M以上sensor就只输出RAW数据以保证比较快的输出速度,后端挂一个DSP来处理输出的数据。其次是JPEG,数据量也很小,但是同样要求较快的处理速度。

5 \3 {6 C# D2 ~: {( U7 ?
9 {% g" o" P- y! C5 e. ?$ {7 r    而RGB和YUV一个像素都是占用了2B的大小,但是RGB却可以数据读出来直接刷到屏上,为什么要却要选择YUV的呢?原因在于YUV输出亮度信号没有任何损失,而色偏信号人眼并不是特别敏感,RGB565输出格式是R5G3 G3B5会丢掉很多原始信息,所以YUV图像质量和稳定性要比RGB565好的多。
0 P7 x9 I9 ?9 x

* g$ c$ T8 J2 p7 B1 M   那么,虽然在展讯平台上默认的是YUV的,并不是说他是最好的或不可更改的,我们要根据不同的情况选择时候世事的输出格式!& g' d) e8 l' B) e5 t; z

: p' k4 p/ Z+ o9 \! c+ R
9 s; g9 K7 u5 k1 L2 [0 C
说一说架构格式,非常固定,首先在sensor_cfg.c里面申明并定义一个SENSOR_INFO_T结构指针,然后就可以在具体的sensor_***.c里面实现你的驱动代码!
' i6 N: i, f+ t6 b5 ]" r9 s" e" }7 F% C# U" O, L/ _

  B$ C% ~9 U& i. D2 A调试sensor常见的问题:, p; d% ]" u$ ?" D
1.读不到ID:需要确认三个电源,power down 和reset的极性,mclk,I2C是否正常打开。如果这些信息确认是正确的,还不能读到ID基本可以确认是sensor的硬件问题。
- h1 M0 P' j+ O" N' Y
) q0 P: ~) p0 k2 x+ g
2.能读到ID但是点不亮:这是最常见的情况,这个是时候已经能确认上述的硬件信号都是正常的,先要看HS/VS/PCLK的极性是否配置的正确,是否在预览前丢了1帧以上,sensor的输出尺寸是否正确。这些通常需要通过sensor的datasheet来查看寄存器配置的是否正确。
5 k' z. P$ ?' I) ~0 A

0 ?& m' u6 x) X6 F& B3.拍照死机:要确认是否在拍照的时候设置了set_mode(用来设置拍照时的sensor输出数据大小的设置),memory是否足够大?
9 _' O; v$ o! U: j* D2 P' B) L. z3 lDC_MEM = Frame_W*Frame_H*2 *MAX((1 + need_rotation),(1+is_jpg)) + 1M根据这个公式算出来,在dc_product_cfg.c中进行配置。
7 E5 e/ Z8 O4 Y" C4 V) P; F) K
8 F- v2 U8 C1 G7 V' Y4 G9 i& A
4.花屏:如果是很多绿线的花屏的话那么通常是HS/VS/PCLK的极性配置反了或者驱动电流太小被干扰了,如果是红蓝的颜色反了的那么是yuv输出数据反了,在yuv_info中进行配置。

; [: ?1 y! [2 T7 }0 K5 d/ j) F! f! I0 j# N0 x, `$ j8 A9 u
5.分屏:这个是刷屏的时候刷的不是同一帧数据,是LCD的FMARK引脚没有引出来,或者没有配置。如果LCD没有这个脚的话,需要估算一下刷屏的时间,然后将sensor输出的帧率调的跟它匹配。
; e8 u2 o) K: ]

2 W! `# f4 g2 u% g. U; g" }3 k6.旋转:预览的在startpreview里的rotation设置成需要的角度,拍照的在_DCAMERA_DoSnapshot里面将rotation设置成需要的角度,VT在传给底层参数时将screen2sensor_angle设置为DVT_MW_ROTATE_90或其他角度。
. b* s- ]8 V2 E) u: P+ @! V' a) t/ z" v* _3 H6 d

. l4 [2 s; _% p7 g) J

! m, V4 i9 e& w3 g+ p+ C; H* K
发表于 2015-10-23 21:43:55 | 显示全部楼层
{:biggrin:}正再学习呢,谢楼主!!!
高级模式
B Color Image Link Quote Code Smilies @朋友 |上传

本版积分规则

在线客服

客服电话

欢迎来电咨询

188-9985 8350

微信关注

手机APP程序:
扫码下载访问

微信公众平台:
摄像头之家公众号

微信小程序:
摄像头小程序

返回顶部

QQ|站点统计|小黑屋|手机版|Archiver|摄像头模组论坛网-摄像头方案网CCM99 ( 粤ICP备18155214号 )

Powered by Discuz! X3.4 Licensed© 2001-2013 Comsenz Inc.