Camera理论知识和基本原理

  • 1. 前言
  • 2. Basic Concepts
  • 3. 总体流程
  • 4. 摄像头
  • 5. 传感器 Sensor
    • 5.1 CCD(Charge Coupled Device) 电荷耦合器件传感器
    • 5.2 CMOS(Complementary Metal-Oxide Semiconductor)互补性氧化金属半导体
    • 5.3 CCD VS CMOS
      • 5.3.1 CCD特点
      • 5.3.2 CMOS特点
      • 5.3.3 特点分析
    • 5.4 传感器尺寸和画质的关系
  • 6. ISP and DSP
  • 7.图像
    • 7.1 像素
    • 7.2 RGB表示方式
    • 7.3 YUV表示方式
    • 7.4 YUV采样格式
      • 7.4.1 YUV 4:4:4
      • 7.4.2 YUV 4:2:2
      • 7.4.3 YUV 4:2:0
    • 7.5 YUV存储格式
    • 7.5 RGB和YUV的相互转化
  • 8. 3A算法
    • 8.1 AF 自动对焦
    • 8.2 AE 自动曝光
    • 8.3 AWB 自动白平衡
  • 9.个人简介

1. 前言

本篇文章为Camera系列文章的第一篇,主要阐述Camera摄像头的基础理论知识,解决Camera硬件或Camera软件开发的一些困惑。该系列文章主要围绕Android操作系统进行,并涉及Android系统上Camera的协议、实现和应用。

转载请注明出处。可私信、也可邮件、联系方式见文章末尾。

2. Basic Concepts

如下表1

术语 解释 备注
Camera an optical instrument that captures a visual image. 光学仪器捕获视觉形象显示在感光表面
Image sensor detects and conveys information used to make an image. 两种主流传感器为CCDCMOS
CCD charge-coupled device 电荷耦合
CMOS Complementary Metal-Oxide Semiconductor 互补性氧化金属半导体
pixel 像素 相机传感器上的最小感光单位
IR Filter 红外滤光片 人眼看不到红外光,但sensor可,需将红外光滤掉使图像更接近人眼看到效果。
Lens 镜头 分为塑胶透镜(plastic)或玻璃透镜(glass)
DSP Digital signal processor, 就是把Raw RGB格式转换成RGB格式或者是YUV格式
ISP Image signal processor, 把 sensor 采集到的原始数据转换为显示支持 的格式
3A算法 AF、AE、AWB 自动对焦、自动曝光、自动白平衡
A/D转换 analog signals to digital format

3. 总体流程

涉及如下几个步骤

  1. 光线通过镜头Lens进入摄像头内部。
  2. 图像传感器转换光信息为电信息
  3. 原始的RAW Data经过DSP转换成RGB/YUV数据
  4. RGB/YUV通过应用层展现

4. 摄像头


摄像头的通用硬件结构如上图所示。利用透镜折射原理,景物光线透过镜头在聚焦平面上形成清晰的像,然后通过感光材料CMOS或CCD记录影像,并通过电路转换为电信号。2

Lens一般是有几片透镜组成,按材质可分为

  • Plastic :塑胶透镜
  • Glass :玻璃透镜

Glass比Plastic贵。在透光率和感光性等光学指标上也比Plastic要好。手机考虑到成本,一般使用的是Plastic。
结合以上2种结构,摄像头采用的镜头结构有:1P、2P、1G1P、1G2P、2G2P、2G3P、4G、5G等。透镜越多,成本越高,相对成像效果会更出色。

5. 传感器 Sensor

  • 负责将Lens的光信号转换为电信号,再进过内部AD转换为数字信号。
  • 由于 Sensor 的每个 pixel 只能感光 R 光或 B 光或 G 光,因此每个像素此时存贮的是单色的,称之为 RAW DATA 数据。
  • 想将每个像素的 RAW DATA 数据还原成三基色,就需要 ISP 来处理。
  • 目前常用Sensor主要有CCDCMOS

5.1 CCD(Charge Coupled Device) 电荷耦合器件传感器

  • 高感光度半导体材料制成,由许多感光单位组成,通常以百万像素为单位。
  • 当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。

