为什么两个完全相邻的矩形会在它们之间创建黑色或白色线条,好像它们重叠或不完全相邻?

平面设计 颜色 形状
2022-01-22 23:36:12

我有一个平面设计(嗯,应该是),但是形状之间的这些黑白线太烦人了……[无中风]看看:

问题

看到两个重叠矩形之间的这些线了吗?我该如何解决?(我用 Photoshop 创建了这个,但是使用 Paint.net 和 Adob​​e Illustrator 也有同样的问题)是不是颜色有问题?还是我看的太多了?:P

4个回答

正如 Elmo Allén 正确指出的那样,这既不是视觉错觉,也不是图形编辑器中的错误,而是由您使用的显示器技术引起的效果。

具体来说,在典型的现代TFT-LCD电脑屏幕上,每个像素实际上是由三个独立的并排排列的子像素组成,分别是彩色 reg、绿色和蓝色:

TFT 屏幕上的像素

这些子像素中的每一个都只能产生一种原色的光,但是,由于它们非常靠近,所以当你看它们时,它们的颜色会混合在一起,产生纯色的错觉。

对于白色(或灰色)像素,所有子像素都被同等地照亮。通过调整不同子像素相对于彼此的强度,可以产生不同的颜色。在极端情况下,对于纯红色、绿色或蓝色像素,只有产生该颜色的子像素才会打开。因此,您的红-绿-红条纹将在亚像素级别呈现如下:

TFT 屏幕上的红绿红条纹

在这里,您可以开始看到发生了什么:通常每个亮的像素之间有两个暗子像素的间隙,但在颜色之间的边界处,间隙要么是三个子像素(创建暗带),要么只有一个(创建一个点亮一个)。

当然,当附近子像素的颜色混合在一起时效果会更明显,就像你看屏幕时通常发生的那样:

TFT 屏幕上的红绿红条纹,模糊

在这里,我只应用了适量的模糊,模拟您通过放大镜看屏幕时可能看到的内容。(试试看!)左侧边界处的暗带在这里很明显;右侧边界处的亮带显示不清晰,但如果图像进一步模糊,它会变得更加明显。

当然,您不必相信这些模拟图像。相反,让我附上几张我用笔记本电脑屏幕拍的特写照片,用便宜的数码相机显示你问题中的图像:

显示红色/绿色边界的笔记本电脑屏幕照片
显示绿色/红色边界的笔记本电脑屏幕照片

与模拟图像一样,暗线非常明显;亮线不那么明显,可能是因为在亮线之间还有一个暗子像素,所以没有这么清晰的单一强度峰值。

你能做些什么来解决这个问题?

原则上,这种效果是您的显示器可以自动补偿的,例如通过检测此类有问题的过渡并让颜色稍微相互渗透以软化过渡。然而,这会增加更多的复杂性和成本,这就是大多数显示器制造商不打扰的原因。

但是,您可以通过在这种高度对比的色域之间添加中间颜色的窄条纹(例如,黄色,用于红色和绿色),自己实现相同的结果。该条纹的颜色应与周围颜色的平均亮度大致匹配,并考虑显示伽马

很难准确地制作每个人在这里看到的内容,因为每个人都有自己的显示器来查看图像。在我的显示器上,如果我眯着眼睛,我可以看到左侧红色矩形和绿色中间矩形之间有一条非常细的黑线。相比之下,在右边的红色和中间,我看到一条很细的白线。基本上,我理解原始海报意味着他们看到了这一点(夸张):

问题描述:相邻矩形之间有一条黑线或白线,夸张。

正如问题评论中所建议的,这些不是Mach band 。马赫带不是在不同镀铬颜色之间产生的,而是在不同发光颜色之间(例如,在两种灰色阴影之间)。在红色矩形的右侧创建了一个非常微弱的马赫带,因为在我的显示器(以及所有 sRGB 显示器好吧)。(即使原始图像的颜色不是纯红色或纯绿色,它们感知到的亮度差异也大致相同。)基本上,马赫带显示如下(再次,高度夸张):

马赫带的插图,夸张。

但是马赫带不能产生白色或黑色的细线。它们只会在大范围内观察到的亮度产生轻微差异。而且马赫带总是对称的:红到绿与绿到红相同。但这是不对称的:其他边界为黑色,其他边界为白色。

相反,我们在这里看到的视觉伪影是因为LCD 子像素排列最常见的排列是从左到右的红-绿-蓝。所以在每个全红色像素之间有一个关闭的绿色子像素和一个关闭的蓝色子像素。相反,在全红色像素和全绿色像素之间,存在三个关闭的子像素:绿色、蓝色和红色。这会在红色和绿色之间产生一条细黑线的效果。如下图所示:

红色与绿色相遇的亚像素表示。

现在在绿色矩形的另一边,首先有一个点亮的绿色子像素,关闭的蓝色子像素,然后是一个红色的子像素。现在在点亮的绿色和红色子像素之间只有一个黑色子像素。这会在绿色和红色边界之间产生一条非常细的亮线效果。如下所示:

绿色与红色相遇的子像素表示。

要查看显示器上的亚像素,您可能需要一个放大镜。诺曼人的视力无法聚焦在如此近的距离上,您会看到单独的像素。但是,它可以很好地发现细微的亮度差异。

现在,为了证明这个理论是正确的,你可以在左边的红色矩形和绿色矩形之间添加一条 1 px 宽的 RGB 128-255-0 线,看看黑线是否淡出,因为这会在之前添加一些绿色子像素光差距。您也可以尝试在绿色和右红色矩形之间设置一个 1 px 宽的 RGB 85-85-0,使子像素变暗一点。不幸的是,这在实际设计中并不能使用,因为首先它依赖于红绿蓝亚像素排列,同时使颜色边界有点模糊。

此外,可能会发生屏幕锐化算法。基本上,显示器锐化使所有颜色边缘更加突出,在边缘较亮的一侧添加白色,在较暗的一侧变暗为黑色。这很像马赫带效应,但更窄且通常更突出。这可以通过调整显示器的清晰度设置(希望是可能的)并查看效果是否降低来发现。

这是颜色组合在一起时的本质,人眼倾向于简化以澄清事物..以及我们对颜色的感知引起的视错觉。

这种现象被称为“马赫带错觉”,任何两种颜色不同的值都会出现。不是色调也不是饱和度。我附上的图表显示,同样的错觉也出现在灰色中。与中间较暗的灰色相比,较浅的灰色会更亮,中间灰色在右侧深灰色的边缘旁边显得更亮。等等。

在此处输入图像描述

如果它对您很重要,那么您有两种选择。

  1. 选择具有相同黑色比例的两种颜色,这将确保减少错觉
  2. 您可以通过在两种颜色之间添加一条灰色细线来“愚弄眼睛”,该线具有这些颜色中两种灰色的平均灰色。见下文结果。您可能会认识到顶部条带在错觉中不如底部条带。

顶部的条带在错觉中较少

这是带有灰色细线的放大版本。

我不能肯定,但如果你戴着眼镜,那就是问题所在。您很可能会看到色差,其中红色和绿色正在分离。

眼镜越厚,效果就越明显。试着转动你的头,观察色块的移动——当你向眼镜边缘移动时,你的眼镜会变厚,从而导致更大的分离。