视频数据采集流程

张开发
2026/6/10 0:34:31 15 分钟阅读
视频数据采集流程
视频数据采集流程一、视频采集整体流程总览典型采集链路感光元件-----ISP图像处理----MIPI/USB传输---------驱动V4L2/UVCDriver-----------帧缓冲--------应用层YUV/RGB一句话概括光—电信号-----数字信号----图像处理------格式封装---------传给软件二、详细步骤拆解1.光学成像与感光Sensor端1.1 镜头聚焦光线通过镜头、光圈、滤光片到达传感器。自动对焦AF、自动曝光AE由镜头或ISP协同控制.1.2 CMOS/CCD感光传感器上是数百万个光电二极管。光子------电子----------模拟电压每个像素只感应一种颜色拜耳阵列1.3 Bayer 滤镜拜耳阵列绝大多数Sensor输出是Bayer RAW格式RG/GB排列R G R G / G B G B …每个像素只有单色信息需要后续插值成彩色2.模拟前端处理CDS相关双采样降噪AGC 自动增益控制模拟信号放大与抗混叠滤波3.ADC模数转换模拟电压-----数字信号通常是10~14bit输出RAW数据未处理的裸数据4.ISP图像处理核心步骤ISPImage Signal Processor是摄像头的“大脑”决定画质。4.1 坏点校正去除坏点、热点像素4.2 黑电平校正消除暗电流偏移4.3 白平衡AWB校正不同光源下的色温偏差让白色看起来是白色4.4 去马赛克/拜耳插值Demosaic将单通道Bayer插值为RGB三通道图像4.5 色彩校正CCM将Sensor色彩空间转换为标准色彩空间sRGB等。4.6 锐化、降噪2D降噪、时域降噪3D/DNG边缘增强4.7 Gamma校正让人眼感知更线性4.8 裁剪、缩放、旋转输出目标分辨率如1080p、720p4.9 最终输出格式ISP输出一般为YUV422/YUV420 (最常见)或RGB极少场景直接输出Bayer给上层5.数据传输手机/嵌入式MIPI CSI接口高速差分串行传输直接从Sensor—ISP—SocUSB摄像头UVCUSB2.0/3.0 传输压缩或未压缩帧常见YUYV、MJPEG、H.264输出6.驱动层处理操作系统内核LinuxV4L2框架负责打开设备 /dev/videoX配置格式、分辨率、帧率申请缓冲区mmap方式入队/出队缓冲DQBUF/QBUF流开启STREAMONWindows:DirectShow/MediaFoundationAndroid:Camera1/Camera2/CameraX封装底层驱动驱动最终给上层提供-连续的帧数据-时间戳控制接口AE、AWB、对焦等7.应用层拿到的图像数据上层通常拿到的是7. YUV420NV12/NV21/I420Android主流8. YUYVUVC摄像头常见9. MJPEG压缩帧USB摄像头高帧率常用此时图像还未编码是原始帧8.进入音视频编码前的预处理可选采集完成后一般会做10. 裁剪、缩放11. 旋转、镜像12. 色彩空间转换如I420–NV1213. 时间戳对齐与音频同步14. 防抖、美颜算法处理之后才送入编码器原始帧----H.264/H.265编码器三、关键参数采集时必须配置分辨率1080p/720p/4K帧率30fps、60fps像素格式YUYV、NV12、MJPEG缓冲区模式mmap零拷贝、高性能read 用户拷贝、低性能曝光、增益、白平衡裁剪、旋转、帧率控制四、常见采集输出格式YUYVYUV422未压缩数据量较大NV12YUV420SPAndroid标准编码最常用I420YUV420P通用planar格式MJPEG:每帧独立JPEG适合高分辨率USB摄像头H.264部分摄像头硬件编码后直接输出五、典型问题与性能关键点1.掉帧缓冲不足USB 带宽不够CPU拷贝耗时2. 延迟驱动缓冲队列过长ISP处理耗时软件拷贝3.色彩异常白平衡错误YUV格式理解错误NV21—NV12搞反4.画面卡顿帧率与系统时钟不匹配内核丢帧

更多文章