首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 请求书 / 指定 / 对图像进行解码的方法及装置

对图像进行解码的方法及装置

阅读:707发布:2022-11-26

专利汇可以提供对图像进行解码的方法及装置专利检索,专利查询,专利分析的服务。并且本 申请 公开了对图像进行解码的方法及装置,其中,所述方法包括:接收对 指定 图像进行解码的 请求 ;将所述指定图像分解成多条解码任务;确定当前终端设备的 中央处理器 CPU以及图形处理器GPU分别在解码图像时的解码能 力 信息;根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。通过本申请,能够提高图像的解码效率。,下面是对图像进行解码的方法及装置专利的具体信息内容。

1.一种对图像进行解码的方法,其特征在于,包括:
接收对指定图像进行解码的请求
将所述指定图像分解成多条解码任务;
确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能信息;
根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
2.根据权利要求1所述的方法,其特征在于,所述确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息,包括:
确定所述指定图像的格式;
确定当前终端设备的CPU以及GPU分别在解码该格式的图像时的解码能力信息。
3.根据权利要求1所述的方法,其特征在于,所述确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息,包括:
确定所述指定图像的格式;
确定所述指定图像在该格式中的编码类型;
确定当前终端设备的CPU以及GPU分别在解码该格式下该编码类型的图像时的解码能力信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息,包括:
获取当前终端设备的型号信息;
根据所述当前终端设备的型号,查询预先建立的数据库,获取当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息;其中,所述数据库中保存有多个终端设备的型号与其搭载的CPU以及GPU分别在解码图像时的解码能力信息之间的对应关系。
5.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
预先利用预置的图像对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
所述确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息,包括:
根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
6.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
预先利用解码请求中携带的图像,对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
所述确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息,包括:
根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
7.根据权利要求1所述的方法,其特征在于,所述根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理,包括:
根据解码任务的总条数以及所述解码能力比,向CPU分配第一条数的解码任务,向GPU分配第二条数的解码任务;
以所述第二条数的解码任务为参数,以非阻塞方式向所述GPU发送解码请求,以便所述GPU对所述第二条数的解码任务进行解码;
在CPU中对所述第一条数的解码任务进行解码。
8.根据权利要求7所述的方法,其特征在于,还包括:
在将所述CPU中的解码完成后,从所述GPU中读回GPU的解码结果;
将所述CPU的解码结果与所述GPU的解码结果进行合并,并将合并结果返回。
9.根据权利要求8所述的方法,其特征在于,所述将所述多条解码任务分配给所述CPU以及GPU进行并行处理时,还包括:
记录分配给CPU的解码任务与所述分配给GPU的解码任务在所述指定图像中的相对位置关系信息;
所述将所述CPU的解码结果与所述GPU的解码结果进行合并,包括:
根据所述CPU的解码结果的保存地址以及所述相对位置关系,确定所述GPU的解码结果的保存地址,并将所述GPU的解码结果保存到该保存地址。
10.根据权利要求1所述的方法,其特征在于,所述指定图像包括JPEG格式的图像,所述将所述指定图像分解成多条解码任务,包括:
对所述指定图像进行最小编码单元MCU解码,得到多个MCU行,将每个MCU块行确定为一条解码任务,每个MCU块行由多个MCU块组成。
11.根据权利要求10所述的方法,其特征在于,还包括:
将分配给GPU处理的每个MCU块分别划分为预置数目的数据组;
计算获得在GPU中进行反向离散余弦变换IDCT之后,各个数据组对应的计算结果在保存时的地址偏移量;
在向所述GPU分配解码任务时,还将所述分组信息以及各组对应的地址偏移量信息发送给所述GPU,以便GPU按照所述分组信息,将同一个MCU块分配给多个线程进行IDCT计算,并按照所述地址偏移量进行IDCT计算结果的保存,以用于后续步骤按照地址偏移量读取所述IDCT计算结果,并进行后续解码计算。
12.根据权利要求1至3任一项所述的方法,其特征在于,所述接收对指定图像进行解码的请求之前,还包括:
服务器发送商品对象的浏览请求;
接收所述服务器返回的包含有商品对象图片信息的页面信息,在显示该页面信息的过程中,接收所述对指定图像进行解码的请求。
13.一种对图像进行解码的装置,其特征在于,包括:
解码请求接收单元,用于接收对指定图像进行解码的请求;
解码任务分解单元,用于将所述指定图像分解成多条解码任务;
解码能力信息确定单元,用于确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能力信息;
解码任务分配单元,用于根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
14.根据权利要求13所述的装置,其特征在于,所述解码能力信息确定单元包括:
格式确定子单元,用于确定所述指定图像的格式;
第一能力信息确定子单元,用于确定当前终端设备的CPU以及GPU分别在解码该格式的图像时的解码能力信息。
15.根据权利要求13所述的装置,其特征在于,所述解码能力信息确定单元包括:
格式确定子单元,用于确定所述指定图像的格式;
编码类型确定子单元,用于确定所述指定图像在该格式中的编码类型;
第二能力信息确定子单元,用于确定当前终端设备的CPU以及GPU分别在解码该格式下该编码类型的图像时的解码能力信息。
16.根据权利要求13至15任一项所述的装置,其特征在于,所述解码能力信息确定单元包括:
终端型号信息获取子单元,用于获取当前终端设备的型号信息;
查询子单元,用于根据所述当前终端设备的型号,查询预先建立的数据库,获取当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息;其中,所述数据库中保存有多个终端设备的型号与其搭载的CPU以及GPU分别在解码图像时的解码能力信息之间的对应关系。
17.根据权利要求13至15任一项所述的装置,其特征在于,还包括:
第一测试单元,用于预先利用预置的图像对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
所述解码能力信息确定单元具体用于:
根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
18.根据权利要求13至15任一项所述的装置,其特征在于,还包括:
第二测试单元,用于预先利用解码请求中携带的图像,对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
所述解码能力信息确定单元具体用于:
根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
19.根据权利要求13所述的装置,其特征在于,所述解码任务分配单元包括:
分配子单元,用于根据解码任务的总条数以及所述解码能力比,向CPU分配第一条数的解码任务,向GPU分配第二条数的解码任务;
解码请求发送子单元,用于以所述第二条数的解码任务为参数,以非阻塞方式向所述GPU发送解码请求,以便所述GPU对所述第二条数的解码任务进行解码;
解码子单元,用于在CPU中对所述第一条数的解码任务进行解码。
20.根据权利要求19所述的装置,其特征在于,还包括:
解码结果读回单元,用于在将所述CPU中的解码完成后,从所述GPU中读回GPU的解码结果;
解码结果合并单元,用于将所述CPU的解码结果与所述GPU的解码结果进行合并,并将合并结果返回。
21.根据权利要求20所述的装置,其特征在于,还包括:
记录单元,用于所述将所述多条解码任务分配给所述CPU以及GPU进行并行处理时,记录分配给CPU的解码任务与所述分配给GPU的解码任务在所述指定图像中的相对位置关系信息;
所述解码结果合并单元具体用于:
根据所述CPU的解码结果的保存地址以及所述相对位置关系,确定所述GPU的解码结果的保存地址,并将所述GPU的解码结果保存到该保存地址。
22.根据权利要求13所述的装置,其特征在于,所述指定图像包括JPEG格式的图像,所述解码任务分解单元具体用于:
对所述指定图像进行最小编码单元MCU解码,得到多个MCU块行,将每个MCU块行确定为一条解码任务,每个MCU块行由多个MCU块组成。
23.根据权利要求22所述的装置,其特征在于,还包括:
数据组划分单元,用于将分配给GPU处理的每个MCU块分别划分为预置数目的数据组;
地址偏移量计算单元,用于计算获得在GPU中进行反向离散余弦变换IDCT之后,各个数据组对应的计算结果在保存时的地址偏移量;
发送单元,用于在向所述GPU分配解码任务时,还将所述分组信息以及各组对应的地址偏移量信息发送给所述GPU,以便GPU按照所述分组信息,将同一个MCU块分配给多个线程进行IDCT计算,并按照所述地址偏移量进行IDCT计算结果的保存,以用于后续步骤按照地址偏移量读取所述IDCT计算结果,并进行后续解码计算。
24.根据权利要求13至15任一项所述的装置,其特征在于,还包括:
浏览请求发送单元,用于所述接收对指定图像进行解码的请求之前,向服务器发送商品对象的浏览请求;
页面信息接收单元,用于接收所述服务器返回的包含有商品对象图片信息的页面信息,在显示该页面信息的过程中,接收所述对指定图像进行解码的请求。

