目录

一张照片是如何生成的?

相机的成像原理

相机硬件

颜色四要素

相机硬件三大块

模组结构

镜头

镜头光路

镜头常见参数

镜头-FOV&EFL

镜头-焦距

镜头-光圈

图像传感器

图像传感器-像素-底

RGB排布

图像传感器-Pattern & PDAF

Sensor

CMOS sensor

CMOS内部节点

CMOS sensor Microlens

人眼响应曲线

Color Filter Spectral Response

RGB Response

IR滤光片

Sensor曝光-Global Shutter

Sensor曝光-Rolling Shutter

Flicker&banding

Sensor时序

PDAF

Sensor Remosaic

硬件系统-SoC

软件/算法/tuning系统-总体流程

相机数据流

软件系统-3A算法

ISP算法

ISP算法-DPC(Dead point correction)

ISP算法-BLC(black level correction)

ISP算法-Denoise

ISP算法-LSC(lens shading correction)

ISP算法-Demosaic

3A算法-AF

3A算法-CDAF(contrast detection AF)

3A算法-PDAF(phase detection AF)

3A算法-Laser AF

3A算法-AE

3A算法-AWB

IFE

BPS

IPE

BPC and PDPC

ABF

GTM

LTM

HNR

ANR

Temporal Filter

Color temperature

Color gamut

2D-LUT

ASF

软件系统-图像后处理算法

Android camera系统软件栈

camera软件流程几条主线

整个拍照流程

色彩空间

色彩空间与编码格式

色彩格式与空间-Raw

色彩格式与空间-RGB

色彩格式与空间-YUV


一张照片是如何生成的?

可以思考一下这个问题,平时我们用手机拍摄一张照片,那么这个照片是怎么样生成的呢?

相机的成像原理

相机硬件

颜色四要素

  1. 光源
  2. 物体
  3. 眼睛
  4. 大脑

颜色是光作用于人眼之后在人脑中形成的一种视觉感觉。

相机硬件三大块

模组结构

镜头

镜头光路

镜头常见参数

FOV:Field of View
EFL:有效焦距,透镜系统中心到焦点之间距离
等效焦距:
等效135相机(36mmx24mm)的焦距。
EFL * 43.2666 / sensor有效区域对角线长度

镜头-FOV&EFL

镜头-焦距

镜头-光圈

图像传感器

图像传感器-像素-底

RGB排布

图像传感器-Pattern & PDAF

Sensor

CMOS sensor

CMOS内部节点

CMOS sensor Microlens

人眼响应曲线

Color Filter Spectral Response

RGB Response

IR滤光片

Sensor曝光-Global Shutter

Sensor曝光-Rolling Shutter

Flicker&banding

Sensor时序

PDAF

相对位置关系如下所示:

Sensor Remosaic

硬件系统-SoC

软件/算法/tuning系统-总体流程

相机数据流

软件系统-3A算法

ISP算法

ISP算法-DPC(Dead point correction)

ISP算法-BLC(black level correction)

ISP算法-Denoise

ISP算法-LSC(lens shading correction)

ISP算法-Demosaic

3A算法-AF

3A算法-CDAF(contrast detection AF)

3A算法-PDAF(phase detection AF)

3A算法-Laser AF

3A算法-AE

3A算法-AWB

IFE

BPS

IPE

BPC and PDPC

ABF

GTM

LTM

HNR

ANR

Temporal Filter

Color temperature

Color gamut

2D-LUT

ASF

软件系统-图像后处理算法

Android camera系统软件栈

  1. Application层,也就是应用层,不仅包括通话短信联系人这种系统级的应用,还包括用户自己安装的一些第三方应用
  2. Framework层,这一层大部分用Java写的,包括系统服务和四大组件
  3. Library层,这一层大部分都是C/C++写的,主要是虚拟机,还有一些三方库比如SQLite, WebKit
  4. HAL层,硬件抽象层
  5. Linux内核层,包含Linux内核和一些驱动,比如说蓝牙驱动,Camera驱动等等,这个Binder驱动也是在这一层

官方链接如下所示:

https://developer.android.com/guide/platform

  1. Camera App进程,应用层处于整个框架的顶端,承担着于用户直接进行交互的责
  2. Camera Service进程,接收来自App的图像请求,调用HIDL跨进程接口将请求再次下发到Provider中,并且等待结果的回传,进而将结果上传至App中
  3. Camera Provider进程,接受Camera Service的请求,通过平台通过的HAL代码处理请求,并返回给Camera Service
  4. CamX-CHI(Camera HAL),该部分是高通对谷歌Camera HAL3接口的实现,以so库的形式被加载至Camera Provider中进行函数调用
  5. Camera Driver,高通对相机驱动部分进行了实现,利用了V4L2框架的可扩展特性,设计出了一套独特的KMD框架

camera软件流程几条主线

整个拍照流程

色彩空间

色彩空间与编码格式

色彩格式与空间-Raw

色彩格式与空间-RGB

色彩格式与空间-YUV

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