图像处理方法及装置与流程

文档序号:29929877发布日期:2022-05-07 12:35阅读:92来源:国知局
图像处理方法及装置与流程

1.本公开涉及图像压缩技术领域,特别涉及图像处理方法及装置。


背景技术:

2.由于图像的数据量较大,在传输图像的数据时,会对带宽产生较大的压力,通过缓存机制能够极大的减少带宽的压力,以往的缓存方式,需要在客户端和服务器端均维护一个缓存表,实现较为复杂,且需要使用缓存id来遍历整个缓存表,存储效率低下。


技术实现要素:

3.本公开实施例提供的图像处理方法及装置,用以提高存储效率。
4.本公开实施例提供了一种图像处理方法,包括:
5.在服务器端构建hash表及缓存池;其中,所述hash表具有多个hash值,每一个所述hash值存放了所述图像数据的特征值和所述图像数据在所述缓存池中的缓存id;
6.所述服务器端将要发往客户端的当前图像,通过散列算法计算出所述当前图像的图像数据的特征值和hash值;
7.根据计算出的所述当前图像的hash值,从所述hash表中寻找对应的hash值;
8.若对应的hash值存在,且所述hash值里的特征值与所述当前图像的图像数据的特征值匹配时,则直接发送hash值中的图像数据在所述缓存池中的缓存id到客户端,以使所述客户端通过缓存id,直接从所述服务器端的所述缓存池中取出图像数据;
9.若对应的hash值存在但图像数据的特征值不匹配,或对应的hash值不存在时,则在所述hash表中分配一个新hash值,在所述新hash值里存入所述图像数据的特征值,并从所述缓存池中申请特征缓存区存储所述新hash值对应的图像数据,以作为所述新表项里的图像数据在所述缓存池中的缓存id;将所述新hash值中的图像数据在所述特征缓存区中的缓存id发送到所述客户端,以使所述客户端通过所述缓存id,直接从所述服务器端的所述特征缓存区中取出图像数据。
10.在一些示例中,所述通过散列算法计算出所述当前图像的特征值,包括:
11.逐行计算出所述当前图像的每个像素对应的特征值。
12.在一些示例中,所述逐行计算出所述当前图像的每个像素对应的特征值,包括:
13.分别采用第一种hash算法和第二种hash算法,逐行计算出所述当前图像的每个像素对应所述第一种hash算法的特征值和对应所述第二种hash算法的特征值;
14.若对应的hash值存在,且所述hash值里的特征值与所述当前图像的图像数据对应所述第一种hash算法的特征值匹配时,则直接发送hash值中的图像数据在所述缓存池中的缓存id到客户端,以使所述客户端通过缓存id,直接从客户端的所述缓存池中取出图像数据;
15.若对应的hash值存在但图像数据的特征值不匹配,或对应的hash值不存在时,则在所述hash表中分配一个新hash值,在所述新hash值里存入所述图像数据对应所述第二种
hash算法的特征值及所述新hash值中的图像数据在所述特征缓存区中的缓存id,并在所述特征缓存区中存储所述新hash值对应的图像数据。
16.在一些示例中,所述第一种hash算法包括:dbj2 hash算法。
17.在一些示例中,所述第二种hash算法包括:ap hash算法。
18.在一些示例中,所述图像数据的特征值包括图像数据的长、宽以及格式。
19.本公开实施例还提供了一种图像处理方法,包括:
20.客户端接收服务器端直接发送的hash值中的图像数据在所述缓存池中的缓存id,并通过接收的所述缓存id,直接从所述服务器端的所述缓存池中取出图像数据;
21.所述客户端接收所述服务器端发送的新hash值中的图像数据在所述特征缓存区中的缓存id,并通过接收的所述缓存id,直接从所述服务器端的所述特征缓存区中取出图像数据。
22.本公开实施例还提供了一种服务器端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的图像处理方法。
23.本公开实施例还提供了一种客户端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的图像处理方法。
24.本公开实施例还提供了一种可读存储介质,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述的图像处理方法。
25.本公开实施例的有益效果如下:
26.本公开实施例提供的图像处理方法及装置,将每一张图像有别于其他图像的独特部分保存在图像缓存池中,极大减小存储体积,并且建立更加准确无冲突的索引,能够让后续图像在压缩过程中通过图像特征快速找到这些区域,进行引用表示,达到压缩数据的目的。
附图说明
27.图1为现有技术中的图像处理方法的示意图;
28.图2为现有技术中的一种原图像的示意图;
29.图3为采用现有技术将图2压缩后的可视化图像;
30.图4为本公开实施例中的图像处理方法的流程图;
31.图5为本公开实施例中的一种原图像的示意图;
32.图6为采用本公开实施例中的图像处理方法将图5压缩后的可视化图像。
具体实施方式
33.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。并且在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
34.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
35.需要注意的是,附图中各图形的尺寸和形状不反映真实比例,目的只是示意说明本公开内容。并且自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
36.在当前5g逐步普及的大背景下,云桌面的运用越来越广泛,随着云桌面产品已经深入到全国数百个地市的各行各业中,使用场景与网络状况千差万别,对于许多用户(特别是政企用户)来说,接入带宽都是共享的稀缺资源。在这种情况下单个用户需要的带宽越小,则产品可支持的同时使用人数越多,效费用比越高,云桌面产品的产品力越强。图像压缩传输技术与相应的算法研究对于云桌面产品的产品力提升起到至关重要的作用,是产品的核心竞争力。
37.云桌面图像压缩与传输算法的作用可以概括为:如何快速精简地存储、查找、比较、表示与发送图像,尽可能的降低发送数据量。当前绝大多数云桌面产品都采用了全局缓存历史图像,建立相应索引,寻找一段时间内的相似区域确认匹配之后发送索引的方式发送给客户端解码,减小图像表示所需的数据量,从而达到减少带宽占用的目的。
38.这种处理方式主要分为两个部分:
39.1、图像缓存与索引建立,供快速查找匹配。
40.2、查找与匹配表示,确定编码表示的方法与格式。
41.这两个部分也决定了算法在解决实际工程问题上存在两个突出问题:
42.(1)其性能同物理缓存池的大小直接相关,受设置客户端的终端硬件配置制约。图像缓存池空间大,则缓存较多的历史图像,使得当前图像找到匹配的概率提升,更多的像素可以用之前图像的索引来表示,从而获得更好的压缩效果。但从编解码的逻辑出发,可以得知这样的缓存池需要在客户端与服务端同时开辟存在,且需要在解码过程中常驻内存。因此在实际的应用场景中,对于一些性能较差的终端是不能够很好适用的。并且,当前云桌面产品的终端的内存通常情况下在2gb~4gb左右,以1080p标准图像30fps的速率来看,目前需要的物理缓存池大小一般极限设置在512mb左右,即使在这种情况下,相对于一张全尺寸标清1080p体积为8mb的图像来看,缓存池最多仅可以保存64帧,持续时间为2.13s。更大的缓存池虽然能够一定程度提高算法性能,但是极大地受到终端物理内存的限制,对于低性能终端支持不够友好。与此同时,随着云桌面的产品的发展,高分辨率桌面的需求也在日益增长。算法在2k(1440p,单张14.75mb)、4k(2160p,单张32mb)分辨率下,性能更是急剧下降,无法满足高分辨率产品的需求。
43.(2)采用有冲突的短hash表,匹配效果不佳。hash查找理论需要维护一个巨大的hash列表,实际工程中无法满足,以较短的hash表替代。这种替代会造成像素特征与hash值之间的多对一的映射,不仅无法准确找到rgb像素特征匹配的位置,而且使得较早进入缓存池的图像,其rgb特征无法得到索引(受限于哈希表体积)增大缓存池容积的效果大打折扣,
最终导致算法压缩效果不佳。
44.针对上述问题,有人提出相应的方法试图应对上述情况,如《一种图像处理方法、云桌面服务器及客户端》(专利号:201610301903.2)。该方法实际上希望将图像分成若干个块进行存储,以md5码作为特征索引,避免粗放式存储造成的缓存空间浪费。但是块存储一个显著的问题是:在实际使用场景中特征相对于块的位置是变化的,两个特征块可能实际几乎完全一致,仅存在微小的相对偏移,但对于md5码的查找来说,两者是两个完全不同的块,造成查找失败。
45.基于上述描述,现有的技术一般都是通过:查找-》匹配-》编码-》更新索引的方式进行压缩编码(如图1所示),压缩编码完成之后直接将当前图像加入到缓存池中。通过分析发现:在每秒20帧~30帧的编码速度下,缓存池中存在大量的重复部分,更重要的事实际上很多的冗余是无法被引用查找到的。典型的查找方法是通过相邻的若干个像素的值计算一个hash键值,以键值作为索引,将像素位置信息存放在hash查找表中,以供后来的图像压缩进行查找匹配,通过引用历史帧的位置达到压缩数据量的目的。如果对每一个像素精确的计算hash值,并形成一一映射的关系,那么对于传输的24bit真彩色图像来说,三个像素的特征就要求hash查找表的长度至少为2
72
。这样的体积在实际的运用过程中是不实际的。因此实际运用的是有冲突的hash键值计算方法,也就是说一个hash可能对应多个不同特征的像素。不仅如此,实际hash查找表只能存储数个最近的具有相同hash的像素位置信息。因此当缓存池中堆积了存在大量冗余的图像时,实际上只有相当少的一部分是不重复,在这个部分中又只有更少的一部分是能够被查找引用,更多的有效索引与表页都因为缓存池与hash表体积邮箱而被挤出。这种情况在网页存在动态gif图像的情况下尤为明显。
46.综合分析,现有方法在缓存池存储与查找效率是较低的。本公开的技术方案正是基于此点分析而提出的。其目的是要关注提高缓存池的效率,提升缓存池中图像被索引的概率,高效快速的完成图像的压缩表示。一张典型图像的压缩效果如图2与图3所示。其中,图2示意出了原图像,图3示意出了将图2压缩后的可视化图像。
47.基于图2与图3,公开人通过分析,现有技术中的方案,失配直接编码的部分多数为网页中图像部分。而网页中图像部分中的非文本部分没有被很好的表示。原因在于图像部分的缓存中存在大量冗余,时间轴上无法容纳上一次出现的相似图像部分,冗余在极短的时间内将有效的信息挤出了缓存池,从而导致了失配的出现。基于这个观察,新的方法旨在排除冗余,将每一张图像有别于其他图像的独特部分保存在图像缓存池中,极大减小存储体积,并且建立更加准确无冲突的索引,能够让后续图像在压缩过程中通过图像特征快速找到这些区域,进行引用表示,达到压缩数据的目的。
48.本公开实施例提供的图像处理方法,如图4所示,可以包括如下步骤:
49.s110、在服务器端构建hash表及缓存池。
50.其中,hash表具有多个hash值,用于检测图像数据是否被客户端缓存;每一个hash值存放了图像数据的特征值和图像数据在缓存池中的缓存id。
51.s120、服务器端将要发往客户端的当前图像,通过散列算法计算出当前图像的图像数据的特征值和hash值。示例性地,所述图像数据的特征值包括图像数据的长、宽以及格式。
52.s130、根据计算出的当前图像的hash值,从hash表中寻找对应的hash值。
53.s140、若对应的hash值存在,且hash值里的特征值与当前图像的图像数据的特征值匹配时,则直接发送hash值中的图像数据在缓存池中的缓存id到客户端,以使客户端通过缓存id,直接从服务器端的缓存池中取出图像数据。
54.s150、若对应的hash值存在但图像数据的特征值不匹配,或对应的hash值不存在时,则在hash表中分配一个新hash值,在新hash值里存入图像数据的特征值,并从缓存池中申请特征缓存区存储新hash值对应的图像数据,以作为新表项里的图像数据在缓存池中的缓存id;将新hash值中的图像数据在特征缓存区中的缓存id发送到客户端,以使客户端通过缓存id,直接从服务器端的特征缓存区中取出图像数据。
55.在本公开实施例中,所述通过散列算法计算出所述当前图像的特征值,可以包括:逐行计算出所述当前图像的每个像素对应的特征值。示例性地,所述逐行计算出所述当前图像的每个像素对应的特征值,可以包括:分别采用第一种hash算法和第二种hash算法,逐行计算出所述当前图像的每个像素对应所述第一种hash算法的特征值和对应所述第二种hash算法的特征值。例如,所述第一种hash算法可以包括:dbj2 hash算法。所述第二种hash算法可以包括:ap hash算法。需要说明的是,dbj2 hash算法和ap hash算法的具体实施过程可以与现有技术中的基本相同,在此不作赘述。
56.在实际应用中,第一种hash算法和第二种hash算法也可以采用其他类型的hash算法,在此不作限定。
57.在本公开实施例中,在分别采用第一种hash算法和第二种hash算法,逐行计算出所述当前图像的每个像素对应所述第一种hash算法的特征值和对应所述第二种hash算法的特征值时,若对应的hash值存在,且所述hash值里的特征值与所述当前图像的图像数据对应所述第一种hash算法的特征值匹配时,则直接发送hash值中的图像数据在所述缓存池中的缓存id到客户端,以使所述客户端通过缓存id,直接从客户端的所述缓存池中取出图像数据;
58.在本公开实施例中,在分别采用第一种hash算法和第二种hash算法,逐行计算出所述当前图像的每个像素对应所述第一种hash算法的特征值和对应所述第二种hash算法的特征值时,若对应的hash值存在但图像数据的特征值不匹配,或对应的hash值不存在时,则在所述hash表中分配一个新hash值,在所述新hash值里存入所述图像数据对应所述第二种hash算法的特征值及所述新hash值中的图像数据在所述特征缓存区中的缓存id,并在所述特征缓存区中存储所述新hash值对应的图像数据。
59.本公开实施例提供的图像处理方法,在缓存池中引进特征缓存区,仅保存未匹配的图像部分的图像数据信息,极大提高缓存效率。为了避免大量冗余重复的图像信息进入到缓存中,本公开实施例中仅在特征缓存区存储每一帧失配直接编码的图像部分的图像数据信息,并将该图像部分的图像数据信息建立索引。这样每一帧中所需要存储到缓存池中的信息量大大减少。并且,通过在缓存池中申请一片特征缓存区,将当前图像中所有找不到匹配需要直接编码的图像部分的图像数据信息完整的保存下来,并建立相应的索引,充分的保存图像之间的差异,为后续图像提供引用依据。匹配命中的像素因为已经在缓存池中找到相同部分因而排除在特征缓存区之外,节省缓存空间的占用。值得注意的是实际保存过程中,特征像素的缓存组织形式是逐行进行的。例如,逐行搜索整张当前图像,每当遇到查找适配无法进行匹配编码的像素时,就以此像素开始,将所有没有匹配的像素连续的压
入特征缓存区中,直至下一次找到匹配的像素为止。并且,针对这一段失配的图像部分的图像数据信息建立一个二级的hash索引,方便下一次查找引用。因为存储特征的过程是逐行进行的,因此不会受到特征位置与形状的影响,无论图像的特征出现在屏幕中的哪个位置,都能够得到精确有效的保存。这样替代了原有的全盘保存的简单粗放式,体积缩小到原来的数十分之一到数百分之一(因为在日常使用场景下,图像变化的部分只占全屏较小的一部分,如动态轮播场景),极大了拓展了缓存池在时间轴上的覆盖范围,大大提升了存储效率。以及,当前图像编码完成后,特征缓存区会保存在缓存池中,并更新相应的索引,确保下次找到能够准确定位特征位置,快速进行引用表示。
60.本公开实施例提供的图像处理方法,采用双hash再散列的查找方法,去除因为hash冲突导致的无效索引。上述已经说到,对于像素特征的描述,如果实行一一对应在工程上是不现实的,使用较小范围的hash变量表示更大范围的像素特征冲突又无法避免。大量的冲突可能造成匹配失败直接编码或者更多编码开销的短匹配。这些冲突造成了编码过程中许多相似但不完全相同的特征被查找应用,然而这种特征注定无法获得较长的理想匹配,又不可避免的存在有固定的格式开销,频繁的短匹配将产生更多的固定开销,影响了编码的总体效果。因此为了更好的将冲突的像素特征区分,本公开实施例引入了双hash再散列判别的方法,即使用更高维度的变量来判断两者的一致性。
61.一个简单的样例:假设存在两个特征对(a,b):(5,8),(4,10)。hash计算规则为a*b,则可以发现两个特征对都映射到hash=40上,无法很好的区分。如果能够制定另一个hash规则:a*b^2。这样就可以很容易的将两个特征对区分开来。新增一个hash计算规则较好的约束冲突的产生,更好的避免无效引用的产生,提高了hash表的查找效率。
62.在本公开实施例中,采用了dbj2 hash算法与ap hash算法同时计算hash值的方式,定位像素特征。实际上两者都是一个迭代的线性映射,通过再散列的方式区分不同的像素特征。两个hash值作为一二级索引通过链表组织。并且,绝大多数像素特征在两个线性函数的映射下能够区分开来(极少数像素特征仍有冲突的可能,但冲突可能性为非常低,同单个hash函数映射冲突相比下降多个数量级)。通过两次计算来确定当前像素的特征是否同缓存池中对应hash的像素特征一致,有效地避免了失配或相似但不相同的特征造成的短匹配,提高了算法的实际性能。
63.本技术实施例相对现有技术而言,具有如下优点和效果:
64.本技术实施例可以在大大减小缓存规模的情况下提高图像的压缩效果,快速的找到较优的匹配,使得更多的像素可以用历史图像中的某一部分来表示,从而获得更加的压缩效果。同时,将本技术实施例运用到实际的压缩处理中去时,在网页场景下,连续滚动的网页中网页从上至下完整滚动过一次之后,我们认为所有的差异部分已经完整的保存在缓存池中,此时再次滚动网页得到的压缩结果如图5与图6所示。其中,图5示意出了原图像,图6示意出了将图5压缩后的可视化图像。从匹配情况上可以明显看出在日常使用上下滚动的场景中,缓存池能够保存的差异信息足够覆盖一段时间滚动后的情况,完整的保存了网页特征,尤其是非文本区域色彩丰富的特征,被后续的图像所引用。如图6中,网页中图片部分绝大多数已经引用表示。图像的整体压缩效果较之前有了明显的提升,经过测试统计一段时间若干张图像的压缩情况,平均每张图像压缩体积从原先的150kb~250kb下降到50kb~100kb,压缩性能显著提升。
65.本公开实施例还提供了图像处理方法,包括:
66.客户端接收服务器端直接发送的hash值中的图像数据在所述缓存池中的缓存id,并通过接收的所述缓存id,直接从所述服务器端的所述缓存池中取出图像数据;
67.所述客户端接收所述服务器端发送的新hash值中的图像数据在所述特征缓存区中的缓存id,并通过接收的所述缓存id,直接从所述服务器端的所述特征缓存区中取出图像数据。
68.本公开实施例还提供了服务器端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述图像处理方法。
69.本公开实施例还提供了客户端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述图像处理方法。
70.本公开实施例还提供了可读存储介质,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述图像处理方法。
71.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
72.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
73.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
74.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
75.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
76.显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1