模拟色盲的算法?

时间:2012-08-28 23:06:40

标签: algorithm colors color-blindness

网上有很多工具可以拍摄图像并模拟图像对色盲的人的影像。但是,我找不到这些算法的任何描述。

是否有用于模拟色盲的标准算法?我知道有很多类型的色盲(见the Wikipedia page on the subject for more details),但我主要对模拟重铬酸的算法感兴趣。

3 个答案:

答案 0 :(得分:7)

我找到了一个示例以及使用Javascript代码here;该代码还包括对学术论文的一些参考作为评论。我假设一旦你阅读this paper,数学就会有意义。

答案 1 :(得分:0)

看起来你回答的是你链接的维基百科条目。

例如:

  

Protanopia(1%的男性):缺乏长波长敏感性   视网膜锥体,有这种情况的人无法区分   在光谱的绿 - 黄 - 红区域中的颜色之间。他们   在492 nm附近的绿色波长处有一个中性点 - 也就是说,   他们无法区分这种波长的光与白色。

因此,您需要将绿色 - 黄色 - 红色光谱中的任何颜色去饱和为白色。 Image color saturation

其他两种类型的二色性可以类似地处理。

答案 2 :(得分:0)

首先,我们必须了解眼睛的工作原理:

  1. 正常/健康的眼睛具有3种类型的视锥和1种类型的视杆,它们在可见光光谱范围内具有激活功能。

  2. 然后,它们的激活通过某些功能产生信号,传递到您的大脑。粗略地说,该函数以4个通道作为输入,并产生3个通道作为输出(即亮度,黄蓝色和红绿色)。

  3. 一个色盲人会使这两种事物之一有所不同(通常/通常为1.),例如,该人会丢失一种圆锥体,或者该圆锥体的激活方式会有所不同。

最好的办法是:

  1. 将RGB空间中的所有像素转换为频率组合(具有强度)。为此,首先要计算(健康人的)三个视锥细胞每个的激活,然后为一组频率(+强度)找到一个“自然”解,这将导致相同的激活。当然,一种解决方案只是强度具有原始三个RGB频率,但是原始图像不太可能具有该强度。一个自然的解决方案是,例如某个频率(甚至只是一个频率)周围的正态分布。

  2. 然后,(同样针对每个像素)计算色盲人视锥细胞对您的频率组合的激活。

  3. 最后,找到一个RGB值,以使健康人的激活与色盲人的激活相同。

请注意,如果相关色盲类型的激活方式的组合方式也不同,则您可能还希望在上述步骤中执行该操作。 (因此,不是匹配激活,而是使函数的结果与激活匹配)。