5.2 CMOS(Complementary Metal-Oxide Semiconductor)互补性氧化金属半导体

  • 硅和锗做成的半导体,使其在CMOS上共存着带N(-)和P(+)级的半导体,这两个互补效应所产生的电流可以被处理芯片记录并解读成影像。
  • CMOS传感器主要以美国、韩国和中国台湾为主导,主要生产厂家是美国的OmnVison、Agilent、Micron,中国台湾的锐像、原相、泰视等,韩国的三星、现代。

5.3 CCD VS CMOS

5.3.1 CCD特点

技术成熟、成像质量高、灵敏度高,噪声低,响应速度快,有自扫描功能,图像畸变小,无残像、应用超大规模集成电路工艺技术生产,像素集成度高,尺寸精确

5.3.2 CMOS特点

读取信息的方式简单、输出信息速率快、耗电省(仅为CCD芯片的1/10左右)、体积小、重量轻、集成度高、价格低等特点。

5.3.3 特点分析

如图-CCD和CMOS的感光二极管排列。

  • CCD阵列,是在仅有一条总线后加A/D转换(紫色箭头,见2. Basic Concept)。在时钟信号同步下,一步步移位读对应二极管的电平值。
  • CMOS阵列,是在每个感光二极管旁都加入了A/D转换。是主动式输出采集的数据信息,而CCD是在同步电路控制下被动式的输出采集的数据。

因此我们详细在性能,耗电,画质等方面做初步比较

性能

  • CCD需在同步时钟控制下以行为单位一位一位输出信息,速度当然慢不适合快速连拍,保存图像速度慢。
  • CMOS阵列有坐标嘛,传感器采集光信号的同时就可以取出电信号,保存图像速度快。

耗电

  • CCD耗电大,在同步信号控制下一位位读取,需要时钟控制电源和三组电源供电。
  • CMOS耗电小。CMOS传感器经光电转换后直接产生电流或电压信号,信号读取十分简单,而且感光二极管所需的电压,直接由晶体放大输出,所以需要施加在源极的电平很小

画质

  • CMOS是主动式输出数据,阵列上每个点都要经过两条传输总线,路程长,传输时的噪声引入多。
  • CMOS阵列的每个二极管旁边都有A/D,光电传感元件与电路之间距离很近,相互之间的光电磁干扰较为严重,放大的同时可能带入的噪声也大。
  • CMOS因为二极管旁带有A/D电路,同样尺寸的sensor,二极管能受光线面积小,一部分光线被浪费了,受光弱于CCD的感光二极管,带入的一点小噪声就会被放大。

发展

CCD传感器制作技术起步较早,技术比较成熟。近年来,CMOS技术发展一日千里,在中小尺寸传感器上,CMOS和CCD的画质区别已经很小。

5.4 传感器尺寸和画质的关系


传感器尺寸大小对于画质的影响,就是采集光线数据的正确性和完整性的不同。

  1. 传感器面积越大,感光阵列面积就越大,相邻感光电路的距离就越大,加电时产生的电磁干扰就越小。
  2. 传感器面积越大,感光阵列面积就越大,对应单个像素的透镜就能做的越大,聚集到的光线就越多,感光二极管受光后产生的输出电平就越高。带来更高的信噪比,转换后的信息处理正确率就越高。

传感器自己就总结到这里,如果感兴趣可查看注脚或搜集更多资料,深入探究。3 4

6. ISP and DSP

由于本人专业知识有限,不深入进行总结分析,感兴趣可参阅数字信号处理等相关书籍3 5 6

  • ISP 处理Image Sensor(图像传感器)的输出数据,如AEC(自动曝光控制)、AGC(自动增益控制)、AWB(自动白平衡)、色彩校正、Gamma校正、祛除坏点、Auto Black Level、Auto White Level 等等。
  • DSP功能较多,它可以做些拍照以及回显(JPEG的编解码)、录像以及回放(Video 的编解码)、H.264的编解码、还有很多其他方面的处理,总之是处理数字信号了。
  • 可以认为ISP是一类特殊的处理图像信号的DSP。
  • 数字信号处理芯片,感兴趣的可参阅5

7.图像

7.1 像素

一部手机屏幕的分辨率是1280×720,说明水平方向有720个像素点,垂直方向有1280个像素点,有1280×720个像素点(分辨率)。每个像素点都由三个子像素点。当要显示某篇文字或者某幅图像时,就会把这幅图像的每一个像素点的RGB通道分别对应的屏幕位置上的子像素点绘制到屏幕上,从而显示整个图像7

