【音视频原理】图像相关概念 ⑥ ( YUV 与 RGB 之间的转换 | YUV444 颜色编码格式 转为 RGB 格式 | RGB 颜色编码格式 转为 YUV444 格式 )

这篇具有很好参考价值的文章主要介绍了【音视频原理】图像相关概念 ⑥ ( YUV 与 RGB 之间的转换 | YUV444 颜色编码格式 转为 RGB 格式 | RGB 颜色编码格式 转为 YUV444 格式 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。






一、 YUV 与 RGB 之间的转换



YUV 与 RGB 颜色格式之间进行转换时 , 涉及一系列的数学运算 ;

YUV 颜色编码格式 转为 RGB 格式 的 转换公式 取决于 于 YUV 的具体子采样格式 :

  • YUV444
  • YUV422
  • YUV420

1、YUV444 颜色编码格式 转为 RGB 格式


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 分量值 ;

R = 1.402 × ( − 128 ) = − 126.598 R = 1.402 \times (-128) = -126.598 R=1.402×(128)=126.598
G = − 0.34414 × ( − 128 ) − 0.71414 × ( − 128 ) = 44.04992 + 91.40992 = 135.45984 G = -0.34414 \times (-128) - 0.71414 \times (-128) = 44.04992 + 91.40992 = 135.45984 G=0.34414×(128)0.71414×(128)=44.04992+91.40992=135.45984
B = 1.772 × ( − 128 ) = − 126.228 B = 1.772 \times (-128) = -126.228 B=1.772×(128)=126.228

计算出来的 RGB 分量 小于 0 , 则 取 0 值 , 因此 R 和 B 分量都是 0 , 只有 G 的分量是 135.45984 , 屏幕显示绿色 ;


2、RGB 颜色编码格式 转为 YUV444 格式


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 值在合适范围之内 ;

上述 计算 的 颜色 位深度 是 8 bit , 也就是 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 库 ;文章来源地址https://www.toymoban.com/news/detail-820550.html

  • FFmpeg 的 swscale 库 是用于图像缩放和像素格式转换的库 , 该函数库 提供了 高度优化的函数 , 用于在不同的像素格式之间进行转换 , 以及进行图像的大小调整 ;
  • libyuv 库 是 Google 提供的一个用于处理 YUV 和 RGB 图像数据之间转换的跨平台库 , 该函数库 支持各种 YUV 格式与 RGB 格式之间的相互转换 , 以及图像的缩放、旋转和裁剪等操作 ;

到了这里,关于【音视频原理】图像相关概念 ⑥ ( YUV 与 RGB 之间的转换 | YUV444 颜色编码格式 转为 RGB 格式 | RGB 颜色编码格式 转为 YUV444 格式 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 真-浅浅了解下音视频文件格式和相关概念

    散装知识,只是突然对这类知识感兴趣,想简单了解下,找到啥就记录啥,没有深入研究文件内部组成构造和底层实现技术和相关标准,毕竟内容挺多的,我也不是必须得学透,况且我没有chatGPT那样的”大脑\\\"…总而言之,门外汉,满足下自己浅浅的好奇心。 1、 MP4(MPEG-4

    2023年04月08日
    浏览(6)
  • 音视频编码实战-------pcm+yuv数据转成MP4

    音视频编码实战-------pcm+yuv数据转成MP4

    avcodec_find_encoder: 根据编码器ID查找编码器 avcodec_alloc_context3:创建编码器上下文 avcodec_open2:打开编码器 avformat_alloc_output_context2:为输出格式创建复用器上下文 avformat_new_stream:创建音视频流 avcodec_parameters_from_context:将编码器上下文中的参数拷贝到音视频流中的编码器参数中AVCodec

    2024年02月15日
    浏览(16)
  • 音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(Android)

    音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(Android)

    本文章已授权微信公众号郭霖(guolin_blog)转载。 本文主要讲解的是 音频基础概念 、 交叉编译原理和实践(LAME的交叉编译) ,是基于 Android平台 ,示例代码如下所示: AndroidAudioDemo 另外, iOS平台 也有相关的文章,如下所示: 音视频开发之旅——音频基础概念、交叉编译

    2024年04月25日
    浏览(14)
  • 【音视频原理】视频帧的 I P B 帧概念 ② ( B 帧 - 双向内插帧 | 画面组 Group of Pictures 概念 | 各类型帧解码错误影响 | 画面组编解码顺序 | 常用视频压缩算 )

    【音视频原理】视频帧的 I P B 帧概念 ② ( B 帧 - 双向内插帧 | 画面组 Group of Pictures 概念 | 各类型帧解码错误影响 | 画面组编解码顺序 | 常用视频压缩算 )

    B 帧 全称 \\\" 双向内插帧 ( Bi-directional Predicted Frames ) \\\" , 采用 双向预测编码方式 , 也就是 B 帧 记录的是 本帧 B 帧 与 前后 I 帧 或 P 帧 的差别 ; 注意 : B 帧 需要依赖于其前的最近的一个 I 帧 或者 P 帧 及其后的最近的一个 P 帧 进行解码 , B 帧 不能 依赖与 B 帧 ; B 帧 依赖的 前一

    2024年01月25日
    浏览(11)
  • 视频图像的两种表示方式YUV与RGB(4)

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

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

    2024年04月11日
    浏览(7)
  • 【音视频原理】视频帧的 I P B 帧概念 ① ( 码率 / 帧率 / 分辨率 视频信息 | I 帧 - 内部编码帧 | I 帧 - 关键帧压缩法 | P 帧 - 前向预测帧 )

    【音视频原理】视频帧的 I P B 帧概念 ① ( 码率 / 帧率 / 分辨率 视频信息 | I 帧 - 内部编码帧 | I 帧 - 关键帧压缩法 | P 帧 - 前向预测帧 )

    使用 MediaInfo 软件 打开一个 mp4 文件 , 查看其属性 ; 该视频的属性如下 : 码率 : 212kb/s , 这是 视频文件 的 视频信息 在 单位时间内的 数据流量 , 码率越大 , 单位时间内采样率越大 , 数据流精度越高 , 视频质量越高 ; 视频帧率 : 5fps , 1 秒中有 5 帧的信息 , 帧率越高 , 视频越流畅

    2024年02月20日
    浏览(9)
  • 音视频基础概念(6)——视频基础

    音视频基础概念(6)——视频基础

    网上冲浪时,我们会接触到网络流媒体和本地视频文件。常见的视频文件格式有MP4、MKV、AVI等。在流媒体网站上看见视频常用的协议有HTTP、RTSP、RTMP、HLS等。视频技术较为复杂,包括视频封装、视频编解码、视频播放和视频转码等内容。 当下市场常见的视频APP很多,其中10

    2024年02月04日
    浏览(11)
  • 音视频基本概念

    音视频基本概念

    充分利用cpu资源的工具  多线程管理问题 资源 有限多个人去抢 有序进行 读写锁 读写分离 自旋锁 等待资源释放(例如) 可重入锁 SDL锁 互斥锁 SDL_CreateMutex/SDL_DestroyMutex SDL_LockMutex/SDL_UnlockMutex 信号量 SDL_CreateCond/SDL_DestroyCond SDL_CondWait/SDL_CondSignal pts:Presentation timestamp  展示音

    2024年01月22日
    浏览(9)
  • 音视频中的基本概念

    操作系统中的文件名都有后缀,即扩展名,例如1.doc,2.jpg,3.avi等。设置扩展名的目的是让系统中的应用程序来识别并关联这些文件,让相应的文件由相应的应用程序打开。常见的文件格式如1.avi,2.mpg,3.mp4这些都叫做视频的文件格式,可由电脑上安装的视频播放器关联和打

    2024年02月17日
    浏览(10)
  • 音视频、网络带宽等常用概念详解

            AAC帧大小为1024个sample: 指AAC编码一般以1024个采样为一个音频帧 。         采样率48khz :指1秒(即1000毫秒) 采集 4 8 0 0 0 次 。         计算1秒有多少帧 :48000 / 1024 = 46.875 = a(用a表示计算结果,多少帧) 。         计算每帧持续时长 :     

    2024年04月16日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包