问题标签 [chromaticity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
colors - 为什么 1931 CIE xyY 色度图中的颜色是白色的?
当我们查看 1931 CIE 色度图时,它表示在 xyY 空间的 xy 平面内,它在亮度点处呈现白色(或接近白色),例如此处用E突出显示的 D65 点。
但是为什么会这样呢?D65 的点应该表示为x = 0.33, y = 0.33
。给定公式Y = 1 - x - y
,这不是意味着 Y 是 0.34 吗?
sRGB 相关或 xyY 取决于我找到0.33,0.33,0.34
的每个转换器158.4182, 155.5676, 176.8565
。这是浅棕色,而不是在 1931 年的每个色度图中看到的近白色。
似乎我需要缩放 Y 以获得每个通道的正确亮度值。
使用Y = 1 - x - y
公式,我的图表看起来像这样,一个无声的图表:
我不明白什么?
编辑
设置 Y = 1,图表如下所示,效果更好。
编辑
现在看起来像下面这样。
ios - 我无法让 vImage(加速框架)将 420Yp8_Cb8_Cr8(平面)转换为 ARGB8888
我正在尝试将 Planar YpCbCr 转换为 RGBA,但失败并出现错误 kvImageRoiLargerThanInputBuffer。我尝试了两种不同的方法。这是一些代码片段。注意“thumbnail_buffers + 1”和“thumbnail_buffers + 2”的宽度和高度是“thumbnail_buffers + 0”的一半,因为我正在处理 4:2:0 并且具有 (1/2)*(1/2) 一样多的色度每个样本作为亮度样本。这静默失败(即使我要求解释(kvImagePrintDiagnosticsToConsole)。
所以我再次尝试使用 vImageConvert_AnyToAny:
我得到了同样的错误,但这次我将以下消息打印到控制台。
但这对我来说没有任何意义。当我有 4:2:0 数据时,我的 Cb 高度怎么可能是 Yp 高度的一半(与我的 dest RGB 高度相同)?(宽度也是如此?)我到底做错了什么?我还将进行其他转换(4:4:4、4:2:2 等),因此我们将不胜感激任何对这些 API 的澄清。此外,我的站点应该用于这些转换吗?上面我使用了 kCVImageBufferChromaLocation_Center。那是对的吗?
一些新信息: 自从发布此信息后,我看到了一个明显的错误,但修复它并没有帮助。请注意,在上面的 vImageConvert_AnyToAny 案例中,我只使用图像宽度而不是 4*width 来初始化目标缓冲区,以便为 RGBA 腾出空间。应该是这个问题吧?没有。
进一步注意,在 vImageConvert_* 案例中,我根本没有初始化目标缓冲区。也解决了这个问题,但没有帮助。
到目前为止,我已经尝试了六种不同的转换方式,从 (vImageConvert_* | vImageConvert_AnyToAny) 中选择一种,从 (kvImage420Yp8_Cb8_Cr8 | kvImage420Yp8_CbCr8 | kvImage444CrYpCb8) 中选择一种,每次都输入适当数量的输入缓冲区——仔细检查缓冲区是否考虑在内每个平面每个像素的样本数。每次我得到:
这对我来说毫无意义。如果我的亮度平面是 100 宽,我的 RGBA 缓冲区应该是 400 宽。请从 YCC 到 RGBA 的任何指导或工作代码将不胜感激。