视频图像的两种表示方式YUV与RGB(4)

本篇主要讲YUV与RGB之间的转换,包括YUV444 颜色编码格式 转为 RGB 格式 ,RGB颜色编码格式转为 YUV444 格式。
一、 YUV与RGB之间的转换
YUV与RGB颜色格式之间进行转换时 , 涉及一系列的数学运算 ;
YUV 颜色编码格式转为RGB格式的转换公式 取决于 于 YUV 的具体子采样格式 :

  • YUV444
  • YUV422
  • YUV420

1、YUV444颜色格式转为RGB格式的转换公式如下 :
R = Y + 1.13983 * (V - 128)
G = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128)
B = Y + 2.03211 * (U - 128)
公式中UV 色度值分量减去 128 , 是因为这两个分量都是从中心值 ( 256 / 2 = 128 ) 进行偏移的 , 计算时需要先将这个偏移量减去 , 然后将其转换到正确的范围中 ;
上述计算的颜色位深度 是 8 bit , 也就是1字节 , 取值范围是 0 ~ 255 , 有 256 个值 , 128 的偏移量也就是这个值的中间值 ;
如果计算出来的 RGB分量小于 0 , 则取 0 值 ;
如果计算出来的 RGB分量大于255 , 则取 255 ;

如果 YUV 解码错误 , 导致三个分量的值都是 0 , 则最终计算时 , 得到如下 3 个 RGB 分量值 ;
在这里插入图片描述
若计算出来RGB分量小于 0 , 则取0值 , 因此R和B分量都是0 , 只有G的分量是135.45984 , 屏幕显示绿色 。
2、RGB 颜色格式转为YUV444 格式的转换公式如下 :
Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.14713 * R - 0.28886 * G + 0.436 * B + 128
V = 0.615 * R - 0.51498 * G - 0.10001 * B + 128
UV 分量在计算后增加一个中间值偏移量 , 这个中间值一般是256的一半 128 , 确保UV值在合适范围之内 ;
上述计算颜色位深度是8bit , 也就是1字节 , 取值范围是 0 ~ 255 , 有256个值 , 128的偏移量也就是这个值的中间值 ;
3、YUV 格式各分量的取值范围
广播电视标准 : BT601标准 , BT709标准 , BT2020标准 ,Y 分量取值范围 : 16 ~ 235 ,UV分量取值范围 : 16 ~ 240 ;在FFmpeg中 , 这种范围称为 " MPEG 范围 ",这类标准是在电视信号中使用的 ;
计算机标准 : 在FFmpeg中, 这种范围称为 "JPEG 范围 ",YUV分量取值范围 : 0 ~ 255 ,这类标准是在计算机 中使用的。
4、转换函数库
实际使用时 , RGB与YUV 编码格式转换 , 都调用接口实现 , 如 FFmpeg 的 swscale 库 , 或者 libyuv 库 ;
FFmpeg的swscale 库是用于图像缩放和像素格式转换的库 , 该函数库提供了 高度优化的函数 , 用于在不同的像素格式之间进行转换 , 以及进行图像的大小调整 ;
libyuv库是Google 提供的一个用于处理YUV和RGB 图像数据之间转换的跨平台库 , 该函数库 支持各种YUV格式与RGB 格式之间的相互转换 , 以及图像的缩放、旋转和裁剪等操作 ;

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

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

相关文章

蓝桥杯每日一题:矩形牛棚(单调栈)

作为一个资本家,农夫约翰希望通过购买更多的奶牛来扩大他的牛奶业务。 因此,他需要找地方建立一个新的牛棚。 约翰购买了一大块土地,这个土地可以看作是一个 R行(编号 1∼R1)C 列(编号 1∼C1)…

Python requests 模块

爬虫、网络编程、接口......对于Python工程师来讲都绕不过一个强大的模块---requests,本篇文章就深入详细讲一讲requests模块。同时也先也分享一下开源API网站:Gitee-API文档、JSONPlaceholder API文档、和风天气API文档、Postman Echo API网站&#xff…

C语言_文件操作

文件基础 什么是文件 文件是在计算机中以实现某种功能、或某个软件的部分功能为目的而定义的一个单位。磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分的)。 程序文件 …

App加固:不同类型和费用对比