7.2 RGB表示方式

通用图像数据格式,理论上任何颜色都可以用红绿蓝三种基本颜色混合而成。有RGB888、ARGB8888、RGB565等格式(Android)

  • RGB565:共16比特,占2个字节。G站6位是因为人的眼睛对绿光最为敏感,可表示颜色数为2^16 = 65536色。
  • RGB888:共24比特,占3个字节,可表示颜色数为2^24 = 1677W。
  • ARGB8888:共32比特,占4个字节,可表示颜色数为2^32。

7.3 YUV表示方式

对于视频帧的裸数据表示,更多的是YUV数据格式,主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。相比RGB它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。8

  • Y:Luma 明亮度,也称灰阶值,以前的黑白电视,是只有Y信号而没有UV信号。
  • UV:Chroma 色度,色彩及饱和度,用于指定像素的颜色。 “色度”定义了颜色的两个方面——色调(Cr)与饱和度(Cb)
  • Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异
  • Cb反映的则是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

7.4 YUV采样格式

主流有如下三种

  • YUV 4:4:4 采样
  • YUV 4:2:2 采样
  • YUV 4:2:0 采样

7.4.1 YUV 4:4:4

YUV 4:4:4 表示 Y、U、V 三分量采样率相同,即每个像素的三分量信息完整,都是 8bit,每个像素占用 3 个字节。

四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
映射出的像素点为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

7.4.2 YUV 4:2:2

YUV 4:2:2 表示 UV 分量的采样率是 Y 分量的一半。

四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 U3
映射出的像素点为:[Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]

其中,每采样一个像素点,都会采样其 Y 分量,而 U、V 分量都会间隔采集一个,映射为像素点时,第一个像素点和第二个像素点共用了 U0、V1 分量,以此类推。从而节省了图像空间。

比如一张 1920 * 1280 大小的图片,采用 YUV 4:2:2 采样时的大小为:

(1920 * 1280 * 8 + 1920 * 1280 * 0.5 * 8 * 2 ) / 8 / 1024 / 1024 = 4.68M

7.4.3 YUV 4:2:0

YUV 4:2:0 并不意味着不采样 V 分量。它指的是对每条扫描线来说,只有一种色度分量以 2:1 的采样率存储,相邻的扫描行存储不同的色度分量。也就是说,如果第一行是 4:2:0,下一行就是 4:0:2,在下一行就是 4:2:0,以此类推。

图像像素为:
[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3]
[Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]

采样的码流为:
Y0 U0 Y1 Y2 U2 Y3
Y5 V5 Y6 Y7 V7 Y8

映射出的像素点为:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7]
[Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]

一张 1920 * 1280 大小的图片,采用 YUV 4:2:2 采样时的大小为:

(1920 * 1280 * 8 + 1920 * 1280 * 0.25 * 8 * 2 ) / 8 / 1024 / 1024 = 3.51M

相比较RGB节省了一半的空间。

7.5 YUV存储格式

YUV 数据有两种存储格式:平面格式(planar format)和打包格式(packed format)

  • planar format:先连续存储所有像素点的 Y,紧接着存储所有像素点的 U,随后是所有像素点的 V。
  • packed format:每个像素点的 Y、U、V 是连续交错存储的。

不同的采样方式和存储格式,就会产生多种 YUV 存储方式,这里介绍基于YUV420 的存储方式。

YUV420P 和 YUV420SP

YUV420P 是基于 planar 平面模式进行存储,先存储所有的 Y 分量,然后存储所有的 U 分量或者 V 分量。

同样,YUV420SP 也是基于 planar 平面模式存储,与 YUV420P 的区别在于它的 U、V 分量是按照 UV 或者 VU 交替顺序进行存储。

YU12 和 YU21

YU12 和 YV12 格式都属于 YUV 420P 类型,即先存储 Y 分量,再存储 U、V 分量,区别在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。

NV21 和 NV21
NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。

  • NV12 是 IOS 中有的模式,它的存储顺序是先存 Y 分量,再 UV 进行交替存储。

  • NV21 是 安卓 中有的模式,它的存储顺序是先存 Y 分量,在 VU 交替存储。

