Camera | 1.Camera基础知识
一口君最近在玩瑞芯微的板子,之前写了几篇基于瑞芯微的文章,大家可以学习一下。
最近移植了2款ov系列摄像头,顺便把v4l2架构捋了一下,
计划更新几篇基于瑞芯微平台的Camera相关文章,
Camera相关知识点较多,个人精力有限,
有对这块精通,感兴趣的老铁,
可以加我好友:yikoupeng,共同学习讨论。
先开始第一篇。
1. Camera简介
摄像头,大家已经非常熟悉了,遍布在生活的方方面面。
尤其这上段时间炒的非常火的南京医生上门打小孩老人事件,
由于有视频有真相,鲁医生直接被陷入万劫不复的境地。
其中的是非对错本文不讨论了,法律和道德自有评判。
但这说明了,摄像头对我们的日常生活影响实在太大了。

2. 摄像头分类
根据不同参数,摄像头有多种分类方式:
- 传输信号
模拟摄像机和数字摄像机 - 画面分辨率
标清摄像机、高清摄像机 - 摄像机外形
球形摄像机、半球形摄像机、枪式摄像机 - 安装环境
室内摄像机、室外摄像机 - 传感器
CCD摄像机、CMOS摄像机
监控常用的摄像头外观:

3. 摄像头组成
一个常见的监控用的摄像头包括:外壳、感光芯片电路、镜头座、镜头、红外灯板。

而对于手机上的摄像头,很多厂家往往是设计为一个摄像头模组(CameraCompact Module),简称CCM。

CCM 包含四大件: 镜头(lens)、传感器(sensor)、软板(FPC)、图像处理芯片(DSP)。

