当前位置: 代码迷 >> 综合 >> 像素图的去像素化(Depixeling Pixel Art)
  详细解决方案

像素图的去像素化(Depixeling Pixel Art)

热度:51   发布时间:2023-12-12 07:56:52.0

from: http://blog.csdn.net/lonelyrains/article/details/7530572

 (原文链接,请点击这里)

作者: Johannes Kopf  (微软研究院)、Dani Lischinski(希伯来大学)

摘要

      我们提出了一种新颖的算法,从像素图导出一张光滑、与分辨率无关的矢量图,可以任意放大而不会失真。我们的算法完全保留原始输入像素图的缩放特征信息,并且通过分段光滑的轮廓曲线,生成平滑变化的阴影,并清晰地分割这些特征信息为的不同区域类型。在原图中,像素分部呈方形像素块,斜对角相邻像素块只靠一个像素点与本像素块相连。这导致微弱的特征信息经过常规的放大之后,基本看不见;并且斜对角像素块是否应该相连变得无从分辨。我们算法的关键是处理这些斜对角像素块的关系。我们可以重塑这些像素单元,使原斜对角应该相连的像素单元仍以边相邻。这样即使放大,仍保留斜对角像素块的连接关系信息。我们减少了像素的走样,并且通过拟合图片轮廓的样条曲线、优化样条曲线的控制点,改善了光滑度。


关键词 像素图 质量优化 矢量化


1 导论

        像素图是一种数字图形的表现形式,描述精确到像素水平。这种图片被实际广泛应用于1990年代中期以前所有的电脑和电子游戏。另外,较老的桌面环境里的图标、小显示屏设备例如手机,都应用这类图片。由于那时的硬件条件限制,美工们被强迫用只有很少颜色分类的画板作图,并且要机械地手工设定每个像素的位置,而不是从更高分辨率作品自动缩放。因此,经典的像素图经常被冠以原始的老化的,意指在现代计算机图形中早已消失。但当年电子游戏盛行的黄金年代,像素图的杰作比比皆是。许多还成为了一整代人的文化符号,例如“星际入侵“、三色的”超级玛丽小精灵“。幸亏有各种各样的模拟器,这些经典的电子游戏继续提供人们欢乐,不需要依赖于早就消失的硬件而直接在电脑上运行。

        在这篇论文里,我们面临一个非常有趣的挑战:是否可以从一个年代久远的电子游戏或者模拟器的一帧里取出一个子画面,并将它矢量化?事实上,每个像素手工布局使得每个像素都承载最丰富的意义。这提供了足够的信息,使我们可以推导出相应的矢量图用于显著放大而不走样。当然,像素图的量化本质确有呈现出一定程度的美感,但是我们相信经过我们的方法处理得到的矢量图仍然能保有一些原图的魅力(见图1)。

              最近邻处理的结果(原图:40 X 16 像素)                                                                   本文算法的结果

图1:原始的采样放大的结果不够好;但是我们的算法从原图导出一张光滑、与分辨率无关的矢量图,可用于高分辨率显示设备。(原图版权属于Nintendo有限公司)

        之前的矢量化技术是为了自然景观图片并且基于片段和边缘检测滤波器,不适合于解决像素图的微型特征信息。这些方法是典型的像素点聚类并将分区边界转换成光滑曲线。然而,在像素图中,每一个像素都包含重要的意义。结果,之前的矢量化算法应用于像素图时,会导致丢失细节信息(见图2)。

                              PhotoZoom4(普通的图像填充采样放大)    hq4x(特定的像素图放大)                  Adobe Live Trace(矢量化)

图2:用如上所述的各种方法得到的结果。对比图一中我们得到的结果。

        在过去的十年,提出了很多特定的像素图放大方法,我们在下一节会提到。这些技术经常可以处理得不错。但是,因为它们的局部性,结果仍有锯齿。并且它们没有解决斜对角像素块的是否相邻的关系处理。还有,所有这些方法的放大因子固定为2倍、3倍或者4倍。

        这篇论文里,我们介绍一种新颖的处理方法,适合于像素图的特征信息里单个像素的放大。我们首先解决斜对角像素块的是否相邻的关系处理,然后拟合图片轮廓的样条曲线、优化样条曲线的控制点,实现最大程度光滑和去锯齿。图片的矢量结果可以被渲染在任何类型分辨率的显示设备上。

        我们成功地将我们的算法应用在从过时的电子游戏和桌面图标中导出的海量像素图片处理中,也用于Super Nintendo模拟器的帧处理。我们广泛对比各种像素图放大方法,从矢量化到普通的图像填充采样放大和特定的像素图放大方法。另外,本论文的这些例子对照的图片都附在论文的补充材料里。


