|
原文标题: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)で表せる色数の再計算
|
|