文章目录 [TOC]引言应用程序加固是什么不同类型[App加固](https://www.ipaguard.com/)的费用对比基础加固高级加固云加固 白嫖的混淆加密工具](https://www.ipaguard.com/)-[ipaguard总结参考资料 引言 在当前移动应用市场中,安全性已经成为一个非常重要的话题。为…

tdesign坑之EnhancedTable树形结构默认展开所有行

⚠️在官方实例中,树形结构的表格提供了2种方法控制展开全部节点: 一是通过配置属性tree.defaultExpandAll为true代表默认展开全部节点(仅默认情况有效); 二是使用组件实例方法expandAll()可以自由控制树形结构的展开…

Bert基础(十二)--Bert变体之知识蒸馏原理解读

B站视频:https://www.bilibili.com/video/BV1nx4y1v7F5/ 白话知识蒸馏 在前面,我们了解了BERT的工作原理,并探讨了BERT的不同变体。我们学习了如何针对下游任务微调预训练的BERT模型,从而省去从头开始训练BERT的时间。但是&#…

311_C++_QT表格的单个item的撤销、恢复操作,代码量很小,轻量化

:初始截图 :修改截图 :撤销截图 connect(m_customTableWidget, &QTableWidget::itemChanged, this, &FileDoc::itemChanged);

离心机租赁,冷冻离心机租借,实验室离心机租售,大容量离心机以租代买

离心机租赁,冷冻离心机租借,实验室离心机租售,大容量离心机以租代买,满足广大客户对离心的租赁与购买需求! 服务优势 1、以租代买:租期达到一定期限,租金抵扣货款; 2、快速上门:2分钟响应,同城12小时内到…

短剧在线搜索PHP网站源码

源码简介 短剧在线搜索PHP网站源码,自带本地数据库500数据,共有6000短剧视频,与短剧猫一样。 搭建环境 PHP 7.3 Mysql 5.6 安装教程 1.上传源码到网站目录中 2.修改【admin.php】中, $username ‘后台登录账号’; $passwor…

【C++】lambda表达式

目录 一、lambda表达式1.1 C98中的例子1.2 lambda表达式语法1.3 函数对象与lambda表达式 一、lambda表达式 1.1 C98中的例子 如果要对一个数据集合进行排序,可以使用sort函数: int main() {int array[] { 4,1,8,5,3,7,0,9,2,6 };// 默认按照小于比较…

Vue-Router入门

现在的前后端分离项目,后端只管数据传递,视图跳转的活交由前端来干了,vue-router就是专门来干这个活的,它可以让页面跳转到指定组件 组件是可复用的 Vue 实例, 把一些公共的模块抽取出来,然后写成单独的的工具组件或者…

面对DDOS攻击,有哪些解决办法

随着互联网带宽的持续增长以及DDOS黑客技术的发展,DDOS拒绝服务攻击的实施变得愈发容易。商业竞争、打击报复、网络敲诈等多种因素,各行各业的用户都曾受到DDOS攻击的威胁。 一旦遭受到DDOS攻击,随之而来的就是业务宕机,用户无法…

44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

转让北京装饰装修二级和建筑幕墙施工二级流程和条件

我公司可以帮您快速办理北京市各类建筑姿质申请,也有现成的姿质转让,新申请建筑姿质要求比较高,但是对于企业来说,承接模板脚手架工程也是需要具备姿质的,该姿质也就是模板脚手架姿质,那么对于企业想要申请…

基于Java+SpringBoot+Vue幼儿园管理系统(源码+文档+部署+讲解)

一.系统概述 随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建幼儿园管理系统。本文通过课题背景、课题目的及意义相关技术,提出了一种教 学生信息、学生考勤、健康记录…

Fecify 商品标签功能

关于商品标签 商品标签是指商家可以在展示商品时,自己创建一个自定义标签,可自定义某个关键词或短语。这样顾客在浏览商城时,只需要通过标签就能看到更直观的展示信息。 商品标签可以按照用户的属性、行为、偏好等进行分类,标签要…

传输大咖22|如何利用ProtoBuf实现高效的数据传输?

在今日信息技术日新月异的时代,数据传输的速度与安全性无疑成为了软件开发中的重中之重。无论是微服务架构下的服务间交流,还是客户端与服务器间的数据互动,寻求一种既高效又稳妥的数据传输方式已成为共识。尽管传统的数据格式,如…

水务行业如何实现数字化转型实现智能化管理

水务行业在当下已经迈入了新的发展阶段,行业内增大了信息化、数字化的探索,尤其是智能化技术出现以后,智能水务概念的提出使得水务数字化转型成为可能。但我国水务行业经历了漫长的发展时期,在很长一段时间内因为存在发展思路、技…

骨传导耳机怎么选?这五款骨传导耳机性能好、配置高,跟着买不出错!

如今,骨传导耳机作为一种创意十足的蓝牙耳机,正在逐渐走入千家万户,成为最受欢迎的耳机款式。然而,随着骨传导耳机的热度增加,市面上开始出现各式各样的骨传导耳机品牌,面对琳琅满目的骨传导耳机品牌&#…

基于SpringBoot的“垃圾分类网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“垃圾分类网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统功能界面图 用户登录、用户注…