2 前期工作

        本论文的前期工作可以被划分为三部分。在图2和图9,还有补充材料,我们在每一部分里用我们的算法对比一种有代表意义的相关算法。


常规的图像填充采样放大

        ”经典“的图像填充采样放大,应用线性滤波器,或导出于分析插值理论、或导出于信号处理理论。使用滤波器的实例,比如“最近邻,Bicubic和Lancosz [ Wolberg 1990 ]。这些滤波器并不对原始数据做任何假定,唯一的条件就是带宽限制。结果,图片经这种处理之后,突变亮点和明显的边界都变得模糊。

        最近十年,许多复杂的算法问世,并对原始输入图片做了强假定,比如,假定讨论自然图片统计[Fattal 2007]或者自相似性[Glasneret al.2009]。这些方法都超出了本文的论点。然而,在多数情形,这些(自然的)图片并不包含颜色量化的微型像素图片。因此,这些方法在这些图形输入处理上往往表现很差。


像素图增强技术

        最近几年,很多特定的像素图放大算法面世[Wikipedia 2011]。大多数产生于虚拟社区,没有在科学杂志上发表;然而,开源实现却随处可见。所有这些算法是基于像素和固定的整型放大因子的。

        第一个这类为我们所知的算法是EPX,由Eric Johnston在1992年移植LucasArts游戏到早期的Macintosh电脑上,这种电脑的分辨率大概是原平台的两倍[Wikipedia 2011]。这种算法用一种简单的方法放大图片的分辨率:每一个像素被初始替换成2 X 2的同种颜色的像素块;然后,如果原图左上相邻的像素的基本颜色一样,那么在新的2 X 2的像素块的左上的像素替换成原图左上的像素,新像素块的其他几个点以此类推。

        这种算法足够简单,可以应用于实时系统并且常常表现不错。但是,边缘方向被量化为仅仅12种不同的方向可能导致产生锯齿效果。另一个限制是这个算法的严格的局部性,使解决斜对角像素的相邻关系变得困难。这两个限制在图9(右下)中可以看出。

        这之后的几种算法都是基于相同的想法,但是用更复杂的逻辑来决定 2 X 2 像素块的颜色。最有名的是 Egle(Dirk Stevens著),2xSaI [Liauw Kie Fa 2001] 和 Scale2x [Mazzonleini 2001],都是通过考察更多的邻近点或者运用拓展色。几个轻量级的不同实现被命以不同的名字,例如 SuperEgle和Super2xSaI。这些同族算法的遗传性限制是它们仅仅允许放大一倍。更大的放大就是重复执行多次。可是,这种策略会随着放大因子的增大,显著降低图片质量,因为这些方法假定非锯齿输入,导致锯齿输出。

        这种类型的算法里,最新最复杂的解决方案是hqx族[Stepin 2003]。这个算法一次检测3 X 3的像素块,并且比较中间像素和它的8个近邻。每一个近邻被分类为颜色相似或者不相似,就会产生256中不同的组合。然后为每一种组合查表产生一个实际的插值模式。这种方法可以做出各种各样的效果,比如明显边界等。这种方法结果的质量确实很高。但是,由于严格的局部性,这个算法仍不能解决某些连接关系模型,并仍有可能产生锯齿。查表仅用于2倍、3倍和4倍放大因子处理。


图片矢量化

        从图片自动导出矢量化图片的著作数不胜数。这些方法和我们的方法目的类似。然而,大多数默认的意图是处理更大的自然图片,而不是像素图。他们的核心观点是,矢量化方法依赖于分段和边界检测算法,聚类像素到更大的分区,从而拟合矢量曲线。这些聚类工具并不能在像素图上表现得很好。由于像素图的特征信息非常微弱,所有的边界都是阶跃的,没有连续渐变可依。因此,这些算法在像素聚类分区时,极有可能丢失像素图的这些微小的特征信息。

        这些算法的另一个挑战是处理8方向链接像素;许多像素图仅通过像素块的角点呈现连接关系。常规的图形矢量化工具不能很好的处理这种情形,极有可能打断这种连接关系特征信息。下面,我们仅提及一些有代表性的矢量处理方法。

        Selinger[2003]描述了一种算法 称作”Potrace“,用于跟踪黑白图片并用微小的图片呈现结果。可是,这种方法,不能处理彩色图片。彩色图片必须首先背量化,并解构成部分到不同的黑白通道,然后分别跟踪。这导致结果图形的边界互相渗透。