决定一个摄像头好坏的重要部件是:镜头(lens)、图像处理芯片 (DSP)、传感器(sensor)。
4. 摄像头原理
- 景物(SCE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上
- 然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号
- 再送到数字信号处理芯片(DSP)中加工处理,转换成标准的RGB、YUV等格式图像信号
- 再通过I/O接口传输到CPU中处理,通过display就可以看到图像了

5. 摄像头相关技术指标
5.0 常见缩略语
| 名称 | 含义 |
|---|---|
| 3A算法 | AEC, AWB, AF算法 |
| AEC | Auto Exposure Control, 自动曝光控制 |
| AWB | Auto White Balance, 自动白平衡 |
| AF | Auto Focus, 自动对焦 |
| TE | Time Exposure, 曝光时间 |
| FBC | Frame Buffer Compressed, 帧缓冲压缩 |
| IQ | Image Quality, 图像质量 |
5.1. 图像压缩方式JPEG
(joint photographic expert group)静态图像压缩方式。一种有损图像的压缩方式。压缩比越大,图像质量也就越差。
当图像精度要求不高存储空间有限时,可以选择这种格式。目前大部分数码相机都使用JPEG格式。
5.2. 图像噪音
指的是图像中的杂点干扰,表现为图像中有固定的彩色杂点。
5.3. 白平衡处理技术(AWB)
白平衡指不管在任何光源下,都能将白色物体还原为白色。
白平衡是描述显示器或相机中红、绿、蓝三基色混合生成后白色精确度的一项指标。
色温表示光谱成份,光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色(红、绿、蓝)的比例会发生变化,需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。
图象传感器的图象数据被读取后,系统将对其进行针对镜头的边缘畸变的运算修正,然后经过坏像处理后被系统送进去进行白平衡处理(在不同的环境光照下,人类的眼睛可以把一些“白”色的物体都看成白色,是因为人眼进行了修正。但是SENSOR没有这种功能,因此需要对SENSOR输出的信号进行一定的修正,这就是白平衡处理技术)。
5.4. 彩色深度(色彩位数)
反映对色彩的识别能力和成像的色彩表现能力,就是用多少位的二进制数字来记录三种原色。实际就是A/D转换器的量化精度,是指将信号分成多少个等级,常用色彩位数(bit)表示。彩色深度越高,获得的影像色彩就越艳丽动人。
非专业的SENSOR一般是24位;专业型SENSOR至少是36位。24位的SENSOR,感光单元能记录的光亮度值最多有2^8=256级,每一种原色用一个8位的二进制数字来记录,最多记录的色彩是256×256×256约16,77万种。
36位的SENSOR,感光单元能记录的光亮度值最多有2^12=4096级,每一种原色用一个12位的二进制数字来记录,最多记录的色彩是4096×4096×4096约68.7亿种。
5.5. 图像格式(image Format/ Color space)
像素格式,比如: RGB24,RGB565,RGB444,YUV4:2:2等。
RGB24,I420是目前最常用的两种图像格式。
- RGB24
表示R、G、B ,3种基色都用8个二进制位表示,那么红色、绿色、蓝色各有256种,那么由这三种基色构成的颜色就是256X256X256=16,777,216种,约等于1677万。
这就是计算机表示颜色的原理,同样也是手机屏幕和显示器屏幕等显示颜色的原理。
- 颜色对应RGB值

- YUV
YUV 和我们熟知的 RGB 类似,是一种颜色编码格式。
YUV 包含三个分量,其中 Y 表示明亮度(Luminance 或 Luma),也就是灰度值。
而 U 和 V 则表示色度(Chrominance 或 Chroma),作用是描述图像色彩及饱和度,用于指定像素的颜色。
没有 UV 分量信息,一样可以显示完整的图像,只不过是黑白的灰度图像。
YUV的采样方式
- 4:4:4表示完全取样(每一个Y对应一组UV分量)
- 4:2:2表示2:1的水平取样,垂直完全采样(每两个Y共用一组UV分量)
- 4:2:0表示2:1的水平取样,垂直2:1采样(每四个Y共用一组UV分量)
- 4:1:1表示4:1的水平取样,垂直完全采样(每四个Y共用一组UV分量)
存储方式举例:
YUV 4:2:0其颜色的一种存放格式如图所示:

5.6. 分辨率(Resolution)
所谓分辨率就是指画面的解析度,由多少象素构成的数值越大,图像也就越清晰。
分辨率不仅与显示尺寸有关,还会受到显像管点距、视频带宽等因素的影响。
我们通常所看到的分辨率都以乘法形式表现的,比如1024*768,其中的1024表示屏幕上水平方向显示的点数,768表示垂直方向的点数。
| 解析度 | 分辨率 乘法 | 像素值 | 像素值简称 |
|---|---|---|---|
| QSIF/QQVGA | 160 x 120 | 19200 | |
| QCIF | 176 x 144 | 25344 | |
| SIF/QVGA | 320 x 240 | 76800 | |
| CIF | 352 x 288 | 101376 | 10万像素 |
| VGA | 640 x 480 | 307200 | 30万像素(35万是指648X488) |
| SVGA | 800 x 600 | 480000 | |
| XGA | 1024 x 768 | 786438 | 80万像素 |
| SXGA | 1280 x 1024 | 1310720 | 130万像素 |
| UXGA | 1600 x 1200 | 1920000 | 200万像素 |
| QXGA | 2048 x 1536 | 3145728 | 300万像素(320W) |
| QSXGA | 2592 x 1944 | 5038848 | 500万像素 |
| 2816 x 2112 | 2947392 | 600万像素 | |
| 3072 x 2304 | 7077888 | 700万像素 | |
| 3200 x 2400 | 7680000 | 770万像素 | |
| 3264 x 2448 | 7990272 | 800万像素 | |
| 3876 x 2584 | 10015584 | 1000万像素 |
5.7. 帧率
帧率指的就是1秒钟时间里传输、显示图片的帧数,每一帧就是一个画面,快速连续的多帧就形成了运动的动态效果。
高的帧率可以得到更加流畅,更加逼真的画面。
5.8. 码流
码流就是指视频数据在单位时间内的数量大小,也叫码率,是视频编码画面质量控制中最重要的部分,同样的分辨率和帧率下,视频码流越大,画面质量越高,对应的存储容量也就越大。
5.9. 曝光
曝光就是图像的明暗程度 ,照片太暗称为曝光不足 ,照片太亮称为曝光过度。曝光由光圈、曝光时间、ISO三者共同决定。
- 光圈:
控制进光量。 - 曝光时间:
光到达的时间长度。 - ISO:
增益,或称为感光度。
6. 摄像头接口
摄像头常用接口包括:USB、DVP、MIPI
USB
我们常用的电脑摄像头接口是USB接口,这种摄像头比较常见,需要支持UVC(USB Video Class)协议。
DVP
还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP(Digital Video Port)摄像头数据并口传输协议,
DVP是并口,提供8-bit或10-bit并行传输数据线、HSYNC(Horizontal sync)行同步线、VSYNC(Vertical sync)帧同步线和PCLK(Pixel Clock)时钟同步线。
DVP总线PCLK极限约在96M左右,而且走线长度不能过长,所有DVP最大速率最好控制在72M以下,PCB layout较容易画
以OV3640摄像头为例:
DVP分为三个部分:
- 输出总线
- 输入总线
- 电源总线

mipi(CSI)
移动产业处理器接口(Mobile Industry Processorinterface,MIPI)
常见的智能手机上的摄像头是MIPI接口,
CSI是相机串行接口(CMOS Sensor Interface)的简称。

MIPI总线速率lvds接口耦合,走线必须差分等长,并且需要保护,故对PCB走线以及阻抗控制要求高一点(一般来讲差分阻抗要求在85欧姆~125欧姆之间)
MIPI是LVDS低压差分串口,只需要要CLKP/N、DATAP/N——最大支持4-lane,一般2-lane即可。
MIPI接口比DVP的接口信号线少,由于是低压差分信号,产生的干扰小,抗干扰能力也强。
DVP接口在信号完整性方面受限制,速率也受限制。
500W还可以勉强用DVP,800W及以上都采用MIPI接口。
所以高清摄像头我们都选用MIPI接口 。
7. 手机摄像头模组出货量排行榜
最后看一下摄像头模组今年7月出货量排行榜:

8. 监控公司
摄像头最主要的应用市场就是安防监控,
目前国内监控市场前10的公司如下:

随着美丽国的制裁,像海康这样大厂市场营收几乎腰斩。
衷心祝愿咱们的高端芯片产业链早日完善,成熟,
百花发时我不发,我若发时都吓杀!
誓与老美战一场,芯片倾销美欧亚。
Camera | 1.Camera基础知识的更多相关文章
- Unity3D基础知识梳理
这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...
- MOGRE学习笔记(2) - MOGRE基础知识总结
前一篇配置了MOGRE的运行环境,这里记录一些MOGRE基础知识,仅仅是最基础的一些东西.由于本人接触ogre的时间比较短,对于很多知识都是一知半解,所以理解起来不免会有一些错误,本人也希望自己在对o ...
- Android 开发者文档 -- 应用基础知识
https://developer.android.com/guide/components/fundamentals 应用基础知识 Android 应用采用 Java 编程语言编写.Android ...
- three.js学习笔记--基础知识
基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...
- 3D开发基础知识和简单示例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...
- C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)
前言 上篇文章地址: C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) 今天我们来讲一下如何使用Camera来调用照相机扫描二维码. (Tips ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
随机推荐
- BST-Treap名次树指针实现板子 Ver2.1
为了更好的阅读体验,请点击这里 这里只有板子没有原理QWQ 可实现 1.插入 x 数 2.删除 x 数(若有多个相同的数,只删除一个) 3.查询 x 数的排名(排名定义为比当前数小的数的个数 +1) ...
- python json反序列化为对象
在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表.字典)或者一个自定义的类实例.虽然Python的标准库json模块不提供直接将J ...
- OpenSSL&&libcurl库的交叉编译
一.编译前环境准备 使用的内核:4.15.0-118-generic(命令:uname -r可以查看) 交叉编译器:aarch64-linux-gnu-gcc curl源码:curl-7.72.0.t ...
- ubuntu 安装 arm-none-eabi-gcc 的几种方式
背景 这篇文章主要是为了解决 在 Linux 中 编译 能够在 裸机上 跑的 程序 目前许多嵌入式软件软件开发在Linux平台下进行,编译效率高很多,如今天所述的gcc-arm-none-eabi常适 ...
- Simple WPF: WPF 透明窗体和鼠标事件穿透
一个自定义WPF窗体的解决方案,借鉴了吕毅老师的WPF制作高性能的透明背景的异形窗口一文,并在此基础上增加了鼠标穿透的功能.可以使得透明窗体的鼠标事件穿透到下层,在下层窗体中响应. 这个方法不一定是制 ...
- Hadoop集群管理之fsimage和edits工作机制
客户端对hdfs进行写文件时会首先被记录在edits文件中. edits修改时元数据也会更新. 每次hdfs更新时edits先更新后客户端才会看到最新信息. fsimage:是namenode中关于元 ...
- UML建模、设计原则
# UML统一建模语言 定义: 用于软件系统设计与分析的语言工具 目的: 帮助开发人员更好的梳理逻辑.思路 官网: https://www.omg.org/spec/UML 画图工具可以用在线网址:h ...
- 一位有着近 10 年 iOS 开发经验的全职爸爸如何高效管理时间?
名字: Mindr 开发者 / 团队: Florian Vates 平台: iOS, iPadOS, Android 正在开发中 请简要介绍下这款产品 有没有发现自己总是不断推迟待办事项的通知? Mi ...
- 用 Git 操作的数据库?这个项目火了!
# 用 Git 操作的数据库?这个项目火了!> 超级特别又实用的数据库,快来补课!Git 是一个开源的分布式版本控制系统,可以敏捷高效地管理代码,让项目代码支持同时存在多个不同的版本和分支,是程 ...
- git fetch origin
可以运行 git fetch origin 来同步远程服务器上的数据到本地.该命令首先找到 origin 是哪个服务器(本例为 git.ourcompany.com),从上面获取你尚未拥有的数据,更新 ...