视频tonemapping(hdr转sdr)中的颜色空间转换问题(bt2020转bt709,ycbcryuv和rgb)(代码片段)

q274488181 q274488181     2023-03-29     703

关键词:

笔者按,最近在做视频TM的相关工作,具体是给定一个HDR视频(10bit的YUV420格式),要对其进行TM,写了一个算法但总是有非常离谱的色差,尤其是红色和蓝色通道。仔细检查之后发现是拿到的HDR视频的颜色空间是BT2020的,但转换后的SDR视频是BT709的,需要先对颜色空间进行降级才可以进行处理。这里记录一下处理过程。

首先贴两个地址

[1] ​​​​​​RECOMMENDATION ITU-R BT.2087-0 - Colour conversion from Recommendation ITU-R BT.709 to Recommendation ITU-R BT.2020

[2] REPORT ITU-R BT.2407-0 - Colour gamut conversion from Recommendation ITU-R BT.2020 to Recommendation ITU-R BT.709

这两个都是ITU搞出来的标准纲领性文件。第一个文件讲了怎么把BT709转到2020(包括YUV、RGB的处理办法),第二个讲了怎么把BT2020转换到BT709(但只有RGB信号)。

在文献[2]中,简单粗暴地给出了一个示意图

E'RGB指的是“归一化的非线性RGB值”,而E_RGB指的是“归一化的线性RGB值”。

但在算法中,我拿到的数据是10bit的YUV420数据,所以需要先把10bitYUV420数据转换到E'RGB。怎么转?文献没提。但文献[1]中将如何将709转换到2020时,给了一个图

这里除了 E'RGB和E_RGB之外,还出现了E'YCBCR和D'YCBCR。其中E'YCBCR指的是“归一化的YCBCR值”,而D'YCBCR指的是“量化的YCBCR值”

所以我这里明白了,我在算法输入端所拿到的所谓10bitYUV420数据,实际上就是这个D'YCBCR值。那么接下来,我们结合两篇文献,就可以推导出相应过程了。

Step 1. 将D’YCbCr(2020)转为E’YCbCr(2020)

其实就是如下过程的反过程

 简单推导,得

        E_Y = ((D_Y / 4) - 16) / 219
        E_Cb = ((D_Cb / 4) - 128) / 224
        E_Cr = ((D_Cr / 4) - 128) / 224

Step 2. 将E’YCbCr(2020)转为E’RGB(2020)

文献[1]中给出了反过程

所以这里只要做一个简单的矩阵求逆(这里直接给出了逆)

需要注意的是,下面给出的代码中的E_YCbCr和E_RGB这样的变量,其形状都是height x width x 3的,所以这里讨巧做了一个线性代数的转换,将左乘变成了右乘。下面很多地方都利用了这个方法,后续就不再做解释说明了。

        m_YCbCr2020_to_RGB2020 = np.array([[1.00000000e+00, -7.82308321e-18, 1.47460000e+00],
                                           [1.00000000e+00, -1.64553127e-01, -5.71353127e-01],
                                           [1.00000000e+00, 1.88140000e+00, 2.38961873e-17]])
        E_RGB = np.matmul(E_YCbCr, m_YCbCr2020_to_RGB2020.T)

Step 3. 将E’RGB(2020)转为E RGB(2020)

        E_RGB = np.power(E_RGB, 2)
        # 另一个版本是
        # E_RGB = np.power(E_RGB, 2.4)

Step 4. 将E RGB(2020)转为E RGB(709)

        m_RGB2020_to_RGB709 = np.array([[1.66051121, -0.58771059, -0.07280062],
                                        [-0.12456141,  1.13296051, -0.00839911],
                                        [-0.01816769, -0.1005606,  1.11872828]])
        E_RGB = np.matmul(E_RGB, m_RGB2020_to_RGB709.T)

Step 5. 将E RGB(709)转为E’RGB(709)

        E_RGB = np.power(E_RGB, 1/2)
        # 另一个版本是
        # E_RGB = np.power(E_RGB, 1/2.4)

Step 6.  E’RGB(709)转为D’RGB(709)

【这里是以10bit为例的,如果是8bit,去掉后面的*4即可】

D_RGB = ((E_RGB * 219 + 16) * 4).astype("uint16")

这样转换过后,就没有了色偏问题。

视频服务hdrvivid还原色彩,让所见成“真”(代码片段)

...即所得”的效果。HDRVividSDK提供的HDRVivid视频图像的OETF、Tonemapping、HDR2SDR等能力,助力您快速构建HDRVivid视频的播放、分享特性,帮助您向用户提供HDRVivid视频媒体体验。HDRAbilitySDK提供的屏幕亮度相关能 查看详情

ldr和hdr

一、LDR和HDR的基本概念1.HDR、LDR、动态范围、ToneMapping的基本概念DynamicRange(动态范围)=最高亮度/最低亮度HDR=HighDynamicRangeLDR =LowDynamicRangeToneMapping:将超高的动态范围转换到我们日常显示的屏幕上的低动态... 查看详情

ldr和hdr