图3:本文描述算法一览。(a)输入图片(16 X 16 像素)。(b)初始化带斜边界的相似图。蓝色线条在阴影区,所以可以被安全移除。而红色线条,移除将导致结果变化(c)斜边界的标定(d)在标定的相似图基础上,重塑像素块以反映联系关系(e)样条拟合可视边界(f)用样条优化拟合来减少锯齿的最终结果图(原图版权属于Nintendo有限公司)

        Lecot and  L?evy[2006] 提出一种系统(”ARDECO“)用于矢量化光栅图。他们的算法用一组矢量基和一次或者二次渐近来逼近最好的效果。这种分解给予一种分片算法,而这种分片算法不可能在处理像素图上取得满意的效果。

        Lai et al.[2009]提出了一种从光栅图自动导出渐进网格的方法。这种方法也依赖于分片算法,同样不能处理好像素图。

        Orzan et al.[2008]介绍了图片划分的扩散曲线,扩散该曲线两边的颜色。他们还给出一种自动生成这种扩散曲线描述的算法。然而,他们的公式,依赖于Canny边缘检测。这些滤波器并不能在像素图处理取得很好的效果。最可能的原因是这些图形的尺寸很小,对应边缘检测器只能做有限的支持。Xia et al.[2009]描述了一种技术,对光栅图形进行像素级别的三角划分。然而,它仍旧依赖于Canny边缘检测。

        各种各样的商业图形工具,例如Adobe Live Trace[Adobe公司 2010] 和 Vector Magic[Vector Magic公司 2010],用于光栅图性的自动矢量化。原始算法的确切理论并没有公开,但是,他们用于像素图时都表现得不好。这一点可以参照本文的对照和补充材料。


3 算法

        我们的目的是转换像素图为与分辨率无关的矢量图,通过分段光滑的轮廓曲线,生成光滑且适应变化的阴影,并清晰地分割这些特征信息为的不同区域类型。虽然这也是一般图片的矢量化算法的目标,但是像素图独一无二的特点给我们带来了非凡的挑战:

          1.每个像素都有意义。例如,一个单独的像素,颜色与周围的像素非常不同,是一个典型的必须保留的特征信息(例如,一个人物角色的眼睛)

          2.像素宽度的8方向连接直线和曲线,例如图3-a中,幽灵的黑色轮廓。这些像素看起来是联系在一起的,但放大之后看起来不是。

          3.本地化模糊配置:例如,当考虑一个两种不同颜色的2 X 2 检测板模型,无法清晰地表明哪两个斜对角应该被联系起来,构成特征曲线的部分(参考图3-a幽灵的嘴和耳朵)这个问题已经被研究过,在二值图片中被分为前景和背景。简单的解决方法已被提出[Kong 和 Rosenfeld 1996]。问题是如何处理多彩色的更复杂的情形。

          4.像素图的锯齿对比原图的比例,很难区分需要进行连续处理的特征信息和人工描点的不需要连续处理的部分。例如,在图3-a里,如何知道嘴部要保持波动,而幽灵的轮廓应该平滑?


