gpt4 book ai didi

image - 哪个矩阵对于将 XYZ 映射到 sRGB 的线性 RGB 是正确的?

转载 作者:行者123 更新时间:2023-12-04 01:06:13 25 4
gpt4 key购买 nike

映射矩阵似乎有 3 个主要变化,它们与小数点后第 3 位或第 4 位不同。哪个将被视为标准矩阵?

  • 布鲁斯·林德布鲁姆 http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
    根据红色、绿色、蓝色和 D65 引用白色 (X, Y, Z) 的 (x, y) 计算
  •   RGB -> XYZ
    +0.4124564 +0.3575761 +0.1804375
    +0.2126729 +0.7151522 +0.0721750
    +0.0193339 +0.1191920 +0.9503041
    XYZ -> RGB (by inverting RGB -> XYZ)
    +3.2404542 -1.5371385 -0.4985314
    -0.9692660 +1.8760108 +0.0415560
    +0.0556434 -0.2040259 +1.0572252
  • W3C https://www.w3.org/Graphics/Color/srgb
    EasyRGB https://easyrgb.com/en/math.php 似乎使用 W3C,但被截断
  •   XYZ -> RGB
    +3.2406255 -1.5372080 -0.4986286
    -0.9689307 +1.8757561 +0.0415175
    +0.0557101 -0.2040211 +1.0569959
  • 维基百科 https://en.wikipedia.org/wiki/SRGB#Specification_of_the_transformation
    声称是sRGB规范
  •   XYZ -> RGB
    +3.24096994 -1.53738318 -0.49861076
    -0.96924364 +1.87596750 +0.04155506
    +0.05563008 -0.20397696 +1.05697151

    最佳答案

    严格来说,这些都不正确,因为它们源自 IEC 61966-2-1:1999 给出的原色和白点,并在一些任意小数位四舍五入。因此,这里有两个真正的选择,要么使用标准给出的矩阵,即四舍五入到小数点后 4 位,要么直接以全机器精度(理想情况下为 double )计算归一化主矩阵及其逆矩阵。
    IEC 61966-2-1:1999

    MATRIX_sRGB_TO_XYZ = np.array([
    [0.4124, 0.3576, 0.1805],
    [0.2126, 0.7152, 0.0722],
    [0.0193, 0.1192, 0.9505],
    ])
    """
    *sRGB* colourspace to *CIE XYZ* tristimulus values matrix.

    MATRIX_sRGB_TO_XYZ : array_like, (3, 3)
    """

    MATRIX_XYZ_TO_sRGB = np.array([
    [3.2406, -1.5372, -0.4986],
    [-0.9689, 1.8758, 0.0415],
    [0.0557, -0.2040, 1.0570],
    ])
    """
    *CIE XYZ* tristimulus values to *sRGB* colourspace matrix.

    MATRIX_XYZ_TO_sRGB : array_like, (3, 3)
    """
    IEC 61966-2-1:1999 使用原色和白点的 ITU-R BT.709 没有指定矩阵,例如,以 double 计算它们:
    >>> import colour
    >>> import numpy as np
    >>> np.set_printoptions(formatter={'float': '{:0.15f}'.format}, suppress=True)
    >>> colour.models.RGB_COLOURSPACE_BT709.matrix_RGB_to_XYZ
    array([[0.412390799265959, 0.357584339383878, 0.180480788401834],
    [0.212639005871510, 0.715168678767756, 0.072192315360734],
    [0.019330818715592, 0.119194779794626, 0.950532152249661]])
    >>> colour.models.RGB_COLOURSPACE_BT709.matrix_XYZ_to_RGB
    array([[3.240969941904523, -1.537383177570094, -0.498610760293003],
    [-0.969243636280880, 1.875967501507721, 0.041555057407176],
    [0.055630079696994, -0.203976958888977, 1.056971514242879]])
    从技术上讲,舍入差异应该被使用 8 位整数表示的任何量化效果吸收,但是当您使用浮点值并且 IEC 61966-2-1:1999 矩阵不能正确往返时,它们会产生后果例子。
    问题在于提供原色/白点和从/到 RGB 到/从 CIE XYZ 的转换矩阵会产生歧义。你选择哪一个?人们会倾向于选择矩阵,因为它们已经被计算过,这很容易通过运行基本的 Google Search 来验证。 .
    对于与其他软件的交换,您可能希望选择已发布的矩阵,但是,对于内部颜色转换工作,派生矩阵是首选,因为如果您执行大量来回转换,则舍入的影响较小。但实际上,您会发现这并不重要。

    关于image - 哪个矩阵对于将 XYZ 映射到 sRGB 的线性 RGB 是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66360637/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com