YUV格式详解

news2024/9/20 22:41:15

YUV 可以将亮度信息(Y)与色度信息(UV)分离,没有UV信息一样可以显示完整图像,只不过是黑白的,也是一种颜色编码方法,,YUV和RGB可以通过公式互相转换,图片中每一个像素的颜色信息,除了可以用RGB的方式表示,也可以用YUV的方式表示。

Y:表示亮度 占8bit

Cb Cr表示色度,

其中Cb(U) 蓝色色度分量,占8bit

Cr(V) 红色色度分量 占8bit

YUV和RGB对比:

如果使用RGB888 RGB每个颜色分量都是8bit,一个像素的颜色为24bit 也就是3字节

使用YUV 一个像素可以减少至平均只占用12bit 内存占用为RGB888的一半,是一种不影响视觉的压缩

色度的二次采样:

人眼对亮度的敏感程度要高于对色度的敏感程度,人眼对于亮度的分辨要比对颜色的分辨要精细一点,如果把图像的色度分量减少一点,人眼也是丝毫感觉不到变化和差异的。如果在色度分量上进行 较低分辨率的采样,也就是储存较多的亮度细节,较少的色度细节,这样就可以减小图像的体积,上述过程被称为 色度的二次采样

采样格式通常用A:B:C的形式来表示,比如4:4:4 (YUV的原格式) 4:2:2 4:2:0(最需要关注)Y 为全分辨率采集

A: 一块A * 2个像素的 概念区域

B:第一行的色度采样数目

C:第二行的色度采样数目(C的值要么等于B 要么等于0)

bpp(bits per pixel)每个像素占用多少位

YUV的存储格式:

YUV的存储格式,决定了YUV数据是如何排列和存储的。YUV的存储格式可以分为3大类:

Planer(平面) YUV分量分开单独存储 ,名称通常以字母p结尾(yuv420p yuv444p)

Semi-Planer(半平面)Y分量单独存储 UV分量交错存储 名称通常以字母sp结尾 采样格式多以NV开头

Packed(紧凑型) YUV分量交错存储

大多数视频解码器都是以I420来输出原始图片的:

Android摄像头采集的原始数据的编码格式:NV21 和 NV12:

ffmpeg -i in.png -s 分辨率 -pix_fmt 像素格式 out.yuv

ffplay -video_size 分辨率 -pixel_format 像素格式 out.yuv

ffmpeg -pix_fmts 查看ffmpeng 支持的像素格式

如果不设置此选项 默认会根据输入图片的格式像素

可以通过ffprobe 查看某图片的像素格式 比如 ffprobe in.png

// YUV 图不能直接用于显示,需要转换为 RGB 格式,而 YUV 转 RGB 是一个逐像素处理的耗时操作,

// 在 CPU 端进行转换效率过低,这时正好可以利用 GPU 强大的并行处理能力来实现 YUV 到 RGB 的转换。

// 只赋值x 则会出现黑白照片效果

yuv.x = texture(y_texture, v_texCoord).r;

// 因为YUV转RGB用的是Y、U-128和V-128,texture函数返回向量值的范围是0-1.0,128表示0.5, 所以要减去0.5

yuv.y = texture(uv_texture, v_texCoord).a-0.5;

yuv.z = texture(uv_texture, v_texCoord).r-0.5;

// RGB转YUV:

// Y = 0.299 R + 0.587 G + 0.114 B

// U = - 0.1687 R - 0.3313 G + 0.5 B + 128

// V = 0.5 R - 0.4187 G - 0.0813 B + 128

// YUV转RGB

// R = Y + 1.402 (V - 128)

// G = Y - 0.34414 (U - 128) - 0.71414 (V - 128)

// B = Y + 1.772 (U - 128)

// YUV 和 RGB 的转换矩阵

highp vec3 rgb = mat3( 1.0, 1.0, 1.0, //第一列

0.0, -0.34414, 1.772, //第二列

1.403, -0.71414, 0.0 //第三列

) * yuv;

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

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

相关文章

响应式网站建站源码系统+完整的搭建教程

互联网已成为人们生活中不可或缺的一部分。在这个信息爆炸的时代,企业和个人对网站的需求不再仅仅是展示信息,而是要求网站能够适应各种设备、屏幕尺寸和网络环境,以便更好地与用户进行互动。因此,响应式网站建设应运而生&#xf…

使用Jenkins触发gitlab的webhook

满足条件: 首先手动构建可以完成构建 例如: 打开项目点击配置 在“Build Triggers”栏勾选,Build when a change is pushed to GitLab. GitLab webhook ;如下 复制URL链接,我的链接是:http://192.168.44…

23款奔驰E300L升级几何多光束大灯 车辆自检等功能