7.5 RGB和YUV的相互转化

8. 3A算法

8.1 AF 自动对焦

目的是获得清晰度更高得图像。方法分两类,一类是传统的聚焦方法,一种是基于数字图像处理方式的图像聚焦方法。传统的方式中,自动聚焦通过红外线或者超生波测距的方式来实现。这种方式需要安装发射机和接收机,增加了摄像机的成本,而且超声波对于玻璃后面的被摄物体不能很好的自动聚焦。这一类聚焦方式在某些场合受到了限制。因此在日趋集成化、微型化、低成本的应用中,基于数字图像处理的自动聚焦方法更具有优势。

根据镜头成像分析,镜头的光学传递函数可以近似为高斯函数,它的作用等效为一个低通滤波器。离焦量越大,光学传递函数的截止频率越低。从频域上看,离焦量增大,对图像高频能量造成损失,使得图像的细节逐渐模糊。从空域上看,离焦量增大,点光源成像的光强分布函数越分散,可分辨的成像间距越大,图像相邻像素互相重叠,图像细节损失严重。因此图像清晰度评价函数时建立在图像边缘高频能量上的。

数字处理方法中,自动聚焦的关键在于构造图像的清晰度评价函数。己经提出的图像清晰度评价函数苞括灰度方差、梯度能量、嫡函数和一些频域函数法。图像清晰度评价函数必须具有良好的单峰性和尖锐性,而且要计算量适度,从而可以快速的实现精准对焦。

8.2 AE 自动曝光

曝光是用来计算从景物到达相机的光通量大小的物理量。图像传感器只有获得正确的曝光,才能得到高质量的照片。曝光过度,图像看起来太亮曝光不足,则图像看起来太暗。到达传感器的光通量的大小主要由两方面因素决定:曝光时间的长短以及光圈的大小。

利用光圈进行自动曝光,主要根据所拍摄的场景来控制光圈大小,使得进光量维持在一定范围内。通过光圈进行曝光控制的成本比较高。现在市场所见的中低端摄像头采用的主流技术通过调整曝光时间来实现自动曝光。

目前自动曝光控制算法方法有两种,一种是使用参照亮度值,将图像均匀分成许多的子图像,每一块子图像的亮度被用来设置参照亮度值,这个亮度值可以通过设置快门的速度来获得。另外一种方法是,通过研究不同光照条件下的亮度与曝光值之间的关系来进行曝光控制。这两种方法都是研究了大量的图像例子和许多不同的光照条件。而且均需要在不同的光照条件下所采集的图像数据库。实际中自动曝光研究需要解决好以下几个问题,首先是判定图像是否需要自动曝光,其次是自动曝光时,如何调整光电转换后数字信号来找出自动曝光能力补偿函数,最后就是调整到什么程度最为合适。

8.3 AWB 自动白平衡

白平衡的基本原理是在任意环境下, 把白色物体还原成白色物体, 也就是通过找到图像中的白块, 然后调整R/G/B 的比例, 如下关系:
R’= R * R_Gain
G’ = G * G_Gain
B’ = B * B_Gain
R’ = G’= B’
AWB 算法通常包括的步骤如下:
(1)色温统计: 根据图像统计出色温;
(2)计算通道增益: 计算出R 和B 通道的增益;
(3)进行偏色的矫正: 根据给出的增益, 算出偏色图像的矫正。

9.个人简介

职业:阿里巴巴 - 无线开发专家,可内推
邮件:sunquan9301@163.com
WX:sunquan97
添加请注明CSDN + 原因,


  1. Wikipedia ↩︎

  2. 摄像头工作原理 ↩︎

  3. camera基本知识 ↩︎ ↩︎

  4. 详解CCD和CMOS的区别及主要硬件技术指标 ↩︎

  5. ISP流程概述 ↩︎ ↩︎

  6. ISPfuncs ↩︎

  7. 音视频开发进阶指南 ↩︎

  8. 一文理解 YUV ↩︎