说明书全文

对图像进行解码的方法及装置

技术领域

[0001] 本申请涉及图像解码技术领域,特别是涉及对图像进行解码的方法及装置。

背景技术

[0002] 目前,在很多的移动终端应用程序中,对图像进行解码渲染也是经常用到的处理技术。尤其是淘宝、天猫等用于展示商品的移动应用来说,图片承载了商品非常重要的信息,因为它可以给客户提供非常直观、快捷的信息,而且可以从不同度展示商品的概貌或者细节信息。但是,由于当前移动设备使用的CPU(一般是ARM)处理能较PC机等还有一定的差距,再加上移动设备对耗电等方面具有较强的敏感性,因此,如何能够使移动终端应用迅速地将图像进行解码,成为了移动终端应用将其渲染到屏幕过程中非常关键的一环。
[0003] 基于上述原因,人们一直在寻找各种加速图像处理的方法,然而受到CPU本身在浮点计算能力上的限制,对于那些需要高密度计算的图像处理操作,并没有在处理性能与效率上有明显的进步。随着可编程图形处理器(GPU)在性能上的飞速发展,利用GPU加速图像处理的技术逐渐成为研究热点。GPU是一种专用于进行图像处理的核心处理器,其相对于显卡的作用,就相当于CPU在整个终端设备中的作用。但是,现有技术中,使用GPU进行解码使得其加速的效率并不能很好地满足期望,主要体现在以下几个方面:
[0004] 第一,在GPU上开始进行处理之前,首先需要将数据其写入到GPU的内存上,同时,由于移动应用也无法获知显示时缓存的具体位置,因此,在GPU处理完成之后,CPU主机侧还需要将数据读回到CPU内存中。显而易见,在GPU上进行并行解码产生的加速增益的幅度会被数据输入、输出(IO)降低。
[0005] 第二,在将数据写入到GPU,触发GPU进行解码之后,CPU需要同步等待GPU解码完成,再将解码完成的数据读回到CPU内存。该过程会导致GPU进行解码的时间内,CPU空闲地等待,最终导致CPU计算能力在这段处理时间上的浪费。
[0006] 总之,如何进一步提高图像的解码速率,成为迫切需要本领域技术人员解决的技术问题。发明内容
[0007] 本申请提供了对图像进行解码的方法及装置,能够提高图像的解码效率。
[0008] 本申请提供了如下方案:
[0009] 一种对图像进行解码的方法,包括:
[0010] 接收对指定图像进行解码的请求
[0011] 将所述指定图像分解成多条解码任务;
[0012] 确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能力信息;
[0013] 根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
[0014] 一种对图像进行解码的装置,包括:
[0015] 解码请求接收单元,用于接收对指定图像进行解码的请求;
[0016] 解码任务分解单元,用于将所述指定图像分解成多条解码任务;
[0017] 解码能力信息确定单元,用于确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能力信息;
[0018] 解码任务分配单元,用于根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
[0019] 根据本申请提供的具体实施例,本申请公开了以下技术效果:
[0020] 通过本申请实施例,可以实现CPU与GPU的联合解码,对两者的解码任务进行分配时,是以各自的解码能力为依据进行分配,并且进一步可以是在CPU侧进行完初步的解码,将单幅图像分解成多条解码任务之后,再以解码任务为单位进行任务量的分配,这样,从任务分配之后,CPU与GPU需要执行的操作步骤都是相同的,只不过按照各自的解码能力分配了不同的任务量,因此,可以最大限度地保证两者解码的同步,避免出现其中一处理器解码完成之后长时间等待另一处理器解码完成的情况,从而从整体上提高图像的解码效率。
[0021] 当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明
[0022] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是本申请实施例提供的方法的流程图
[0024] 图2时本申请实施例提供的另一方法流程图;
[0025] 图3是本申请实施例提供的装置的示意图。

