这个现象叫做Shadow blister effect[1](经评论区提示,中文叫做黑滴效应)
直接照搬这篇论文对于这种现象的描述吧
“This phenomenon may be easily observed with illumination by the Sun. For example, consider sun-light entering a room through a window when the Sun is relatively low in the sky. If a person stands in the middle of the room and moves his or her head until the shadow of the head on the wall opposite the window almost touches the edge of the shadow of the window frame, the shadow of the person’s head appears to bulge toward the shadow of the window frame. A similar bulging can be observed outdoors if a person stands a few meters from a tree trunk or the edge of a wall on a sunny day and moves his or her head until the shadow of the head almost touches the shadow of the tree trunk or wall on the ground. The size of the shadow bulge depends, among other things, on the distance between the tree or the wall and the observer’s head and on the distance between the observer’s head and the location on the ground where the shadows lie. Thus some experimentation with these distances is necessary in order to produce a visually apparent shadow blister.”
(这种东西懒得翻译了,无情baidu机翻)
这种现象在太阳的照射下很容易观察到。例如,当太阳在天空中相对较低时,考虑太阳光通过窗户进入房间。如果一个人站在房间的中间,移动他或她的头,直到窗户对面的墙上的阴影几乎触到窗框的阴影边缘,那人的头部的阴影就会向窗框的阴影凸出。在阳光明媚的日子,如果一个人站在离树干或墙壁边缘几米远的地方,移动头部,直到头部的阴影几乎碰到地面上树干或墙壁的阴影,就可以观察到类似的鼓包。阴影凸出的大小取决于树或墙与观察者头部之间的距离,以及观察者头部与地面上阴影所在位置之间的距离。因此,有必要对这些距离进行一些实验,以便产生视觉上明显的阴影水泡。
其实这个的原理从线性光学就能解释。其核心是,对于日常生活中的光源并非是点或者平行束光源,而是线光源甚至更复杂的模型。这种条件,会产生半影,进一步导致了题主所问的现象。
其中 和 是两个物体,其横向距离为 ,纵向重叠距离为 。成像平面在距离 的距离 处。
最终的结果
下面稍微简单的解释这个现象。
1.半影-影子边界处的光晕
正如前文所述,这个现象必须对非点光源才会出现(其实在实际情况下,严格的点光源并不存在)。下面就假设一个线光源(下图黄色所示)。
我们首先观察极限情况,对于光源的两个端点,分别考虑其在影平面成的像。
可以看出,对于不同位置的光,其形成的影的区域也是不一致的。对于影子重叠的区域,说明光源的任意一点都照射不到,即我们日常视觉看到的影子,这个被称为本影。
而在影子的的非重迭区域,其仅有部分光源无法照射到,这意味着,虽然他会形成视觉上的阴影,但是其亮度要大于本影。
上述是考虑一个点光源的,对于实际的光强是个积分过程。下面搞个仿真。
对于该模型成的像如下图所示,可以明显看出两侧的半影。
两个物体的影子并不是相互吸引,而是各自潜在的半影进行了融合。其实至此问题已经结束了:真实的影子比眼睛看到的本影是大一圈的,虽然本影还有一定距离,但是半影已经相接触并融合并形成接近本影的亮度,这就造成了影子被吸引的视觉效果。
2.人眼Gamma感知-加大融合的视觉效果
首先玩个游戏,肉眼去观察下面的两张图,哪个图的亮度分布更加均衡。或者更加通俗的来讲,你觉得哪个图中,黑白的分界线,更靠近图的中轴线。
虽然每个人的人眼对于亮度的感知都有所差别,但是对于大多数人而言,第二张图都明显更加均衡。在我们的经验认知中,假设全白为1,全黑为0,那么0.5处就应该是感知的分解处。但是事实真的如此吗?我们在两张图中分别拉一条灰度曲线来看看。
可以看出,对于图(b)中轴线的位置,其实是远小于0.5的。为什么会带来这种效应?是因为人的眼睛在感知上存在一个 值。也就是实际的亮度是 ,但是人眼感知到的亮度为 。一般 是取2.2左右。举个例子吧,假如纯黑是0,纯白是1。对于0.5的值,由于其反射率的原因,看上去只有0.2。此时就需要对其灰度进行一个gamma矫正,0.2^(1/2.2)≈0.5,让他看起来就是0.5。正是由于这种视觉上偏向黑色,从而导致了半影的融合会格外明显(明明只是从1降低到了0.5,但是在你看来以及是从1降低到0.2)。
其次,人眼对于黑色区域的变化更加敏感(正如人对半影的融合非常敏感),而对白色区域的变化感知并不那么明显。比如说,你在黑夜里点一根蜡烛,他会很显眼,那么你对着太阳点一根蜡烛呢?蜡烛的亮度是不变的,变得的基础亮度,当基础亮度越高,你对亮度的区分能力越弱。还是做个游戏,下面两个图中分别有个点,对你来说是黑底白点更明显还是白底黑点更明显?
不过对于这种测试,其实在电脑和手机上并不明显。因为我们平时电脑的亮度是有上限的,比起来太阳光还是弱了点。而人眼感知的非线性更多的体现在高亮度区,所以不明显。不信我们再做个游戏。
上面两个图哪个差异更大?很明显是左图。欸刚才不是说人眼对于低亮度区域更加敏感吗?其实对于我们显示屏能显示出的亮度,这两个图明显也都在低亮度。注意人眼的灵敏度,和我们前文提到的人眼的gamma还是有一定区别的。这里由于低亮度,起到主要作用的还是gamma,因为1/0.95在失真下是1/0.8933,而0/0.05是0/0.0014。所以在视觉上,左图的差异明显大于右图。
我平时研究中更多遇到的是硬件gamma失真...而且要通过标定甚至生成查找表尽量避免这个gamma带来的影响。所以,人眼gamma这一块言多必失,有些以及忘了是从哪儿看过来的了,我又在这儿说了一堆,如果有不对的欢迎评论区指正。
说个题外话...可能琢磨过家用投影仪的兄弟可能会注意到,投影仪的一个参数就是 值。但是这个 和人眼的又不太一样。因为对于电子元器件本身也是非线性的,其电压和电流之间也存在非线性区域。这也就意味着,投影仪投射出去的亮度,并不一定是原图的亮度。所以需要 ,来矫正一下。不过恰巧的是两个的效应正好是相反的。这个矫正就完全根据个人的感觉来了,如果仅仅把电气失真校正掉,投影出的图像会更接近我们看到的世界。如果考虑人眼的gamma,那么对于亮部的细节会有更好的展示。
其他答主引用的李老师的答案也写的很通俗,可以去看看这个。
关于gamma感知收到下面答主的启发,不过没有详细写gamma失真的效应,我来补一下