如何从 HSV 信息中去除偏色

信息处理 过滤器 算法 过滤器设计 Python 软问题
2022-02-07 12:42:52

我有颜色的色调、饱和度和值(HSV 颜色空间)。必须在显示错误的设备上设置颜色。如果我指定白色,它会显示浅洋红色。但是,如果您指定一些绿色,它会显示最好的白色(比如说:灰色)。如何消除这种偏色?实际上:如何在 HSV 数字中创建偏色以补偿错误的显示?

我的方法如下。但它会导致跳过一些洋红色,当我以 0.8 的饱和度(间隔 0 到 1)穿过整个彩虹时:

  • 将洋红色移到色相刻度的开头(向前 60 度),从而移到当前颜色的色相
  • 计算向绿色方向移动的距离。饱和度为 1 表示完全移动到绿色(180 度)。
  • 这是公式:距离 = (180 / 360 - shift_hue) * (1 - 饱和度)
  • 然后将距离添加到偏移的色调(可能导致减法)。
  • 将色调比例向后移动 60 度。

如前所述,这会导致一些洋红色的丑陋跳过,因为饱和度越低,洋红色的差距越大。

你知道更好的算法吗?

1个回答

您的设备的颜色不匹配可以通过简单的色调组件的移动来纠正(当然,除非您绝对确定您的设备就是这种情况)。

一般来说,要纠正设备的响应,您需要以某种方式恢复它已经在参考颜色和观察颜色之间执行的映射,然后查看如何通过某些曲线(单调或非单调)来纠正它。

为此,您将需要一个颜色图表(理想情况下,需要这样的仪器)。

(请注意,最好在系统级别应用此更正,即您的应用程序仍将正常发送一些“颜色需求”,而不进行更正,但该需求将在系统自动显示之前进行一些更正。)

在最基本的层面上,您可以将简单的参考图像发送到您的显示器,然后尝试调整其 R、G、B 设置(如果有的话),以便颜色看起来正确显示(根据您的眼睛)

如果您的系统无法应用此类配置文件,但您仍然必须应用一些颜色校正,您可以尝试将颜色的相对距离与已知目标(或您的情况下的图像)匹配,然后(如果需要)尝试通过移动(反复试验)来纠正绝对颜色。

用一台好的数码相机拍摄颜色图表的均匀照明图像,对其进行颜色校正(以减少用于获取“参考”图像的照明或传感器的任何影响)并将其提供给您的显示器。拍摄显示器的图像(理想情况下在相同的照明条件下),对第一步中的配置文件应用相同的颜色校正(并且出于相同的原因),然后检查颜色图表图像中任意两种颜色之间的相对颜色对应关系并从颜色图表显示图像中恢复两种颜色的映射。(在这个过程中可能有帮助的软件是LPROF