使用 GIMP 移除红眼
如今,低成本数码相机和扫描仪随处可见,越来越多的 Linux 用户在编辑数码图像时开始使用流行的开源 GNU 图像处理程序 (GIMP)。本文介绍了一种简单的技术,用于使用 GIMP 消除随意闪光照片中可怕的“红眼”。
首先,简单介绍一下红眼的背景知识——红眼的成因以及您可以或不能做些什么来避免它。您可以在图 1 中看到一个很好的红眼示例。小女孩的红眼睛不是熬夜阅读 LJ 的结果;而是数码相机普通闪光灯造成的。重要的是要注意,红眼仅在特定情况下才会发生:相机在距离拍摄对象一定范围内,拍摄对象朝向相机,并且闪光灯靠近镜头的拍摄角度。问题是由闪光灯的强烈定向光线从眼睛后部的视网膜反射回来,直接进入相机镜头造成的。颜色是红色的,因为光线穿过了眼睛中的毛细血管。有关更详细的解释,请参阅“How Stuff Works”系列提供的解释 (www.howstuffworks.com/question51.htm)。
如果您因光线昏暗而必须使用闪光灯拍照,您可以在拍摄时采取以下几种措施来减少或消除红眼,从而避免以后编辑图像。
将闪光灯轴线移动得更偏离拍摄角度,从而改变反射角度(例如,使用闪光灯支架或遥控触发器)。
反射闪光(例如,从白色天花板反射)。
靠近或远离拍摄对象。
虽然所有这些方法都能有效地减少或消除红眼效应,但不幸的是,对于随意拍摄者来说,这些都不是可行的选择。首先,大多数消费级相机上的闪光灯并非设计为允许反射闪光,并且固定得非常靠近镜头,因为相机的设计目标是紧凑。此外,由于内置闪光灯单元功率较低、摄影师位置的限制、镜头变焦限制或其他问题,更改距离并不总是一个可行的选项。
最近几年销售的大多数相机都具有“红眼消除”闪光模式。为什么不直接使用它呢?红眼闪光模式在大多数情况下通过在打开快门并进行最终全功率闪光之前,以一个或多个低功率设置重复闪光来工作。预闪会导致拍摄对象的瞳孔收缩,从而为反射光提供狭窄的出口通道,从而“减少”红眼。不幸的是,它通常也会导致拍摄对象因眼睛适应了黑暗环境,对强光的突然侵入做出反应而做出鬼脸。因此,在许多使用红眼消除模式闪光灯拍摄的照片中,拍摄对象看起来像“惊弓之鸟”,闭上了眼睛或眯起了眼睛。因此,如果您想要拍摄一张像样的随意闪光照片,在许多情况下似乎无法避免红眼。这就是 GIMP 发挥作用的地方。
我描述的技术允许您尽可能多地保留瞳孔不同区域的所有重要 色调(亮度与暗度阴影)。此外,它还保留了 眼神光(角膜在瞳孔上的光线反射,给人以拍摄对象充满活力和生机的印象)。
GIMP 中的大多数菜单都通过在图像窗口中单击鼠标最右边的按钮来访问。在以下描述中,右键单击缩写为 RC。如果我描述需要调用的 GIMP 操作,我会提到一系列菜单或键盘快捷键(在括号中)。例如,打开图像 (RC-->文件-->打开),表示在图像窗口中右键单击,然后选择文件,然后从该菜单中选择打开。如果键盘快捷键更有意义,我将列出要按下的组合键。例如,复制图像 (Ctrl-C) 表示按住 Control 键并按 C 键。
以下是该技术。启动 GIMP 并加载您的红眼图像 (RC-->文件-->打开),如图 1 所示。加载图像后,放大眼睛(按 + 几次并根据需要滚动),以便您可以很好地放大查看红色瞳孔,如图 2 所示。
接下来,我们要仅选择构成拍摄对象眼睛瞳孔的像素。有很多方法可以做到这一点,但我发现一种效果相当好的方法是模糊选择工具,也称为“魔棒”。模糊选择工具的工作原理是选择颜色/色调的连续区域。我们在这里指的是实际像素值差异不超过一定阈值的区域(这就是“模糊”部分的由来;我们可以控制阈值)。
模糊选择工具在图像对比度可以在所需选择区域和图像其余部分(在本例中为瞳孔和虹膜)之间最大化的区域中效果最佳。RGB 模式(大多数彩色图像的正常模式)中的所有图像均由三个通道组成:红色、绿色和蓝色,每个通道都包含整个图像的像素值。如果您单独检查这些通道,您通常会发现绿色通道对于模糊选择瞳孔具有最高的对比度。
调出“图层”对话框 (Ctrl-L) 并单击“通道”选项卡。然后取消选择红色和蓝色通道。“图层”对话框应如图 3 所示,仅突出显示绿色通道。我们尚未关闭这两个通道的可见性,因此图像窗口看起来不会有任何不同。但是,通过仅选择绿色通道,我们的模糊选择仅检查绿色通道像素值,以决定要选择哪些相邻像素。
现在双击 GIMP 工具箱窗口中的模糊选择(魔棒)工具,以查看工具选项。您需要尝试“阈值”设置,但通常您需要将其从默认值增加。尝试我在此处使用的值,如图 4 所示。您还应选中“羽化”选项,并给予少量羽化,如图所示。