一、LDR和HDR的基本概念1.HDR、LDR、动态范围、ToneMapping的基本概念DynamicRange(动态范围)=最高亮度/最低亮度HDR=HighDynamicRangeLDR =LowDynamicRangeToneMapping:将超高的动态范围转换到我们日常显示的屏幕上的低动态... 查看详情

tonemappingcorrection

...f0c;所以就顺着思路说到色调映射的概念。色调映射(Tonemapping)用一句话来总结就是用于在显示设备上面更好的呈现出HDR的图像效果,包括亮度以及色彩的主观感觉上的增强,最直观的影响就是会造成色调和对比... 查看详情

微博hdr视频的落地实践

...为我们日常生活中不可或缺的一部分。从文字、语音再到视频,用户对社交平台中的视频类信息越发依赖,这也促进了视频体验优化的发展。随着HDR的普及,微博用户也希望获得更好的视频体验。本次LiveVideoStackCon2021... 查看详情

微博hdr视频的落地实践

...为我们日常生活中不可或缺的一部分。从文字、语音再到视频,用户对社交平台中的视频类信息越发依赖,这也促进了视频体验优化的发展。随着HDR的普及,微博用户也希望获得更好的视频体验。本次LiveVideoStackCon2021... 查看详情

七牛云转码全面支持hdr,实现智能高效一站式视频服务

...也在不断升级,新的视觉体验下,人们对高质量视频有了新标准:让视频里的夕阳看起来更加艳丽生动,让电影里的彩虹和现实一样的鲜艳......很多因素会影响视频质量的高低,例如码率、帧率、分辨率等等&#... 查看详情

ldr和hdr

一、LDR和HDR的基本概念1.HDR、LDR、动态范围、ToneMapping的基本概念DynamicRange(动态范围)=最高亮度/最低亮度HDR=HighDynamicRangeLDR =LowDynamicRangeToneMapping:将超高的动态范围转换到我们日常显示的屏幕上的低动态... 查看详情

ldr和hdr

一、LDR和HDR的基本概念1.HDR、LDR、动态范围、ToneMapping的基本概念DynamicRange(动态范围)=最高亮度/最低亮度HDR=HighDynamicRangeLDR =LowDynamicRangeToneMapping:将超高的动态范围转换到我们日常显示的屏幕上的低动态... 查看详情

hdr技术

...R图像来合成最终HDR图像,能够更好的反映出真实环境中的视觉效果。传统SDR(标准对比度)最高亮度只有100nit,画面中高于100nit的部分将被失真(丢失),最低调试为0.1nit,画面中低于0.1nit的部分将被丢失&#x... 查看详情

rte2021回顾丨hdr技术产品实践与探索

...磊,在RTE2021实时互联网大会上的演讲。他通过介绍HDR视频标准与生态、关键技术、发展方向三部分,分享了在移动端HDR视频的落地情况以及技术细节。▲图:OPPOHDR研发负责人熊磊HDR这个词随处可见,拍照片时可... 查看详情

摄影之hdr

...的LDR图像来合成最终HDR图像,能够更好的反映出真实环境中的视觉效果。上面是百度百科的解释,其实HDR就是一种把不同曝光的图片中的细节合成的技术。最直观的理解方式请看下图: 查看详情

提取视频中的音频转文字

提取视频中的音频转文字的方法如下:工具/原料:华为p40、Android2.0、录音转文字助手7.1.4。1、首先打开录音转文字助手,就可以看到主页面。2、选择视频转文字,在相册中找到转文字的音频。3、选择好后就点击提取视频。4... 查看详情

探秘hdr:西瓜抖音是如何做到让视频的画质堪比影院大片的?

仅根据下面的两幅画面,你能辨别出,哪个是短视频,哪个是电影画面吗?左右滑动查看更多剧照如果你出现了分辨困难,不必怀疑自己。在技术参数上,右侧这帧来自西瓜视频的图像,在画质上的确... 查看详情

一个文件中的多个并排视频流,无需转码

】一个文件中的多个并排视频流,无需转码【英文标题】:Multipleside-to-sidevideostreamsinonefilewithouttranscoding【发布时间】:2018-11-0214:47:13【问题描述】:我正在研究一种可能性,即存储来自已在h264中编码的少数来源而无需视频转码... 查看详情

tonemappingcorrection

...f0c;所以就顺着思路说到色调映射的概念。色调映射(Tonemapping)用一句话来总结就是用于在显示设备上面更好的呈现出HDR的图像效果,包括亮度以及色彩的主观感觉上的增强,最直观的影响就是会造成色调和对比... 查看详情

tonemappingcorrection

...f0c;所以就顺着思路说到色调映射的概念。色调映射(Tonemapping)用一句话来总结就是用于在显示设备上面更好的呈现出HDR的图像效果,包括亮度以及色彩的主观感觉上的增强,最直观的影响就是会造成色调和对比... 查看详情

tonemappingcorrection

...f0c;所以就顺着思路说到色调映射的概念。色调映射(Tonemapping)用一句话来总结就是用于在显示设备上面更好的呈现出HDR的图像效果,包括亮度以及色彩的主观感觉上的增强,最直观的影响就是会造成色调和对比... 查看详情