一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种图像渲染方法、装置、设备及计算机可读存储介质与流程

2022-09-07 16:37:27 来源:中国专利 TAG:


1.本技术涉及图像处理技术领域,尤其涉及一种图像渲染方法、装置、设备及计算机可读存储介质。


背景技术:

2.金融支付与ai骨骼识别产品设计过程中通常需要在预览上显示实时的人脸追踪框或实时骨架,如果采用android系统原生camera作为数据流提供者,原生camera预览surface不能直接在图层上绘制待显示数据。
3.在相关技术中,采用双图层设计,底部图层用来预览原始图像数据,顶部图层采用透明遮罩叠加待渲染数据的方式来设计整体渲染方案。然而,在实际应用中,目标检测算法执行存在耗时,当待测物体处于移动场景时,顶部图层存在更新延时,顶部图层与底部图层的帧率存在较大差异,导致图像显示不同步的问题。


技术实现要素:

4.本技术实施例提供了一种图像渲染方法、装置、设备及计算机可读存储介质,至少能够解决相关技术中所提供的图像渲染方案容易导致图像显示不同步的问题。
5.本技术实施例第一方面提供了一种图像渲染方法,包括:
6.通过推理线程对原始图像数据进行算法推理,得到推理结果数据;
7.通过渲染线程对所述原始图像数据以及所述推理结果数据进行图像合成,得到合成图像数据;
8.基于所述合成图像数据进行图像渲染。
9.本技术实施例第二方面提供了一种图像渲染装置,包括:
10.推理模块,通过推理线程对原始图像数据进行算法推理,得到推理结果数据;
11.合成模块,用于通过渲染线程对所述原始图像数据以及所述推理结果数据进行图像合成,得到合成图像数据;
12.渲染模块,用于基于所述合成图像数据进行图像渲染。
13.本技术实施例第三方面提供了一种电子设备,包括:存储器及处理器,其中,处理器用于执行存储在存储器上的计算机程序,处理器执行计算机程序时,实现上述本技术实施例第一方面提供的图像渲染方法中的各步骤。
14.本技术实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本技术实施例第一方面提供的图像渲染方法中的各步骤。
15.由上可见,根据本技术方案所提供的图像渲染方法、装置、设备及计算机可读存储介质,通过推理线程对原始图像数据进行算法推理;通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据;基于合成图像数据进行图像渲染处理。通过本技术方案的实施,采用异步逻辑分别执行算法推理以及图像渲染,可有效提升渲染效率,
另外,顶部图层采用原图和算法推理结果合成得到,保证了图像显示的同步性。
附图说明
16.图1为本技术第一实施例提供的图像渲染方法的基本流程示意图;
17.图2为本技术第一实施例提供的一种缓存队列的结构示意图;
18.图3为本技术第二实施例提供的图像渲染方法的细化流程示意图;
19.图4为本技术第三实施例提供的图像渲染装置的程序模块示意图;
20.图5为本技术第四实施例提供的电子设备的结构示意图。
具体实施方式
21.为使得本技术的发明目的、特征、优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.在相关技术中进行图像渲染时,通常是在底部图层的原始图像数据上叠加一层透明遮罩(也即蒙版),再在透明遮罩之上绘制待渲染数据(例如人脸框等),也即将透明遮罩叠加待渲染数据置于顶部图层,原始图像数据置于底部图层,然而在待测物体处于移动场景时,尤其是移动较快时,会出现顶部图层的人脸框等更新较慢而追踪不到底部图层的待测物体的情况。
23.为了解决相关技术中所提供的图像渲染方案容易导致图像显示不同步的问题,本技术第一实施例提供了一种图像渲染方法,如图1为本实施例提供的图像渲染方法的基本流程图,该图像渲染方法包括以下的步骤:
24.步骤101、通过推理线程对原始图像数据进行算法推理,得到推理结果数据。
25.具体的,本实施例中进行算法推理的待推理对象可以为原始图像数据中的人脸、人体骨骼等,相应的,推理结果数据包括如下至少一种:人脸追踪框、人体骨骼框架,在实际应用中,根据应用场景的不同,推理结果数据还可以为车辆跟踪框、障碍物跟踪框等,本实施例对此不做唯一限定。在本实施例中,推理线程用于执行人脸检测算法或骨骼检测算法,以对人脸框或人体骨骼框架进行推理。
26.在本实施例一些实施方式中,上述通过推理线程对原始图像数据进行算法推理的步骤,包括:通过多个并行推理线程分别对原始图像数据中多个待推理对象进行算法推理。
27.具体的,在本实施例中,可以将原始图像数据划分为不同图像区域,然后将不同图像区域分别分配至不同推理线程进行算法推理。在实际应用中,图像拍摄场景中可能存在多个跟踪目标,从而存在待推理对象有多个的情况,若采用单一的推理线程,执行全局目标推理会导致总耗时较大,进而导致顶部图层更新延迟较大,由此,本实施例可以采用多个并行推理线程并行执行推理算法,也即可以在单位时间内完成多个待推理对象的推理,有效降低了推理算法的总耗时,提升了顶部图层的更新速度。此外,还应当说明的是,在实际应用中,还可能存在单个跟踪目标但待推理对象类型存在多种的情况,例如需要对同一目标的人脸追踪框以及人体骨骼框架同时进行推理,同理,本实施例可以根据适应性采用多个推理线程并行进行推理,由此提升顶部图层的更新速度。
28.在本实施例另一些实施方式中,上述通过推理线程对原始图像数据进行算法推理的步骤,包括:获取底部图层的原始图像数据的采集帧率;从多个算法复杂度不同的可用推理线程中选择对应于采集帧率的推理线程;通过所选择的推理线程对原始图像数据进行算法推理。
29.具体的,在实际应用中,推理算法的复杂度通常与推理结果的准确性正相关,以及与算法执行效率负相关,在本实施例中,考虑到顶部图层更新的不及时带来的显示不同步问题相对于推理结果准确性有限的用户体验更差,本实施例可以根据与底层原始图像的采集帧率适应性选取相应算法复杂度的推理线程,由此保证顶部图层以相应帧率更新,保证顶部图层与底部图层的同步性。
30.步骤102、通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据。
31.具体的,本实施例将图像渲染与算法推理分离,以提升渲染效率。在本实施例中,在对推理结果数据送入渲染线程的同时,将原始图像数据送入渲染线程,以将原始图像数据和算法推理结果合成到一张图像上。
32.在本实施例一些实施方式中,上述通过渲染线程对原始图像数据以及推理结果数据进行图像合成的步骤之前,还包括:将原始图像数据以及推理结果数据存入预设缓存队列。相对应的,上述通过渲染线程对原始图像数据以及推理结果数据进行图像合成的步骤,包括:通过渲染线程持续轮询缓存队列;在缓存队列的队列长度参数为取值非零的目标数值时,获取目标队列单元存储的原始图像数据以及推理结果数据进行图像合成。
33.具体的,在实际应用中,可以直接将推理线程的数据送入渲染线程,而本实施例为了保证数据传输的稳定性,可以设置有特定缓存队列,该缓存队列由多个队列单元组成,推理线程的输出数据先缓存在缓存队列中,在渲染线程触发工作状态时,再从缓存队列中取出数据送入至渲染线程。在实际应用中,渲染线程可以在死循环中持续轮询缓存队列的数据缓存状态,其中,缓存队列的数据缓存状态为空时,队列长度为零,反之,队列长度非零,本实施例可以在缓存队列中完成特定缓存行为时,触发缓存队列中的数据送入渲染线程。应当说明的是,在实际应用中,原始图像数据以及推理结果数据可以同时缓存在同一队列单元中,也可以分别缓存于相邻两个队列单元,本实施例对此不做唯一限定。
34.进一步地,在本实施例一些实施方式中,若原始图像数据中待推理对象的数量为多个,则上述将原始图像数据以及推理结果数据存入预设缓存队列的步骤,包括:将原始图像数据以及对应于不同待推理对象的多个推理结果数据,顺序存入预设缓存队列的不同队列单元;相应的,上述在缓存队列的队列长度参数为取值非零的目标数值时,获取目标队列单元存储的原始图像数据以及推理结果数据进行图像合成的步骤,包括:在缓存队列的队列长度参数的取值大于或等于n时,从缓存队列头部开始选择n个队列单元作为目标队列单元;其中,n=m 1,m表示待推理对象的数量;获取所选择的所有目标队列单元存储的原始图像数据以及推理结果数据进行图像合成。
35.具体的,在本实施例中,若待推理对象有多个,则相应具备多个推理结果数据,本实施例可以将不同推理结果数据以及原始图像数据分别存入缓存队列的不同队列单元,如图2所示为本实施例提供的一种缓存队列的结构示意图,图2中a表示原始图像数据,b1~b4分别表示多个不同推理结果数据,也即在本实施例中,可以将原始图像数据缓存至队首,而
在队首之后依次缓存不同推理结果数据。应当理解的是,当缓存队列中所缓存的数据量包括本次图像渲染任务所要求的数据量时,队首的原始图像数据以及与m个待推理对象相应的推理结果数据送入至渲染进程进行图像合成。此外,还应当说明的是,图2仅为本实施例针对缓存队列具体形式的其中一种举例,在实际应用中缓存队列还可以是诸如环形缓存队列等,在此不做唯一限定。
36.更进一步地,在本实施例一些实施方式中,渲染线程包括多个并行的第一渲染线程以及单个第二渲染线程;相对应的,上述获取所选择的所有目标队列单元存储的原始图像数据以及推理结果数据进行图像合成的步骤,包括:通过多个第一渲染线程均从排列在所有目标阵列单元队首的阵列单元获取原始图像数据,以及分别从剩余目标阵列单元中等量获取推理结果数据,然后并行进行图像合成;将多个第一渲染线程的合成图像送入第二渲染线程进行图像合成。
37.具体的,在实际应用中,渲染进程进行图像合成需要一定耗时,若图像合成耗时过长则会导致顶部图层的更新速度较慢,而导致顶部图层与底部图层存在不同步,基于此,本实施例在需要执行多个推理结果数据与原始图像数据的合成时,在第一阶段,由多个第一渲染线程分别执行部分推理结果数据与原始图像数据的合成,以得到多个中间合成图像,在合成数据量相对较大时,通过将图像合成任务拆分成多个子任务并行执行,相对于串行执行可以有更高的合成效率,进一步地,在第二阶段,将多个中间合成图像再通过第二渲染线程进行简单叠加即可得到最终合成图像。
38.步骤103、基于合成图像数据进行图像渲染。
39.具体的,本实施例将合成后的图像数据送入顶层画布进行图像渲染处理,应当理解的是,本实施例的图像渲染处理同样采用双图层设计,不同的是采用相机原图叠加推理结果数据得到顶层的合成数据,然后再将这种不透明的合成图与底层的原图进行叠加,从而实现了一种基于异步逻辑下的同步显示,从根源上解决了现有技术中显示不同步的缺陷。
40.基于上述本技术实施例的技术方案,通过推理线程对原始图像数据进行算法推理;通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据;基于合成图像数据进行图像渲染处理。通过本技术方案的实施,采用异步逻辑分别执行算法推理以及渲染,可有效提升渲染效率,另外,顶部图层采用原图和算法推理结果合成得到,保证了图像显示的同步性。
41.图3中的方法为本技术第二实施例提供的一种细化的图像渲染方法,该图像渲染方法包括:
42.步骤301、根据多个待推理对象的对象类型相应确定多个并行推理线程。
43.步骤302、通过多个并行推理线程分别对原始图像数据中的多个待推理对象进行算法推理。
44.具体的,在本实施例中,可以将原始图像数据划分为不同图像区域,然后将不同图像区域分别分配至不同推理线程进行并行推理,也即可以在单位时间内完成多个待推理对象的推理,有效降低了推理算法的总耗时,提升了顶部图层的更新速度。
45.步骤303、将原始图像数据以及对应于不同待推理对象的多个推理结果数据,顺序存入预设缓存队列的不同队列单元。
46.具体的,在本实施例中,若待推理对象有多个,则相应具备多个推理结果数据,本实施例可以将不同推理结果数据以及原始图像数据分别存入缓存队列的不同队列单元,也即将原始图像数据缓存至队首,而在队首之后依次缓存不同推理结果数据。
47.步骤304、在缓存队列的队列长度参数的取值大于或等于n时,从缓存队列头部开始选择n个队列单元作为目标队列单元。
48.其中,n=m 1,m表示待推理对象的数量。
49.步骤305、通过多个第一渲染线程均从排列在所有目标阵列单元队首的阵列单元获取原始图像数据,以及分别从剩余目标阵列单元中等量获取推理结果数据,然后并行进行图像合成。
50.具体的,本实施例在需要执行多个推理结果数据与原始图像数据的合成时,在第一阶段,由多个第一渲染线程分别执行部分推理结果数据与原始图像数据的合成,以得到多个中间合成图像,在合成数据量相对较大时,通过将图像合成任务拆分成多个子任务并行执行,相对于串行执行可以有更高的合成效率。
51.步骤306、将多个第一渲染线程的合成图像送入第二渲染线程进行图像合成,得到合成图像数据。
52.进一步地,在第二阶段,本实施例将多个中间合成图像再通过第二渲染线程进行简单叠加即可得到最终合成图像。
53.步骤307、将合成图像数据送入顶部图层进行图像渲染处理。
54.具体的,本实施例采用双图层设计的图像渲染显示机制,采用相机原图叠加推理结果数据得到顶层的合成数据,然后再将这种不透明的合成图叠加到底层的原图,从而实现了一种基于异步逻辑下的同步显示。
55.应当理解的是,本实施例中各步骤的序号的大小并不意味着步骤执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成唯一限定。
56.基于上述本技术实施例的技术方案,通过推理线程对原始图像数据进行算法推理;通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据;基于合成图像数据进行图像渲染处理。通过本技术方案的实施,采用异步逻辑分别执行算法推理以及渲染,可有效提升渲染效率,并且,顶部图层采用原图和算法推理结果合成得到,保证了图像显示的同步性,另外,采用并行推理线程进行多线程同步推理,以及采用并行渲染线程进行多线程同步合成,可进一步提升顶部图层的更新速度,保证显示同步性。
57.图4为本技术第三实施例提供的一种图像渲染装置。该图像渲染装置可用于实现前述实施例中的图像渲染方法,该图像渲染装置主要包括:
58.推理模块401,通过推理线程对原始图像数据进行算法推理,得到推理结果数据;
59.合成模块402,用于通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据;
60.渲染模块403,用于基于合成图像数据进行图像渲染。
61.在本实施例的一些实施方式中,推理结果数据包括如下至少一种:人脸追踪框、人体骨骼框架。
62.在本实施例的一些实施方式中,推理模块具体用于:通过多个并行推理线程分别
对原始图像数据中的多个待推理对象进行算法推理。
63.在本实施例的另一些实施方式中,推理模块具体用于:获取底部图层的原始图像数据的采集帧率;从多个算法复杂度不同的可用推理线程中选择对应于采集帧率的推理线程;通过所选择的推理线程对原始图像数据进行算法推理。
64.在本实施例的一些实施方式中,本实施例的图像渲染装置还包括:缓存模块,用于将原始图像数据以及推理结果数据存入预设缓存队列。相应的,合成模块具体用于:通过渲染线程持续轮询缓存队列;在缓存队列的队列长度参数为取值非零的目标数值时,获取目标队列单元存储的原始图像数据以及推理结果数据进行图像合成。
65.进一步地,在本实施例的一些实施方式中,待推理对象的数量为多个;缓存模块具体用于:将原始图像数据以及对应于不同待推理对象的多个推理结果数据,顺序存入预设缓存队列的不同队列单元。相应的,合成模块在执行上述在缓存队列的队列长度参数为取值非零的目标数值时,获取目标队列单元存储的原始图像数据以及推理结果数据进行图像合成的功能时,具体用于:在缓存队列的队列长度参数的取值大于或等于n时,从缓存队列头部开始选择n个队列单元作为目标队列单元;其中,n=m 1,m表示待推理对象的数量;获取所选择的所有目标队列单元存储的原始图像数据以及推理结果数据进行图像合成。
66.更进一步地,在本实施例的一些实施方式中,渲染线程包括多个并行的第一渲染线程以及单个第二渲染线程。相应的,合成模块在执行上述获取所选择的所有目标队列单元存储的原始图像数据以及推理结果数据进行图像合成的功能时,具体用于:通过多个第一渲染线程均从排列在所有目标阵列单元队首的阵列单元获取原始图像数据,以及分别从剩余目标阵列单元中等量获取推理结果数据,然后并行进行图像合成;将多个第一渲染线程的合成图像送入第二渲染线程进行图像合成。
67.应当说明的是,第一、二实施例中的图像渲染方法均可基于本实施例提供的图像渲染装置实现,所属领域的普通技术人员可以清楚的了解到,为描述的方便和简洁,本实施例中所描述的图像渲染装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
68.根据本实施例所提供的图像渲染装置,通过推理线程对原始图像数据进行算法推理,得到推理结果数据;通过渲染线程对原始图像数据以及推理结果数据进行图像合成,得到合成图像数据;基于合成图像数据进行图像渲染处理。通过本技术方案的实施,采用异步逻辑分别执行算法推理以及渲染,可有效提升渲染效率,另外,顶部图层采用原图和算法推理结果合成得到,保证了图像显示的同步性。
69.图5为本技术第四实施例提供的一种电子设备。该电子装置可用于实现前述实施例中的图像渲染方法,主要包括:
70.存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序503,存储器501和处理器502通过通信连接。处理器502执行该计算机程序503时,实现前述实施例中的图像渲染方法。其中,处理器的数量可以是一个或多个。
71.存储器501可以是高速随机存取记忆体(ram,random access memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器501用于存储可执行程序代码,处理器502与存储器501耦合。
72.进一步的,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储
介质可以是设置于上述各实施例中的电子设备中,该计算机可读存储介质可以是前述图5所示实施例中的存储器。
73.该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的图像渲染方法。进一步的,该计算机可存储介质还可以是u盘、移动硬盘、只读存储器(rom,read-only memory)、ram、磁碟或者光盘等各种可以存储程序代码的介质。
74.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
75.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
76.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
77.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
78.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
79.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
80.以上为对本技术所提供的图像渲染方法、装置、设备及计算机可读存储介质的描述,对于本领域的技术人员,依据本技术实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献