camera学习入门指南
等待补充。
1.背景介绍
近年来,随着消费电子领域市场的快速增长,如安防、图像等领域,camera市场得到了快速发展。智能手机这几年以拍照作为主打卖点,带动了camera(CCM)出货。
具体可以看电子行业分析或者券商研报行业分析,比如下面两份。
网盘链接: https://pan.baidu.com/s/1r8qXU0mrBo-J4HHn7Ygwhg 提取码: qjx9
在招聘网站上搜索camera,可以看到,多为手机厂商、智能硬件和汽车安防相关行业,包括tuning、效果、系统、性能功耗、测试等,其中camera tuning的岗位是最多的。绝大多数产品方案系统都是使用Android操作系统方案,所以需要对Android有一定了解。
以前camera tuning工作是由算法工程师完成,后面随着用户对图像质量要求越来越高。ISP处理器出现和流行催生很多tuning的工作。
基础知识:光学基本概念、camera基础知识:涉及硬件模组、软件架构等,linux驱动开发基本知识。
2.camera基础篇
camera和光学知识和摄影知识密切相关。
2.1.光学知识
成像原理:
视场角FOV(Field of View):包括HFOV(水平), VFOV(垂直),DFOV(对角)
Focal Length:焦距
EFL(Effective Focal Length)有效焦距、
Fno(Aperture Value对应的Focal number)光圈数值,如F2.8,为光圈“系数”,简称为F值。Fno = EFL/D(光圈直径)
RGB(red green blue),光学三原色。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式。
YUV(全称英文真没找到),是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma)。
2.2.图像知识
图像处理相关:数字图像处理。最经典的一本书:数字图像处理(冈萨雷斯 第三版)。简单的说大致流程就是:处理图像:图像获取->图像滤波与增强->图像复原->图像(编码)压缩->形态学处理->图像分割->表示和描述->目标识别。显然图像处理这块是偏算法这块的。
网上文章大把,大家可以自己搜。
camera sensor图像获取这一阶段,图像处理这块交给硬件isp去做了,压缩编码以jpeg图像保存。
2MP(2 million pixel):两千万像素。
2.3.camera相关知识
2.3.1.camera常见名词
下面名词百度整理而来。
lens:镜头。
sensor:传感器,camera特指图像传感器。常见的有CCD和CMOS两种。
CCD(Charge coupled Device):电荷耦合元件,感光元件之一,可用于图像传感器,多用于高端摄像头。
CMOS(Complementary Metal Oxide Semiconductor):指互补金属氧化物半导体,感光元件之一,图像传感器,多用于低端摄像头。
fpc柔性电路板:其实就是pcb的一种,用于承载电路,进行通信。
CCM(camera control module)摄像头模组。摄像模组包括lens、sensor、isp、
ISP(image signal process),图像信号处理,是DSP(digital signal process)的一种
AEC(auto exposure control):自动曝光控制
AWB(auto white balance):自动白平衡
AF(auto focus):自动对焦
3A算法:AEC、AWB、AF三种图像效果算法,故被称为3A。
JPEG:拍照数据的存储通过该硬件模块进行jpeg编码工作。
2.3.2.camera原理
CMOS:Understanding CMOS Image Sensor
H264基本原理:https://zhuanlan.zhihu.com/p/31056455
视频压缩与编解码的基本原理:https://zhuanlan.zhihu.com/p/67305755
Understanding MIPI Interface:https://zhuanlan.zhihu.com/p/100476927
Understanding ISP Pipeline:https://zhuanlan.zhihu.com/p/98820927
Understanding Light and Color:https://zhuanlan.zhihu.com/p/98834353
Understanding White Balance Control:https://zhuanlan.zhihu.com/p/98835300
Understanding Auto Exposure Control:https://zhuanlan.zhihu.com/p/100369527
Understanding Auto Focus:https://zhuanlan.zhihu.com/p/109000056
Understanding Image Quality Tuning:https://zhuanlan.zhihu.com/p/100650969
2.4.学习路径
下面是camera tuning工程师学习路径。网上的一张图,忘记出处了
(1)通信协议基础:I2C、MIPI(驱动需要深入了解)
l(2)inux驱动基础:了解驱动设备,清除驱动的初始化流程,中断、锁的应用等。
(3)Android基础:adb命令,log分析。Android camera框架,camera的开发分app、framework、HAL、kernel层,对应的也就是应用、系统、驱动。算法的实现由oem第三方厂商去实现,还有效果、性能功耗、测试。Android代码走读:C/C++,java,以及Android的一些语法特性。 Android软件框架如下,图片来自谷歌官方
(4)调试:主要是log和addr2line。
(5)软件框架:高通关注camx框架,camera provider进程,open、configurestream、request、result、flush流程。还有各种usecase。
(6)驱动:kernel驱动关注sensor probe,i2c通信、上下电。
2.4.1.代码路径
APP:frameworks/base/core/java/android/hardware/
JNI:frameworks/base/core/jni/
Native:frameworks/av/camera/
server:frameworks/av/services/camera/libcameraservice
HIDL:hardware/interfaces/camera/
HAL:hardware/qcom/camera/ 实现了hal3的一系列接口。
vendor/qcom/proprietary/ 下面包括chi-cdk和camx。
KMD框架(高通):kernel/msm-4.19/teckpack/camera/
V4L2框架:kernel//drivers/media/v4l2-core
高通老的架构是mm-camera,新架构是camx,现在用的基本都是是camx了。
2.4.2.debug流程
先分析是硬件问题还是软件问题。硬件问题一般和驱动有关,软件问题多了去,应用系统效果算法都有可能。
2.5.学习和参考资料
2.5.1.书籍
摄像、sensor相关
Image sensors and signal processing for digital still cameras
The manual of photography photographic and digital imaging
Single-Sensor Imaging Methods and Applications for Digital Cameras
Digital Color Imaging Handbook
Perfect Digital Photography
沟通与交流:非暴力沟通,金字塔原则
2.5.2.学习网站
android官方学习资料:
https://source.android.google.cn/devices/camera
https://developer.android.google.cn/training/camerax
知乎刘斯宁:无法抗拒的图像技术
知乎Yvon Shong:键盘摄影
知乎小P说相机:https://www.zhihu.com/column/irentals
Android Camera学习指南:https://www.jianshu.com/nb/31102210
高通官网文档:https://createpoint.qti.qualcomm.com
深入理解高通 Camx CHI 架构:https://www.jianshu.com/p/33fa6b466cca
深入理解Android相机体系结构(camx-chi架构)
https://blog.csdn.net/u012596975/article/details/107135938