sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

播放器的色空間

請問一下播放影片時用Adobe RGB(8-bit)輸出至顯示器的效果是否最好? 還是用sRGB輸出好?
設定輸出的色空間
設定輸出的色空間
P.S. Monitor Profile是指顯示器的色空間(輸出的色空間), Default Profile是指影片的色空間(影片沒有標示色空間時)
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: 播放器的色空間

要看显示器的色域,普通窄色域显示器一般都是近似sRGB的,广色域显示器才能比较好地还原Adobe RGB的色彩空间。
然后,还有一个问题是OS的色彩管理系统(CMS)也需要相应的调整,在做好各种色彩校准的前提下,dispcal好像是能配合madVR之类的自动调整输出色域,不过我还没用过不太清楚。
sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

Re: 播放器的色空間

我就是用廣色域的顯示器, 有Factory Calibrated Adobe RGB色域, 現在的問題是Bt.2020和NTSC等也是廣色域的色空間, 要完整表達這些顏色, 用Adobe RGB輸出是其中一個方法, 不清楚有沒有更好的方法.....

用了Adobe RGB輸出後, 以前有一些影片顏色用sRGB表達不到的, 現在終於可以表達出來, 如 AKB48 - さよならクロール MV。 現在在尋找有沒有副作用。
头像
feisty2
帖子: 274
注册时间: 2012-08-05 10:03

Re: 播放器的色空間

8位Adobe RGB可能会精度不足人品 色域越大 精度要求越大 比如色域面积为sRGB 4倍的颜色空间 就要9位才能达到和8位sRGB一样的精度 另外2020的色域比Adobe RGB大 不能通过AdobeRGB显示2020的所有颜色 而得到理论正确的结果 输出的RGB色域应该和显示器完全一致
sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

Re: 播放器的色空間

我做了一些小測試, 8-bit Adobe RGB和sRGB的R和B, 足以應付8-bit YUV。G訊號則兩者同樣有精度不足的情況, 一般情況下Adobe RGB的精度只是比sRGB差約5%, 不是明顯的差別.....因此Adobe RGB令精度下降的理據不能成立

以下是測試結果:
YUV = 8-bit YUV in BT.709
RGB1 = sRGB
RGB2 = Adobe RGB

YUV: = 128, 240, 128
R1 = 142.05130392557763
G1 = 85.713995581226953
B1 = 353.25381529454563
R2 = 128.07472621786590
G2 = 86.351580436974132
B2 = 351.68658995822108

YUV = 128, 239, 128
R1 = 142.05130392557763
G1 = 86.226702757775797
B1 = 351.42201526505130
R2 = 128.16101768858272
G2 = 86.836108848278428
B2 = 349.78019699372294

U相差1, G1相差0.512707176548844, G2相差0.484528411304296, 大約差5.5%

YUV = 128, 16, 128
R1 = 142.05130392557763
G1 = 196.76882929013414
B1 = -119.41522045522095
R2 = 158.66490306161219
G2 = 195.40422459255262
B2 = -109.32952975868774

YUV = 128, 17, 128
R1 = 142.05130392557763
G1 = 196.28577165233239
B1 = -117.42808272254530
R2 = 158.48635720923551
G2 = 194.91560333597610
B2 = -107.33009689592011

U相差1, G1相差0.48305763780175, G2相差0.48862125657652, 這情況Adobe RGB比sRGB還要好

YUV = 128, 128, 240
R1 = 322.10525874657026
G1 = 119.74336490900019
B1 = 142.05130392557763
R2 = 284.64629325930088
G2 = 118.95918553167317
B2 = 139.94761440626800

YUV = 128, 128, 239
R1 = 320.53961689956520
G1 = 119.94379658171306
B1 = 142.05130392557763
R2 = 283.27998702629179
G2 = 119.15371411166562
B2 = 139.95421138497682

V相差1, G1相差0.20043167271287, G2相差0.19452857999245, 大約差3%

YUV = 128, 128, 16
R1 = -85.378041383100680
G1 = 164.10609797664833
B1 = 142.05130392557763
R2 = 59.239152670891684
G2 = 162.60742036627565
B2 = 141.74533659463614

YUV = 128, 128, 17
R1 = -83.651235486482619
G1 = 163.91018618617619
B1 = 142.05130392557763
R2 = 60.829561541756846
G2 = 162.41226423971023
B2 = 141.73587046533200

V相差1, G1相差0.19591179047214, G2相差0.19515612656542, 大約差0.4%

