当前位置:网站首页>【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构
【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构
2022-06-24 19:24:00 【甜甜的Galier】
摄像头驱动原理和开发&&V4L2子系统驱动架构
一、导入

二、摄像头数据输出格式
1、USB、VS、MIPI摄像头架构
- MIPI接口摄像头支持的分辨率、帧率更高,功率低。
- MIPI比USB成本更低,USB摄像头昂贵。
- USB摄像头开发工作量少,一般都是免驱的。
2、RAW RGB DATA
RAW RGB是sensor的bayer阵列获取的数据(每种传感器获得对应的颜色亮度),摄像头sensor经过光电转换后输出的数据就是RAW data(RAW RGB)。在Sensor中,每一个感光点只能感光RGB其中的一种颜色。所以,通常所说的30万像素或130万像素等,指的是有30万或130万个感光点,每一个感光点只能感光一种颜色。
RGB:传统的红绿蓝格式。比如RGB565,其16bit数据格式为5bitR+6bitG+5BitB,G多一位,原因是人眼对绿色比较敏感。
3、RAW RGB与RGB的区别
- RAW RGB每个像素只有一种颜色(R、G、B中的一种)
- RGB每个像素都有三种颜色,每一个值在0-255之间。
- 由sensor输出的数据RAW DATA(RAW RGB),经过ISP的彩色插值转换就变成了RGB。
4、YUV
Y表示亮度分量(Luma):如果只显示Y的话,图像看起来会是一张黑白照。
U(Cb)表示色度分量:是照片蓝色部分去掉亮度(Y)。
V(Cr)表示色度分量:是照片红色部分去掉亮度(Y)。
①YUV的优点:
与RGB相比,他的优点在于占用更少的空间
②YUV的采样格式
主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0
图像质量:YUV4:4:4>YUV4:2:2>YUV4:2:0
YUV4:4:4采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,4个U,4个V。
YUV4:2:2采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,2个U,2个V。
YUV4:2:0采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,1个U,1个V。
③YUV的存储格式
YUV的存储格式分为打包格式(packet formats)和平面格式(planar formats)。
- 对于planar的YUV格式,先连续存储所有像素点的Y,随后存储U、V。存储类型表示为采样方式后缀加P,如YUV422P、YUV420P。
- 对于packet的YUV格式,每个像素点的Y,U,V是连续交替存储的。存储类型表示为采样方式后缀加SP,如YUV422SP、YUV420SP。

一帧YUV420图像中,u和v分量占用的空间大小分别是原来像素数的1/4,占用的总大小就是widthheigth(3/2)
一帧YUV422图像中,u和v分量占用的空间大小分别是原来像素数的一半,占用的总大小就是widthheigth2
5、MJPEG/H264编码格式
有些摄像头sensor支持输出MJPEG/H264编码格式的,是因为其内置了DSP处理器,将YUV数据编码后输出MJPEG/H264码流。
问题:什么情况下需要用到编码?有什么作用? - 互联网传输,减少带宽。
- 视频编码兼容,统一视频编码标准。
三、视频编码原理

