Camera | 1.Camera基础知识

news2024/12/23 15:56:07

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

《瑞芯微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算法
AECAuto Exposure Control, 自动曝光控制
AWBAuto White Balance, 自动白平衡
AFAuto Focus, 自动对焦
TETime Exposure, 曝光时间
FBCFrame Buffer Compressed, 帧缓冲压缩
IQImage 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/QQVGA160 x 12019200
QCIF176 x 14425344
SIF/QVGA320 x 24076800
CIF352 x 28810137610万像素
VGA640 x 48030720030万像素(35万是指648X488)
SVGA800 x 600480000
XGA1024 x 76878643880万像素
SXGA1280 x 10241310720130万像素
UXGA1600 x 12001920000200万像素
QXGA2048 x 15363145728300万像素(320W)
QSXGA2592 x 19445038848500万像素
2816 x 21122947392600万像素
3072 x 23047077888700万像素
3200 x 24007680000770万像素
3264 x 24487990272800万像素
3876 x 2584100155841000万像素

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的公司如下:

随着美丽国的制裁,像海康这样大厂市场营收几乎腰斩。

衷心祝愿咱们的高端芯片产业链早日完善,成熟,

百花发时我不发,我若发时都吓杀!

誓与老美战一场,芯片倾销美欧亚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图的生成树与生成森林

文章目录连通图与连通分量强连通图与强连通分量图的连通性判断生成树深度优先生成树邻接表邻接矩阵广度优先生成树邻接表邻接矩阵生成森林获取边弧的权值源代码连通图与连通分量 在无向图中, 若从顶点v到顶点w有路径存在, 则称v和w是连通的. 若图G中任意两个顶点都是连通的, 则…

动态规划--矩阵链相乘问题

明确原始问题A[1:n]:计算矩阵链 所需的最小乘法次数。 (1)是否满足最优子结构,问题的解是否包含子问题的优化解? 若计算A[1:n]的优化顺序在k处断开矩阵链,即A[1:n]A[1:k]A[k1:n],则在A[1:n]的优化顺序中&a…

ReFactor GNN:从消息传递角度重新审视FMs

分享嘉宾 | 陈艺虹 文稿整理 | William Knowledge Graph Completion(KGC) 知识图谱一般会有多个节点,包括性别、国家等各种各样的节点(也可理解为实体),节点之间会有不同的关系,可以通过其他的一些节点预测出当前节点的其他信息。恢复这些信…

2023/1/6 Vue学习笔记-1

尝试 Vue.js 最简单的方法是使用 Hello World 例子。你可以在浏览器新标签页中打开它&#xff0c;跟着例子学习一些基础用法。或者你也可以创建一个 .html 文件&#xff0c;然后通过如下方式引入 Vue&#xff1a; <!-- 开发环境版本&#xff0c;包含了有帮助的命令行警告 -…

设计模式——建造者模式

文章目录模式理解基本概念使用示例建造者模式延展模式理解 建造者模式&#xff08;Builder Pattern&#xff09;&#xff1a;建造者模式是一种对象创建型模式。将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这句话理解起来太抽象了&…

B. Dima and a Bad XOR(构造 + 异或性质)

Problem - 1151B - Codeforces 来自Kremland的学生Dima有一个大小为nm的非负整数矩阵a。 他希望从矩阵的每一行中选择一个整数&#xff0c;以便所选整数的按位互斥或严格大于0。帮助他! 形式上&#xff0c;他想选择一个整数序列c1,c2&#xff0c;…&#xff0c;cn(1≤cj≤m)&am…

Integer包装类详解(java)

文章目录&#x1f4d6;前言&#xff1a;&#x1f380;包装类概念&#xff1a;&#x1f380;包装类分类&#xff1a;&#x1f380;包装类integer介绍&#xff1a;&#x1f387;自动装箱和自动拆箱问题【⚠注意面试常考点】&#x1f387;Integer常用方法&#xff1a;&#x1f4d6…

2023真无线蓝牙耳机推荐:高性价比真无线蓝牙耳机各价位蓝牙耳机推荐!

2023年了&#xff0c;蓝牙耳机赛道依然很卷&#xff01;性价比是反映物品可买程度的一种量化的计量方式。现如今&#xff0c;蓝牙耳机市场上主打高性价比的不在少数&#xff0c;而高性价比的东西往往更能精准抓住用户“痛点”&#xff0c;从而受到了不少用户的欢迎。 既然高性…

