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