找回密码
 立即注册
查看: 4600|回复: 9

RGB24的1677万7216色中,YUV所能表现的颜色数是?

  • TA的每日心情
    开心
    2021-4-26 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    18

    主题

    122

    回帖

    1

    VC币

    超级版主

    Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

    积分
    45166

    崭露头角

    TC 发表于 2016-1-2 01:35:51 | 显示全部楼层 |阅读模式
    原文标题:1677万7216色の画像をAvisynth 2.6でYV24にしてからRGB24に戻して色を数えてみた[source]
    感觉还是他先前一篇文章的标题好一点,于是就换了一下(依旧辣鸡翻译)。


    在之前的文章中,
      使用程序计算了「RGB24的16777216色中,8bit~10bit的YUV所能表示的颜色数」
        此次,将要继续那篇文章的内容。
    此次将通过
        「将包含有RGB24全部色彩的图像先转换为8bit YUV再转换回RGB」
    这样的处理,来计算处理后的色彩数。

    要使用的工具,原始的图像等如下。
    对在x264帖子中告诉我IrfanView拥有统计图像颜色数的人表示感谢。
     ■使用工具
        ● Avisynth 2.6 Alpha3 (20110525)
        ● AvsPmod 2.2.1
        ● IrfanView 4.32窓の杜
     ■原始图像
        ● 下面列出的网址中的「all16777216rgb.png」
         每个像素的颜色均不相同,
         在4096x4096显示了RGB24全部的16777216种颜色。
            All 16,777,216 RGB colours - David Naylor: Blog

    虽然一直以来都是使用「Avisynth 2.5.8」的,
    但是此次的调查中需要使用YUV4:4:4的转换处理,
    所以到现在才开始使用「Avisynth 2.6 Alpha3」
    在Avisynth 2.6,实现在2.5.8没有的YV24(YUV4:4:4)等
    新的色彩空间支持。
    (从SEt氏处得知有「Avisynth 2.6 MT」这样的版本存在,
    总之,此次先使用「Avisynth 2.6 Alpha3」。)

    调查方法如下。
       1.建立如下avs文件。
       读入图像,先转换为YV24(YUV4:4:4)再转换回RGB。
          总之,要在不受周围像素影响的前提下转换为YUV
            ImageSource("all16777216rgb.png",end=9,fps=1)
            ConvertToYV24(matrix="Rec601")
            ConvertToRGB(matrix="Rec601")
       2.使用AvsPmod打开avs文件,显示预览画面
           右键预览画面→「Save image as...」
                 保存为PNG文件。
       3.使用IrfanView打开2保存的PNG文件,通过
           菜单→Image→Information→「Number of unique colors」
           来获知图像中所包含的色彩数。
       4.变更1中avs的ConvertTo~来分别计算
         「Rec601」「PC.601」「Rec709」「PC.709」各个色域所能表现的颜色

    如此操作获得的结果,转换后的图像的颜色数如下:

      此次的调查结果(将RGB24转换YV24再转换回RGB的图像的颜色数)
         8bit-Rec601: 2667378 (与先前调查的差值: -288558)
         8bit-PC.601: 3975919 (与先前调查的差值: -286441)
         8bit-Rec709: 2760365 (与先前调查的差值: -286059)
         8bit-PC.709: 4114580 (与先前调查的差值: -285646)
      参考:先前文章中的调查结构(以能把YUV所有值均能取到为前提计算所得颜色数)
         8bit-Rec601: 2955936
         8bit-PC.601: 4262360
         8bit-Rec709: 3046424
         8bit-PC.709: 4400226

    与先前的文章中的调查结果相比,每个都少了大约28万色。

    在先前的文章中,以
       「YUV能取到YUV范围内的所有值」
    为前提计算。也就是说YUV的值
       压缩 Range的情况: Y=16~235、U,V=16~240
       Full Range的情况: Y=0~255、U,V=0~255
    的范围内所能取到的,全部的组合计算所得
    但是,在Chikuzen氏的文章中也介绍了
        YUVとRGBの比較(DTVかくし味)
    YUV所能取到的范围在某些方向比RGB更广
    也就是说存在
        「原本与RGB的转换中不被使用,RGB范围外的YUV组合
    这样的情况。
    先前的文章中,将这样的RGB范围外的YUV知组合也包含进计算过程,
    强行将它们与RGB值相匹配。
    于是,就产生了并不是很切合事实的结果・・・。orz

    但是,在此次的调查中使用
      1.首先,从原始的RGB图像使用ConvertToYV24()求得YUV值。
      2.再使用YUV→RGB转换、仅使用RGB在1中转换的来YUV値进行转换。
    这样的方法。
    所以,以
        「不使用RGB范围以外的YUV之组合
    为前提进行变换处理。
    也许有其他的原因,我想这里应该能够解释出现28万色误差的原因了。
    (这一部分本人的考量或许过于单纯,希望知道详情的人吐槽我・・・)
    因为这是是从原本RGB的数据转换得的YUV,所以「YUV所能表现的颜色」
    此次的调查结果应该是足以置信的。
    所以,粗略地总结的话
      「8bit YUV所能表现的色彩数为270万~400万色上下。

    9bit-depth与10bit-depth由于此次调查的方法无法实现、
    在先前文章中程序依照如下
       RGB24→YUV→RGB24
    流程计算应该就差不多了・・・。


    ★2012/3/13追加:
      对先前文章的程序进行修正再计算
        → YUV(8bit~10bit)で表せる色数の再計算

    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2016-6-27 03:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    107

    回帖

    2

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    15339
    wzwenyuyu 发表于 2016-1-2 15:09:22 | 显示全部楼层
    印象中雯姐有做过这样的测试,然后NMM找了一下,我果然没记错_(:3」∠)_
    https://www.nmm-hd.org/newbbs/viewtopic.php?f=5&t=707
    雯姐的测试结果:

    结论:
    1.将8bit RGB转换为8bit YCbCr后,损失最小的方式是444采样、PC Range,这点无论从数据上还是截图中都能明显看出来。
    2.将8bit RGB用Rounding转换为任意bit的YCbCr的方法中,10bit是可以实现无损转换的最小bit depth。
    3.将8bit RGB用Truncate转换为任意bit的YCbCr的方法中,11bit是可以实现无损转换的最小bit depth。
    4.不知道为什么,Truncate转换成的10bit比9bit色彩数量还要少,测试多次均为这个结果,不知道是哪里出了问题还是本来就是这样。
    5.从截图里看到,使用无Dither的方式转换为8bit 422或8bit 420后,色彩过渡区域不但会出现banding,还会出现条纹状pattern,使用任意一种Dither方式后均能明显改善这种情况。在边缘处420与422会产生较明显的模糊,422只在Horizontal上产生,420则是在Horizontal和Vertical上均产生。
    回复 支持 0 反对 1

    使用道具 举报

    该用户从未签到

    29

    主题

    520

    回帖

    1016万

    VC币

    超级版主

    Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

    积分
    10303037

    论坛管理组

    LittlePox 发表于 2016-1-2 18:26:56 | 显示全部楼层
    你们俩转来的东西怕是自己都看不懂吧:

    1. 8bit 视频放到8bit RGB显示器上,最多也就400W种不同颜色,而分母是1678W。这说明显示器能发挥的细腻度不到24%。(跟vcb-s之前科普文26%数据大致相同,差别主要是转换时候用的工具精度)

    2. YUV420P10编码,也就是最常见的10bit编码,能发挥的细腻度高达97%。

    点评

    TC
    睡不着,翻译着玩  发表于 2016-1-2 23:41

    评分

    参与人数 1活跃度 +200 收起 理由
    vcdilltxzh + 200 然而LP早已看透了一切……

    查看全部评分

    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    无聊
    2016-7-26 19:53
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2

    主题

    33

    回帖

    10

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    7508
    南条爱乃 发表于 2016-1-2 23:45:08 | 显示全部楼层

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-20 08:50
  • 签到天数: 815 天

    [LV.10]以坛为家III

    5

    主题

    37

    回帖

    896

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    233497
    hbhslsr 发表于 2019-2-14 23:41:12 | 显示全部楼层
    LittlePox 发表于 2016-1-2 18:26
    你们俩转来的东西怕是自己都看不懂吧:

    1. 8bit 视频放到8bit RGB显示器上,最多也就400W种不同颜色,而分 ...

    看LP之前写的科普文,一般的圆盘都是用4:2:0采样,这样的话YUV420 8bit编码的视频,最多也就能表现256*128*84≈210万色?
    LP这里说的最多400w色是针对YUV422的视频而言的?


    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-4-12 12:54
  • 签到天数: 809 天

    [LV.10]以坛为家III

    5

    主题

    227

    回帖

    -1

    VC币

    荣誉会员

    Rank: 14Rank: 14Rank: 14Rank: 14

    积分
    132538
    laichiaheng 发表于 2019-2-15 21:28:42 | 显示全部楼层
    說到這個,AMD GPU 明明是給電腦用的預設卻是 YUV444,真的很莫名其妙,電腦用的就應該是 Full Range RGB 啊!
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    无聊
    2024-2-19 00:35
  • 签到天数: 1939 天

    [LV.Master]伴坛终老

    3

    主题

    73

    回帖

    13

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    412879
    EdveR 发表于 2019-2-15 23:07:15 | 显示全部楼层
    laichiaheng 发表于 2019-2-15 21:28
    說到這個,AMD GPU 明明是給電腦用的預設卻是 YUV444,真的很莫名其妙,電腦用的就應該是 Full Range RGB  ...

    應該是HDMI的問題。因爲HDMI一開始是針對TV的,NVIDIA的顯卡在用HDMI連接PC顯示器時會把PC顯示器識別爲HDTV,輸出動態範圍“有限”,不過新版的驅動已經默認改爲“完全”了。AMD的顯卡則是YCbCr 4:4:4。PC顯示器建議使用DisplayPort。詳情可見此文:Correcting HDMI Colour on Nvidia and AMD GPUs
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-4-12 12:54
  • 签到天数: 809 天

    [LV.10]以坛为家III

    5

    主题

    227

    回帖

    -1

    VC币

    荣誉会员

    Rank: 14Rank: 14Rank: 14Rank: 14

    积分
    132538
    laichiaheng 发表于 2019-2-18 00:27:34 | 显示全部楼层
    EdveR 发表于 2019-2-15 23:07
    應該是HDMI的問題。因爲HDMI一開始是針對TV的,NVIDIA的顯卡在用HDMI連接PC顯示器時會把PC顯示器識別爲HD ...

    問題就在於我的顯示器沒有 Display Port,只有 HDMI 和 D-SUB
    EW277HDR


    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2019-1-14 11:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    6

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    344
    斧乃木余接 发表于 2019-2-18 03:31:34 | 显示全部楼层
    这就是大佬们的世界吗.jpg
    回复 支持 0 反对 1

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表