面试20分钟就完事了,问的实在是太......

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

Spring Boot整合Junit

系列文章目录 Spring Boot[概述、功能、快速入门]_心态还需努力呀的博客-CSDN博客 Spring Boot读取配置文件内容的三种方式_心态还需努力呀的博客-CSDN博客 该系列文章持续更新中~ 目录 系列文章目录 前言 一、搭建SpringBoot工程 二、引入starter-test起步依赖 三、编…

2022年全国研究生数学建模竞赛华为杯F题COVID-19疫情期间生活物资的科学管理问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 F题 COVID-19疫情期间生活物资的科学管理问题 原题再现&#xff1a; 一、背景介绍   进入2022年以来全国范围内陆续出现了多次较大规模疫情爆发事件[1-2]。在大规模疫情爆发期间由于我国采用封闭式管理方式来实现疫情的快速清零&#x…

Vue组件之间的通信(组件之间的数据传递)

一、Vue组件之间的关系 父子关系&#xff1a;A组件和B组件、B组件和C组件、B组件和D组件​ 兄弟关系&#xff1a;C组件和D组件​ 隔代关系&#xff1a;A组件和C组件、A组件和D组件 二、父组件向子组件传递数据 通过props方式向子组件传递数据&#xff08;在子组件中添加props属…

为什么选型低代码平台时,需要注重私有化部署能力?

编者按&#xff1a;低代码平台&#xff0c;目前分为私有化部署和公有化部署&#xff0c;企业为什么倾向于选择私有化部署的低代码平台&#xff1f;本文从私有化部署的概念出发&#xff0c;分析了私有化部署的优势&#xff0c;并进一步介绍了支持私有化部署的老牌低代码平台。关…

工控安全-使用Metasploit攻击Modbus设备

文章目录实验内容环境介绍实验开始开启Modbus从站主机和从站服务利用Metasploit工具扫描Modbus从站中的ID访问从站2的寄存器数据修改从站4线圈值可选择的action实验内容 利用Metasploit工具针对Modbus协议进行攻击&#xff0c;读取Modbus从站寄存器数值以及修改Modbus从站寄存…

应届生学习Java八个月,offer年薪28W,这一年我经历了什么?

自我介绍 首页和大家介绍一下我&#xff0c;我叫 阿杆&#xff08;笔名及游戏名&#x1f923;&#xff09;&#xff0c;19级本科在读&#xff0c;双非院校&#xff0c;主修软件工程&#xff0c;学习方向是后端开发&#xff0c;主要语言Java、Python&#xff0c;今年秋招拿到了…

三、Gtk4-Widgets(1)

1 GtkLavel&#xff0c;GtkButton and GtkBox 1.1 GtkLabel 在前一节中&#xff0c;我们创建了一个窗口并将其显示在屏幕上。现在我们进入下一个主题&#xff0c;在这个窗口中添加部件。最简单的部件是GtkLabel。它是一个包含文本的部件。 1 #include <gtk/gtk.h>2 3 s…

spark sql 执行流程

最近学习了spark sql执行流程&#xff0c;从网上搜到了大都是sql解析、analyzer、optimizer阶段、sparkplan阶段&#xff0c;但是我比较好奇的是&#xff0c;这几个阶段是怎么串起来的&#xff0c;于是花了好几天着重从源码层面看看了看具体实现&#xff0c;写了几点自己认为应…

聊聊Mybatis的缓存

Mybatis缓存是内存中的数据&#xff0c;主要是对数据库查询结果的保存&#xff0c;使用缓存的好处是避免频繁与数据库进行交互&#xff0c;提升查询的响应速度。 数据库缓存扩展 聊到Mybatis缓存。我们可以扩展聊一下MySQL缓存。MySQL缓存其实与Mybatis类似&#xff0c;在查询…

物联网架构实例—Ubuntu 安装MongoDB及完全卸载

1.安装1.1.导入公钥wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -如果收到指示gnupg未安装的错误&#xff0c;则可以先执行&#xff1a;sudo apt-get install gnupg然后再执行一次导入公钥命令&#xff1a;wget -qO - https://www.mongo…

React(coderwhy)- 08(Hooks)

认识和体验Hooks 为什么需要Hook? ◼ Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下使用state以及其他的React特性&#xff08;比如生命周期&#xff09;。 ◼ 我们先来思考一下class组件相对于函数式组件有什么优势&#xff1f;比较常见的是下…