P.S. 計算上的誤差是因為D65的數值不準, 我現在我的數值是x = 0.31271; y = 0.32902, 而不是實際數字, 因此可能少許誤差, 但不太影響結果
头像
feisty2
帖子: 274
注册时间: 2012-08-05 10:03

Re: 播放器的色空間

8位YUV来源数据的精度已经不行了... 我的意思是 每个RGB的色域都是对应的基色在CIE 1931上围成的一个三角形的面积 那么在有限精度下 把三角形每个边等分成精度允许的最小单位长度 (比如8位就分成255小段 16位就分成65535小段) 这时 如果三角形面积 (色域) 变为原来4倍 如果是相似三角形放大 就是每个边都变大2倍 此时 如果还要最小单位长度 (实际精度) 和原来一致 每一小段中间就要再分1次 就是色域变为原来的4倍 精度必须上升1位的意思 Adobe RGB的面积好像没有sRGB的4倍那么大 但是还是比sRGB大 理论上还是比sRGB更耗位深 但是多消耗不到1位 虽然没有相差很多 但是面对颜色很丰富的来源 比如浮点精度的CIE Lab图像 转成8位Adobe RGB 猜测可能还是会有banding产生 另外bt709yuv的rgb数值是怎么计算的 是否严格符合yuv (709) -- RGB (709 primaries, 709 transfer) -- Linear RGB (709 primaries) -- CIE 1931 -- 目标RGB 的步骤
sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

Re: 播放器的色空間

定義上是三角形, 實際上不是平均分佈, 因此你這樣的假切不太合理。
如sRGB的255, 0, 0, 轉成Adobe RGB約是219, 0, 0, 但兩個色空間紅色和白色的位置相同, 這証明了位置與精度不是直接的關係。

我用的算式精度與定義上有少許差別, YUV->RGB 我是用Kr = 0.2126, Kb = 0.0722; 其他數字也是由這兩個數計出來, 因此YUV->RGB->YUV是沒有誤差。
Bt709 RGB -> Linear RGB我是用 0.018, 4.5, 0.099, 0.45這4組數字, 其他數字也是由這4組數計出來, 因此Bt709 RGB -> Linear RGB -> Bt709 RGB也是沒有誤差

P.S. 我其他的算式也是要做到還原時沒有誤差,
fch1993
帖子: 213
注册时间: 2012-06-12 11:56

Re: 播放器的色空間

1.因为BT.601和BT.709都是对应的sRGB空间,所以实际上这些还是用不到adobeRGB部分。

我自己也是adobe RGB的显示器,我目前就是YUV-sRGB-Adobe RGB这样转换输出的。

还有就是8bit也就能应付一下sRGB了,遇到rec. 2020这种,10bit也才勉强够。
sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

Re: 播放器的色空間

fch1993 写了:1.因为BT.601和BT.709都是对应的sRGB空间,所以实际上这些还是用不到adobeRGB部分。

我自己也是adobe RGB的显示器,我目前就是YUV-sRGB-Adobe RGB这样转换输出的。

还有就是8bit也就能应付一下sRGB了,遇到rec. 2020这种,10bit也才勉强够。
你這個說法, 當sRGB是在0.0-1.0之間才能成立, 但YUV->sRGB時, 是會出現>1.0 和<0.0, 因此Bt.709的YUV顏色是比sRGB還要闊, 有部分顏色要用AdobeRGB才能表達。

Bt.2020現在已有民用顯示器可以支持直接輸入, 但最高只支持10-bit. 如CG248-4K
fch1993
帖子: 213
注册时间: 2012-06-12 11:56

Re: 播放器的色空間

sswroom 写了:
fch1993 写了:1.因为BT.601和BT.709都是对应的sRGB空间,所以实际上这些还是用不到adobeRGB部分。

我自己也是adobe RGB的显示器,我目前就是YUV-sRGB-Adobe RGB这样转换输出的。

还有就是8bit也就能应付一下sRGB了,遇到rec. 2020这种,10bit也才勉强够。
你這個說法, 當sRGB是在0.0-1.0之間才能成立, 但YUV->sRGB時, 是會出現>1.0 和<0.0, 因此Bt.709的YUV顏色是比sRGB還要闊, 有部分顏色要用AdobeRGB才能表達。

Bt.2020現在已有民用顯示器可以支持直接輸入, 但最高只支持10-bit. 如CG248-4K
你那个是xvycc,已经超过709的范畴了。709的定义是不会用到类似于0-15这样的数值的。

BT.2020这样的标准定义中才会用到这样的数值表示低于0和高于1的。

回到 “解码 播放 字幕 / Decoder playback and subtitles”