陈颂光
全栈工程师,能够独立开发从解释器到网站和桌面/移动端应用的各类软件。
关注我的 GitHub

GIMP图像处理入门

程序员多少听说过GIMP(GNU Image Manipulation Program)的大名,GTK就是Gimp Tool Kit的缩写,知道它是自由软件中仅有强大到能与Photoshop抗衡的图像处理软件。但和Photoshop一样,GIMP的操作方式有时也让初学者摸不着头脑。这里我们将说明GIMP中的主要方面。

概述

GIMP的强项包括:

  • 自由。可以在GPL条款下自由地运行、研究、修改和传播GIMP。
  • 跨平台。可运行在GNU/Linux、Microsoft Windows™、Mac OS X™和许多其它操作系统上,并且有包括中文在内的众多语言翻译。
  • 可编程。通过编写Perl、Python或Scheme脚本脚本可各种图像处理过程,如批量图像渲染和格式转换。
  • 可扩展性。它能通过扩展插件完成各种事情,比如添加对新文件格式的支持和效果滤镜。
  • 默认可用。自带必要的图像处理工具,如:
    • 图像工具包括画笔、铅笔、喷枪、克隆等工具。
    • 变换工具包括旋转、缩放、切变和翻转。
    • 选择工具包括矩形、椭圆、自由、模糊、贝赛尔曲线和智能剪刀。
    • 支持图层和通道。
    • 支持包括 GIF、JPEG、PNG、XPM、TIFF、TGA、MPEG、PS、PDF、PCX、BMP 在内的多种文件格式。
  • 精细的质量控制。
    • 基于平铺的内存管理使足以处理大图像和同时打开许多图像。
    • 对所有涂画工具都使用次像素取样,因而能产生高品质的反锯齿效果。
  • 多级撤消/重做

基本操作

GIMP界面

图像

图像是GIMP处理的单位,每张图像大致对应于一个文件。

导入图像

要处理图像首先得有图像,以下是导入图像的方法:

  • 新建。
    1. 选菜单“文件”中“新建”
    2. 选择宽度和高度
    3. 有需要的话可以在高级选项中选择分辨率、色彩空间、初始填充
    4. “确定”
  • 来自剪贴板
    1. 选菜单“文件”中“创建”中“从剪贴板”
  • 来自屏幕截图
    1. 选菜单“文件”中“创建”中“屏幕截图”
    2. 决定截取的区域
  • 来自文件系统
    1. 选菜单“文件”中“打开”
    2. 选择文件
  • 来自网络
    1. 选菜单“文件”中“打开位置”
    2. 输入URL
    3. “打开”
  • 分块
    1. 选“图像”中“变换”中“分块”可把一张图像沿参考线分割为多张图像。
  • 另外,可能有来自扫描仪、最近打开和一些插件提供的图像生成功能。

编辑图像

对整个图像进行的编辑有:

  • 变换图像。例如竖拍的照片需要旋转后显示方向才正确。
    1. 选择菜单“图像”中“变换”中的“上下翻转”、“左右翻转”、“顺时针旋转90度”、“逆时针旋转90度”、“旋转180度”
  • 缩放图像。例如要制作缩略图。
    1. 选择菜单“图像”中“缩放图像”
    2. 选择新的高度和宽度,必要时也可指定插值方法
    3. “缩放”
  • 改变画布大小。例如要加上相框或剪裁图像。除了可以让画布适配图层或选区外,也可以手动设置:
    1. 选择菜单“图像”中“画布大小”
    2. 设置新的高度和宽度,还有原来画布内容在新画布中位置,同时可决定改变哪些图层大小
  • 自动裁剪。
    • 选择菜单“图像”中“自动裁剪”可以去除外围的背景
      效果
    • 选择菜单“图像”中“积极裁剪”可以去除外围和内部的背景
      效果
  • 改变色彩模式。如果最终需要的是索引或灰度图像,则在编辑过程中使用相同模式可能更合适。
    1. 选择菜单“图像”中“模式”中的一个模式,如RGB、灰度和索引
    2. 对于索引模式会询问生成色板的方法