具体实施方式

[0026] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
[0027] 在本申请实施例中,为了提高图像解码的效率,可以采用CPU与GPU联合解码的方式。具体实现时,可以将单幅图像分解成多条解码任务,并且可以根据当前终端设备中CPU与GPU在解码图像时的解码能力比,进行解码任务的分配,这样可以尽可能的保障CPU与GPU在解码时的同步,避免其中一个处理器长时间等待另一个处理器对同一幅图像的解码结果的情形,充分利用CPU与GPU的图像解码能力,从而提高终端的的图像解码效率。下面对具体的实现方式进行详细介绍。
[0028] 参见图1,本申请实施例首先提供了一种对图像进行解码的方法,该方法具体可以包括以下步骤:
[0029] S101:接收对指定图像进行解码的请求;
[0030] 该步骤中接收到的请求可以是上层代码发送的,例如,浏览器等应用的前端代码等。具体的指定图像一般是指一幅图像,也即,本申请实施例中的各个步骤,描述的是对单张图像进行解码的过程,例如,某商品对象的某个描述图片等。
[0031] 在实际应用中,该方法可以应用于电子商务交易平台中对商品对象图片的展示过程,或者其他图片相关应用软件、程序等对图片的展示过程。在对商品对象图像进行展示的情况下,客户端可以向服务器发送商品对象的浏览请求,之后可以接收到服务器返回的包含有商品对象图片信息的页面信息,在显示该页面信息的过程中,就可以接收到上层代码对指定图像进行解码的请求,其中,该指定图像就可以是待显示的各个商品对象图片中的其中一个,在页面中包含有多个商品对象图片的情况下,每个商品对象图片都可以按照本申请实施例的方法进行显示。
[0032] S102:将所述指定图像分解成多条解码任务;
[0033] 在接收到解码请求之后,在本申请实施例中,可以首先对图像进行初步的解码,将其分解成多条解码任务。例如,对于JPEG格式的图像而言,可以首先进行MCU解码,这样,可以将一幅图像分解为多个MCU行,每个MCU块行由多个MCU块组成。这样,就可以以MCU块行为单位在CPU与GPU之间进行解码任务分配。
[0034] S103:确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能力信息;
[0035] 所谓解码能力信息可以是由多种具体的参数来进行度量,例如,解码速率,或者在解码同一幅图像时的时间,等等。在实际应用中,一般会有多种CPU型号和多种GPU型号,具体到某个终端设备,可能搭载其中某个型号的CPU、某个型号的GPU,其中,CPU与GPU可能是相互独立,还可能集成在一起,等等。另外,不同的终端设备在其他硬件配置上可能也不相同,包括内存大小等等。因此,对于不同的终端设备而言,其CPU、GPU在解码图像时的解码能力上可能是各不相同的。本申请实施例根据当前终端设备的CPU、GPU解码图像时的解码能力,进行解码任务的分配。
[0036] 需要说明的是,实际应用中的图像一般有多个格式,例如,可以包括JPEG格式、jpg格式、tif格式、bmp格式等等。对于同一终端设备而言,其CPU、GPU在解码不同格式的图像时,可能会具有不同的解码能力,因此,在确定上述解码能力信息时,可以首先确定出指定图像的格式,然后确定当前终端设备的CPU以及GPU分别在解码该格式的图像时的解码能力信息,这样,后续用该信息进行解码任务的分配时,可以更好的实现两个处理器解码的同步。
[0037] 另外,在同一格式的图像在具体的编码类型上还可能有多种,同一终端设备的CPU、GPU在解码同一图像格式下不同编码类型的图像时,也可能会表现出不同的解码能力。因此,为了进一步提高同步的精度,具体实现时,还可以首先确定出指定图像的格式,然后确定指定图像在该格式中的编码类型,之后可以确定当前终端设备的CPU以及GPU分别在解码该格式下该编码类型的图像时的解码能力信息,这样,就可以利用该信息在CPU与GPU之间进行解码任务的分配。例如,对于JPEG格式的图像而言,IDCT(反向离散余弦变换)方式有低速高精度整数方式、高速次精度整数方式以及快速浮点类型,Upsample又可以分为fullsize、h2v1、h2v2、h2v1_fancy以及h2v2_fancy等等,不同的IDCT、Upsample方式可以组合成多种具体的编码类型。同一CPU或者GPU对不同编码类型的JPEG图像也可能会体现出不同的解码能力,例如解码时的横向采样因子和纵向采样因子会影响IDCT和upsample的处理时间。这样,可以对于JPEG格式的图像而言,可以分配获取当前终端设备在解码具体编码类型的JPEG格式图像时的解码能力信息,并利用该信息进行解码任务的分配。
[0038] 其中,具体在获取当前终端设备的CPU、GPU的解码能力信息时,可以有多种实现方式,下面举例进行介绍。
[0039] 在其中一种实现方式下,考虑到相同型号的终端设备,由于具有相同的硬件配置信息,例如相同型号的CPU、GPU等,其在解码图像时的解码能力一般是相同的。所以,可以预先通过测试等方式建立一个第一数据库,在该第一数据库中保存有多个终端设备的型号与其搭载的CPU以及GPU分别在解码图像时的解码能力信息之间的对应关系,因此,在当前终端设备中接收到解码请求时,就可以首先获取当前终端设备的型号,然后可以利用该型号在前述数据库中查找到当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。例如,在实际应用中,该第一数据库的结构可以如以下表1所示:
[0040] 表1
[0041]
[0042] 例如,终端设备型号可以包括iPhone5S 32G、三星S416G等等,在该表1中,用速率来表示解码能力,在实际应用中,也可以用其他参数来表示。
[0043] 当然,该数据库中还可以保存有各个终端设备的CPU、GPU分别在解码各种格式的图像时对应的解码能力值。此时,第一数据库的结构可以如以下表2所示:
[0044] 表2
[0045]
[0046] 其中,具体的图像格式可以包括JPEG格式、jpg格式、tif格式、bmp格式等等。
[0047] 此外,还可以在第一数据库中保存各格式下不同的编码类型分别对应的解码能力信息,这里不再对具体第一数据库的结构进行介绍。
[0048] 需要说明的是,以上表1、表2所示,第一数据库中都是记录了各个终端设备的CPU以及GPU各自的解码能力取值,在实际应用中,由于实际用于进行解码任务分配的信息,是两者的解码能力之间的比值,因此,在第一数据库中也可以直接保存该比值,这样,通过查询该第一数据库,可以直接查询到当前终端设备中,CPU与GPU的解码能力比。例如,此时的第一数据库的结构可以如以下表3所示:
[0049] 表3
[0050]
[0051] 类似的,也可以在数据库中保存各型号的终端设备在处理各格式的图像时,CPU与GPU的解码能力比值,例如,具体的第一数据库的结构可以如以下表4所示:
[0052] 表4
[0053]
[0054]
[0055] 当然,在实际应用中,具体到终端设备中,其CPU、GPU的解码能力可能不仅仅与型号等有关,还可以能与其内存占用情况等有关,因此,通过上述查表的方式获取解码能力信息时,可能并不能很准确的体现出具体的终端设备中CPU、GPU的解码能力。因此,在本申请实施例中,还可以在具体的终端设备中来获取CPU、GPU的解码能力信息。
[0056] 例如,在其中一种实现方式下,可以预先利用预置的图像对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果,这样,具体在接收到一个编码请求之后,可以根据该保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。具体的,可以预先准备测试专用的JPEG图像(例如,在安装解码器时,该测试专用的JPEG图像可以随着安装包一起被下载到终端设备本地),之后可以在终端设备中,按照步骤S102所述的方式,将预置的图像分解成多条测试用解码任务,然后,分别单独使用CPU、GPU对该专用的JPEG图像进行解码,之后,可以根据全部解码任务的任务量以及各自解码所花费的时间,计算出两者的解码速率,这样,就可以将这种速率信息作为各自的解码能力信息保存在终端设备本地预置的数据表中。进而,在接收到具体的解码请求之后,就可以通过查询该数据表,获取到当前终端设备的CPU以及GPU在解码图像时的解码能力信息。当然,这种专用的JP图像还可以有多个,分别对应不同的格式,同一格式下还可以有多张专用的图像,分别对应不同的编码类型,在测试时,可以分别测试CPU、GPU分别对各个格式或者各个编码类型的图像的解码能力信息,并保存到终端设备中,之后在接收到具体的解码请求后,就可以利用这些在本机测试获取到的数据,来进行解码任务的分配了。
[0057] 另外,对于移动终端设备而言,如果需要下载额外的测试专用图像,并且额外运行测试程序,对于资源有限的移动终端设备而言,可能会使得移动终端设备的性能受到影响。为此,在本申请实施例中,还可以预先利用实际的解码请求中携带的图像,对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果,这样,后续再受到新的解码请求时,就可以根据之前已经保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
[0058] 例如,在首次接收到解码请求时,由于当前终端设备中还没有获取到关于该设备中的CPU以及GPU在解码能力方面的任何信息,因此,可以在将当前请求中携带的图像分解成多条解码任务后,全部分配给其中一个处理器(例如CPU)进行解码,然后根据解码任务的任务量以及完成解码所花费的时间,计算出该处理器的解码能力信息,并保存到当前终端设备本地。第二次接收到解码请求时,可以在将当前请求中携带的图像分解成多条解码任务后,全部分配给另一个处理器(例如GPU)进行解码,然后根据解码任务的任务量以及完成解码所花费的时间,计算出该另一个处理器的解码能力信息,并保存在当前终端设备本地。这样,从第三次收到解码请求开始,就可以直接查询终端设备本地的数据表,获取CPU以及GPU的解码能力信息,并以此进行解码任务的分配了。
[0059] 当然,在这种实现方式下,也可以分别按照不同的图像格式、同一格式下不同编码类型,进行解码能力测试。在首次接收到对某格式的图像的解码请求时,可以在将当前请求中携带的该格式的图像分解成多条解码任务后,全部分配给其中一个处理器(例如,CPU)进行解码,然后计算出该处理器的解码能力信息,并保存到当前终端设备本地。第二次接收到对该格式的图像的解码请求时,可以在将当前请求中携带的该格式的图像分解成多条解码任务后,全部分配给另一个处理器(例如,GPU)进行解码,然后计算出该另一个处理器的解码能力信息,并保存在当前终端设备本地。这样,从第三次收到该格式的图像的解码请求开始,就可以直接查询终端设备本地的数据表,获取CPU以及GPU在处理该格式的图像时的解码能力信息,并以此进行解码任务的分配了。对于同一格式下不同编码类型的情况也是类似的,这里不再详述。
[0060] S104:根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
[0061] 在获取到CPU与GPU之间的解码能力比之后,就可以以此为依据,将之前分解得到的多条解码任务分配给CPU以及GPU进行并行处理。具体实现时,可以根据解码任务的总条数以及所述解码能力比,向CPU分配第一条数的解码任务,向GPU分配第二条数的解码任务,其中第一条数与第二条数之和等于解码任务的总条数,第一条数与第二条数之间的比例可以尽可能与CPU、GPU之间的解码能力比相接近或相等,以提高同步的精度。
[0062] 在将CPU中的解码完成后,可以从GPU中读回GPU的解码结果,并将CPU的解码结果与GPU的解码结果进行合并,得到合并的解码结果。并且进一步地,还可合并的结果返回。
[0063] 在实际应用中,一般不太可能做到完全同步,这样,CPU在执行完解码之后,GPU有可能尚未完成解码,也有可能已经完成解码,因此,具体在从GPU中读回GPU的解码结果时,CPU可以尝试从GPU读回第二行数的各个MCU块行的解码结果。具体的,可以判断GPU是否已完成解码,如果是,则从GPU中读回GPU的解码结果,否则就可以等待,直到判断出GPU已完成解码时,从GPU中读回GPU对第二行数的MCU块行的解码结果。
[0064] 具体在进行解码结果的合并时,主要就是将两者的解码结果按照既定的规则进行保存。所谓的既定的规则主要是根据分配给各自的解码任务在原图像中的位置来确定。因此,具体实现时,可以记录分配给CPU的解码任务与分配给GPU的解码任务在原始指定图像中的相对位置关系信息,这样,根据CPU的解码结果的保存地址以及该相对位置关系,就可以确定出GPU的解码结果的保存地址,并将GPU的解码结果保存到该保存地址,即可完成解码结果的合并。
[0065] 例如,假设某JPEG图像共有100个MCU块行,其中60行需要分配给CPU进行解码,40行需要分配给GPU进行解码,则在进行分配时,可以将前60行分配给CPU,后40行分配给GPU,这样,在CPU完成解码并将解码结果保存在某地址之后,可以确定出CPU解码结果保存的结束地址,读回GPU的解码结果后,可以以该结束地址的下一地址单位为起始地址,对GPU的解码结果进行保存,也即,CPU的解码结果与GPU的解码结果在保存地址上保持连续性,这样就实现了CPU与GPU解码结果的合并,合并后的解码结果就可以返回给上层代码,例如,返回给浏览器的显示模块进行渲染、显示等后续操作。
[0066] 为了便于理解,下面的实施例二中,以JPEG图像的解码为例,对本申请实施例进行进一步详细的介绍。
[0067] 首先对JPEG图像解码的基本操作步骤进行简单的介绍。在进行JPEG图像解码时,首先按照JPEG文件数据存储方式,把要解码的文件的相关信息一一读出,为接下来的解码工作做好准备。由于图像数据流是由MCU组成,而MCU是用数据单元和颜色分量构成,图像数据流是以位(bit)为单位存储信息的,并且内部的数据都是在编码时通过正向离散余弦变换(FDCT)进行时空域向频率域变换而得到的结果,因此,解码时主要就包括以下几个步骤:
[0068] 首先需要对JPEG图像进行MCU解码,将JPEG图像解码成若干个MCU块行,每个MCU块行由多个MCU块组成。
[0069] 之后,由于文件中的数据是在编码时通过正向离散余弦变换(FDCT)进行时空域向频率域变换而得到的结果,所以解码时就需要将其反向离散余弦变换(IDCT),也就是把颜色分量单元矩阵中的频率域数值向时空域转换,并且,原来的频率域的矩阵大小为8*8,则经过反向离散余弦变换后,时空域的矩阵仍然是8*8。
[0070] IDCT之后,还需要进行上采样(upsample)。
[0071] 最后,要在屏幕上显示图像,就需要以RGB模式表示图像的颜色。所以,解码时需要把YCrCb模式向RGB模式转换,为便于描述,将该步骤称为YCC2RGB。
[0072] 一般的JPEG图像解码都是包括上述几个主要步骤。在本申请实施例中,采用CPU与GPU联合解码的方式,也即对于同一解码任务,由CPU与GPU来共同完成,各自分担解码任务中的一部分。但是具体解码步骤,仍然是包括上述几个步骤,并且具体每个步骤中的具体实现都不属于本申请实施例的重点,因此,都将不再详述,但是,关于如何进行解码任务的分配,以最终达到最大程度地提高解码效率的目的属于本申请实施例的重点内容,因此,将对该内容进行详细介绍。
[0073] 参见图2,在对JPEG图像进行解码时,可以包括以下步骤:
[0074] S201:接收对指定JPEG图像进行解码的请求;
[0075] S202:对所述指定JPEG图像进行MCU解码,得到多个MCU块行,其中,每个MCU块行由多个MCU块组成;
[0076] 接收到解码请求之后,可以首先在CPU中对该图像进行MCU解码,全部的MCU解码操作都是在CPU中进行。CPU解码之后,可以得到多个MCU块行,每个MCU块行由多个MCU块组成。这样,就可以以MCU块行为单位在CPU与GPU之间进行解码任务分配。其中,每个MCU块行中具体包括的MCU块的数量,一般是由具体图像的高度、宽度以及横向和纵向采样因子等因素决定的。
[0077] 需要说明的是,在本申请实施例中,解码任务分配的最小粒度是MCU块行,这是因为在GPU中需要进行upsample(上采样)的操作,如果进行处理的数据不是完整的MCU块行,会导致在GPU进行上采样计算的失败。
[0078] S203:确定当前终端设备的CPU以及GPU分别在解码JPEG图像时的解码能力信息;
[0079] 如实施例一中所述,在确定解码能力信息时,可以有多种方式,其中包括查询预先建立的数据库,或者,使用预置的测试专用图像进行测试,或者,在实际的解码过程中进行测试,等等。在该实施例二中,主要针对在实际解码过程中进行测试的方式下,一种具体的实现方式进行详细介绍。
[0080] 具体的,在接收到对某指定JPEG图像进行解码的请求时,可以获取该指定JPEG图像的编码类型,然后判断当前终端设备中是否已保存有CPU以及GPU在处理该编码类型JPEG图像时的处理速率信息,如果两者都还没有,则证明是首次在该终端设备上对该编码类型的图像解码,因此,可以将全部解码任务分配给CPU,也即该JPEG图像的全部解码操作全部都在CPU上完成,之后可以计算此次解码任务的任务量,并记录CPU完成该解码任务所花费的时间。需要说明的是,由于MCU解码的工作更适合在CPU上进行,因此,在本申请实施例中,后续在使用CPU与GPU联合解码时,可以是在CPU上完成全部的MCU解码操作之后,再向CPU和GPU分配后续的任务。因此,在这里在计算CPU的任务量以及所花费的时间时,都可以是从完成MCU解码之后开始计算,也即,是从完成MCU解码开始到完成全部该解码任务的任务量以及所花费的时间。之后,根据该任务量与所花费时间之间的比例,就可以计算出CPU在解码该编码类型JPEG图像时的解码速率,并作为CPU在解码该编码类型的JPEG图像时的解码能力信息在当前终端设备中保存。需要说明的是,对于该JPEG图像,在使用CPU进行解码之后,就可以将解码结果返回,后续再接收到其他的解码请求时,如果发现仍然是该编码类型的JPEG图像,则可以直接根据已经保存的信息获取到当前终端设备中的CPU在解码该类型的JPEG图像时的处理速率。
[0081] 如果在接收到对某指定JPEG图像进行解码的请求,并获取到该图像的编码类型后,发现当前终端设备中仅保存有CPU在对该编码类型的JPEG图像进行解码时的处理速率信息,则证明是第二次在该终端设备中对该编码类型的JPEG图像进行解码。因此,可以使用GPU对该图像进行解码,以测试GPU对该编码类型的JPEG图像进行解码时的处理速率。但在具体实现时,由于CPU更适合进行MCU解码操作,因此,在本申请实施例后续提供的CPU与GPU联合解码的优选方案中,MCU解码操作也全部都是在CPU中来完成。因此,在进行测试时,可以如下进行:首先在CPU中对当前指定JPEG图像进行MCU解码,然后将MCU解码结果发送到GPU,以便GPU在MCU解码结果基础上进行后续的解码操作,包括IDCT、upsample、YCC2RGB等。在GPU解码完成后,CPU再将GPU解码结果读回,然后以计算分配给GPU的解码任务的任务量,并记录GPU执行解码过程所花费的时间;另外,对GPU上的解码时间的测试时,还可加上将MCU解码输出数据写入到GPU内存的时间和最后将解码后的RGB数据读回到CPU内存的IO时间,也就是说,可以计算将解码任务发送给GPU所花费的时间、GPU执行解码过程所花费的时间,以及从GPU读回解码结果所花费的时间之和,然后,根据分配给GPU的解码任务的任务量以及前述时间之和,计算出GPU在解码该编码类型JPEG图像时的处理速率,并作为GPU在解码该编码类型的JPEG图像时的解码能力信息在当前终端设备中保存。
[0082] 这样,后续再收到关于该编码类型的JPEG图像的解码请求时,就可以直接从当前终端设备中读取出CPU、GPU在解码该编码类型的JPEG图像时的处理速率信息了。
[0083] 也就是说,通过上述方式,对于各种编码类型的JPEG图像而言,在前两次进行解码时,都是单独使用CPU、GPU进行解码,以用于测试各自的解码能力,之后再接收到新的JPEG图像时,就可以通过从终端设备中查询的方式来获取CPU、GPU的解码处理速率信息。
[0084] S204:根据所述MCU块行的总行数以及所述预先获取到的速率比,分别为所述CPU以及GPU分配解码任务,其中,所述CPU的解码任务包括第一行数的MCU块行,GPU的解码任务包括第二行数的MCU块行;
[0085] 在得到jpeg图片的所有MCU块行之后,可以查询当前终端设备的CPU、GPU的解码速率比,当然,还可以首先确定出当前指定JPEG图像的编码类型,然后查询出该编码类型下CPU、GPU的解码速率比。然后可以根据MCU块行的总行数以及该解码速率比,分别为CPU以及GPU分配解码任务,其中,CPU的解码任务包括第一行数的MCU块行,GPU的解码任务包括第二行数的MCU块行。第一行数与第二行数之和等于MCU块行的总行数,第一行数及第二行数的具体数值就是根据该总行数以及前述解码速率比例确定出来的。例如,在理想的状态下,第一行数与第二行数之比可以刚好等于CPU与GPU之间的解码速率比。当然,在实际应用中,由于总行数不一定能够被整除,因此,第一行数与第二行数之比尽量接近CPU与GPU之间的解码速率比即可。例如,假设CPU与GPU之间的解码速率比为2:1,MCU块行的总行数是90行,则直接将第一行数确定为60,第二行数确定为30即可,但是,如果MCU块行的总行数是91行,由于该行数不能被3整除,因此,可以将第一行数确定为60,第二行数确定为31,或者,第一行数确定为61,第二行数确定为30,等等。
[0086] 需要说明的是,在分配解码任务时,一般可以根据各块行在原图像中的位置来进行。例如,在CPU与GPU之间的解码速率比为2:1的情况下,可以将前三分之二的块行分配给CPU,后三分之一的快行分配给GPU,这样,后续在进行解码结果的合并时,直接将GPU的解码结果保存在CPU解码结果所在的地址之后即可。
[0087] S205:以所述第二行数的MCU块行为参数,以非阻塞方式向所述GPU发送解码请求,以便所述GPU对所述第二行数的MCU块行进行解码;
[0088] 在确定了需要由GPU进行解码的MCU块行之后,就可以将这些块行发送给GPU,也即以该第二行数的块行为参数,向GPU发送解码请求。需要说明的是,具体在向GPU发送解码请求时,可以以所述第二行数为依据,配置GPU的在不同维度上的工作项的具体数量(具体会因不同的GPU的编程平台的变化而变化,目前主要有基于CUDA或OpenCL这两个)。另外需要说明的是,GPU是在已经进行了MCU解码得到了MCU块行之后的基础上进行后续的解码工作,主要包括IDCT、upsample、YCC2RGB等。其中,发送给GPU的解码请求需要是一种非阻塞式的请求,这样,CPU侧的解码器在发送完该请求之后,不需要等到GPU返回响应,就可以继续执行后续的操作,也即,对第一行数的MCU块行进行解码,并且也是在MCU解码之后,在MCU块行的基础上,执行后续的IDCT、upsample、YCC2RGB等解码操作。也就是说,从CPU完成MCU解码,为CPU和GPU分配了后续的解码任务之后,CPU与GPU需要执行解码的步骤流程都是相同的,这样,由于又是按照各自的解码处理速率进行的任务量分配,因此,可以最大限度的保证CPU与GPU的同步,也即,尽量使得CPU在完成对第一行数的MCU块行解码完成的同时,GPU也对第二行数的MCU块行完成了解码,各自都不需要花费较长时间等待对方完成解码。
[0089] 另外需要说明的是,在MCU解码后的各个步骤中,IDCT一般是最为繁琐和复杂的步骤,为此,在本申请实施例中,在GPU中,针对每一个MCU块都可以同时使用多个线程进行IDCT变换,为此,还可以将每个MCU块进行分组,例如,由于单个MCU矩阵的宽是Hmax*8像素,高是Vmax*8像素,同时,每个MCU又分为若干个数据单元,数据单元的大小一般为8*8,因此可以将每个数据单元分成8个组,每个组8个数据,这样,在GPU中,可以将8组数据分配到8个不同的线程进行同步的IDCT(为保证最优的内存访问效率,一般需要将一个MCU块的8组数据分配给同一个工作组的不同线程进行解码)。但是,考虑到GPU的主要优势在于解码的过程,对于如何进行数据的分组、后续IDCT结果保存地址的计算等而言,都是GPU的弱项,为此,在本申请实施例中,在CPU侧的解码器确定出需要将哪些MCU块行分配给GPU之后,还可以首先将各个MCU块进行分组,并且,还可以为每个分组计算出一个地址偏移量,这样,在向GPU发送解码请求时,可以将各个MCU块的分组结果以及各组对应的地址偏移量一起发送给GPU。这样,GPU在具体进行解码时,将各个分组的数据分配给各个线程,进行IDCT变换,并且将每组数据的IDCT计算结果按照各自对应的地址偏移量进行保存即可,不需要再重新进行地址计算,提供GPU的解码效率。在GPU对各个MCU块执行完IDCT变换之后,就可以进行后续的upsample、YCC2RGB计算。
[0090] S206:在CPU中对所述第一行数的MCU块行进行解码;
[0091] 如前文所述,在向GPU发送了解码请求之后,CPU就可以对第一行数的MCU块行进行解码,具体需要执行的操作也是IDCT、upsample、YCC2RGB这几个步骤的主要操作。
[0092] S207:在将所述CPU中的解码完成后,从所述GPU中读取GPU的解码结果;
[0093] S208:将所述CPU的解码结果与所述GPU的解码结果进行合并,得到合并后的解码结果。
[0094] 在读回GPU的解码结果之后,就可以与CPU的解码结果进行合并,这样,就可以得到合并后的解码结果,并且可进一步将合并后的解码结果返回给上层代码。具体在进行解码结果的读回以及合并操作时,可以参见实施例一中步骤S104的介绍,这里不再详述。
[0095] 总之,在本申请实施例中,对于JPEG图像,可以实现CPU与GPU的联合解码,并且对两者的解码任务进行分配时,是以各自的解码能力为依据进行分配,并且是在CPU侧进行完MCU解码之后,以MCU块行为单位进行解码任务的分配,这样,从任务分配之后,CPU与GPU需要执行的操作步骤都是相同的,只不过按照各自的解码能力分配了不同的任务量,因此,可以最大限度地保证两者解码的同步,避免出现其中一方解码完成之后需要等待另一方解码完成的情况,从而从整体上提高JPEG图像的解码效率。
[0096] 与本申请实施例提供的对JPEG图像进行解码的方法相对应,本申请实施例还提供了一种对图像进行解码的装置,参见图3,该装置可以包括:
[0097] 解码请求接收单元301,用于接收对指定图像进行解码的请求;
[0098] 解码任务分解单元302,用于将所述指定图像分解成多条解码任务;
[0099] 解码能力信息确定单元303,用于确定当前终端设备的中央处理器CPU以及图形处理器GPU分别在解码图像时的解码能力信息;
[0100] 解码任务分配单元304,用于根据所述CPU与GPU之间的解码能力比,将所述多条解码任务分配给所述CPU以及GPU进行并行处理。
[0101] 其中,所述解码能力信息确定单元303具体可以包括:
[0102] 格式确定子单元,用于确定所述指定图像的格式;
[0103] 第一能力信息确定子单元,用于确定当前终端设备的CPU以及GPU分别在解码该格式的图像时的解码能力信息。
[0104] 解码能力信息确定单元303具体还可以包括:
[0105] 格式确定子单元,用于确定所述指定图像的格式;
[0106] 编码类型确定子单元,用于确定所述指定图像在该格式中的编码类型;
[0107] 第二能力信息确定子单元,用于确定当前终端设备的CPU以及GPU分别在解码该格式下该编码类型的图像时的解码能力信息。
[0108] 具体的,解码能力信息确定单元303具体可以包括:
[0109] 终端型号信息获取子单元,用于获取当前终端设备的型号信息;
[0110] 查询子单元,用于根据所述当前终端设备的型号,查询预先建立的数据库,获取当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息;其中,所述数据库中保存有多个终端设备的型号与其搭载的CPU以及GPU分别在解码图像时的解码能力信息之间的对应关系。
[0111] 另一种实现方式下,该装置还可以包括:
[0112] 第一测试单元,用于预先利用预置的图像对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
[0113] 所述解码能力信息确定单元303具体可以用于:
[0114] 根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
[0115] 再一种实现方式下,解码能力信息确定单元303还可以包括:
[0116] 第二测试单元,用于预先利用解码请求中携带的图像,对当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息进行测试,并保存测试结果;
[0117] 所述解码能力信息确定单元303具体可以用于:
[0118] 根据所述保存的测试结果确定当前终端设备的CPU以及GPU分别在解码图像时的解码能力信息。
[0119] 具体实现时,解码任务分配单元304具体可以包括:
[0120] 分配子单元,用于根据解码任务的总条数以及所述解码能力比,向CPU分配第一条数的解码任务,向GPU分配第二条数的解码任务;
[0121] 解码请求发送子单元,用于以所述第二条数的解码任务为参数,以非阻塞方式向所述GPU发送解码请求,以便所述GPU对所述第二条数的解码任务进行解码;
[0122] 解码子单元,用于在CPU中对所述第一条数的解码任务进行解码。
[0123] 在具体实现时,该装置还可以包括:
[0124] 解码结果读回单元,用于在将所述CPU中的解码完成后,从所述GPU中读回GPU的解码结果;
[0125] 解码结果合并单元,用于将所述CPU的解码结果与所述GPU的解码结果进行合并,并将合并结果返回。
[0126] 另外,该装置还可以包括:
[0127] 记录单元,用于所述将所述多条解码任务分配给所述CPU以及GPU进行并行处理时,记录分配给CPU的解码任务与所述分配给GPU的解码任务在所述指定图像中的相对位置关系信息;
[0128] 所述解码结果合并单元具体可以用于:
[0129] 根据所述CPU的解码结果的保存地址以及所述相对位置关系,确定所述GPU的解码结果的保存地址,并将所述GPU的解码结果保存到该保存地址。
[0130] 其中,所述指定图像包括JPEG格式的图像,所述解码任务分解单元302具体可以用于:
[0131] 对所述指定图像进行最小编码单元MCU解码,得到多个MCU块行,将每个MCU块行确定为一条解码任务,每个MCU块行由多个MCU块组成。
[0132] 其中,该装置还可以包括:
[0133] 数据组划分单元,用于将分配给GPU处理的每个MCU块分别划分为预置数目的数据组;
[0134] 地址偏移量计算单元,用于计算获得在GPU中进行反向离散余弦变换IDCT之后,各个数据组对应的计算结果在保存时的地址偏移量;
[0135] 发送单元,用于在向所述GPU分配解码任务时,还将所述分组信息以及各组对应的地址偏移量信息发送给所述GPU,以便GPU按照所述分组信息,将同一个MCU块分配给多个线程进行IDCT计算,并按照所述地址偏移量进行IDCT计算结果的保存,以用于后续步骤按照地址偏移量读取所述IDCT计算结果,并进行后续解码计算。
[0136] 在实际应用中,还包括:
[0137] 浏览请求发送单元,用于所述接收对指定图像进行解码的请求之前,向服务器发送商品对象的浏览请求;
[0138] 页面信息接收单元,用于接收所述服务器返回的包含有商品对象图片信息的页面信息,在显示该页面信息的过程中,接收所述对指定图像进行解码的请求。
[0139] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0140] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0141] 以上对本申请所提供的对图像进行解码的方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