3.1 综述

          本文的矢量描述的主要基础是二次B样条曲线,用以定义分区之间分段光滑的轮廓。一旦曲线计算好,一张图片就可以用标准的工具[Nehab and hoppe 2008;Jeschke et al.2009]进行渲染。因此,我们的主要计算任务是决定坐标和这些轮廓的精确地理位置。类比其他矢量化算法,归根结底,就是要检测边界并曲线拟合。然而,因上述原因,这个过程非常复杂。

          由于像素图的小尺寸和极有限的调色板,标定边界非常简单:任意两个相邻的像素,却有足够不同的颜色,应该被轮廓线区分开。然而,问题是连接这些边缘片段为一体,同时处理好8方向连接关系和是否连接关系的界定。

          考虑一个矩形栅格图形,长w+1,宽h+1,表示一个w X h的图片。每个像素对应一个栅格单元。水平和垂直临近栅格与当前栅格共享一条边,而斜对角临近栅格与当前栅格共享一个顶点。当图形放大后,斜对角临近栅格看起来与当前栅格是不相连的,而共享一条边的临近栅格仍然相连。因此,我们处理方法的第一步是修改原始方形像素单元,使垂直方向原来只共享一个顶点的相邻像素共享一条边。这个处理过程详细描述在3.2节。我们采用一些谨慎设计的启发方法,来介绍如何界定斜对角像素是否连接。

          重塑图形之后,我们通过对比相邻像素的显著不同,确认出可见边界。我们指定这些边是可见的,因为它们组成我们最终矢量描述的可见轮廓;相比较而言,剩下的边将被保留在光滑的阴影区。为了产生光滑的轮廓曲线,我们用二次B样条曲线拟合可见边界,这部分在3.3节描述。然而,由于曲线控制点的位置由低分辨率的像素格高度量化,处理结果仍然有锯齿。我们因此优化曲线形状以减少锯齿效果,但是保留有意有高弯曲特征信息的轮廓曲线部分,这部分在3.4节描述。

 (a)稀疏像素阵模型的启发规则            (b)像素孤岛模型启发规则

图4:在相似图中解决对角边界问题的启发方法:曲线:这里没有显示,见图3-b。稀疏像素阵:红色部分比绿色部分更稀疏。这种启发方法保持红色栅格边缘联系。像素孤岛:这种情形的启发规则是保持边缘联系,因为否则一个单一的像素岛就会被创建。

        最终,我们通过径向基函数,进行色彩插值渲染。这是一步边界敏感的处理,每个像素的影响不会传播到轮廓边界的另一边。