在误操作或希望比较操作前后时可以使用菜单“编辑”中“撤销”或“重做”功能。如果想撤销或重做多步,则可在菜单“编辑”中开启“撤销历史”。个别绘制操作可以通过“淡出”重新设置对象的不透明度。在希望放弃所有未保存修改则可用“文件”中“恢复”。

导出图像

处理图像后要向人们展示你的作品,有以下方法:

  • 打印。如果希望生成纸质作品可以选择打印:
    1. 选菜单“文件”中“打印”
    2. 有需要的话作页面设置、图像设置和打印预览
    3. “打印”
  • 保存。如果希望可方便地继续修改,可保存为XCF格式:
    1. 选菜单“文件”中“另存为”或者“保存”
    2. 选择要保存到的文件
  • 导出。如果希望以电子格式展示:
    1. 选菜单“文件”中“导出为”或“重写”
    2. 选择要保存到的文件和格式
    3. 有需要的话决定导出选项,例如压缩程度

图层

每张图像由若干个图层叠成。而且可以有不同叠的方法。

新增图层的方法有:

  • 新建图层。见“图层”中“新建图层”,可设置初始填充为前景色、背景色或透明。
  • 复制图层。见“图层”中“复制图层”。
  • 来自选区。见“选择”中“浮动”。
  • 来自文件系统。见“文件”中“作为图层打开”
  • 来自文本。使用文字工具产生的文本框是图层。

有需要的话可以通过“新建图层群组”把图层组织成树状结构。

要选择图层,可以用图层对话框,或者在“图层”中“堆栈”中可以:

  • 选择前一图层
  • 选择后一图层
  • 选择底端图层
  • 选择顶端图层

图层对话框可把图层设为不可见(点击眼睛)以便集中考虑个别图层。

图层可以如下定制:

  • 在“图层”中“堆栈”,可以改变图层的相对顺序:
    • 升高图层
    • 降低图层
    • 升至顶端
    • 降至底端
    • 反转图层顺序
  • 在“图层”中“变换”,可以:
    • 水平翻转
    • 水平翻转
    • 顺时针旋转90°
    • 逆时针旋转90°
    • 旋转180°
    • 任意旋转
    • 位移
  • 在“图层”可以改变图层大小:
    • 设置图层边界大小
    • 图层到图像大小
    • 缩放图层
    • 剪裁到选区
    • 自动剪裁
  • 在“图像”中“对齐可见图层”可对齐可见图层。
  • 对于文字图层,可以:
    • 放弃文字信息转换为普通图层
    • 文字对齐到当前路径,这可以让文字沿曲线排版
  • 在“图层”中“蒙板”(蒙板用于设定图层不同部分的可见性),可以:
    • 增加图层蒙板
    • 应用图层蒙板
    • 删除图层蒙板
    • 显示图层蒙板
    • 编辑图层蒙板
    • 禁用图层蒙板
    • 蒙板到选区
    • 把图层蒙板加到选区
    • 从选区中减去图层蒙板
    • 与选区相交
  • 在“图层”中“透明”,可以:
    • 增加Alpha通道
    • 移除Alpha通道
    • 颜色到Alpha
    • 半平整
    • 阈值
    • Alpha到选区
    • 添加到选区
    • 从选区中减去
    • 与选区相交

去除图层的方法有:

  • 删除图层。见“图层”中“删除图层”。
  • 向下合并。见“图层”中“向下合并”。
  • 固定图层。见“图层”中“固定图层”。
  • 合并可见图层。见“图像”中“合并可见图层”。
  • 平整图像。见“图像”中“平整图像”。

最后指出,叠图层可以选择不同的模式,记$I$下层值,$M$为上层,$E$为合成值(它之后会截断到0到255间):

