WEBVTT 00:00:00.840 --> 00:00:05.826 在这个短篇中我们会介绍一种谜题,该谜题将建立于 00:00:05.826 --> 00:00:10.873 我们已经介绍的一些图像操作代码。所以这个谜题是这样的:这里有一幅 00:00:10.873 --> 00:00:15.798 未知图像的图片。图片上的红、绿和蓝色数值 00:00:15.798 --> 00:00:21.027 有些乱。所以我们需要编写代码,改变 00:00:21.027 --> 00:00:26.446 红、绿、蓝色数值,从而展现图片原始的影像,就可以看到它到底是什么了。 00:00:26.446 --> 00:00:31.935 这就是我将举的例子,所谓的“金子谜题” 00:00:32.140 --> 00:00:37.492 我们知道图片里有着某种图像。而这张图片中, 00:00:37.492 --> 00:00:43.375 第一,图片中绿色和蓝色 00:00:43.375 --> 00:00:49.425 被赋予了一个从0到255的随机数值。而且事实上,如果你盯着图片看, 00:00:49.425 --> 00:00:52.706 会发现是一种雪花斑点。你会发现 00:00:52.706 --> 00:00:56.662 一些像素点有着非常高的绿色数值,而一些像素点有着非常高的蓝色数值, 00:00:56.662 --> 00:01:00.426 它们看上去就是绿色或蓝色;而图片中同样散布着一些青绿色的像素; 00:01:00.426 --> 00:01:04.334 它们的绿色和蓝色数值都非常高。这就是 00:01:04.334 --> 00:01:08.242 这张图片一个程度上的混乱。另一个程度是, 00:01:08.242 --> 00:01:12.912 我们希望重现的图像 00:01:12.912 --> 00:01:17.685 是用红色展现的。事实上,它只有红色数值。所以现在看到的绿色和蓝色都是杂讯。 00:01:17.685 --> 00:01:22.643 但这些数值被除以了10,因此它们看上去非常暗。所以我们现在看到的 00:01:22.643 --> 00:01:27.168 模糊图像,是,呃,藏着一张很暗的红色图像。 00:01:27.168 --> 00:01:32.002 这张红色图像被这些绿色和蓝色的随机雪花斑点所覆盖。 00:01:32.002 --> 00:01:37.615 所以我们就看不到原始的图像了。所以我们要编写代码来修复这个问题。 00:01:37.615 --> 00:01:46.022 我们现在来解决这个问题。与往常一样,我将从 NOTE Paragraph 00:01:46.022 --> 00:01:50.590 空白的文字键入区域开始写代码。键入区下方有解答, 00:01:50.590 --> 00:01:55.214 (只需点击)“显示解答”按钮。所以如果你想访问这个页面并自己尝试一下,这样做你就可以看到解答。 00:01:55.214 --> 00:01:59.448 好,下面我想做的第一件事情,是看看如果我什么都不做就运行会怎么样: 00:01:59.448 --> 00:02:03.626 现在这个循环是空白的;所以如果我运行这个程序,我们还是会得到未经改变的谜样图案。 00:02:03.626 --> 00:02:07.749 好,所以我真正要做的第一件事是,我要键入 00:02:07.749 --> 00:02:12.150 “pixel.setGreen(0)” 00:02:12.150 --> 00:02:16.551 我要把绿色数值归零。就是说我要把绿色清除掉 00:02:16.551 --> 00:02:22.111 然后就能看到结果了。唔,好,所以现在图像变得好一些了。现在我们还有 00:02:22.111 --> 00:02:29.371 这些蓝色的雪花斑。我们至少已经把绿色雪花斑给清除掉了。所以现在我同样要清除蓝色雪花斑。 00:02:29.371 --> 00:02:36.020 所以我会用,“pixel.setBlue(0)”,我们来试试。 00:02:37.220 --> 00:02:42.797 好,唔,所以我已经把雪花斑点都清除掉了。但现在的问题是 00:02:42.797 --> 00:02:48.832 这张红色的图片太暗了,所以我们无法看到。所以说这张图 00:02:48.832 --> 00:02:54.562 实际上已经在那里了,但我们看不见。所以我需要按照比例还原(原始的红色数值), 00:02:54.562 --> 00:03:00.215 对吧?图像已经在那里了,我只需让它变亮。所以我要用“pixel.setRed”来把 00:03:00.215 --> 00:03:05.001 “pixel点getRed”放大5、10、或20倍。 00:03:05.001 --> 00:03:09.831 所以我要,在这个例子中,说明里已经说了(图像中的原始数值)被除以 00:03:09.831 --> 00:03:14.544 10倍。所以我要把红色放大10倍。 00:03:14.544 --> 00:03:19.888 唔,好了。所以这就是我们得到的图像。显然, 00:03:19.888 --> 00:03:25.064 这是一张在旧金山一侧看到的金门大桥图像。现在, 00:03:25.064 --> 00:03:30.513 很容易看出这张图像还不太对。这是因为, 00:03:30.513 --> 00:03:35.826 图像数据全部是红色,即使我们已经还原到原始图像,它看上去还是全红的。我的意思是, 00:03:35.826 --> 00:03:40.680 实际上这是一张黑白图片 00:03:40.680 --> 00:03:45.212 而一般黑白图片是以从黑到白的光谱显示的。在这个例子中, 00:03:45.212 --> 00:03:49.915 图片则是以从黑到红的光谱显示的。所以我们现在得到的是正确的图片,但就是 00:03:49.915 --> 00:03:54.619 加了一层红色。在这一小节里我们已经完成了需要做的操作。你知道, 00:03:54.619 --> 00:03:59.380 你可以看出图片原始的影像。在后面的小节中我将说明怎样 00:03:59.380 --> 00:04:04.255 怎样修改现在的结果,使图片看上去是合适的黑白图像。