3.2 重塑像素单元

        第一步的目标是重塑像素单元,使拥有相似颜色的相邻像素共享边界。为了判断哪些像素共享边界,我们创建了一个相似图形,每个像素一个图形结点。最初,每个节点联系到所有它的8个相邻点。然后,我们移除所有相邻但颜色不相似的结点共享的边。依据在hqx算法[Stepin 2003]中应用的标准,我们比较相邻结点的YUV通道值,并分别依据YUV的差别大于48/255,7/255,6/255而认为它们不相似。

        图3-b显示相似图形用这种处理得到的结果。这个图包含很多对角联系。我们的目的是消除所有这些交叉边得到类似图3-c的正规化图形。进一步处理生成的正规化图形,就可以得到我们期望看到的邻近像素单元共享边的属性,见图3-d。

        需要区分两种情形:

          1.如果2X2的像素块是全部连接在一起的,它就是连续阴影区域的一部分。这种情况下,两条斜对角线可以被安全的擦除,不会影响最终结果。这些连线就是类似图3-b的蓝色部分。

          2.如果2X2的像素块仅仅包含斜对角线,没有水平和垂直方向的连线,那么移除任意一条都会影响最终结果。这种情况下我们必须小心擦除选择哪些连线。这些连线就是类似图3-b的红色部分。

        不可能仅从2X2的像素块的视角决定擦除哪些连线。仅从图3-b的2X2的像素块的红色部分无法分辨是亮或暗的像素块仍然保持连接。不过,可以通过检测更远一点的临近像素块。显而易见暗的像素块需要保留连线以构成一个更长的线性特征,而亮像素块是背景的一部分。

        决定保留哪些连线和Gestalt法则有关,并且必须有意模拟当时人们手工描点表现的特征信息。这是一个非常艰难的任务,但是,我们归纳了三个简单的启发规则有效地解决众多关于连接问题的情形。这些情形可以从本文的补充材料找到。我们为每一种启发规则分配一个权重,最后选择能使权重综合最大的连接方式。如果两种对角连接的权重相同,两者都会被移除。针对这些启发规则作如下说明:

        曲线规则:如果两个像素是一条长曲线特征的一部分,他们应该相连。这里的曲线定义为相似图中连接权值为2的结点的边界的按序组合。我们按两种对角分别连接加入该曲线的方式计算曲线的长度。如果对角线的端点没有权值为2的结点,曲线的最短长度是1.这个规则通过判断哪条对角线连入可以使曲线长度最大从而保留该连线,擦除另一条。图3-b中显示了两个例子:假设右边的红色对角线已考察完,然后考察左边的两条红色对角线。包含黑色部分的像素块是长度为7的曲线的一部分,而白色的像素块不是(仅长度为1),所以根据这个启发规则,连接包含黑色部分的像素块,并得到权值6(参照图3-c,6为曲线到此处的长度)。

        稀疏像素阵规则:作二色画(不仅是黑白的)时,人们倾向于默认用更稀疏的颜色作为前景,而另一种颜色作为背景。这种情况下,我们默认连接前景像素块(想象一条虚线)。这个规则通过分别计算两条对角线所能连接最少栅格的方式,判断连接哪一条对角线。举个中心有交叉对角线的8X8的例子,见图4-a。这条规则使中间的红色对角线相连,而绿色的不相连。因为两条对角线分别连接时,作为前景色的红色点部分比绿色点少。

        像素岛规则:我们尽量避免使图形细碎成很多小部分。因此,我们避免创建无连接的像素岛。如果两条对角线其中一条不能连接任何结点,另一个条可以连接一个权重为1的结点,这意味着如果两条如果都不考虑连接,则会生成像素岛。为了避免如此,经验性地为这条对角连接赋值权重5。这种情形见图4-b。

        现在既然可以在相似图中处理好连接问题,图形正规化之后,我们可以考虑进一步,重塑像素单元图。重塑方法如下:将相似图中的每条边二等分,然后按照半条边为单位,依次连接到该半边所连接的结点。继而,重塑单元图形可以看做一个广义的Voronoi图:每个Voronoi单元由对比其他结点距离本单元的中心结点距离最短的所有点构成。我们可以简化这个图,去掉所有只被两个Voronoi单元共享的顶点,而拉成一条直线。插图显示了广义Voronoi插图和对应相似图的简化版。图3-c利用简化版Voronoi图处理得到图3-d。值得注意的是结点中心的位置坐标正好分别是像素单元长宽的一半的整数倍。稍后我们将利用这点来做相似图的模型匹配。

    

 插图:左边为精确的广义voronoi图,右边为用上述方法得到的简化版。

        Voronoi单元的形状完全由相似图中它的邻近单元决定。由于不同的voronoi单元形状数目有限,所以可以用一种比较高效的算法:扫描线方式遍历相似图,每次匹配一个3X3的方块,然后贴上匹配方块边详尽描述的相应voronoi单元模板。这种方法里,我们直接用简化版的voronoi图,而不用精确版的。


3.3 推导样条曲线

        重塑单元图形解决了所有的连接问题,处理得到大致的结果。然而,它的边界有很多角而不够光滑,由于之前的量化处理,看起来仍然是一块一块的。我们通过识别可见边界来解决这些问题。连接被两个颜色明显不同的单元共享的可见边界顶点的分段直线用二次B样条曲线代替[de Boor 1978]。这里,我们仅仅通过数可见边的数目来决定结点的值。B样条曲线的控制点被初始化成这些结点。

        当三条样条曲线交汇到一个公共顶点时,我们可以选择其中两条光滑连接,在该点变成T型接合。这样做的好处是得到变得更简单、更光滑的图形。问题是:我们该选择哪两条光滑连接?

        我们首先确认包含一个公共顶点的每条可见边是需要消隐的边还是轮廓边界。消隐的边分开颜色相似的两个图元,这里的相似指的是两个图形单元颜色的不同不足以定性共享边界为轮廓边界。轮廓边界代表能区分颜色足够不同的图元。具体来说,在我们的具体实现里,两个相邻图元的YUV距离不超过100/255的都作为消隐边界。也就是说,如果一个共享顶点的三边界,其中有一条消隐边界和两条轮廓边界,我们往往选择光滑连接两条轮廓边界。这个情形见图5-a。如果碰到这条规则不能解决的,我们简单地处理,判断三边中哪两边的夹角更接近180°,就光滑连接这两边。这个情形见图5-b。

         