工具 说明 例子
正常 $E=M$ 效果
融化 通过上层的部分透明区中一些随机洞可看到下层 效果
仅变亮 $E=\max\{I,M\}$ 效果
掩蔽 $E=255-\frac{(255-I)(255-M)}{255}$ 效果
减淡 $E=\frac{256I}{255-M+1}$ 效果
相加 $E=I+M$ 效果
仅变暗 $E=\min\{I,M\}$ 效果
相乘 $E=\frac{IM}{255}$ 效果
加深 $E=255-\frac{256(255-I)}{M+1}$ 效果
覆盖 $E=\frac{I}{255}(I+\frac{2M}{255}(255-I))$ 效果
柔光 $E=\frac{(255-I)M+R_s}{255}I,R_s=255-\frac{(255-I)(255-M)}{255}$ 效果
硬光 $\begin{cases}255-\frac{(255-2(M-128))(255-I)}{256}&M>128\\\frac{2MI}{256}&M\leq128\end{cases}$ 效果
差值 $E=\vert I-M\vert$ 效果
减去 $E=I-M$ 效果
增益提取 $E=I-M+128$ 效果
增益合并 $E=I+M-128$ 效果
相除 $E=\frac{256I}{M+1}$ 效果
色调 色调来自上层而亮度和饱和度来自下层 效果
饱和度 饱和度来自上层而色调和亮度来自下层 效果
颜色 亮度来自下层而色调和饱和度来自上层 效果
明度 亮度来自上层而色调和饱和度来自下层 效果

选区

我们往往只想编辑图像的一部分而让其它部分维持不变,这时就需要选区。GIMP中的选区实际上是图像的一个特殊的通道,因此属于程度可以从0到255,通常表示选区的虚线是一半属于选区的分界线,“快速蒙板模式”(可通过图像左下角按钮开关)下可更准确地显示选区:属于程度越低越红。

标准的选择工具有:

  • 矩形选择。选中这工具后进行拖放会选取从起点到终点直线为(半,如下面首项)对角线的矩形。
    • 开始选择后按下Ctrl会导致起点成为矩形中心
    • 开始选择后按下Shift会导致固定宽高比
  • 椭圆选择。选中这工具后进行拖放会选取从起点到终点直线为(半,如下面首项)对角线的矩形的内接椭圆。
    • 开始选择后按下Ctrl会导致起点成为中心
    • 开始选择后按下Shift会导致固定宽高比
  • 自由选择。选中这工具后按住左键移动鼠标画出选区边界,然后可以点击以把线段增加到边界,最后Enter
    • 开始选择后按下Ctrl会把线段角度限制到每15度。
  • 模糊选择。选中这工具后点击要选择的目标即可选中颜色接近的相连区域。
  • 按颜色选择。选中这工具后点击要选择的目标即可选中颜色接近区域。
  • 智能剪刀。选中这工具后点击目标选区边界上部分点后Enter,就会根据最大梯度算法自动得出边界并决定选区。
  • 前景选择。选中这工具后按住左键移动鼠标把要选择的对象圈起来,然后再按住左键移动鼠标涂画目标对象的内部某些地方,最后Enter

在工具选项对话框中可选择“边缘羽化”(让选区边缘渐进)、边缘平滑(使用边缘更光滑)和一些与工具有关的选项。

在选择之后可以进行调整:

  • 并选区,即选取两个选区之并。方法为按着Shift选取要加入的区域。
  • 交选区,即选取两个选区之交。方法为按着Ctrl+Shift选取要交上的区域。
  • 差选区,即选取两个选区之差。方法为按着Ctrl选择要减去的区域。
  • 移动选区。即平移选区,方法是按着Alt拖动选区,同时按下Shift将移动内容。
  • 羽化选区,即使选区边界模糊。见“选择”中“羽化”。
  • 锐化选区,即使选区边界分明。见“选择”中“锐化”。
  • 增长选区,即使选区变大。见“选择”中“增长”。
  • 收缩选区,即使选区变小。见“选择”中“收缩”。
  • 圆角矩形,即把选区改成圆角矩形。见“选择”中“圆角矩形”。
  • 选择边界,即选择当前选区的边界。见“选择”中“边界”。
  • 扭曲边界,即扭曲当前选区的边界。见“选择”中“形变”。
  • 反转选择,即把属于。见“选择”中“反转”。
  • 取消选择,即什么都不选。见“选择”中“无”。
  • 选择全部,即选取整个图像。见“选择”中“全部”。

“编辑”中“清除”可清除选区中全部内容。

