这两个圆颜色真的一样吗?

知乎有一个热门问题:这两个球颜色真的一样吗?。显然这是一个错觉。很多人都会去取颜色值验证,这一方法我就跳过了。作为一个码农,逆向思维,我们可以构造这样一个错觉。原问题在流传的过程中,因图片或视频压缩、转码,颜色可能会发生变化;本文直接用相同的颜色构造这一错觉,更能说明问题。

这两个圆的颜色真的一样吗?

作为一个不精通二三十种语言的陈年码农,选择Mathematica来做这个事,应该是比较简洁的。

选取颜色,画一个圆

为了简化,我们直接画圆(圆盘),而不是画球。球体在渲染中有明暗的变化,颜色值并不是恒定的,用单色的圆更能说明问题。

因为错觉在于蓝和绿之间,所以选一个不男不女(不蓝不绿)的颜色c1作为圆的颜色,也就是RGB中的G和B相等。c2和c3作为背景和圆点的颜色。c1, c2, c3的取值使它们在数字上有对称之美。

两个圆的颜色错觉(构造步骤1)

小说明:Mathematica的RGB颜色是归一化的,乘上255对应于通常计算机领域的8位颜色。

加上背景色

加上两种不同的背景色。圆的颜色看起来还一样吗?

两个圆的颜色错觉(构造步骤2)

还行,似乎只有明暗的些许差别。

加上圆点,见证奇迹

对称地加上两种颜色的小圆点。

两个圆的颜色错觉(构造过程结束)

奇迹出现了!一个变蓝了,一个变绿了。

其它尝试,作为对比

如果圆点再小一点,效果其实就没有那么好了。(其实这里可以做一个视频,懒跳了。。)

两个圆的颜色错觉(小圆点)

如果使用同样大小同样多的随机圆点,效果也没有均匀分布的好。

两个圆的颜色错觉(随机圆点)

解释

有一个古老的心理学流派,叫作格式塔心理学,或者完形心理学,就是描述知觉的统合现象的。

人感知到的两个圆的颜色其实是叠加了小圆点的,是合成色,而不是圆的本色,最后的结果自然不同。说简单点,其实就和电视机显示器的RGB点阵差不多的道理,人看到的是RGB的合成颜色,而不是点阵。

精心选取一个介于临界点的颜色,受到小圆点颜色的叠加影响后,很容易在知觉上滑向不同的典型颜色(蓝和绿)。

你可能感兴趣的:(这两个圆颜色真的一样吗?)