关于一些视频颜色空间的笔记记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012871784/article/details/82178744

先来说一下,YCbCr。       shader的话就去看看VideoDecode.shader就行了

------------------------------------选自wiki----------------------------------

YCbCr或Y'CbCr有的時候會被寫作:YCBCR或是Y'CBCR,是色彩空間的一種,通常會用于影片中的影像連續處理,或是數字攝影系統中。Y'和Y是不同的,Y就是所謂的流明luminance),表示光的濃度且為非線性,使用伽馬修正(gamma correction)編碼處理。Y'為顏色的亮度luma)成分、而CB和CR則為藍色和紅色的濃度偏移量成份。

Y'CbCr不是一種絕對的色彩空間,是一種針對RGB資訊所做的編碼。真正的顏色顯示是根據實際RGB色盤(colorant)來決定的。因此Y'CbCr所表示的值只有在標準RGB色盤或是ICC數據(ICC profile)有提供的時候才能計算。

YCbCr不是一種絕對色彩空間,是YUV壓縮和偏移的版本。YCbCr的Y與YUV中的Y含义一致,Cb和Cr與UV同样都指色彩,Cb指蓝色色度,Cr指红色色度,在应用上很广泛,JPEG、MPEG、DVD、攝影機數字電視等皆採此一格式。因此一般俗稱的YUV大多是指YCbCr。

------------------------------------选自wiki----------------------------------

YCbCr中,Y就是luminance,明度。C就是Chrominance,色度。Cb就是blue和green的色度。Cr就是red和green的色度。

对于光来说,人眼对光的亮度特别敏感,相比,对光的色彩分量和位置与移动相对来说比较弱。从这里看,也能明白为啥

Y、Cb、Cr这三个中Y单独,而RGB合在了Cb和Cr中,从Cb、Cr中,也可能反推出,人眼对绿色的敏感度要高于红色和蓝色。

4:4:4、4:2:2、4:2:0是YCbCr的采样方式。

YCbCr4:4:4就是无通道压缩的方式。(理论上,与RGB是相同的,也就是说这两个颜色空间的值可以无损相互转化)

YCbCr4:2:2相当于把Cb和Cr的信息摒弃了一半,所以他需要的带宽是4:4:4模式下的2/3的带宽((4+2+2)/(4+4+4))

YCbCr4:2:0就更狠了,同样丢失的信息也更多。

YCbCr与RGB的转换

再来看一下大家熟知的RGB

由于rgb过于熟悉,这里就不在介绍了。

sRGB

上图的是人眼能看到的所有颜色。(题外话:写过去色shader的都知道有一个magic vector3---fixed3(0.22, 0.707, 0.071),从图里可以看出,人眼对绿色部分的敏感度要大于红色区域,最弱的就是蓝色区域,所有去色的时候,对绿色通道保留的最多,蓝色通道保留的最少。这三个分量是怎么算出来的我没有去查,如果让我算的话,我肯定傻傻的用蒙特卡洛去算一下他们的面积比值。)

红色的坐标值定为了(0.64,0.33)

绿色的坐标值定为了(0.3,0.6)

蓝色的坐标值定位了(0.15,0.06)

白色的坐标值对位了(0.3127,0.3290)

---------------wiki------------------

Chromaticity Red Green Blue White point
x 0.6400 0.3000 0.1500 0.3127
y 0.3300 0.6000 0.0600 0.3290
Y 0.2126 0.7152 0.0722 1.0000

---------------wiki------------------

第三个值是伽马γ,就是说sRGB定义了原色强度与实际保存数值直接的非线性变换。

关于伽马校准简单一带,早年的NTSC使用的值是2.2,PAL和SECAM使用的是2.8

现在的伽马校准采用的是分段校准,伽马值用的是1/0.45(2.2222222........)

再简单的说一下CIE颜色系统的色度图

这个色度图给出了人类正常的视觉色域范围。

继续看一下颜色空间YUV

------------------------关于YUV和YCBCr,摘自百度百科------------------------

YUV,是一种颜色编码方法。常使用在各个视频处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。

YUV是编译true-color颜色空间(colorspace)的种类,Y'UV,YUV,YCbCrYPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度浓度(Chrominance、Chroma)。

Y′UV,YUV,YCbCr,YPbPr所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述数字的视频信号,适合视频与图片压缩以及传输,例如MPEG、JPEG。但在现今,YUV通常已经在电脑系统上广泛使用。

Y'代表明亮度(luma;brightness)而U与V存储色度(色讯;chrominance;color)部分;亮度(luminance)记作Y,而Y'的prime符号记作伽玛校正。

--------------------------------------------------------------------------------------------------------------------------------

说的Y‘UV,首先想到的就是跟RGB空间的转换。

据wiki的记录,SDTV With BT.601定义了一下常量

Wr = 0.299,

Wg = 1 - Wr - Wb = 0.587,

Wb = 0.114

Umax = 0.436,

Vmax = 0.615

Y‘UV根据如下公式计算

Y' =  Wr * R + Wg * g + Wb * b = 0.299 * R + 0.587 * G + 0.114 * B

U = Umax * (B  - Y') / (1 - Wb) = 0.436/0.886*(B  - Y') ≈ -0.14713 * R - 0.28886 * G + 0.436 * B

V = Vmax * ( R - Y')/ (1 - Wr) = 0.615/0.701*(R - Y') ≈ 0.615 * R - 0.51499 * G - 0.10001 * B

到此,Y'UV 与RGB这两个空间的转换矩阵就出现了,解决了两个颜色空间的值的相互转换问题,又看到了HDTV with BT.709

在这个规定下。

Wr= 0.2126

Wb= 0.0722

但是计算还是上面的计算,只是矩阵的值变化了一下。原理不变

Example of U-V color plane, Y′ value = 0.5, represented within RGB color gamut

还有HSI HSV等一堆一堆的颜色空间的表示方法。。。感觉好乏力。。。

查阅的部分参考(有一部分忘了留下链接,实在对不起作者,抱歉)

https://www.jianshu.com/p/e67f79f10c65

https://blog.csdn.net/Evankaka/article/details/38176025

https://my.oschina.net/xiaolei123/blog/1786845

https://en.wikipedia.org/wiki/YCbCr

http://welkinchen.pixnet.net/blog/post/5446075-yuv%2C-ypbpr-%26-ycbcr-%E5%B7%AE%E7%95%B0

https://zhuanlan.zhihu.com/p/28745337

猜你喜欢

转载自blog.csdn.net/u012871784/article/details/82178744