图5:解决在标记结点的T型接合。样条曲线用黄色着色表示。(a)这种情形,Y型的左边属于消隐边界,因此另外的两边连成一条样条曲线。(b)中,三个完全不同的颜色区域交汇于一点。其中夹角最接近180°的两边连成一条样条曲线。

        这样做还有一个小问题:B样条曲线仅仅是趋近于它们的控制点,而不是插入这些点的值。因此,在一个T型接合中,我们必须调整需要光滑连接的一条曲线的端点以正好和另一条需要光滑连接的曲线的端点匹配。


3.4 曲线优化

        拟合B样条曲线极大地改善结果图的光滑度;然而,仍然有锯齿(见图6-b)。

       (a)输入(13X15像素)  (b)样条初始化  (c)样条优化

图6:通过最小化曲线曲率消除锯齿。

        因此,我们通过优化控制顶点的位置进一步改善光滑度。优化规则是使每一个顶点的能量的总和最小:

   

Pi表示第i个结点的位置。一个结点的能量定义为该点光滑度和位置的和:


        两者对能量总和的影响程度是相等的。光滑度通过曲率计算。因此,我们定义光滑度能量为:

这里r(i)是由pi所影响的曲线所在的区域,k(s)是s点的曲率。我们可以通过固定的采样间隔只进行整数型计算。

        为了防止得到的结果变形太多,我们需要进一步限制控制点的位置。我们定义位置能量如下:

是第i个结点的初始位置。将等式右边的指数提升为4,允许结点在相对小的范围内有活动的空间,但是可以使较大误差的位置能量明显提高,易于剔除。

        注意能量函数并不区分到底是锯齿,还是需要保留的类似锯齿的突出特征信息,比如说转角。在前一种情形下,光滑处理是需要的,然而在后一种情形下,必须避免。我们通过利用等式3检测类似锯齿的突出特征信息,并从整体图形中直接排除在突出特征信息周围的这些区域。由于重塑的单元图形的量化本质,突出特征属性仅仅只能代表有限的几种特殊模型,见图7。

图7:我们的算法检测的转角模型。原始方形像素栅格用灰色表示。由于相似图的构成方式,结点的位置在水平和垂直方向都是半个像素栅格的整数倍,所以检测这些模型是非常方便、直接的。

        因此,我们必须简单地处理一下在重塑的单元图形这些模型(包括旋转和反射变换处理)。检测到一种模型之后,马上从整体图形中排除在这个模型中的结点之间的部分样条曲线。图8显示了在一个示例子画面里的检测模型,并高亮标明从整体图形中直接排除的部分曲线。

     注:图8在原论文中是这种结构,为了保持图形原貌,未修改为水平布局

图8:转角检测:(a)属于一个转角检测模型的结点用红色标明。包含这些红色结点的部分曲线片段直接排除在光滑处理之外,用高亮黑色标明。

        既然能量函数是非线性的,定义了一个非常光滑的势能面,因此可以用一个非常简单的弛豫过程优化。每一次迭代,我们做一次随机结点集考察并根据各自的情况优化。针对每一个结点,我们尝试几次以当前点为中心,随机小半径范围内的移动,并保留使当前结点势能最小化的位置。

        经过优化样条结点的位置,样条曲线周围的像素单元的形状可能会显著改变。接下来我们用harmonic图[Eck et al.1995]计算所有不在优化讨论范围内(也不包含在图片的长宽限制边界的点)。这种方法可以极小化图元失真,并把这个问题归结为一个简单的稀疏线性系统问题(确切的说明和解释,请参考Hormann[2001])。


3.5 渲染

        我们的矢量描述可以用标准的矢量图渲染技术渲染,比如Nehab和Hoppe[2008]描述的系统。扩散求解方法也可以用来渲染这些矢量。这里,可以在图元中心放置色彩源并防止扩散穿透样条曲线。Jeschke et al.[2009]描述了一个可以实时渲染这些扩散系统。本文用一个较慢但是简单的实现:这里我们以图元中心为圆心,设置截尾高斯影响函数(σ = 1,半径为2个像素),并设置此区域之外的可见图元的影响度为0。最终每一点的颜色根据周围各点的影响权重计算平均颜色得到。


4 效果

        我们将本文的算法应用于众多的电子游戏和其他软件。图9代表性的显示了我们的结果,并与各种各样的放大技术作对照。在补充材料里,我们提供了更详实的结果和对照组。