奔驰几何多光束大灯核心特点就是通过内部的84颗可独立控制的LED光源,行车远光灯会甄别对向驶来的车辆或者行人,并且动态的跟随目标,之后阴影话该区域,避免晃到车辆和行人。 奔驰升级几何多光束 LED 大灯(MULTIBEAM LED…

TypeError: data.reduce is not a function:数据类型不匹配

错误展示: 错误分析: 首先来看看前端代码:我表格绑定的数据模型是tableData,而我tableData定义的是一个数组 其次看看后端给的数据: 传递的是一个对象,而不是一个数组! 这样原因就找出了&…

Spring如何使用三级缓存解决循环依赖问题?

Spring框架中采用了"三级缓存"(三级缓存是一种缓存解决循环依赖的数据结构)来解决循环依赖问题,其中缓存包括singletonObjects、earlySingletonObjects和singletonFactories。 第一级缓存 - singletonObjects: 在Spr…

Qt跨平台(统信UOS)各种坑解决办法

记录Qt跨平台的坑,方便日后翻阅。 一、环境安装 本人用的是qt 5.14.2.直接在官网下载即可。地址:Index of /archive/qt/5.14/5.14.2 下载linux版本。 下载之后 添加可执行权限。 chmod 777 qt-opensource-linux-x64-5.14.2.run 然后执行。 出现坑1…

个头小却很能“打”!合合信息扫描全能王推出A4便携式打印机

过去,为了打印一份清晰工整的材料,人们往往需要到专门的打印店或办公室。处理文件。对于销售、物流人员、工程师、医生、媒体记者等出差频率较高的职业而言,打印是一项“不太友好”的需求。为解决移动打印难题,近期,合…

嵌入式学习笔记(63)指针到底是什么

3.1.1.指针变量和普通变量的区别 首先必须非常明确:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字叫指针变量,简称指针。 3.1.2.为什么需要指针 (1)指针的出现是为了实现间接访问。在汇编中都有间接访问&#xff08…

众和策略可靠吗?b股指数是什么代码?

可靠 B股指数(BShare Index)是指由上海证券买卖所和深圳证券买卖所一起编制的反映我国两个证券商场B股出资价值变化的指数。作为我国证券商场中的重要指数之一,许多出资者都想了解B股指数的代码是什么。 B股指数代码 B股指数代码是指B股买卖…

应届生如何找到适合自己的项目

去开源网站 搜索技术点项目, 按照星级排序 不要只是跟着敲代码 那样什么都学不到,脑子是停转的 要自己理解业务流程,然后自己先试着实现,简单的crud要会,复杂的肯定会遇到问题,这个时候再去参考他给的代码 选择以下比较通用的业务来深度耕耘 模块如何吃透 例如权限认证: 功能实…

MutationObserver详解

MutationObserver API 让我们能监听 DOM 树变化,该 API 设计用来替换掉在 DOM 3 事件规范中引入的 Mutation events。 Mutation events 是同步触发的,每次变动都会触发一次调用。 MutationObserver API 是异步触发的, DOM 的变动并不会马上触…

YOLOv5— Fruit Detection

🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营-第7周:咖啡豆识别(训练营内部成员可读) 🍖 原作者:[K同学啊 | 接辅导、项目定制](https…

重庆助理工程师申请步骤及注意事项

目录 一、前言二、步骤1. 职称系统网址 2. 一定使用谷歌浏览器,其他白搭三、材料准备1.思想和工作-要手写签字并盖单位公章,无模板2.近五年年度考核-填优秀,并改单位公章,无模板 四、流程1.单位公示要公示5个工作日,再…

量化网络的注意事项

二,量化算术 模型量化过程可以分为两部分:将模型从 FP32 转换为 INT8,以及使用 INT8 进行推理。本节说明这两部分背后的算术原理。如果不了解基础算术原理,在考虑量化细节时通常会感到困惑。 2.1,定点和浮点 定点和…

【密评】商用密码应用安全性评估从业人员考核题库(十三)

商用密码应用安全性评估从业人员考核题库(十三) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 3001 单项选择题 在GM/T 0082 《可信密码模块保护轮廓》中&#x…

多测师肖sir_高级金牌讲师__接口测试之练习题(6.1)

常见的接口面试题目: 1.postman接口测试,它有一个功能可以设置参数化,你有用过吗? 用过 (1)新建一个csv.文件 填写user、pwd 新建一个全局变量 user、pwd 点击bodyform-data 填写user、pwd 点击run 导入csv.件 查看结果 &#x…

C语言重点突破(四)自定义类型详解

前言 本文意在介绍C语言里的常规自定义类型,它是C语言里最重要的概念之一,是我们从简单使用C语言到综合运用必不可少的知识之一,在C语言中具有重要的地位和作用,掌握自定义类型的使用方法和技巧对于写出高质量的C程序是非常重要的…

链表顺序表—优缺点对比

目录 链表: 优点: 缺点: 顺序表: 缺点: 优点: 链表: 优点: 1、任意位置插入删除O(1) 2、按需申请释放空间 缺点: 1、不支持下标随机访问 2、CPU高速缓存命中率…

基于Qt实现的轻量级CAD画图软件

1.界面展示 2.功能展示 3.关于Graphics View绘图架构 由于QPainter画图形,不能实现对图形的选择、编辑、移动等操作,所以我的整个项目是基于Craphics View绘图架构来实现的 3.1 Craphics View (1)Craphics View绘图架构介绍 …

js echarts 词云图

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>词云图</title><script src"./echarts.js"></script><script src"./echarts-wordcloud.js"></script></head>&…