路径

选中路径工具后:

  • 点击即可创建顶点(同时按下Shift可增加连通分支)
  • 拖动线段可弯曲成贝塞尔曲线(同时Shift则两端不尖)。
  • 拖动手柄可以改变贝塞尔曲线在端点的切方向(同时Shift则端点不尖)。
  • 拖动顶点可移动顶点
  • 按着Ctrl接连点击两个顶点可连接它们
  • 按着Ctrl点击线段可在线段中加入一个顶点
  • 按着Ctrl拖动顶点可显示手柄(同时Shift则两个对称)
  • 按着Shift+Ctrl点击线段可删除线段
  • 按着Shift+Ctrl点击顶点可删除顶点
  • 按着Shift+Ctrl点击手柄可隐藏手柄
  • 同时按下Alt可移动连通分支,再同时按下Shift可移动全部连通分支。

路径与选区可以相互转换,见“选择”菜单。文字图层可以转换为路径,见“图层”中“文字到路径”,这可用于生成艺术字体。此外,许多变换工具可直接用于路径。

涂画

GIMP中可以使用以下工具绘画:

  • 油漆桶填充。点击要填充的地方即可填充颜色或图案。
    图案
    • 按下Ctrl会使用背景而非前景颜色填充。
    • 按下Shift会填充整个选区而非只是颜色相近的区域。
  • 混合填充。按住左键移动鼠标,放开后即可用前景和背景颜色渐变填充选区。
    部分内置的渐变
    • 按下Ctrl会限制角度。
  • 铅笔,按住左键移动鼠标即可绘制没有反锯齿的硬笔划,通常只用于小图像。
    • 按下Ctrl会拾取前景颜色。
  • 画笔,介于喷枪与铅笔间。
    • 按下Ctrl会拾取前景颜色。
  • 喷枪,按住左键移动鼠标即可绘制比较模糊的软笔划。
    • 按下Ctrl会拾取前景颜色。
  • 橡皮,按住左键移动鼠标即可移除颜色,没有Alpha通道时则绘制背景色。
    • 按下Ctrl会拾取背景颜色。
    • 按下Alt会恢复颜色。
  • 墨水,按住左键移动鼠标即可绘画纯色的反锯齿笔画。
    • 按下Ctrl会拾取前景颜色。
  • 克隆,先按着Ctrl点击复制源开始位置,然后按住左键移动鼠标即可用复制源替换鼠标位置内容。常用于移除照片中不和谐内容。
  • 透视克隆,先按着Ctrl点击复制源开始位置,然后按住左键移动鼠标即可用复制源混入鼠标位置内容。
  • 复原,先按着Ctrl点击复制源开始位置,然后按住左键移动鼠标即可用企图修复,较大的缺陷可能要多次才能修复。
  • 模糊/锐化,按住左键移动鼠标即可减低或增加对比度。
    • 按下Ctrl会锐化而非模糊。
  • 涂抹,按住左键移动鼠标即可把前面碰到的颜色混合到后面碰到的颜色。
  • 减淡/加深。按住左键移动鼠标即可把颜色减淡或加深。
    • 按下Ctrl会加深而非减淡。

在工具选项对话框中可选择画笔及其大小、宽高比、角度和变化(如可根据压力、速度、方向等等改变颜色、透明度、大小等等),还有不透明度、模式、抖动、和一些与工具有关的选项。另外,涂画时同时按下Shift会导致画出直线段,同时按下Ctrl+Shift会导致画出角度为15度倍数的直线段。

值得一提的是,“编辑”菜单中有勾画选区和勾画路径功能可模拟沿选区边界或路径绘画。

以下列出一些画笔头和它们的效果:

画笔头 画笔头效果

变换

以下例子原始图像如:

原始

