视频图像的color range简介

介绍

研究FFmpeg发现,在avcodec.h中有关于color的解释,主要有四个属性,primariestransferspacerange

color primaries: 基于RGB空间对应的绝对颜色XYZ的变换,决定了最终三原色RGB分别是什么颜色;

color transfer: 定义了transfer funciton的gamma值,从RGB到最终显示的值需要进行gamma压暗,比如bt709的平均gamma为1.96;

color space: 该属性决定了YUV转换RGB或者RGB转换YUV的转换计算matrix;

color range: 分为pc range和tv range,也有称为video(limited) range和full range;full range中YUV的取值[0-255],video range中Y[16-235],UV [16-240]。

     * Chromaticity coordinates of the source primaries.* - encoding: Set by user* - decoding: Set by libavcodec*/enum AVColorPrimaries color_primaries;/*** Color Transfer Characteristic.* - encoding: Set by user* - decoding: Set by libavcodec*/enum AVColorTransferCharacteristic color_trc;/*** YUV colorspace type.* - encoding: Set by user* - decoding: Set by libavcodec*/enum AVColorSpace colorspace;/*** MPEG vs JPEG YUV range.* - encoding: Set by user to override the default output color range value,*   If not specified, libavcodec sets the color range depending on the*   output format.* - decoding: Set by libavcodec, can be set by the user to propagate the*   color range to components reading from the decoder context.*/enum AVColorRange color_range;

color range

color range的定义经常出现在视频图像显示、视频图像处理等领域,直面意思就是颜色值的表示范围。

full range:
视频信号在由模拟信号转换为数字信号的过程中会涉及采样技术,RGB信号在处理图像时,每个像素的三原色的值由8位二进制数字来表示,即28 = 256 个灰阶。比如(255,255,255)代表白色,(255,0,0 )代表红色,那么灰阶总共是0~255一共256个,通常被称作full range,也成为PC level

limited range:
为了减少数据储存空间和数据传输带宽,可以用较低的采样频率来表示色度信号,比如YUV420、YUV422等,称为消费电子的 Studio Level。在Studio Level设备中,8位YCbCr系统都亮度的取值范围16~235,而B-Y和R-Y信号的取值范围16 ~ 240。这种颜色的取值表示方法通常被称作limited range。
而RGB信号也有两种采样频率和灰阶,在PC Level系统中是0~255,而在Studio Level消费电子中则是16~235。

limited range的起源:
当显示器过渡到全数字阶段时,电影摄影师和导演等内容创作者注意到,默认的全RGB范围会给电影和电视节目带来问题。全RGB具有更宽的黑暗范围,因此黑暗区域的细节显示得更清晰。
对于内容制作者来说,这是一个问题,因为它让“隐藏”东西变得更加困难。例如,恐怖电影喜欢在黑暗的视觉效果中隐藏东西。动作秀使用电线使人飞行,但在后期制作中需要隐藏所述电线。科幻电影和系列有很多特效和CGI。在一个完整而生动的动态范围内,许多元素看起来不那么逼真,也过于暴露。
经过大量实验,16-235的范围几乎被所有的电影和创意艺术应用所采用。流媒体服务和蓝光播放的内容几乎总是以有限的RGB格式掌握。

limited和full显示差别

limited range显示效果明显是比full range差很多。
在这里插入图片描述
如果视频图像源是full RGB表示的,而在显示器是limited RGB上播放,就会丢失很多细节和带来大面积的黑块,只有源和播放显示的RGB r范围匹配,图像才能出现更多的细节,如下图。
在这里插入图片描述

参考

  1. https://www.benq.com/en-us/knowledge-center/knowledge/full-rgb-vs-limited-rgb-is-there-a-difference.html
  2. https://bbs.superic.com/forum.php?mod=viewthread&tid=1752

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

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

相关文章

Linux上软件安装

软件安装常见方式 二进制发布包 软件已经针对具体平台编译打包发布,只要解压,修改配置即可。 RPM包 软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装,但…

开源模型应用落地-qwen模型小试-入门篇(五)

一、前言 这是关于qwen模型入门的最后一篇文章。主要介绍如何使用魔搭的API在本地调用qwen模型。此外,通过阅读这一系列的文章,如果您真的亲自动手实践过,我相信您已经掌握了qwen模型的基本使用方法。 二、术语 2.1. ModelScope社区 打造下一…

【运维】安装双系统之后,如何删除主硬盘的Linux的引导,图文教程

前置条件:已经安装了windows10系统和Linux系统,而且windows10系统是C盘主要盘,Linux系统是安装在别的硬盘上,这个时候C盘主要盘里面的引导分区里是由Linux的引导的,所以打开电脑之后才能让你选是使用windows系统还是使…

pyqt5+python子域名扫描程序

import sysfrom PyQt5 import uic from PyQt5.QtWidgets import * #requests库内置了不同的方法来发送不同类型的http请求 import requests#BS主要功能是从网页抓取数据,提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能 from bs4 import Beau…

ValueError: Unable to read workbook: could not read strings from data.xlsx解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

flutter在windows系统上实现左右水平滑动问题

在个问题在github也有记录:https://github.com/flutter/flutter/issues/105095 就是flutter使用listview等可以滑动的组件来左右滚动的时候,不能正常工作,也就是无效,所以下面大家开始讨论这个问题。 翻阅大家讨论的内容&#x…

交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

AArch64 是随 ARMv8 ISA 一起引入的 64 位架构,用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。,而不能执行 A32 或 T32 指令。但是,与 AArch32 中不同,在64位状态下,指令可以访问 …

初识Mybatis框架技术(上)

文章目录 MyBatis简介MyBatis特性搭建MyBatis 核心配置文件详解 MyBatis简介 MyBatis特性 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解用于配置和原始…

前端基础面试题大全

一、Vue 文章目录 一、Vue1、vue 修改数据页面不重新渲染**数组/对象的响应式 ,vue 里面是怎么处理的?** 2、生命周期Vue 生命周期都有哪些?父子组件生命周期执行顺序 3、watch 和 computed 的区别4、组件通信(组件间传值&#xf…

DAY05_Spring—SpringAopAop案例-缓存控制

目录 1 Spring AOP1.1 AOP介绍1.2 关于AOP名词介绍1.3 通知类型1.4 切入点表达式1.5 AOP入门案例1.5.1 导入jar包1.5.2 准备代码1.5.3 配置切面类1.5.4 编辑配置类1.5.5 编辑测试代码 1.6 关于表达式写法1.6.1 关于annotation切入点相关代码 1.7 关于通知方法测试1.7.1 抽取切入…

Visual Studio 下载安装教程,附安装包和工具,Visual Studio 2022,Visual Studio所有版本都有

前言 Visual Studio是微软推出的一款C编译器,将“高级语言"翻译为"机器语言(低级语言)"的程序,VS是一个非常完整的开发工具集,包括了所有软件生命周期中所需的大部分工具,如UML工具、代码管控工具、集…

Ubuntu 22.04 安装MySql

MySQL是非常常用的关系型数据库,无论是大厂还是小厂,都有它的身影。最大的优点是免费,安装起来也比较简单。 MySQL的架构 画了个简图,描述了下MySQL的架构。 其中的比较有趣的点在于连接池和存储引擎。连接池缓存了数据库和客户端的TCP连接,以减少建立连接的开销。存储引…