欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 使用三角剖分的图像压缩和解压缩独创技术80211字

使用三角剖分的图像压缩和解压缩

2021-02-26 17:30:14

使用三角剖分的图像压缩和解压缩

  相关申请的交叉引用

  本申请要求于2018年5月17日提交的美国申请号62/673,036的权益,其全部公开内容通过引用并入本文。

  技术领域

  本发明的实施方式涉及使用自适应三角剖分技术的图像压缩。

  背景技术

  互联网业务的日益增加部分由来自具有有限切经常按计量的带宽约束的移动设备的请求所控制。响应于这些请求通常包括传达小图像(例如缩略图)。因此,可能期望使用各种压缩技术来减小这些小图像的图像大小(例如,用于存储图像的字节数)。例如,压缩标准(例如,联合图像专家小组(JPEG))已经建立了用于图像压缩的标准方法。但JPEG和其他压缩标准不会显著或充分地压缩小图像。据此,这类缺陷已经通过专用于图像特征(例如,面容、卫星图、平滑合成图像、监控和/或诸如此类)的领域特定技术来解决。因此,需要能够独立于图像特征而压缩图像(例如,小图像)的高效压缩技术。

  发明内容

  本发明的示例性实施方式描述了使用自适应三角剖分技术来压缩和解压缩图像(例如,缩略图)的系统和方法。

  从某一总体方面而言,一种编码器系统包括像素网格生成器,该像素网格生成器被配置成:接收具有第一尺寸的图像,生成具有第二尺寸的网格,将多个点添加到网格上的位置,以及将图像的多个像素映射到多个点。所述编码器系统进一步包括:颜色模块,该颜色模块被配置成使用颜色表将颜色分配给多个点中的每一个;三角剖分模块,该三角剖分模块被配置成基于多个点生成多个顶点并使用顶点对网格进行三角剖分;以及压缩模块,该压缩模块被配置成将顶点压缩为压缩顶点位置集合和顶点颜色集合。

  从另一总体方面而言,一种压缩图像的方法包括:接收具有第一尺寸的图像;生成具有第二尺寸的网格;将多个点添加到网格上的位置;将图像的多个像素映射到多个点;使用颜色表将颜色分配给多个点中的每一个;基于多个点生成多个顶点;使用顶点对网格进行三角剖分;以及将所述顶点压缩为压缩顶点位置集合和顶点颜色集合。

  这些实施方式能够包括以下特征中的一个或多个。例如,第二尺寸比第一尺寸小四(4)倍到400倍。第二尺寸为M,网格能够包括M列和M行,网格上的位置能够位于网格的每个块处,块处于网格的行和列的相交处,以及将多个点添加到网格上的位置能够包括以下之一:在网格上的位置中的每一个处插入点,或者在网格上的位置中的一部分处插入多个点。所接收的图像为第一图像,第二尺寸为M,网格能够包括M列和M行,网格上的位置能够位于网格的每个块处,块处于网格的行和列的相交处,以及将多个点添加到网格上的位置能够包括:将阈值数目个点插入到网格上的随机位置,使用网格上的点生成第二图像,将第二图像与第一图像进行比较,以及响应于确定所述比较导致大于阈值质量差异的质量,将阈值数目个点重新定位在网格上。

  例如,颜色表能够基于所接收的图像来生成,以及颜色表能够包括2个到16个颜色。颜色表能够基于所接收的图像来生成,以及颜色表能够包括6个颜色。三角剖分模块能够使用Delaunay三角剖分(Delaunay Triangulation)技术对网格进行三角剖分。所接收的图像为第一图像,所述编码器系统进一步包括图像生成器,该图像生成器被配置成使用经三角剖分的网格和与顶点相关联的颜色来生成第二图像。生成第二图像能够包括基于与多个顶点中的每一个相关联的颜色来绘制由三角剖分模块所生成的三角形。

  例如,所接收的图像为第一图像,所述编码器系统进一步包括:图像生成器,该图像生成器被配置成使用经三角剖分的网格和与顶点相关联的颜色来生成第二图像;以及测试模块,该测试模块被配置成:基于第一图像和第二图像,执行质量测试,基于质量测试和第二图像的大小,确定第二图像是否满足至少一个准则,其中,至少一个准则包括最大大小和质量误差,响应于确定第二图像不满足至少一个准则,从多个顶点中选择顶点并从多个顶点中去除所选择的顶点,并且将处理返回到三角剖分模块。所接收的图像为第一图像,所述编码器系统进一步包括图像生成器,该图像生成器被配置成使用经三角剖分的网格和与顶点相关联的颜色来生成第二图像;以及测试模块,该测试模块被配置成基于第一图像和第二图像,执行质量测试,基于质量测试和第二图像的大小,确定第二图像是否满足至少一个准则,其中,至少一个准则包括最大大小和质量误差,响应于确定第二图像不满足至少一个准则,进行以下中的至少一个:移位多个顶点中的顶点,向多个顶点添加顶点,从多个顶点中去除顶点,重新分配与多个点中的至少一个相关联的颜色,去除颜色表的颜色中的一种,以及修改颜色表的颜色中的一种,以及将处理返回到三角剖分模块。

  从又一总体方面而言,一种解压缩压缩图像的方法包括:接收压缩图像文件,该压缩图像文件包括报头、压缩颜色表、压缩颜色表索引和压缩三角剖分中的至少一个;解压缩压缩颜色表、压缩颜色表索引和压缩三角剖分中的至少一个;基于网格大小,生成具有M×M尺寸的网格;基于解压缩的三角剖分文件,将多个点中的一个分配给网格的每个位置;基于解压缩的三角剖分文件,将颜色索引值分配给多个点中的每一个;基于相关联的颜色索引值,将颜色映射到多个点中的每一个;使用多个点作为顶点,对网格进行三角剖分;以及基于与三角剖分相关联的顶点和三角形,生成重构图像。

  这些实施方式能够包括以下特征中的一个或多个。例如,使用堆叠沙漏网络来提高与重构图像相关联的质量,其中,该堆叠沙漏网络包括至少两个沙漏,并且中间监督通过使用能够分离每个沙漏的输出的中间损耗模块来应用。生成重构图像能够包括基于与多个顶点中的每一个相关联的颜色来绘制由三角剖分所生成的三角形,以及由三角剖分所生成的三角形中的至少一个是使用插值技术来绘制。

  附图说明

  结合下文给出的详细描述和附图,将更加充分地理解示例性实施方式,其中相似的元素标有相似的附图标记,这些附图标记仅作说明,因此并不限制示例性实施方式。

  图1是图示出根据示例性实施方式的数据流的框图。

  图2图示出根据至少一个示例性实施方式的编码器系统的框图。

  图3图示出根据至少一个示例性实施方式的用于生成三角剖分图像的方法。

  图4图示出根据至少一个示例性实施方式的用于生成三角剖分图像的方法。

  图5图示出根据至少一个示例性实施方式的解码器系统。

  图6图示出根据至少一个示例性实施方式的用于解码图像数据并生成重构图像的方法。

  图7图示出根据至少一个示例性实施方式的包括中间损失的堆叠沙漏网络。

  图8图示出根据至少一个示例性实施方式的编码器系统。

  图9图示出根据至少一个示例性实施方式的解码器系统。

  图10示出根据至少一个示例实施例的计算机设备和移动计算机设备的示例。

  应该注意的是,这些图旨在图示在某些示例实施例中利用的方法结构和/或材料的一般特性,并且旨在补充在下面提供的撰写描述。然而,这些附图不是按比例的并且可能不精确地反映任何给定实施例的精确结构或性能特性,并且不应该被解释为限定或者限制由示例实施例所包含的值或性质的范围。例如,为了清楚可以缩小或者放大分子、层、区域和/或结构元件的相对厚度和定位。在各个附图中使用类似或相同的附图标记旨在指示存在类似或相同的元件或特征。

  具体实施方式

  虽然示例实施例可以包括各种修改和替代形式,其实施例被作为示例示出在附图中并且将在本文中被详细地描述。然而,应该理解的是,不存在将示例实施例限于所公开的特定形式的意图,而是相反,示例实施例将涵盖落入权利要求的范围内的所有修改、等同物和替代物。在整个附图的描述中,相同的标记指代相同的元件。

  典型压缩技术使用将图像细分成块集合。本文描述的基于三角剖分的实施方式既不使用块实施方式,也不使用图像上的预定义或统一的三角形间距。取而代之,能够从小(例如,有限数目的颜色)色图中为有限顶点集合分配颜色索引。例如,类似于有时在计算机图形和动画中使用的包括多个三角形的网,能够使用在边和/或角处互连的三角形集合来表示图像。三角形的每个角都能称为顶点。因此,图像也能够由顶点集合(三角形的角集合)和二维网或网格中的每个顶点的位置来表示。另外,作为压缩图像的一部分,二维网或网格可能具有有限的大小。二维网或网格的有限大小也可能限制顶点集合的大小(例如,限制三角形的数目和相关联的顶点的数目)。

  此外,能够使用色图来表示或存储图像中的像素的颜色。结果,上述顶点中的每个顶点都能与指示符(例如,数字、二进制整数、索引或诸如此类)相关联,该指示符能够用于在色图中查找顶点的颜色。在一种实施方式中(例如,作为压缩图像的一部分),能够将色图限制(例如,颜色组合,颜色通过图像中的实例的频率过滤、通过预定义设置和/或诸如此类)成相对(如与图像中的颜色数目相比)较少数目的颜色(例如,少于20个颜色)。相应地,用于将顶点与色图中的颜色相关联的指示符能够映射到色图中的有限数目的颜色中的一个。

  另外,作为生成(或帮助生成)合成图像的一部分,各个三角形顶点之间的颜色插值能够被用来填充三角形。例如,如果三角形的三个顶点中的每一个映射到色图中的相同颜色(例如,色图包括有限数目的颜色),则能够使用一个颜色(例如,与三个顶点相关联的颜色)来填充三角形。然而,如果三角形的三个顶点中的每一个映射到色图中的不同颜色,则能够使用不同颜色的插值来填充三角形。在一些实施方式中,能够将更多的三角形专用于图像的复杂(例如,高熵、高度颜色可变性、高度纹理可变性和/或诸如此类)区域。三角剖分能够被用于多种图像压缩技术。此外,压缩/解压缩技术能够使用深度神经网络。

  因此,本文描述的实施方式能够独立于图像特征来压缩小图像。但应当领会到,本文描述的实施方式不限于压缩小图像,而能应用于任意大小的图像。此外,导致减小的图像大小的压缩能帮助解决存储通常响应于来自移动设备的请求而访问的大量(例如,数十亿)小图像相关联的存储需求。

  在一些实施方式中,可能存在本文描述的实施方式的至少两个部分。在一些实施方式中,第一部分是创建有效的三角剖分,而第二部分是对三角剖分进行有效编码。在一些实施方式中,三角剖分的部分能够被实施为通过选择放置三角剖分的顶点的位置并将单一颜色分配给每个顶点来进行交互的两段。在一些实施方式中,为了传输效率,能够减少或最少化顶点的数目和唯一颜色的总数。另外,在一些实施方式中,第一部分能够实施生成与测试范式。生成与测试范式能够被用来重复地重新生成三角剖分的顶点并将单一颜色重新分配给每个顶点颜色,使用顶点颜色填充合成的三角形,然后测试合成的图像或将合成的图像与原始图像和/或先前生成的图像进行比较。

  图1是图示出根据示例性实施方式的数据流的框图。如图1所示,具有数据(例如,像素位置和颜色信息)的图像105被输入到像素映射和三角剖分过程110。在像素映射和三角剖分过程110中,基于像素位置,生成/识别顶点并将这些顶点定位在M×M网格上。每个顶点分配有颜色,并且每个三角形是基于分配给对应顶点的颜色来着色。然后,使用三角形来生成新图像。对新图像进行测试(115),并且如果新图像满足预定准则,则对新图像进行编码(120)。如果新图像不满足预定准则,则在像素映射和三角剖分过程110中对新图像进行再处理。再处理能够包括添加顶点、减去顶点、更改颜色、添加颜色和/或诸如此类。能够重复像素映射和三角剖分过程110和测试115,直到所生成的图像满足至少一个预定准则。

  图2图示根据至少一个示例性实施方式的编码器系统的框图。如图2所示,编码器系统205包括像素网格生成器215、颜色模块220、颜色表225、三角剖分模块230、图像生成器235、测试模块240和压缩模块245。

  编码器系统205能够接收图像210并生成压缩图像文件250。图像210能够包括图像数据(例如,图像大小、图像尺寸(例如,x尺寸和y尺寸和/或网格尺寸)、像素数目、像素位置、像素颜色、像素纹理和诸如此类)。压缩图像文件250能够包括与图像210相对应的压缩数据。与图像210相对应的压缩数据能够被用来生成与图像210相对应的重构图像。因此,压缩图像文件250能够包括像素网格、颜色表、与三角剖分顶点相对应的压缩数据和/或诸如此类(优选地,其中一个或多个已经被压缩成更少或最少的比特数)。

  像素网格生成器215能够接收图像210。在一种示例性实施方式中,图像210是大小为N×N(例如221×221)的小图像(例如,缩略图)。大小为N×N(和/或N1×N2,其中N1与N2不同)的图像能够与包括N列和N行的N×N网格相关联。N×N网格上的位置能够位于N×N网格的每个块处。块能够位于N×N网格的行和列的相交处。像素网格生成器215能够包括(生成和/或使用)预定的M×M(和/或M1×M2,其中M1与M2不同)网格。M×M网格能够包括M列和M行。M×M网格上的位置能够位于M×M网格的每个块处。块能够位于M×M网格的行和列的相交处。

  在一些实施方式中,M<<N。因此,M×M网格能够远小于N×N网格。例如,M能够比N小2倍至20倍。相应地,M×M能够比N×N小4倍至400倍。然而,M×M网格的大小能够与N×N网格的大小相同、小于N×N网格的大小或者大于N×N网格的大小。在一些实施方式中,M×M网格能够基于目标字节数(例如,200个字节)来预定。在一些实施方式中,M×M网格能够基于用于调整压缩率的参数(例如,编码器系统205的输入)来预定。

  像素网格生成器215能够被进一步配置成将多个点分配给M×M网格上的各个位置(M×M网格上的位置可能例如是如上所述块的中心、能够沿着两个块共享的直线位于四个块的相交处的位置(X,Y)和/或诸如此类)。换而言之,在M×M网格中选择或识别多个位置,并且这些选择/识别的位置能够称为点。分配给M×M网格上的位置的一个(或多个)点能够称为点、多个点和/或M×M网格上的点。在随后的操作(例如,三角剖分)中,点能够成为三角形的顶点。像素网格生成器215能够被进一步配置成将图像210的像素映射到M×M网格上的点。例如,如果M×M网格的大小小于(对应于图像210的)N×N网格的大小,则将图像210的像素映射到M×M网格上的点能够包括将图像210的像素子集(例如,基于位置接近度)映射到M×M网格上的点。

  颜色模块220能够被配置成基于图像210中的对应像素的颜色给M×M网格上的点中的每个点分配颜色。能够从颜色表225中选择颜色。颜色表225能够包括包括有限数目颜色的色图。例如,颜色表225能够包括具有8个到16个颜色的色图。另外,图像210的像素的颜色中的每一个能够被映射到色图的8个到16个颜色中的一个。

  三角剖分模块230能够被配置成对M×M网格上的点进行三角剖分。换而言之,三角剖分模块230能够被配置成使用M×M网格上的点作为三角形的顶点来生成(或者识别或确定)多个三角形。例如,能够使用Delaunay三角剖分技术。通过使用Delaunay三角剖分技术,由三角剖分模块230所生成的每个三角形不包括所生成的三角形内的任何其他点,并且一个三角形的侧边或边与另一个三角形的顶点互不相交。因此,与像素相对应的每个点被用作至少一个三角形中的顶点。其他三角剖分技术也是可能的。例如,一些三角剖分技术能够包括所生出的三角形内的至少一个点。这些技术在后续处理中忽略这些内点。

  图像生成器235能够被配置成使用三角剖分和经由M×M网格上的对应点分配给顶点的颜色来生成(或渲染)图像。生成图像能够包括基于分配给三角形的每个顶点的颜色而对由三角剖分模块230所生成的每个三角形进行填充颜色或绘制(以下称为绘制、被绘制或正绘制)。与图像210相比,所生成的图像能够更小(例如,要存储的字节更少,列和/或行更少)。换而言之,所生成的图像能够是M×M。所生成的图像能够完全被三角形覆盖(例如,M×M网格的任何区域皆不包括开口空间或不在三角形中的一个内的空间)。

  在一些实施方式中,至少一个三角形能够具有带不同颜色的顶点。例如,三角形的两个顶点能够经由M×M网格上的对应点分配有绿色,而第三个顶点经由M×M网格上的对应点分配有蓝色。相应地,三角形能够使用插值(例如,线性插值)技术来绘制。换而言之,三角形能够用变化或混合的颜色来绘制。例如,三角形的中心可以被绘制成绿色/蓝色,并在逼近蓝色顶点时被绘制成蓝色,而在逼近绿色顶点时被绘制成绿色。除了线性插值,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  然后可以由测试模块240对由图像生成器235所生成的图像进行测试。在一种或多种实施方式中,能够执行图像质量测试。例如,能够执行图像间的峰值信噪比(PSNR)测试和/或结构相似性指数(SSIM)测试。PSNR和SSIM能够被用来将由图像生成器235所生成的图像与图像210和/或所保存的先前由图像生成器235生成的图像进行比较。附加地或替选地,在一些实施方式中,能够将由图像生成器235所生成的图像的大小(例如,字节数)与阈值(例如,最大和/或最小字节数)进行比较。在一种示例性实施方式中,与图像210和/或先前生成的图像相比,如果PSNR和/或SSIM高于阈值,则PSNR和/或SSIM通过测试。

  换而言之,能够由测试模块240对由图像生成器235所生成的图像进行测试,以确定该图像是否满足至少一个预定准则。该准则能够是基于图像质量和/或图像大小。如果由图像生成器235所生成的图像满足至少一个准则,则处理继续到压缩模块245。否则,处理返回到三角剖分模块230。

  在一些实施方式中,通过三角剖分模块230、图像生成器235和测试模块240的第一次迭代使用固定大小或参数调整的M×M网格用过完备顶点集合来初始化。然后,能够将顶点数目修剪为更小的顶点集合,直到该顶点集合和颜色信息能够匹配阈值字节数(例如,200个字节)。

  在这种实施方式中,三角剖分模块230能够被配置成选择顶点以从顶点集合中移除和去除该顶点。换而言之,与上述像素相关联的点中的一个点被去除并不再用作顶点。

  在一些实施方式中,通过三角剖分模块230、图像生成器235和测试模块240的第一次迭代使用(下文详述的)贪婪算法用已经最小化或减小的顶点集合来初始化。然后,能够对顶点集合进行突变(下文详述),直到该顶点集合导致具有最优或目标质量与大小的关系的所生成的图像。当突变的顶点不会导致迭代间的可测量的质量差异和/或顶点集合和颜色信息的字节数的可忽略不计的减少时,能够达到最优的质量与大小的关系。

  然后,三角剖分模块230能够使用上述一种技术来重新生成多个三角形。重新生成的多个三角形能够被图像生成器235用来生成另一个图像,然后由测试模块240对其进行测试。

  压缩模块245能够被配置成压缩由三角剖分模块230所生成的顶点(包括M×M网格中的顶点位置和颜色)、颜色表225和/或M×M网格中的一个或多个。压缩模块245能够使用任意多种压缩技术。然而,在一些实施方式中,压缩模块245能够使用非对称数字系统(ANS)技术,下文对此予以详述。

  关于图3和图4描述的方法步骤可以作为存储在与编码器系统(例如,如图1、图2和图8所示)相关联的存储器(例如,至少一个存储器810)中的软件代码来执行并由与该编码器系统相关联的至少一个处理器(例如,处理器805)来执行。例如,存储器能够是非暂时性计算机可读存储介质,其具有存储于其上的指令作为计算机可执行程序代码,该代码当在计算机系统上执行时促使计算机系统执行下文关于图3和图4描述的步骤。但可设想替选的实施方式,诸如体现为专用处理器的编码器。

  例如,这些方法步骤可以由专用集成电路或ASIC来执行。例如,ASIC可以被配置为编码器系统205和/或控制器820。虽然下文描述的步骤被描述为由处理器执行,但这些步骤不必由同一处理器来执行。换而言之,至少一个处理器可以执行下文关于图3和图4描述的步骤。

  图3图示出根据至少一个示例性实施方式的用于生成三角剖分图像的方法。如图3所示,在步骤S305中,接收图像。例如,该图像(例如,图像210)能够是大小为N×N(例如,221×221)的小图像(例如,缩略图)。该图像能够包括图像数据(例如,图像大小、图像尺寸(例如,x尺寸和y尺寸和/或网格尺寸))、像素数目、像素位置、像素颜色、像素纹理和诸如此类)。

  在步骤S310中,生成M×M网格。例如,M×M网格能够是在编码器系统(例如,编码器系统205)内具有固定大小的预定网格。M×M网格的大小能够与N×N网格的大小相同、小于N×N网格的大小或者大于N×N网格的大小。在一些实施方式中,M×M网格能够基于目标字节数(例如,200个字节)来预定。在一些实施方式中,M×M网格能够基于用于调整压缩率的编码器参数(例如,编码器系统205的输入)来预定。M×M网格能够具有M列和M行,以便能够达成最小压缩量。

  在步骤S315中,将M×M网格上的位置(P)的集合分配给图像的对应像素。例如,能够将所接收的图像(例如,图像210)的像素映射到M×M网格上的相应位置。下文将M×M网格上的位置称为点或M×M网格上的点。例如,如果M×M网格的大小小于(对应于图像的)N×N网格的大小,则将图像210的像素映射到M×M网格上的点能够包括将图像210的像素的子集映射到M×M网格上的点。在一些实施方式中,能够预先分配位置的初始分配。在一些实施方式中,能够随机分配位置的初始分配。在一些实施方式中,能够分配位置的初始分配,以使点在M×M网格内的均匀分布。

  在步骤S320中,基于对应像素来选择所分配的点(P)的颜色(C)。例如,能够基于所接收的图像中的对应像素的颜色给M×M网格上的每个点分配颜色。该颜色能够从颜色表中选择。颜色表能够包括有限数目的颜色。例如,颜色表能够包括8个到16个颜色。另外,能够将图像的像素的颜色中的每一个映射到颜色表的8个到16个颜色中的一个,并且能够将所映射的颜色分配给M×M网格上的对应点。

  在步骤S325中,对每个P进行三角剖分。例如,能够使用Delaunay三角剖分技术。通过使用Delaunay三角剖分技术,由三角剖分模块230所生成的每个三角形不包括所生成的三角形内的任何其他点,并且一个三角形的侧边或边与另一个三角形的顶点互不相交。因此,与像素相对应的每个点被用作至少一个三角形中的顶点。其他三角剖分技术也是可能的。例如,一些三角剖分技术能够包括所生成的三角形内的至少一个点。这些技术在后续处理中忽略这些内点。

  在步骤S330中,基于P和C来生成图像。换而言之,能够基于三角形和经由M×M网格上的对应点分配给顶点的颜色来生成(或渲染)图像。生成图像能够包括基于分配给三角形的每个顶点的颜色来绘制由三角剖分模块230所生成的每个三角形。

  在一些实施方式中,至少一个三角形能够具有带不同颜色的顶点。例如,三角形的两个顶点能够经由M×M网格上的对应点分配有绿色,而第三个顶点经由M×M网格上的对应点分配有蓝色。相应地,三角形能够使用插值(例如,线性插值)技术来绘制。换而言之,三角形能够用变化或混合的颜色来绘制。例如,三角形的中心可以被绘制成绿色/蓝色,并在逼近蓝色顶点时被绘制成蓝色,而在逼近绿色顶点时被绘制成绿色。除了线性插值,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  在步骤S335中,确定所生成的图像是否满足至少一个条件。例如,能够执行图像质量测试。因此,能够对图像进行测试以确定该图像是否满足至少一个预定准则。该至少一个准则能够是基于图像质量和/或图像大小。例如,能够执行图像间的峰值信噪比(PSNR)测试和/或结构相似性指数(SSIM)测试。PSNR和SSIM能够被用来将该图像与所接收的图像(例如,图像210)和/或所保存的先前迭代期间生成的图像进行比较。附加地或替选地,在一些实施方式中,能够将图像的大小(例如,字节数)与阈值(例如,最大和/或最小字节数)进行比较。

  如果所生成的图像通过测试,则处理继续到步骤S340。否则,处理继续到步骤S345。在步骤S340中,执行其他处理。例如,能够压缩顶点(包括位置和颜色)、颜色表和/或M×M网格中的一个或多个。

  在步骤S345中,选择要去除的顶点。例如,能够确定最不重要的顶点。在一些实施方式中,对于用于生成图像的三角形,最不重要的顶点在顶点集合中具有最小误差。例如,PSNR和SSIM能够计算每个顶点的误差(例如,噪声量)。能够将在PSNR测试或SSIM测试期间计算出的误差最低的顶点确定为最不重要的顶点,并将其选择为要去除的顶点。

  在步骤S350中,删除所选择的顶点。例如,从顶点集合中去除所选择的顶点。换而言之,从M×M网格上的位置去除点。然后,处理返回到步骤S325。在一些实施方式中,处理能够返回到步骤S325,以便进行最少或最多次数的迭代(例如,处理循环)。

  在一些实施方式中,颜色表中的颜色是基于图像特征。在上文关于图3描述的实施方式中,颜色表中的颜色可以被选择一次并可能不适合。另外,任何迭代中的更改皆是去除可能无法加回或稍微移动的顶点以找到更佳三角形组合。再者,使用所接收的图像(例如,图像210)作为基线导致对每个提议的顶点(或顶点集)修改的贪婪选择可能在发现高性能区域时限制局部搜索结果。

  相应地,在一些实施方式中,能够实现随机的变型方案。这可能包括利用诸如爬山算法、进化算法和/或模拟退火算法的随机启发式搜索来搜索离散的不可微优化景观的技术。例如,随机爬山算法能够允许一些实施方式探索图像的搜索空间并调配(例如,颜色表的)颜色设置。

  另外,如上所述,还能够使用不同于或附加于去除顶点操作的多个操作中的至少一个。应当指出,在一些实施方式中,修改颜色,而在关于图3描述的方法中,未曾进行任何颜色修改。另外,如果发现顶点会改进结果,则能够添加这些顶点(即使是先前已将它们去除)。顶点也能够局部移动到附近的网格点。代替去除顶点直到达到期望的字节大小,接受移动能够是基于移动是否会改进质量与大小的关系。另外,与关于图3所述的方法相比,能够用更小的顶点集来初始化随机实施(关于图4所述)。如上所述,顶点能够处于预定的网格上。

  图4图示出根据至少一个示例性实施方式的用于生成三角剖分图像的方法。如图4所示,在步骤S405中,接收图像。例如,能够接收图像作为批量编码例程的输入。例如,该图像(例如,图像210)能够是大小为N×N(例如,221×221)的小图像(例如,缩略图)。该图像能够包括图像数据(例如,图像大小、图像尺寸(例如,x尺寸和y尺寸和/或网格尺寸))、像素数目、像素位置、像素颜色、像素纹理和诸如此类)。

  在步骤S410中,生成M×M网格。在一些实施方式中,M<<N。因此,M×M网格能够远小于N×N网格。例如,M能够比N小2倍至20倍。相应地,M×M能够比N×N小4倍至400倍。然而,M×M网格的大小能够与N×N网格的大小相同、小于N×N网格的大小或者大于N×N网格的大小。在一些实施方式中,M×M网格能够基于目标字节数目(例如,200个字节)来预定。在一些实施方式中,M×M网格能够基于用于调整压缩率的参数(例如,编码器系统205的输入)来预定。

  生成M×M网格能够包括将点插入到M×M网格上的位置中。在一些实施方式中,能够使用贪婪算法来最小化或减小点集。在一种示例性实施方式中,能够将阈值数目个点插入到M×M网格上的位置中。在一些实施方式中,点的阈值数目远少于所接收的图像中的像素数目。例如,M能够等于20。因此,M×M网格能够包括400个位置。相应地,点的阈值数目能够最多为400个点。400个点远少于所接收的图像中的像素数目(例如,缩略图中约为50000像素)。另外,点的阈值数目能够少于M×M网格上的位置数目。例如,点的阈值数目能够被设置为300个,这少于400个位置。

  在一种示例性实施方式中,能够将阈值数目个点随机地插入到M×M网格上的位置中,能够基于所接收的图像的像素颜色给这些点分配颜色,该像素与被分配颜色的点在图像中大致处于相同的位置,使用M×M网格的多个点来生成(或渲染)图像,并且将所生成的图像与所接收的图像进行比较。如果比较(例如,PSNR)导致质量等于或小于M×M网格上的点的位置为可接受的阈值质量差异,并且处理继续。如果比较(例如,PSNR)导致质量大于阈值质量差异,则能够将阈值数目个点重新定位在M×M网格上,然后重复该过程,直到所生成的图像在阈值质量差异之内。

  在另一种实施方式中,能够从所接收的图像中去除像素,直到剩余阈值数目个像素。每次去除一个像素(或多个像素)时,都能够将所接收的图像与所修改的图像进行比较。如果比较(例如,PSNR)导致质量等于或小于阈值质量差异,则继续迭代,否则,将像素加回并去除其他像素。能够重复该过程,直到所修改的图像包括阈值数目以下的像素。所修改的图像能够被用来将点插在M×M网格上并给这些点分配像素。

  在步骤S415中,将包括M×M网格上的点的位置(P)的集合分配给图像的对应像素。例如,能够将所接收的图像(例如,图像210)的像素映射到M×M网格上的位置。如果已经将点分配给位置,则下文将M×M网格上的位置称为点或M×M网格上的点。

  在步骤S420中,基于对应像素来选择所分配的点(P)的颜色(C)。例如,能够基于对应像素、像素簇和/或像素簇的中心在所接收的图像中的颜色给M×M网格上的每个点分配颜色。能够从颜色表中选择颜色。能够基于所接收的图像来生成颜色表。例如,搜索所接收的图像会返回所接收的图像中频繁出现的颜色。颜色表应当包括有限数目的颜色。例如,颜色表应当最初包括8个颜色。因此,能够将所接收的图像中频繁出现的颜色聚集或映射成8个颜色,以便包括在颜色表中。另外,能够将图像的像素的颜色中的每一个映射到颜色表的8个颜色中的一个,并且能够将所映射的颜色分配给M×M网格上的对应点。如上所述,能够使用随机爬山技术来确定要包括在颜色表中的颜色。

  在步骤S425中,对每个P进行三角剖分。例如,能够使用Delaunay三角剖分技术。通过使用Delaunay三角剖分技术,由三角剖分模块230所生成的每个三角形不包括所生成的三角形内的任何其他点,并且一个三角形的侧边或边与另一个三角形的顶点互不相交。因此,与像素相对应的每个点被用作至少一个三角形中的顶点。也可能使用其他三角剖分技术。例如,一些三角剖分技术能够包括所生成的三角形内的至少一个点。这些技术在后续处理中忽略这些内点。

  在步骤S430中,基于P和C来生成图像。换而言之,能够基于三角形和经由M×M网格上的对应点分配给每个顶点的颜色来生成(或渲染)图像。生成图像能够包括基于分配给三角形的每个顶点的颜色来绘制由三角剖分模块230所生成的三角形。

  在一些实施方式中,至少一个三角形能够具有带不同颜色的顶点。例如,三角形的两个顶点能够经由M×M网格上的对应点分配有绿色,而第三个顶点经由M×M网格上的对应点分配有蓝色。相应地,三角形能够使用插值(例如,线性插值)技术来绘制。换而言之,三角形能够用变化或混合的颜色来绘制。例如,三角形的中心可以被绘制成绿色/蓝色,并在逼近蓝色顶点时被绘制成更蓝,而在逼近绿色顶点时被绘制成更绿。除了线性插值之外,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  在步骤S435中,可以确定所生成的图像是否满足至少一个条件。例如,能够执行图像质量测试。因此,能够对所生成的图像进行测试以确定所生成的图像是否满足至少一个预定准则。该至少一个准则能够是基于图像质量、图像质量误差和/或图像大小。例如,能够执行图像间的峰值信噪比(PSNR)和/或结构相似性指数(SSIM)测试。PSNR和SSIM能够被用来将所生成的图像与所接收的图像(例如,图像210)和/或所保存的先前迭代期间生成的图像进行比较。附加地或替选地,在一些实施方式中,能够将图像的大小(例如,字节数)与阈值(例如,最大大小(例如,字节数)和/或最小大小(例如,字节数))进行比较。

  如果所生成的图像通过测试,则处理继续到步骤S440。否则,处理继续到步骤S445。在步骤S440中,执行其他处理。例如,能够压缩顶点(包括M×M网格内的位置和颜色)、颜色表和/或M×M网格中的一个或多个。

  在步骤S445中,对点集和/或点颜色进行突变。换而言之,能够修改三角形的顶点。这可以通过多种方式来实现,例如以下至少一种:(a)能够移位顶点-移位顶点包括将顶点水平或垂直移动一个网格位置;(b)能够添加顶点-添加顶点能够包括在M×M网格上的随机(未占用)位置处在M×M网格上添加点(在一些实施方式中,能够将分配给相邻点或最近点的颜色分配给所添加的顶点);(c)能够去除顶点。移位或去除的顶点可能是最不重要的顶点。附加地或替选地,在一些实施方式中,可以去除或移位随机的顶点。

  点颜色的突变可能包括以下一项或多项:(a)能够重新分配点的颜色(产生顶点)-能够使用颜色表中的任何颜色来随机地重新分配颜色;(b)能够向颜色表中添加颜色;(c)能够从颜色表中去除颜色-在一些实施方式中,如果将颜色分配给少于阈值数目个点,则能够去除颜色表中的颜色;(d)能够修改颜色表的颜色-修改颜色能够包括将其颜色值更改数字(例如,通过从颜色值中增加或减去一)。

  突变类型判定可迭代。换而言之,首先添加顶点,然后移位顶点,然后重新分配颜色,依此类推(该顺序仅为示例,任何顺序均属本公开的范围内)。能够学习突变类型判定。例如,当执行突变时,能够学习最优突变(或突变顺序)。换而言之,系统能够学习到,与为一个图像(或多个图像)去除顶点相比,移位顶点可能更加有效。

  在一些实施方式中,能够执行两次以上修改。另外,能够基于成功概率来选择修改。例如,能够使用算法来确定成功概率。该算法能够是基于历史数据(例如,指示移位顶点最有可能产生改进)和/或在先修改(例如,在水平移位顶点之后,垂直移位顶点最有可能产生改进)。在一些实施方式中,能够修改三角形的两个以上顶点。例如,能够修改相邻顶点集,能够修改区域中顶点集,能够修改同色的顶点集,和/或诸如此类。在一些实施方式中,能够顺序地修改三角形的两个以上顶点。例如,能够以顺序迭代从左到右修改沿水平方向的顶点。

  尽管图4示出处理返回到步骤S425,但其他选项也属本公开的范围内。例如,如果仅修改颜色,则处理能够返回到步骤S430。例如,如果当前迭代是第二次或后续迭代,并且该突变未导致改进结果(例如,减小误差和/或大小),则能够丢弃该突变,并且能够从前一次迭代开始重复步骤S445。

  返回图2,压缩模块245能够被配置成压缩三角剖分数据并生成压缩图像文件250。例如,压缩图像文件能够包括报头,该报头包含诸如网格大小(例如,M×M网格)和顶点数的基本参数以及颜色表。在一些实施方式中,能够使用非对称数值系统(ANS)技术来压缩(例如,无损压缩)颜色表。

  在一些实施方式中,颜色表条目能够按使用频率来排序(从最常见的开始)。排序后,能够通过提供颜色数、(量化的)颜色通道值和/或每个条目的使用频率来压缩颜色表。在一些实施方式中,能够将颜色通道值编码为来自该通道(例如,红色通道)的先前传输值的平均值的校正,其中第一条目的预测设置为中点灰色。

  在一些实施方式中,针对这些颜色差异的直方图表能够被包括在报头中。在一些实施方式中,能够使用二项分布模型来存储颜色条目频率。因此,这种实施方式能够对剩余的颜色和顶点(即,其中,是未被先前颜色条目计数的剩余顶点数,以及p=1/Cr,其中,Cr是剩余的颜色表条目)使用公平选择模型。在一些实施方式中,因为颜色表能够按频率来排序,所以该实施方式能够通过将所考虑的分布值限制成至少(基于获知后续条目已被排序)以及至多先前条目的频率计数(基于获知先前条目和当前条目已被排序)来改进该概率模型。在一些实施方式中,与使用简单的均等概率分布模型相比,通过使用该实施方式对颜色条目频率进行编码,该方法平均能够节省大量的文件大小。

  在一些实施方式中,能够使用非对称数值系统(ANS)技术来压缩(例如,无损压缩)三角剖分以压缩顶点位置和/或它们的颜色分配。在一些实施方式中,对于顶点位置,M×M网格上每个位置的一个比特(未经算术代码化)能够被用来指示该位置是否被用作顶点(例如,点是否处于该位置)。在一些实施方式中,这能够使用Ng个比特,其中,Ng是M×M网格上的位置数目并对应于使用0.5的占用概率。在一些实施方式中,该技术能够使用固定占用概率作为p=Vt/Ng,其中,Vt是顶点的总数(这些顶点能够被包括在报头中)。

  在一些实施方式中,能够使用游程长度代码(对顶点之间未占用的网格位置的游程长度进行代码化)。游程长度的分布能够被包括在报头中,从而导致额外的开销(例如,压缩图像文件250可能大于预期)。在一些实施方式中,三角剖分的压缩能够使用自适应概率技术来压缩占用图。在一些实施方式中,概率模型能够随着通过网格的进展而更新,以便概率模型在M×M网格的每个位置处是p=Vr/Nr,其中,Vr和Nr分别是剩余顶点和网格点计数。在一些实施方式中,这能够为三角剖分提供远超每格点单比特技术的压缩。

  在一些实施方式中,能够使用非对称数值系统(ANS)技术来压缩(例如,无损压缩)颜色表索引(针对每个顶点或M×M网格上的点)。例如,能够使用颜色条目频率,并且能够使用针对这些索引的自适应模型。能够将颜色索引压缩为布尔值编码链。该技术包括使用由对应颜色表条目的剩余计数概率指示的概率来识别每个颜色索引。此外,能够通过空间自适应预测来设置对每个颜色索引的编码顺序。

  在一些实施方式中,该技术即使在不更改任何模型概率的情况下也能提供帮助,因为一旦识别真实的布尔值,便能终止对该顶点进行编码并移至下一个顶点。在一些实施方式中,通过基于到当前顶点的曼哈顿距离的颜色对先前看到的(并已经包括在压缩图像文件250中的)颜色进行排序,能够确定编码顺序。关系(例如,相同的曼哈顿距离)中断,取而代之的是概率更高的颜色。在一些实施方式中,使用该排序导致用于存储颜色表频率的文件大小(例如,压缩图像文件250)显著减小。在一些实施方式中,使用空间自适应排序能够提供额外的文件大小减少。

  在一些实施方式中,对于客户端侧的解码,能够重新创建Delaunay三角剖分。在一些实施方式中,然后,每个三角形由其三个顶点的线性组合来分别着色。除了线性插值之外,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  图5图示出根据至少一个示例性实施方式的解码器系统。如图5所示,解码器系统505包括颜色表解压缩模块515、颜色表索引解压缩模块520、三角剖分解压缩模块525、网格生成器530、颜色模块535、颜色表540、三角剖分模块545和图像生成器550。解码器系统505能够被配置成接收压缩图像文件250并生成重构图像510。尽管颜色表解压缩模块515、颜色表索引解压缩模块520和三角剖分解压缩模块525被图示为单独的模块,但颜色表解压缩模块515、颜色表索引解压缩模块520和/或三角剖分解压缩模块525能够被合并成公共或单个解压缩模块。

  颜色表解压缩模块515被配置成解压缩从压缩图像文件250读取的压缩颜色表并生成颜色表540。解压缩压缩颜色表能够包括执行对压缩模块245用来压缩颜色表225的技术的逆操作。例如,基于其中使用中点灰色来预测第一个条目的先前颜色条目,能够对颜色表进行反量化,并能够重新生成颜色通道值。附加地或替选地,颜色表解压缩模块515能够从压缩图像文件250中提取颜色频率信息并将该颜色频率信息包括在颜色表405中。能够使用均等概率模型和/或分布模型来提取颜色频率信息。

  颜色表索引解压缩模块520被配置成解压缩从压缩图像文件250读取的压缩颜色表索引文件并将颜色索引表传达到网格生成器530。解压缩压缩颜色表能够包括执行对压缩模块245用来压缩颜色表索引的技术的逆操作。颜色表索引解压缩模块520能够使用布尔值解码链技术来解压缩颜色索引表。该技术包括使用由对应颜色表条目的剩余计数概率指示的概率来识别每个颜色索引。附加地或替选地,能够通过空间自适应预测来设置解码每个颜色索引的顺序。

  三角剖分解压缩模块525被配置成解压缩从压缩图像文件250读取的三角剖分文件并将该三角剖分文件传达到网格生成器530。解压缩压缩三角剖分文件能够包括执行对压缩模块245用来压缩三角剖分文件的技术的逆操作。例如,三角剖分解压缩模块525能够从报头读取顶点数、网格大小和概率模型。概率模型能够指示网格中的位置包括顶点以及第一网格位置是否包括顶点的可能性。当位置包括(或不包括)顶点时,下一个点不包括(或包括)的概率增加。

  网格生成器530被配置成基于从报头读取的网格大小来生成M×M网格。网格生成器530被进一步配置成基于解压缩的三角剖分文件在M×M网格中被占用(例如,包括顶点)的每个位置处分配点。网格生成器530被进一步配置成将颜色索引值分配给这些点中的每一个。

  颜色模块535被配置成基于颜色索引值将颜色分配给这些点中的每一个。例如,颜色索引值能够被用来在颜色表540中查找颜色。所返回的颜色(或用来渲染颜色的值)被分配给对应点。

  三角剖分模块545能够被配置成使用M×M网格上的点作为三角形的顶点来生成多个三角形(例如,如上所述)。例如,能够使用Delaunay三角剖分技术。通过使用Delaunay三角剖分技术,由三角剖分模块545所生成的每个三角形不包括所生成的三角形内的任何其他点,并且一个三角形的侧边或边与另一个三角形的顶点互不相交。因此,与像素相对应的每个点被用作至少一个三角形中的顶点。也可能使用其他三角剖分技术。例如,一些三角剖分技术能够包括所生成的三角形内的至少一个点。这些技术在后续处理中忽略这些内点。

  图像生成器550能够被配置成生成重构图像510。换而言之,图像生成器550能够被配置成使用三角剖分和经由M×M网格上的对应点分配给顶点的颜色来生成(或渲染)图像。生成图像能够包括基于分配给三角形的每个顶点的颜色来绘制由三角剖分模块545所生成的每个三角形。

  在一些实施方式中,至少一个三角形能够具有带不同颜色的顶点。例如,三角形的两个顶点能够经由M×M网格上的对应点分配有绿色,而第三个顶点经由M×M网格上的对应点分配有蓝色。相应地,三角形能够使用插值(例如,线性插值)技术来绘制。换而言之,三角形能够用变化或混合的颜色来绘制。例如,三角形的中心可以被绘制成绿色/蓝色,并在逼近蓝色顶点时被绘制成更蓝,而在逼近绿色顶点时被绘制成更绿。除了线性插值之外,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  关于图6描述的方法步骤可以作为存储在与解码器系统(例如,如图图7和图9所示)相关联的存储器(例如,至少一个存储器910)中的软件代码来执行并由与该解码器系统相关联的至少一个处理器(例如,处理器905)来执行。例如,存储器能够是非暂时性计算机可读存储介质,其具有存储于其上的指令作为计算机可执行程序代码,该代码当在计算机系统上执行时促使计算机系统执行下文关于图6描述的步骤。但可设想替选的实施方式,诸如体现为专用处理器的解码器。

  例如,这些方法步骤可以由专用集成电路或ASIC来执行。例如,ASIC可以被配置为解码器系统505和/或控制器920。虽然下文描述的步骤被描述为由处理器执行,但这些步骤不必由同一处理器来执行。换而言之,至少一个处理器可以执行下文关于图6描述的步骤。

  图6图示出根据至少一个示例性实施方式的用于解码图像数据并生成重构图像的方法。如图6所示,在步骤S605中,接收包括压缩图像数据的文件(例如,压缩图像文件250)。例如,响应于来自移动设备(或其他计算设备)的请求,能够经由通信网络(例如,因特网)接收文件。

  在步骤S610中,解压缩压缩图像数据。例如,文件能够包括多种类型的压缩图像数据。压缩图像数据的类型能够包括压缩颜色表、压缩三角剖分(包括三角形顶点的位置和颜色分配)和压缩颜色表索引中的至少一种。

  解压缩压缩颜色表能够包括执行对用来压缩颜色表的技术的逆操作。例如,基于其中使用中点灰色来预测第一个条目的先前颜色条目,能够对颜色表进行反量化,并能够重新生成颜色通道值。解压缩压缩颜色表能够包括执行对用来压缩颜色表索引的技术的逆操作。能够使用布尔值解码链技术来解压缩颜色索引表。该技术包括使用由对应颜色表条目的剩余计数概率指示的概率来识别每个颜色索引。此外,能够通过空间自适应预测来设置解码每个颜色索引的顺序。

  解压缩压缩三角剖分文件能够包括执行对用来压缩三角剖分文件的技术的逆操作。例如,能够从包括压缩图像数据的文件的报头读取顶点数、网格大小和概率模型。概率模型能够指示网格中的位置包括顶点以及第一网格位置是否包括顶点的可能性。当位置包括(或不包括)顶点时,下一个点不包括(或包括)的概率增加。

  在步骤S615中,生成M×M网格。例如,能够基于从报头读取的网格大小来生成M×M网格。生成M×M网格能够包括基于解压缩的三角剖分文件在M×M网格中被占用(例如,包括顶点)的每个位置处分配点。生成M×M网格能够包括将颜色索引值分配给所述点中的每一个。

  在步骤S620中,将点分配给M×M网格上的多个位置(P)。例如,能够基于解压缩的三角剖分文件将点分配给M×M网格中被占用(例如,包括顶点)的每个位置。生成M×M网格能够包括将颜色索引值分配给所述点中的每一个。

  在步骤S625中,将颜色索引值分配给所分配的点中的每一个。例如,能够基于解压缩的三角剖分文件和/或解压缩的颜色表索引将颜色索引值分配给M×M网格的每个点。

  在步骤S630中,基于相关联的颜色索引值将颜色映射到所分配的点中的每一个。例如,颜色索引值能够被用来在解压缩的颜色表中查找颜色。所返回的颜色(或用来渲染颜色的值)被分配给对应点。

  在步骤S635中,对M×M网格的每个点进行三角剖分。例如,能够使用Delaunay三角剖分技术。通过使用Delaunay三角剖分技术,由三角剖分模块230所生成的每个三角形不包括所生成的三角形内的任何其他点,并且一个三角形的侧边或边与另一个三角形的顶点互不相交。因此,与像素相对应的每个点被用作至少一个三角形中的顶点。也可能使用其他三角剖分技术。例如,一些三角剖分技术能够包括所生成的三角形内的至少一个点。这些技术在后续处理中忽略这些内点。

  在步骤S640中,生成重构图像。换而言之,能够基于三角形和顶点颜色来渲染图像(例如,重构图像510)。例如,生成重构图像能够包括基于分配给与三角形的顶点相对应的每个点的颜色来绘制由三角剖分过程所生成的每个三角形。

  在一些实施方式中,至少一个三角形能够具有带不同颜色的顶点。例如,三角形的两个顶点能够经由M×M网格上的对应点分配有绿色,而第三个顶点经由M×M网格上的对应点分配有蓝色。相应地,三角形能够使用插值(例如,线性插值)技术来绘制。换而言之,三角形能够用变化或混合的颜色来绘制。例如,三角形的中心可以被绘制成绿色/蓝色,并在逼近蓝色顶点时被绘制成更蓝,而在逼近绿色顶点时被绘制成更绿。除了线性插值之外,在一些实施方式中,还能够使用许多其他颜色插值法来绘制三角形(例如,三次插值、复二次插值、五次插值)。

  在一些实施方式中,重构图像(例如,重构图像510)能够在图像的一些部分中包括锯齿边缘。另外,重构图像能够包括可能因三角形边界所致的直线断续。在一些实施方式中,锯齿边缘和断续可能在第一重构图像的边缘中普遍存在。在一些实施方式中,每个三角形使用其自己的顶点的颜色来绘制。然而,例如当顶点被分配有相同(或几乎相同)的颜色时,附近三角形的顶点可能包括有价值的信息。在一些实施方式中,例如,在第二重构图像中,三角形可能包括阴影差异。在一些实施方式中,可能希望在三角形上使用这种一致性信息来重新渲染重构图像。

  在一些实施方式中,深度神经网络能够被用来基于图像统计隐式地创建规则以解决重构图像的锯齿边缘和断续边缘。在一些实施方式中,为了训练深度神经网络,能够使用与用来创建重构图像的三角剖分相同的输入。在一些实施方式中,对于目标输出,能够使用原始图像。在一些实施方式中,训练能够包括使用来自Imagenet的训练集。

  在一些实施方式中,在对象检测与识别中能够使用各种深度卷积网络,对象检测与识别的最终结果可为分类。在一些实施方式中,稀疏输入能够被用来生成完整图像。这能够被表述或称为图像转换任务。在一些实施方式中,对象检测与识别的结果可为完整图像。因此,能够从输入重新创建细节,同时能够允许非空间的局部影响来指引更大的特征并实施全局一致性。在一些实施方式中,既需要来自原始图像的细节又需要所生成的图像的潜在全局协调,从而得出各种细粗细构架,诸如沙漏和u-net。在一些实施方式中,这些架构使输入经过一系列卷积层,这些卷积层逐步对图像进行下采样。达到最小层后,能够对该过程求逆,并且能够将图像扩展到期望的大小。

  在一些实施方式中,输入能够由8个通道组成,包括边缘图像-显示由Delaunay三角剖分所创建的边缘的二进制图像,二进制顶点存在图像,作为线性插值的结果的图像和/或RGB颜色顶点图像。在一些实施方式中,这能够指示分配给每个顶点的颜色(别处为黑色)。

  图7图示出根据至少一个示例性实施方式的包括中间损失的堆叠沙漏网络。如图7所示,能够对256×256×8输入应用Conv2d(大小=7x7,滤波器=256,步幅=2),然后对64×64×256的尺寸应用Conv2d(3x3,f256,s2)。这会馈入带Depth-ToSpace(2x2)的沙漏进行上采样。然后,将第一个“沙漏”的输出附加到下一个“沙漏”的输入。输入能够被表示为256×256图像,其具有8个通道,并且批大小为32。输出能够是相同分辨率的RGB图像。

  在一种示例性实施方式中,使用上述三角剖分技术所生成的重构图像(例如,重构图像510)能够被改进(例如,具有更高的质量、更低的噪声和/或更少的误差),和/或将其转换成完整图像(例如,更大的大小、更多的像素和/或更高的分辨率)。相应地,能够使用线性插值将重构图像的大小调整为256×256图像。如上所述,深度卷积网络(例如,图7的堆叠沙漏网络)的输入能够包括8个通道。经调整大小的重构图像能够被用作深度卷积网络的通道3-5的输入。(例如,如由三角剖分模块545所生成的)三角剖分数据能够包括边缘图,它能够被用作深度卷积网络的通道1的输入。(例如,如由三角剖分模块545所生成的)三角剖分数据能够包括顶点位置图,它能够被用作深度卷积网络的通道2的输入。最终,(例如,如由三角剖分模块545所生成的)三角剖分数据能够包括顶点颜色数据,它能够被用作深度卷积网络的通道6-8的输入。执行深度卷积网络后,输出基于重构图像(例如,重构图像510)的RGB图像。该RGB图像能够具有比重构图像更高的质量。能够在计算设备的显示器上渲染或输出RGB图像。

  在一些实施方式中,能够使用中间损失模块来应用中间监管,该中间损失模块能够分离堆叠沙漏网络的每个沙漏(例如,至少两个沙漏)的输出。在一些实施方式中,中间损失模块能够是DepthToSpace(4x4)和Conv2d(1x1,c3,s1),其双曲正切(tanh)激活的结果是256×256RGB图像。在一些实施方式中,能够在256×256RGB图像与原始图像之间应用均方误差损失。在一些实施方式中,网络的预测能够是第二(或最终)沙漏的中间损失模块的输出。在一些实施方式中,批量标准化能够与Adam优化器配合使用,其中学习率为0.1,ε为1.0。

  图8图示出根据至少一个示例性实施方式的编码器系统800。编码器系统800可被理解为包括可用来实现本文描述的技术或者它们的不同或未来版本的各种标准组件。如图8所示,编码器系统800包括至少一个处理器805、至少一个存储器810、控制器820和编码器系统205。至少一个处理器805、至少一个存储器810、控制器820和编码器系统205经由总线815可通信地耦合。

  至少一个处理器805可以被配置成执行与控制器820和/或编码器系统205相关联的计算机指令。至少一个处理器805可以是共享资源。例如,编码器系统800可以是更大型系统(例如,网络计算机、web服务器和/或诸如此类)的元素。因此,至少一个处理器805可以被配置成执行与更大型系统内的其他元素(例如,服务web页面请求、流式视频和/或诸如此类)相关联的计算机指令。

  至少一个存储器810可以被配置成存储与编码器系统800相关联的数据和/或信息。例如,至少一个存储器810可以被配置成存储颜色表、迭代数据(例如,顶点集、要压缩的数据、修改的顶点信息和/或诸如此类)。例如,至少一个存储器810可以包括在永久存储之前存储处理中数据和/或压缩数据(例如,压缩图像文件250)的缓存器。例如,至少一个存储器810可以被配置成存储模型、神经网络、训练算法、参数、数据存储和诸如此类。

  控制器820可以被配置成生成各种控制信号并将这些控制信号传达到编码器系统800中的各种块。控制器820可以被配置成根据上述方法生成控制信号。根据如本文描述的示例性实施方式,控制器820可以被配置成控制编码器系统205来使用三角剖分对图像数据进行编码。例如,控制器820可以生成并传达指示三角剖分技术、测试方法、至少一个测试准则和/或相关参数的控制信号。

  图9图示出根据至少一个示例性实施方式的解码器系统。在图9的示例中,解码器系统900可以是至少一个计算设备并应当被理解为虚拟地表示配置成执行本文描述的方法的任何计算设备。这样,解码器系统900可被理解为包括可用来实现本文描述的技术或者它们的不同或未来版本的各种标准组件。举例而言,解码器系统900被图示为包括至少一个处理器905以及至少一个存储器910(例如,计算机可读存储介质)、控制器920和解码器系统505。至少一个处理器905、至少一个存储器910、控制器920和解码器系统505经由总线915可通信地耦合。

  至少一个处理器905可以被用来执行存储在至少一个存储器910上的指令,以实现本文描述的各种特征和功能或者附加或替代的特征和功能。至少一个处理器905和至少一个存储器910可以被用于各种其他目的。例如,至少一个存储器910可以表示各种类型的存储器以及可能用于实现本文描述的其中任何一个模块的相关硬件和软件的示例。根据示例性实施方式,编码器系统800和解码器系统900可以被包括在同一个更大型系统中。另外,至少一个处理器805和至少一个处理器905可以是相同的至少一个处理器,并且至少一个存储器810和至少一个存储器910可以是相同的至少一个存储器。再者,控制器820和控制器920可以是相同的控制器。

  至少一个处理器905可以被配置成执行与控制器920和/或解码器系统505相关联的计算机指令。至少一个处理器905可以是共享资源。例如,解码器系统900可以是更大型系统(例如,移动设备、客户端设备和/或诸如此类)的元素。因此,至少一个处理器905可以被配置成执行与更大型系统内的其他元素(例如,web浏览或无线通信)相关联的计算机指令。

  至少一个存储器910可以被配置成存储与解码器系统900相关联的数据和/或信息。例如,至少一个存储器910可以被配置成存储与几何数据和/或诸如此类相关联的模型和参数。

  控制器920可以被配置成生成各种控制信号并将这些控制信号传达到解码器系统900中的各种块。控制器920可以被配置成根据上述方法生成控制信号。控制器920可以被配置成控制解码器系统505以根据如上所述的示例性实施方式使用模型和参数来解码与几何数据相关联的压缩数据。

  图10示出可以与这里描述的技术一起使用的计算机设备1000和移动计算机设备1050的示例。计算设备1000旨在代表各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备1050旨在代表各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话和其他类似的计算设备。此处所示的组件,它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实施方式。

  计算设备1000包括处理器1002、存储器1004、存储设备1006、连接到存储器1004和高速扩展端口1010的高速接口1008以及连接到低速总线1014和存储设备1006的低速接口1012。部件1002、1004、1006、1008、1010和1012中的每一个都使用各种总线互连,并且可以安装在通用主板上或视情况以其他方式安装。处理器1002可以处理用于在计算设备1000内执行的指令,包括存储在存储器1004或存储设备1006中的指令,以在诸如耦合到高速接口1008的显示器1016的外部输入/输出设备上显示GUI的图形信息。在其他实现方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和存储器类型。而且,可以连接多个计算设备1000,每个设备提供必要操作的部分(例如,作为服务器组,刀片服务器组或多处理器系统)。

  存储器1004将信息存储在计算设备1000内。在一个实现方式中,存储器1004是一个或多个易失性存储器单元。在另一实现方式中,存储器1004是一个或多个非易失性存储器单元。存储器1004还可以是另一种形式的计算机可读介质,诸如磁盘或光盘。

  存储设备1006能够为计算设备1000提供大容量存储。在一个实现方式中,存储设备1006可以是或包含计算机可读介质,诸如软盘设备,硬盘设备,光盘设备,或磁带设备,闪存或其他类似的固态存储器设备或设备阵列,包括存储区域网络或其他配置中的设备。计算机程序产品可以有形地体现在信息载体中。该计算机程序产品还可以包含在被执行时执行诸如上述的一种或多种方法的指令。信息载体是计算机或机器可读介质,诸如存储器1004、存储设备1006或处理器1002上的存储器。

  高速控制器1008管理计算设备1000的带宽密集型操作,而低速控制器1012管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实现方式中,高速控制器1008耦合到存储器1004、显示器1016(例如,通过图形处理器或加速器)以及耦合到高速扩展端口1010,其可以接受各种扩展卡(未示出)。在该实现方式中,低速控制器1012耦合到存储设备1006和低速扩展端口1014。包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、定点设备、扫描仪或联网设备,诸如交换机或路由器。

  计算设备1000可以以多种不同的形式实现,如图所示。例如,它可以被实现为标准服务器1020,或者多次被实现在这样的服务器组中。它也可以实现为机架服务器系统1024的一部分。此外,它还可以实现在诸如膝上型计算机1022之类的个人计算机中。或者,来自计算设备1000的部件可以与例如设备1050的移动设备中的其他部件(未示出)组合。这些设备中的每一个可以包含计算设备1000、1050中的一个或多个,并且整个系统可以由彼此通信的多个计算设备1000、1050组成。

  计算设备1050包括处理器1052、存储器1064、诸如显示器1054的输入/输出设备、通信接口1066和收发器1068以及其他部件。设备1050还可被提供有存储设备,例如微驱动器或其他设备,以提供附加的存储。部件1050、1052、1064、1054、1066和1068中的每一个都使用各种总线互连,并且其中一些部件可以安装在通用主板上,也可以采用其他合适的方式安装。

  处理器1052可以执行计算设备1050内的指令,包括存储在存储器1064中的指令。处理器可以被实现为包括分离的以及多个模拟和数字处理器的芯片的芯片组。处理器可以提供例如设备1050的其他部件的协调,诸如用户界面的控制,设备1050运行的应用以及通过设备1050的无线通信。

  处理器1052可以通过控制接口1058和耦合到显示器1054的显示器接口1056与用户通信。显示器1054可以是例如TFT LCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其他合适的显示技术。显示器接口1056可以包括用于驱动显示器1054向用户呈现图形和其他信息的适当电路。控制接口1058可以从用户接收命令并且将其转换以提交给处理器1052。另外,可以提供与处理器1052通信的外部接口1062,以实现设备1050与其他设备的近距离通信。外部接口1062可以例如在一些实现方式中提供用于有线通信,或者在其他实现方式中提供用于无线通信,并且也可以使用多个接口。

  存储器1064在计算设备1050内存储信息。存储器1064可以被实现为一个或多个计算机可读介质、一个或多个易失性存储器单元或一个或多个非易失性存储器单元中的一个或多个。还可以提供扩展存储器1074,并通过扩展接口1072将其连接到设备1050,扩展接口1072可以包括例如SIMM(单列直插存储器模块)卡接口。这样的扩展存储器1074可以为设备1050提供额外的存储空间,或者也可以为设备1050存储应用或其他信息。具体地,扩展存储器1074可以包括用于执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器1074可以被提供为设备1050的安全模块,并且可以用允许安全使用设备1050的指令来编程。此外,可以经由SIMM卡以及附加信息来提供安全应用,诸如以不可入侵的方式在SIMM卡上放置标识信息。

  存储器可以包括例如闪存和/或NVRAM存储器,如下所述。在一个实现方式中,计算机程序产品有形地体现在信息载体中。该计算机程序产品包含在执行时执行诸如上述的一种或多种方法的指令。信息载体是计算机或机器可读介质,例如存储器1064、扩展存储器1074或处理器1052上的存储器,可以例如通过收发器1068或外部接口1062接收。

  设备1050可以通过通信接口1066进行无线通信,该通信接口在必要时可以包括数字信号处理电路。通信接口1066可以提供各种模式或协议下的通信,诸如GSM语音呼叫、SMS、EMS或MMS消息收发、CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS等等。这样的通信可以例如通过射频收发器1068发生。此外,可以进行短距离通信,诸如使用蓝牙、Wi-Fi或其他这样的收发器(未示出)。此外,GPS(全球定位系统)接收器模块1070可以向设备1050提供其他与导航和位置相关的无线数据,设备1050上运行的应用可以适当地使用这些数据。

  设备1050还可以使用音频编解码器1060在听觉上进行通信,音频编解码器1060可以从用户接收语音信息并将其转换为可用的数字信息。音频编解码器1060同样可以诸如通过扬声器为用户生成可听的声音,扬声器例如在设备1050的手机中。这种声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备1050上运行的应用生成的声音。

  如图所示,可以以多种不同形式来实现计算设备1050。例如,它可以被实现为蜂窝电话1080。它也可以被实现为智能电话1082、个人数字助理或其他类似的移动设备的一部分。

  这里描述的系统和技术的各种实施方式可用数字电子电路、集成电路、专门地设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合加以实现。这些各种实施方式可包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括至少一个可编程处理器,其可以是专用的或通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。这里描述的系统和技术的各种实施方式可作为可组合软件和硬件方面的电路、模块、块或系统被实现和/或一般地在本文中被称为可组合软件和硬件方面的电路、模块、块或系统。例如,模块可以包括在处理器(例如,形成在硅衬底、GaAs衬底等上的处理器)或某个其它可编程数据处理装置上执行的功能/行为/计算机程序指令。

  上述示例实施例中的一些被描述为作为流程图描绘的过程或方法。尽管流程图将操作描述为顺序过程,然而可以并行地、并发地或同时地执行许多操作。此外,可以重新布置操作的次序。这些过程可以在其操作完成时被终止,但是也可以具有未包括在图中的附加步骤。这些过程可以对应于方法、函数、程序、子例程、子程序等。

  上面讨论的方法(其中的一些通过流程图来图示)可以通过硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合来实现。当用软件、固件、中间件或微码加以实现时,用于执行必要的任务的程序代码或代码段可以被存储在诸如存储介质的机器或计算机可读介质中。处理器可以执行必要的任务。

  本文中公开的具体结构和功能细节仅仅是表示性的以用于描述示例实施例的目的。然而,示例实施例被以许多替代形式具体实现,而不应该被解释为限于仅本文中阐述的实施例。

  应理解的是,尽管可以在本文中使用术语第一、第二等来描述各种元件,然而这些元件不应该受这些术语限制。这些术语仅用于区分一个元件和另一元件。例如,第一元件能被称为第二元件,并且类似地,第二元件能被称为第一元件,而不脱离示例实施例的范围。如本文中所使用的,术语和/或包括相关列举项目中的一个或多个的任何和所有组合。

  应理解的是,当一个元件被称为连接或者耦合到另一元件时,它可直接地连接或者耦合到另一元件或者可以存在中间元件。相比之下,当一个元件被称为直接地连接或者直接地耦合到另一元件时,不存在中间元件。应该以相似的方式解释用于描述元件之间的关系的其它单词(例如,在…之间对直接地在…之间、相邻对直接地相邻等)。

  本文中使用的术语仅用于描述特定实施例的目的而不旨在限制示例实施例。如本文中所使用的,除非上下文另外清楚地指示,否则单数形式一(a/an)和该(the)也旨在包括复数形式。应进一步理解的是,术语含、含有、包括和/或包括有当在本文中使用时,指定存在陈述的特征、整数、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组。

  还应该注意的是,在一些替代实施方式中,所指出的功能/行为可以不按图中指出的次序发生。例如,取决于所涉及的功能性/行为,相继示出的两个图实际上可以被并发地执行或者有时可以被以相反的次序执行。

  除非另外定义,否则本文中使用的所有术语(包括技术和科学术语)具有与由示例实施例所属的领域的普通技术人员所通常理解的相同的含义。应进一步理解的是,除非在本文中明确地如此定义,否则术语(例如,在常用词典中定义的那些术语)应该被解释为具有与其在相关领域的上下文中的含义一致的含义,而不应在理想化或过于正式的意义上进行解释。

  上述示例实施例的各部分和对应的详细描述是按软件或算法以及对计算机存储器内的数据比特的操作的符号表示来呈现的。这些描述和表示是本领域的普通技术人员用来有效地将其工作的实质传达给本领域的其它普通技术人员的描述和表示。算法(当在这里使用该术语时,并且当一般地使用它时)被认为是导致期望结果的步骤的自相一致序列。这些步骤是要求对物理量物的理操纵的那些步骤。通常,尽管不一定,然而这些量采取能够被存储、转移、组合、比较和以其它方式操纵的光学信号、电信号或磁信号的形式。有时主要由于通用的原因,将这些信号称为比特、值、元素、符号、字符、术语、数字等已证明是方便的。

  在上述说明性实施例中,对可以作为程序模块或功能过程被实现的操作(例如,形式为流程图)的行为和符号表示的引用包括执行特定任务或者实现特定抽象数据类型并且可以使用现有结构元件处的现有硬件来描述和/或实现的例程、程序、对象、组件、数据结构等。这种现有硬件可以包括一个或多个中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路、现场可编程门阵列(FPGA)计算机等。

  然而,应该记住的是,所有这些和类似的术语都将与适当的物理量相关联并且仅仅是应用于这些量的方便标签。除非另外具体地陈述,或者如从讨论中显而易见的,诸如处理或计算或计算出或确定显示等的术语指代计算机系统或类似的电子计算设备的动作和过程,所述计算机系统或类似的电子计算设备将被表示为计算机系统的寄存器和存储器内的物理电子量的数据操纵并变换成被类似地表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内的物理量的其它数据。

  另外注意的是,示例实施例的软件实现的方面通常被编码在某种形式的非暂时性程序存储介质上或者实现在某种类型的传输介质上。程序存储介质可以是磁的(例如,软盘或硬盘驱动器)或光学的(例如,紧致盘只读存储器或CD ROM),并且可以是只读或随机存取的。类似地,传输介质可以是双绞线对、同轴电缆、光纤或为本领域所知的某个其它适合的传输介质。示例实施例不受任何给定实施方式的这些方面限制。

  最后,还应该注意的是,虽然所附权利要求书陈列本文中描述的特征的特定组合,但是本公开的范围不限于此后要求保护的特定组合,而是替代地扩展到包含本文中公开的特征或实施例的任何组合,而不管此时是否已在所附权利要求中具体地枚举了该特定组合。

《使用三角剖分的图像压缩和解压缩.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)