一口君最近在玩瑞芯微的板子,之前写了几篇基于瑞芯微的文章,大家可以学习一下。

瑞芯微rk356x板子快速上手

《Linux驱动|rtc-hym8563移植笔记》

《Linux驱动 | Linux内核 RTC时间架构》

《瑞芯微 | 摄像头ov13850移植笔记》

《rk3568 | 瑞芯微平台GPIO引脚驱动编写》

《rk3568 | rk平台GPIO冲突检测小技巧》

最近移植了2款ov系列摄像头,顺便把v4l2架构捋了一下,

计划更新几篇基于瑞芯微平台的Camera相关文章,

Camera相关知识点较多,个人精力有限,

有对这块精通,感兴趣的老铁,

可以加我好友:yikoupeng,共同学习讨论。

先开始第一篇。

1. Camera简介

摄像头,大家已经非常熟悉了,遍布在生活的方方面面。

尤其这上段时间炒的非常火的南京医生上门打小孩老人事件,

由于有视频有真相,鲁医生直接被陷入万劫不复的境地。

其中的是非对错本文不讨论了,法律和道德自有评判。

但这说明了,摄像头对我们的日常生活影响实在太大了。

2. 摄像头分类

根据不同参数,摄像头有多种分类方式:

  1. 传输信号

    模拟摄像机和数字摄像机
  2. 画面分辨率

    标清摄像机、高清摄像机
  3. 摄像机外形

    球形摄像机、半球形摄像机、枪式摄像机
  4. 安装环境

    室内摄像机、室外摄像机
  5. 传感器

    CCD摄像机、CMOS摄像机

监控常用的摄像头外观:

3. 摄像头组成

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

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

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

决定一个摄像头好坏的重要部件是:镜头(lens)、图像处理芯片 (DSP)、传感器(sensor)。

4. 摄像头原理

  1. 景物(SCE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上
  2. 然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号
  3. 再送到数字信号处理芯片(DSP)中加工处理,转换成标准的RGB、YUV等格式图像信号
  4. 再通过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是目前最常用的两种图像格式。

  1. RGB24

    表示R、G、B ,3种基色都用8个二进制位表示,那么红色、绿色、蓝色各有256种,那么由这三种基色构成的颜色就是256X256X256=16,777,216种,约等于1677万。

这就是计算机表示颜色的原理,同样也是手机屏幕和显示器屏幕等显示颜色的原理。

  • 颜色对应RGB值

  1. 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基础知识的更多相关文章

  1. Unity3D基础知识梳理

    这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...

  2. MOGRE学习笔记(2) - MOGRE基础知识总结

    前一篇配置了MOGRE的运行环境,这里记录一些MOGRE基础知识,仅仅是最基础的一些东西.由于本人接触ogre的时间比较短,对于很多知识都是一知半解,所以理解起来不免会有一些错误,本人也希望自己在对o ...

  3. Android 开发者文档 -- 应用基础知识

    https://developer.android.com/guide/components/fundamentals 应用基础知识 Android 应用采用 Java 编程语言编写.Android ...

  4. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  5. 3D开发基础知识和简单示例

    引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...

  6. [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

    IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...

  7. C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)

    前言 上篇文章地址: C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) 今天我们来讲一下如何使用Camera来调用照相机扫描二维码. (Tips ...

  8. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  9. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  10. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

随机推荐

  1. linux下安装oracle 11g(静默安装)

    关闭selinux 关闭防火墙 检查安装依赖包 yum -y install binutils compat-libcap1 vsftpd gcc gcc-c++ glibc-devel glibc ...

  2. Vim有哪几种模式?

    Vim有哪几种模式? 模式一:normal模式 作用主要是用来浏览,输入各种和在文档中移动. 模式二:编辑模式 用于对文件的编辑: 常用的插入命令: a在光标位置后编辑, i在光标位置前编辑, o在下 ...

  3. linux挂载的ntfs格式硬盘无法使用回收站

    linux挂载的ntfs格式硬盘无法使用回收站 解决办法: 新建回收站文件, 文件名为Trash-XXX . 比如Trash-1000 这里的1000就是你的$UID. sudo mkdir /.Tr ...

  4. Meilisearch 安装和使用教程

    如今搜索功能已成为几乎所有应用不可或缺的一部分.无论是电商平台.内容管理系统,还是企业内部知识库,用户都期待能够快速.准确地找到他们需要的信息.然而,传统的搜索解决方案往往面临着诸多挑战:响应速度慢. ...

  5. ubuntu 同时安装python2 和 python3 版本的 gunicorn

    前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...

  6. SpringBoot 文件打包zip,浏览器下载出去

    本地文件打包 /** * 下载压缩包 * * @param response */ @ResponseBody @GetMapping("/downloadZip") public ...

  7. 把nodejs程序打包成可执行文件

    在写好之后的nodejs程序,想发给同事的电脑上运行程序,就不得不下载node环境,还要安装第三方依赖包,非常的麻烦. 因此,可以借助一些插件来完成nodejs程序的打包,变成可以执行的文件. 将No ...

  8. 全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?

    全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗? 摘要: 本文主要介绍了Python中类和对象中的类方法和静态方法,以及类方法和静态方法的定义 ...

  9. UE导入FBX、GLTF模型

    楔子 虽然做了很多年的三维可视化,不过都主要还是web端开发为主(webgl,threejs,有兴趣的读者也可以关注下我的相关专栏).最近准备入手一下UE,顺便做一下知识梳理. 所以文章可能都是比较粗 ...

  10. webpack性能优化方式之dll--- webpack.dll.config.js

    通常来说,我们的代码都可以至少简单区分成业务代码和第三方库.如果不做处理,每次构建时都需要把所有的代码重新构建一次,耗费大量的时间.然后大部分情况下,很多第三方库的代码并不会发生变更(除非是版本升级) ...