Inkscape tutorial: 白描像素画
教程 | 白描像素画
在我们使用强大的矢量图形编辑软件之前...
甚至在我们没有640x480的计算机显示器之前...
大家经常在低分辨率显示器前玩一些精心制作的像素视频游戏。
我们把这种因时代而诞生的像素艺术命名为"像素画"。
Inkscape因为有libdepixelize组件支持,所以能够自动矢量化这些"特殊"的像素画位图。您也可以尝试其他类型的位图,但请注意:结果可能并不太好,所以对于非像素画类的位图,最好使用白描位图对话框中的单次扫描或多次扫描来操作。
我们从一个示例图像开始,演示白描像素画的功能。下面的示例中,左侧是一个位图图像(从"Liberated Pixel Cup"中获取),右侧是其白描后的矢量化结果。
libdepixelize使用Kopf-Lischinski算法对像素画图像进行矢量化扫描处理。该算法使用多种计算机科学技术的思想和数学概念来从像素画图像生成良好的矢量效果。需要注意的一个问题是该算法完全忽略了Alpha通道。libdepixelize目前还没有为这一类图像(Alpha通道)提供特别的的扩展,但所有支持alpha通道的像素图像产生的结果都与Kopf-Lischinski识别的图像类似。
上面的图像都是有Alpha通道的,结果都还不错。不过,如果您发现像素画图片的效果不佳,并且您认为原因是alpha通道导致的,那么请与libdepixelize维护者联系(例如,在项目页面上填写bug报告),他应该会很乐意修正算法。如果他不知道哪些图像给出了不好的结果,他也就无法修正算法。
下图是像素画对话框的屏幕截图。您可以点击菜单路径⇒白描位图⇒像素画,或者鼠标右键单击图像并选择白描位图来打开此对话框。
该对话框分为两部分:探测方式和输出。探测方式是针对高级用途的,但是默认值已经很好,您不必担心,因此让我们将其留待以后再说,先来解释"输出"。
Kopf-Lischinski算法的工作原理(从更高角度来看)就像编译器一样,可以把数据转换为几种不同的表示形式。在转换的每一步,算法都有机会探索该表示形式所提供的操作。其中的一些具有正确的视觉表现(例如,重塑后的方块图泰森多边形输出),而有些则没有。在libdepixelize的开发过程中,用户一直要求增加将这些中间步骤导出到libdepixelize的功能,而最初的libdepixelize作者也让用户的要求如愿以偿。
默认输出基本能提供最平滑的结果,通常也正是我们想要的结果。您已经在本教程的第一个示例中看到了默认输出效果。如果您想自己尝试,只需打开白描位图对话框,选择像素画选项卡,然后在Inkscape画布上选中一张像素图片后点击应用按钮。
您可以在下面看到泰森多边形(Voronoi)输出,这是一个"重塑像素图像",其中的小方块(以前是像素)已重塑形状以与周围具有同一特征的其它像素共同排列成矢量图结果。引过程并不会创建任何曲线,图像会全部由直线组成。放大图像后可以观察到这些直线(没有弯线)。以前,即使某些像素是图像中同一颜色区域的一部分,也无法与对角像素共享同一条边。但是现在(由于颜色相似度和探测方式,你可以进行调整以达到更好的结果),可以使对角线两端的两个小方块共享同一条边(以前,对角线两端的两个小方块仅共享一个顶点)。
标准的B-splines输出会为您提供平滑的结果,因为先前的泰森多边形(Voronoi)输出将转换为二次贝塞尔曲线。但是,转换并不是1:1处理,因为有更多的探测方式可以确定当算法在可见颜色之间达到T形结时,哪些曲线应该合并到一条曲线。关于此阶段的启发式方法的操作提示:您无法对其进行调整。
libdepixelize的最后阶段(由于处于实验和不完全状态,目前无法由Inkscape GUI导出)是"优化曲线"以消除B-Spline曲线的阶梯效应。此阶段还会执行边缘检测技术以防止某些特征被平滑掉,并执行三角剖分技术以在优化后固定节点的位置。当libdepixelize结束"实验阶段"正式发布时(希望很快),您应该能够分别禁用所有这些功能。
GUI中的探测方式部分允许您调整libdepixelize所使用的探测方式,以决定如果遇到两个对角线具有相似颜色的2x2像素块时该怎么做。 "我应该如何处理连接关系?"是libdepixelize要做的事情。它尝试将所有探测方式应用于冲突的对角线,并保持获胜者的连接。如果发生平局,则两个连接都会被删除。
如果要分析每种探测方式的效果并使用数字表达,则最好的输出是泰森多边形(Voronoi)输出。您可以更轻松地在泰森多边形输出中看到探测方式的效果,当您对所获得的设置感到满意时,只需将输出类型更改为所需的类型即可。
下面有一个图像,并且B-Splines输出每次尝试都只开启一种探测方式。请注意紫色圆圈圈定的位置,该位置的变化显示了每种探测方式执行的差异:
对于第一次尝试(上图),探测方式我们仅开启"曲线"。这种探测方式试图将较长曲线保持连接在一起。您会注意到,其结果类似于最后一个图像,该图像应用了稀疏像素(sparse pixels)探测方式。一个区别是,它的"强度"处理更加公正,只有在确认保持这些联系非常重要的情况下,它才能为自己的计算赋予更高的权重。这里的提到的"公正"概念是基于对所分析的像素数据库的"人类直觉"。另一个区别是,当连接形成较大色块而不是长曲线时(例如棋盘方格),这种探测方式无法决定如何处理。
对于第二次尝试(中间图像),我们仅开启孤立像素(islands)探测方式。这种探测方式唯一要做的就是尝试保持连接,否则将导致多个有相同权重的像素彼此孤立,就像一座座孤岛一样。这种情况并不像其他探测方式所处理的那样普遍,但是这种探测方式很酷,有助于提供更好的结果。
对于第三次尝试(底部图像),我们仅开启稀疏像素(sparse pixels)探测方式。此探测方式尝试使曲线与前景色保持连接。为了找出什么是前景色,探测方式会分析与冲突曲线相邻的像素窗口。对于这种探测方式,您不仅可以调整其"强度",还可以调整其分析的像素窗口半径。但是请记住,当您增加像素窗口半径时,其权重的最大"强度"也会增加,您可能需要调整其权重的乘数。原始的libdepixelize作者认为这种探测方式过于贪婪,因此倾向于将"0.25"用作其乘数。
即使曲线探测方式和稀疏像素(sparse pixels)探测方式给出了相似的结果,您可能也希望同时启用两者,因为曲线探测方式可能会提供额外的安全性,即轮廓像素的重要曲线不会受到阻碍,并且在某些情况下这只能通过parse pixels探测方式来解决。
提示:您可以通过将乘数值(multiplier/weight)设置为零来禁用所有探测方式。您可以对乘数值使用负数,以使探测方式违背其原则。为什么有人会想用相反的行为来取代那些为提供更好的质量而创造的行为?因为您可以...因为您可能想要一些"艺术性"的结果...不管怎样,您就是可以这样做。
就是这样!对于libdepixelize的此初始版本,您可以使用所有这些选项。但是,如果最初的libdepixelize作者及其创意导师的研究成功,您可能会获得更多选择,从而扩大libdepixelize产生良好结果的图像范围。祝他们好运。
为避免版权问题,此处使用的所有图像均来自"Liberated Pixel Cup"。链接如下:
Translators: 驿窗 — 2022~2024
Header / footer design: Esteban Capella — 2019