图9:将我们的算法与各类相关算法对比的结果样例。请缩放到合适的尺寸到PDF以查看细节。还可以查看填充材料获取更多的对照和结果样例。(原图:Keyboard,386版权属于微软;Help,Yoshi,Toad版权属于Nintendo有限公司;Bomberman版权属于Hudson软件有限公司;Axe Battler版权属于Sega公司;入侵者版权属于Taito公司)

        我们的算法的表现依赖于从原始输入导出的曲线的尺寸和个数。即使当前还没有投入很大的精力做算法优化,效果已经很不错了。下表归纳了为补充材料里54个示例,在一个2.4GHz的单核CPU上做处理的时间花费:

                                             

        当然,我们当前讨论的焦点不是达到实时的速度,而是我们的算法在动画材料输入上优化的效果,比如电子游戏。为了这个试验,我们从电子游戏模拟器导出帧序列,然后用我们的算法对所有的帧进行处理。瞬时一致性的两个最关键的步骤是相似图的像素连接和结点位置优化。经过一系列的试验检测发现,我们的启发规则鲁棒性强,对特征信息的处理符合预期,即使是动画效果细微的变化也是如此。在优化时,结点的位置其实是受到强有力的约束的,因为在位置能量的等式右边,指数很大,是4。正因如此,我们的结果始终没脱离原始输入,并且与原始输入保持一致。图10展示了用我们的方法增强的效果。在补充材料里,我们提供了更高分辨率序列帧对应的增强视频并把结果和其他技术的结果对照。

                     最近邻处理的结果                                                   我们的结果                                                       hq4x的结果

图10:在动态环境中应用像素图增强。实际处理时,模拟器的原始输出被放大了4倍。请缩放到合适的尺寸到PDF以查看细节(原图版权属于Nintendo有限公司)


4.1 限制

        我们的算法是特别设计应用于手工描像素点的像素图的。从90年代中期起,电子游戏设备和电脑可以呈现比手绘图更多的颜色。在这些系统上,设计者要先在高分辨率上处理多色图片,甚至是照片,然后降质采样处理应用于相应的游戏分辨率。这种处理的效果在某种程度上,相对我们算法针对的原始输入更接近于自然影像。针对这些图片,我们的算法产生的厚实的边界也不总是很合适。图11展示了我们的算法应用于这样的图片的一个例子。

            输入(24X29像素)                          我们的结果

图11:不太成功的例子。反走样输入很难用我们的算法处理。“唉,注定的...”(原图版权属于id软件公司)

        另一个限制是我们的样条有时光滑处理有些过了,比如图9显示的“386”芯片的转角。我们的转角检测模型是基于启发规则的,有时也不能完全和人的视觉感知契合。一个可能的将来的扩展是允许增加B样条矢量的阶数,以创建在矢量描述中的突出特征,比如在一段较长的直线遇到一个角度的时候。

        虽然我们试验的输入中,很多都用了某些形式的边缘反走样,但是我们还没有试验到有强抖动模型的像素图,比如检测板模型,创建重叠阴影的痕迹。我们的算法也需要改良成能处理这些输入。


5 结论

        我们呈述了一种从像素图导出与分辨率无关的矢量描述的算法。我们的算法解决了像素栅格的分界和连接关系判断问题,并且重塑像素栅格,保证连接栅格之间共享边。我们导出包含平滑变化的阴影的分区,并用分段光滑的轮廓曲线清晰地分离这些区域。我们证明了常规的图像效果增强和矢量化算法不能很好的处理像素图,而我们的算法针对各种各样的像素图输入都有良好的效果。

        接下来的工作还有很多方向。显然,优化算法的实时性效果并应用于模拟器,是很有用的。之前本文提到的一些想法对一般的图像矢量化技术有所裨益。另一个有趣的方向是改善反走样输入图片的处理。这可以用一些光滑边界曲线而不是含有顶点的轮廓曲线的渲染来解决。一个全新的有趣话题是研究针对像素图动画的实时增强采样。如果我们从一个微型输入放大并在高清分辨率设备上输出,各点的位置是极端量化的,会导致画面不连续。而且很多现代显示设备较早期运行在一个更高的刷新频率上,需要通过生成中间帧来改善动画效果。


鸣谢

        我们感谢Holger Winnem¨oller中肯的意见和帮助我们创建一些对照组。这个工作也部分被由以色列人文和科学学院建立的以色列科学基金会赞助。


参考资料(略)

  相关解决方案