等待補充。
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