1、视频编码的发展历程
2、视频编码原理
I帧:关键帧,采用帧内压缩技术。
P帧:向前参考帧,在压缩时,只参考前面处理过的帧,采用帧间压缩技术。
B帧:双向参考帧,在压缩时,它既参考前面的帧,又参考它后面的帧,采用帧间压缩技术。
除了I/P/B帧外,还有图像序列GOP。
GOP:两个I帧之间是一个图像序列,在一个图像序列中只有一个帧。在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量。如图:
四、V4L2子系统驱动架构
V4L2:是linux内核中关于视频设备的内核驱动框架,为上层访问底层的视频设备提供了统一的接口。
V4L2驱动核心:主要是构建一个内核中标准视频设备驱动的框架,为视频操作提供统一的接口函数。
平台V4L2设备驱动:在V4L2框架下,根据平台自身的特性实现与平台相关的V4L2驱动部分,包括注册video_device和v4l2_dev
具体的sensor驱动:主要上电、提供工作时钟、视频图像裁剪、流IO开启等,实现各种设备控制方法供上层调用并注册v4l2_subdev。
UVC:是一种usb视频设备驱动。用来支持usb视频设备,凡是usb接口的摄像头都能够支持。
V4L2的核心源码位于drivers/media/v4l2-core,根据功能可以划分为四类:
- 字符设备模块:由v4l2-dev.c实现,主要作用申请字符主设备号、注册class和提供video device注册、注销等相关函数。
- v4l2基础框架L:由v4l2-device.c、v3l2-subdev.c、v3l2-fh.c、v4l2-ctrls.c等文件构建v4l2基础框架。
- videobuf管理:由videobuf2-core.c、videobuf2-dma-contig.c、videobuf2-dma-sg.c、videobuf2-memops.c、videobuf2-vmalloc.c、v3l2-mem2mem.c等文件实现,完成videobuffer的分配、管理和注销。
- loctl框架:由v4l2-ioctl.c文件实现,构建v4l2 ioctl的框架。
V4L2注册流程:
videobuf管理:
V4L2 ioctl框架
用户空间对V4L2设备的操作基本都是ioctl来实现的,V4L2设备都有大量可操作的功能(配置寄存器),所以V4L2的ioctl也是十分庞大的。
V4L2驱动主要使用的ioctl命令值如下:
五、摄像头视频采集流程

摄像头数据流:
六、常见典型问题
1、摄像头画面卡顿
- 帧率不足
- usb带宽不足
- 视频采集格式设置出错:YUV、MJPEG或H264格式
- 编解码问题
- CPU占用高
2、摄像头画面旋转90度或180度问题
3、摄像头画面打不开问题
边栏推荐
- Understanding openstack network
- Station B takes goods to learn from New Oriental
- 66 pitfalls in go programming language: pitfalls and common errors of golang developers
- Graduation summary of phase 6 of the construction practice camp
- memcached全面剖析–5. memcached的应用和兼容程序
- Tdengine can read and write through dataX
- Static routing job supplement
- Memcached full profiling – 1 Fundamentals of memcached
- Basic database syntax learning
- Golang reflection operation collation
猜你喜欢

虚拟货币7个月蒸发2万亿美元,“马斯克们”终结15万人暴富梦

What does CTO (technical director) usually do?

Alibaba cloud schedules tasks and automatically releases them

自己总结的wireshark抓包技巧

Analysis of BBR congestion control state machine

Docking of arkit and character creator animation curves

TDengine可通过数据同步工具 DataX读写

CondaValueError: The target prefix is the base prefix. Aborting.

Tutorial on obtaining JD cookies by mobile browser

关于Unity中的transform.InverseTransformPoint, transform.InverseTransofrmDirection
随机推荐
Antdb database online training has started! More flexible, professional and rich
188. 买卖股票的最佳时机 IV
memcached全面剖析–5. memcached的应用和兼容程序
Minimum cost and maximum flow (template question)
(to be optimized and modified) vivado DDR4 SDRAM (MIG) (2.2) IP core learning record
Football information query system based on C language course report + project source code + demo ppt+ project screenshot
升哲科技 AI 智能防溺水服务上线
Pytest testing framework
Shengzhe technology AI intelligent drowning prevention service launched
Memcached comprehensive analysis – 2 Understand memcached memory storage
regular expression
Remember the frequently forgotten problem of continuously reading pictures -%04d
自己总结的wireshark抓包技巧
TCP_ Nodelay and TCP_ CORK
Memcached full profiling – 1 Fundamentals of memcached
Static routing job supplement
Arkit与Character Creator动画曲线的对接
Functional analysis of ebpf sockops
VirtualBox虚拟机安装Win10企业版
TDengine可通过数据同步工具 DataX读写