【Camera】Camera理论知识和基本原理相关推荐

  1. Camera基础硬件知识

    目录 前言 一.sensor 1.曝光时间 2.硬同步 3.白平衡 二.ISP 1.Pipeline 2.SOF和EOF中断 3.图像数据 三.通信协议 1.I2C.SPI.UART 前言 本文主要记 ...

  2. 摄像头 - Camera sensor 基本知识

    Camera sensor 基本知识(1) https://www.ccm99.com/thread-115494-1-1.html (出处: 摄像头模组论坛技术研发网-camera摄像头ccm论坛) ...

  3. 【Unity大气渲染】关于单次大气散射的理论知识

    参考 最近在实现程序化天空盒,到了实现大气散射这一步,索性查漏补缺,把大气散射这块儿的理论知识补充明白了.跟着[实战]从零实现一套完整单次大气散射_一的推荐,学习这块我直接从Volumetric At ...

  4. 用VC进行COM编程所必须掌握的理论知识

    用VC进行COM编程所必须掌握的理论知识 这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节.完全是根据我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正. 一.为什么要用 ...

  5. oracle rac理论知识

    oracle数据库高可靠性高性能的特性是很多企业需要的,这些年一直给各大政府企业做oracle咨询与规划,实施安装以及维护,回头看看,自己已经忘记大部分oracle rac的整体具体架构理论知识,现在 ...

  6. Web自动化测试理论知识

    Web 自动化理论知识 1.自动化测试概述 概念:用工具代替/辅助人工完成完成软件测试活动的过程 特点:     可以对程序的新版本自动执行回归测试     可以执行一些手工测试困难或不可能进行的测试 ...

  7. 课程理论知识、教学实施

    目录 第一章 课程理论知识 一.学科核心素养 二.教学目标 三.教学环节 第二章 教学实施 第一节 新课导入类 第二节 教学方法类 第三节 教师实施原则类 第四节 设计意图类 第一章 课程理论知识 出 ...

  8. 《个人理财》书中的精髓:如何通过金融学理论知识的学习,建立更加完善的金融体系,让自己更加富有。

    <个人理财>书中的精髓:如何通过金融学理论知识的学习,建立更加完善的金融体系,让自己更加富有. 对于很多人来说,个人理财是他们接触到的第一门也是唯一一门理财课程,对于没有系统掌握理财知识的 ...

  9. Web前端理论知识记录

    Web前端理论知识记录 Elena · 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session)中 ...

最新文章

  1. Service Worker 图片加载失败处理
  2. Ajax、Comet与Websocket
  3. 网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算
  4. 全球及中国甲苯二异氰酸酯预聚物行业投资状况与前景建议研究报告2022版
  5. ERP与全面预算管理如何结合
  6. linux oracle pam,Linux技术之深入Linux PAM 体系结构(一)
  7. 为静态Checkbox动态地添加checked属性
  8. Symbian面试题
  9. 干货 | 一步步拆解 Elasticsearch BM25 模型评分细节
  10. 我大学到研究生学过的计算机基础课程(数据结构、计算机网络、算法、操作系统),绝对推荐,全部在这里了!
  11. devops学习(十一) 构建主分支--触发器--钉钉通知
  12. python 应用thrift---- thrift的监控fb303 - import coding_dog ---- by 坚毅的刀刀 - 博客大巴...
  13. 何炅机器人对话_何炅和黄磊的一段对话,暗藏他们对人生的沉淀,听懂后受益一生...
  14. 【Python爬虫】下载b站视频。超详细。
  15. 谈一谈|如何理解马云4月14日再谈996
  16. 关于mysql blob 存取乱码问题
  17. discuz7.2帖子管理
  18. 6-4 输出月份英文名 (15分)
  19. mysql 菜鸟教程
  20. php中怎样把图片改大,PHP怎么批量修改图片大小?

热门文章

  1. 通过脚本将网址添加到客户的受信任站点
  2. Matlab,C/C++语言读取RAW图和保存RAW图
  3. 最全图像识别数据集网站和工具
  4. 信号与系统公式笔记(1)
  5. cannot coerce class ‘“igraph“’ to a data.frame
  6. NC57 开发小结篇
  7. android-sdk:adb shell Monkey命令入门: (基于网易云APP进行压力稳定性测试)
  8. GB/T 2423.16电工电子产品环境试验第⒉部分:试验方法试验J及导则:长霉
  9. 求数列的和 (sdut oj)
  10. vue项目访问服务器时:WebSocket connection to ‘wss://XXXX/‘的解决方法