图 4. 增加阈值
现在单击图像中一个瞳孔的红色部分。您应该看到它使用“行进的蚂蚁”轮廓选择了大部分瞳孔。如果未选择,请清除选择 (Shift-Ctrl-A),稍微增加“阈值”值,然后重试。相反,如果选择了瞳孔外部的区域,请清除选择,降低“阈值”,然后重试。另一种可能性是使用“扩大选区” (RC-->选择-->扩大) 和“缩小选区” (RC-->选择-->缩小) 对话框,以稍微放大或缩小选区(如果它看起来基本正确,但您在任一方向上都偏移了几个像素)。
一旦您在一个瞳孔上获得了不错的选择,请按住 Shift 键并单击另一个瞳孔的红色部分(在选择期间按住 Shift 键会添加到当前选择)。此时,您应该同时选择了两个瞳孔,如图 5 所示。
高级 GIMP 用户提示:如果您了解快速蒙版,则可以在此处修复不完美的选区。单击快速蒙版按钮,使用小而模糊的画笔应用一些适当的笔触,然后返回到选择模式。
现在返回“图层”对话框,选择红色通道并取消选择绿色通道。一旦您验证仅选择了红色通道,请对选区进行去饱和处理 (RC-->图像-->颜色-->去饱和)。
现在是评估结果的时候了。按 Ctrl-T 切换选区的可见性;瞳孔周围的“行进的蚂蚁”应消失,以便您可以更好地查看。重要的是要意识到选区仍然处于活动状态,只是不可见。如果您忘记将其重新打开,您很容易忘记画布上有一个选区,这可能会使进一步的编辑相当令人困惑。
当您对结果感到满意时,再次打开选区可见性 (Ctrl-T),取消选择所有内容 (Ctrl-Shift-A) 并缩小 (-) 以在未缩放的视图中查看您的作品并进行进一步编辑。如果您对结果不满意,请再次打开选区可见性 (Ctrl-T) 并撤消 (Ctrl-Z) 返回到您可以更改选区或使用其他方法纠正问题的点。
我必须提到此技术的一个变体,我认为它可以提供稍微更好的结果。它要求您在 GIMP 版本中激活了通道混合器插件。
通道混合器是一个出色的插件,用于将颜色选区或整张照片转换为黑白照片,因为它比去饱和或 RGB-->灰度转换让您对过程有更多的控制。通道混合器不是我的库存 Red Hat 基础 GIMP 1.2.3 的一部分,但我在 Gimp 插件注册表 (registry.gimp.org) 中找到了它。只需编译它并将其放入您主目录中的 .gimp-1.2/plug-ins 文件夹中即可。
在此变体中,您执行我上面提到的所有操作,但 代替 最终的红色通道去饱和步骤,您(重新)选择 所有 通道并调出通道混合器 (RC-->滤镜-->颜色-->通道混合器)。通道混合器允许您以不同的百分比混合 RGB 值。选中“单色”框,并显着降低红色通道,并增强绿色通道。我使用红色 10%、绿色 60% 和蓝色 30% 的设置,如图 6 所示。您可能需要进行实验,以查看哪种设置可以为您的照片拍摄对象提供最逼真的瞳孔,但这只是一个好的起点。

图 6. 自定义通道混合器 RGB 值
当您对混合器设置感到满意时,单击“确定”。如果您不确定自己是否喜欢该结果并想尝试其他混合,请撤消 (Ctrl-Z),重新打开选区可见性 (Ctrl-T) 并再次运行相同的滤镜 (Shift-Alt-F)。您可以在图 7 中看到运行通道混合器的结果:瞳孔看起来不错且深色,边缘周围的色调变化柔和,并且每只眼睛都有好看的眼神光。与以前一样,一旦您对结果感到满意,再次打开选区可见性 (Ctrl-T),取消选择所有内容 (Ctrl-Shift-A) 并缩小 (-) 以在未缩放的视图中查看您的作品。图 8 显示了使用通道混合器变体的最终结果。
此技术乍一看可能有点复杂,但一旦您掌握了窍门,只需几分钟即可完成。最重要的是,效果非常好,尤其是在高分辨率照片喷墨打印机上打印时。将此技术添加到您的 GIMP 技巧包中,您将永远不必担心红眼会毁坏您的随意闪光照片。
电子邮件:jeschke@mano.uhh.hawaii.edu
Eric Jeschke (eric@redskiesatnight.com) 拥有印第安纳大学计算机科学博士学位,曾担任软件工程师、大学教授和自由顾问。他与妻子、孩子和一只超重的猫住在夏威夷。Eric 喜欢他的家人、户外探险、摄影和运行 Linux。