工具 说明 例子
对齐 用于将一些图层对齐 效果
移动 选取模式后拖动可移动图层、选区、路径和参考线。 效果
剪裁 拖放后Enter会裁剪到从起点到终点直线为(半,如下面首项)对角线的矩形。开始选择后按下Ctrl会导致起点成为矩形中心;开始选择后按下Shift会导致固定宽高比。 效果
旋转 拖放后即可开始旋转,可以设置轴和角度。按下Ctrl会限制角度。 效果
缩放 拖放后即可开始缩放,可以设置新的高度和宽度。按下Ctrl可维持宽高比。 效果
切变 拖放后即可开始切变(如矩形变成平行四边形),可以设置偏移量。 效果
透视 拖放后即可开始透视(如矩形变成不规则四边形)。 效果
翻转 点击即可翻转。按下Ctrl会在垂直而非水平方向翻转。 效果
笼子变换 先通过点击给出多边形后移动各顶点可形变多边形,最后Enter  

在工具选项对话框中可选择插值、剪裁和一些与工具有关的选项。另外,涂画时同时按下Shift会导致画出直线段,同时按下Ctrl+Shift会导致画出角度为15度倍数的直线段。

颜色

按照图像处理的惯例,我们在大多数例子中用Lena头像作为输入:

Lena头像

自动工具

自动工具可以傻瓜地修正一些常见问题,不妨在用其它工具前先尝试这些工具。

工具 说明 例子
色度均化 调整亮度以求使直方图尽可能平 效果
白平衡 通过拉伸RGB三通道来使更多像素接近纯白 效果
颜色增强 使饱和度范畴更宽 效果
标准化 使最深色处变黑,最浅色处尽可能亮 效果
拉伸对比度 增加对比度 效果
拉伸HSV 增加对比度但保持色度 效果

映射工具

工具 说明 例子
重新整理颜色表 用于重排索引图像的颜色表  
设置颜色表 用于编辑索引图像的颜色表  
奇异映射 用三角函数改变颜色 效果
颜色交换 用于交换两种颜色 效果
渐变映射 用当前渐变为图像重新着色 效果
色板映射 用当前色板为图像重新着色 效果
旋转颜色 用于把一个颜色范围变为另一颜色范围 效果
样本着色 用于给黑白照片着色 效果

分量工具

分量工具让我们可分别处理各通道:

  • 通道合成器。用于混合RGB通道。
  • 合成。用于把多个图层分别作为通道合成出图像。
  • 分解。用于把一个图像分解为一个有多个图层组成的图像,每层表示原来的一个通道。
  • 重新组合。用于把分解图像中修改反映到原来图像上。

信息工具

信息工具让我们查看图像颜色有关的信息:

  • 直方图。可显示通道线性或对数直方图。
    直方图
  • 边界均值。用于把边界均值设为前景色
  • 色系分析。用于统计颜色数量。
    色系分析
  • 平滑色板。创建一个色板,用于火焰滤镜。
    平滑色板

其它

工具 说明 例子
色彩平衡 用于调整特定亮度区域的色阶 效果
色调-饱和度 用于调整亮度色度和饱和度 效果
单色化 用于生成通过颜色玻璃看到的效果 效果
亮度-对比度 用于调整亮度和对比度 效果
阈值 用于生成黑白图像 效果
色阶 可通过调整各通道值的范围来调整曝光 效果
曲线 可通过重新映射(点击可增加控制点,拖动可移动控制点)各通道的值实现多种效果,包括调整颜色、对比、亮度 效果
色调分离 用于减少颜色数量 效果
去色 用于生成灰度效果 效果
反相 把色度和亮度都反转 效果
亮度反转 把亮度反转 效果
颜色到Alpha 用于把某种颜色变为透明 效果
组合滤镜 用于预览应用多种滤镜后结果 效果
噪点 用于修正在PAL或NTSC电视上可能无法正常显示的像素  
最大化RGB 把图像变成只有红绿蓝三种颜色 效果
Retinex 用于修正光照不良的照片 效果

