色调旋转滤镜背后的确切数学原理是什么

sha*_*unc 8 svg svg-filters

理论上,对于每个可能的颜色更改 css过滤器函数(如grayscaleinvertopacitysaturate),sepia都存在可通过 svg 过滤器实现的等效转换feColorMatrix实际上这里描述了几乎所有此类操作。

例如,棕褐色是以下内容的简写:

<filter id="sepia">
  <feColorMatrix type="matrix"
             values="(0.393 + 0.607 * [1 - amount]) (0.769 - 0.769 * [1 - amount]) (0.189 - 0.189 * [1 - amount]) 0 0
                     (0.349 - 0.349 * [1 - amount]) (0.686 + 0.314 * [1 - amount]) (0.168 - 0.168 * [1 - amount]) 0 0
                     (0.272 - 0.272 * [1 - amount]) (0.534 - 0.534 * [1 - amount]) (0.131 + 0.869 * [1 - amount]) 0 0
                     0 0 0 1 0"/>
</filter> 
Run Code Online (Sandbox Code Playgroud)

虽然hue-rotate稍微复杂一些,但实际的定义是:

在此输入图像描述

这几乎就是 Chromium 中的实现方式。

我的问题是 - 这些系数背后的精确数学是什么 - 为什么选择它们?它们代表一些无理数的近似值还是其他什么?