【发布时间】:2018-11-20 17:17:59
【问题描述】:
我正在编写用于确定 JPEG 图像色彩空间的代码。我找到了两个可以帮助我实现这一点的参考资料。一个在oracle.com上,另一个是来自ijg.com的C源代码,“负责原始JPEG标准的参考实现”。
但是它们确实不同。例如。在 IJG 中,当没有 Adobe 标记且有 4 个通道时,假定为 CMYK,但在 oracle 中为 YCCA。此外,IJG 的实现并不关注二次采样,而对于 4 通道二次采样,它是 oracle 规范中的 YCCK,等等。
ColorSpace 类也有很多缺失,当我实现 oracle 的逻辑时,我需要指定 3 个额外的颜色空间,如 YCCK、YCCA、RGBA。
还有一点是我发现JPEG不支持alpha通道透明度here的信息,为什么oracle会在JPEG元数据规范的上下文中谈论YCCA和RGBA?
结果当用 IJG 的逻辑检查图像时,它告诉我它是 CMYK(在 ubuntu 上用 ImageMagick 检查图像,它还说它是 CMYK),用 oracle 的逻辑它是 YCCA。相信谁?为什么 oracle 不依赖原始的 JPEG 规范?或者还有什么我不知道的?
【问题讨论】:
-
您可能想查看Exif 的specification(可交换图像文件格式)。如果您可以阅读 Perl,那么规范实用程序是 Phil Harvey 的 ExifTool。
-
好的,但它仍然没有回答为什么它们不同(oracle 和 ijg)
-
ExifTool 被广泛认为是黄金标准,我提供的参考是中世纪后数码相机生成的 JPEG 文件格式的实际官方定义。
-
来自 JPEG 规范:“与应用程序相关的信息,例如色彩空间,不在本规范的范围内。” - 注意:标准是在 sRGB 之前指定的,在视频色彩空间变化期间(从 Rec.601 到 Rec.709)。
-
2012 版 (ISO/IEC 10918-5:2012) 指定 YCC Rec601(或仅 Y)作为基础,并且只有 1 或 3 个通道(可互换)。但建议使用 ICC 配置文件。所以我认为或者有一个ICC指定了4个通道的含义,或者程序应该只是猜测。而且由于 4 通道 JPEG 不那么频繁,似乎没人关心
标签: image jpeg color-space