其它工具

  • 颜色拾取工具。选中工具后点击图像可把当前的前景色(同时按下Ctrl则背景色)设为点击处颜色。另外也可以点击工具箱下方的色板设置颜色。
  • 缩放工具。选中工具后点击可放大图像,同时按下Ctrl则缩小。另外也可在图像下方输入缩放比例。
  • 测量工具。选中工具后拖动可测量起终点连线的长度与角度。
    • 按住Shift可测量与上一条线的夹角
    • 按住Ctrl可限制角度
    • 按住Alt点击测量端点将增加垂直参考线
    • 按住Ctrl点击测量端点将增加水平参考线
    • 按住Ctrl+Alt拖动测量线可移动测量
  • GEGL工具。选“工具”中“GEGL操作”后可以在对话框中选择许多操作和选项,但其实多数已经出现在滤镜菜单。
  • 参考线。一些迷信黄金比例之类的人可能需要参考线辅助构图。在“图像”中“参考线”可以:
    • 新增参考线
    • 按百分比新增参考线
    • 按选区新增外接参考线
    • 移除全部参考线
  • 网格。在“图像”中“配置网格”可以设置网格密度,注意网格默认不显示,但可在“查看”中开关。
  • 图像属性。在“图像”中“图像属性”中可查看图像属性如大小、分辨率、色彩。
  • 剪贴板。“编辑”中提供了以下功能
    • 剪切当前图层选区内容
    • 复制当前图层选区内容
    • 复制可见选区内容
    • 粘贴为新图层中浮动选区
    • 粘贴到图层
    • 粘贴为新图像、图层、画笔或图案。
  • 缓冲区。相当于一系列剪贴板。在“编辑”中“缓冲区”子空间提供了同样的“命名剪切”、“命名复制”、“命名复制可见”、“命名粘贴”。
  • 宏。选菜单“滤镜”中的“Python-Fu”或“Script-Fu”中“控制台”可以对GIMP进行编程控制。

定制GIMP

  • 定制窗口。
    • 开关单窗口模式。菜单“窗口”中“单窗口模式”。
    • 打开对话框。菜单“窗口”中“可停靠对话框”中有各种对话框:
      • 图像结构相关的对话框
        • 图层对话框
        • 通道对话框
        • 路径对话框
        • 选区对话框
        • 颜色表对话框
        • 直方图对话框
        • 导航对话框
        • 撤销历史对话框
      • 图像内容相关的对话框
        • 颜色对话框
        • 画笔对话框
        • 图案对话框
        • 渐变对话框
        • 色板对话框
        • 动态绘图对话框
        • 字体对话框
      • 图像管理相关的对话框
        • 缓冲区对话框
        • 图像对话框
        • 文档历史对话框
        • 模板对话框
      • 其它对话框
        • 工具选项对话框
        • 工具预设对话框
        • 设备状态对话框
        • 错误控制台
        • 样本点对话框
        • 指针对话框
    • 隐藏或取消隐藏全部停靠对话框。菜单“窗口”中“隐藏停靠”。
  • 菜单“查看”中可以:
    • 决定是否让屏幕每个像素对应于一个图像像素
    • 决定是否紧贴
    • 开关全屏
    • 配置颜色显示滤镜
    • 决定是否显示选区、图层边界、参考线、网格、采样点
    • 是否吸附到参考线、网格、画布边缘、当前路径
    • 决定衬垫颜色
    • 决定是否显示菜单、标尺、滚动条和状态栏
  • 定制输入设备。菜单“编辑”中“输入设备”。
  • 定制快捷键。菜单“编辑”中“快捷键”。
  • 开关模块。菜单“编辑”中“模块”。
  • 定制长度单位。菜单“编辑”中“单位”。
  • 其它选项。菜单“编辑”中“首选项”。
    • 环境
    • 界面
    • 主题
    • 帮助系统
    • 工具选项
    • 工具箱
    • 默认图像
    • 默认网格
    • 图像窗口
      • 外观
      • 标题和状态栏格式
    • 显示
    • 色彩管理
    • 输入设备
      • 输入管理器
    • 窗口管理
    • 文件夹

这里虽然介绍了GIMP的主要功能,但最大的问题在于结合这些功能实现预期的效果,这要求的更多是艺术感而不是技术。另外,熟练运用快捷键和编写脚本是每个GIMP(以致任何其它软件)熟练用户的重要特征,而我们在这里由于倾向新手而没有强调。有关GIMP的更多信息,请参见文档。最后指出,GIMP主要用于处理位图,处理矢量图的话可以用Inkscape

关键词 图像处理