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

图像渲染方法、装置和系统、计算机可读存储介质与流程

2022-06-01 20:47:39 来源:中国专利 TAG:


1.本公开涉及图像处理技术领域,具体而言,涉及图像渲染方法、装置和系统、计算机可读存储介质。


背景技术:

2.在日常生活中,常常需要对图像进行渲染处理,以获得良好的视觉效果。为了保证图像渲染的效率和准确性,需要采用适当的线程调度方式来进行图像渲染。然而,传统的线程调度方式要么固定地采用单个线程来对图像渲染的各个过程进行串行处理,要么固定地采用多个线程来对图像渲染的某些过程进行并行处理。上述线程调度方式灵活性较差。


技术实现要素:

3.有鉴于此,本公开的实施例提出了图像渲染方法、装置和系统、计算机可读存储介质,以提高图像渲染的灵活性。
4.根据本公开实施例的第一方面,提供一种图像渲染方法,所述方法包括:获取当前图像的上一张图像的目标对象检测结果,所述目标对象检测结果用于指示所述上一张图像中包括的目标对象的数量;基于所述目标对象检测结果确定需要启动的线程的数量;启动所述数量的线程对所述当前图像进行渲染处理。
5.根据本公开实施例的第二方面,提供一种图像渲染装置,包括处理器,所述处理器用于执行以下步骤:获取当前图像的上一张图像的目标对象检测结果,所述目标对象检测结果用于指示所述上一张图像中包括的目标对象的数量;基于所述目标对象检测结果确定需要启动的线程的数量;启动所述数量的线程对所述当前图像进行渲染处理。
6.根据本公开实施例的第三方面,提供一种图像渲染系统,用于对图像进行渲染处理,所述渲染处理包括第一处理和第二处理;所述系统包括第一处理器和第二处理器;所述第一处理器用于获取当前图像的上一张图像的目标对象检测结果,所述目标对象检测结果用于指示所述上一张图像中包括的目标对象的数量,基于所述目标对象检测结果确定需要启动的线程的数量,启动所述数量的线程对所述当前图像进行渲染处理,并在被启动的线程的调用下执行所述第一处理;所述第二处理器用于在被启动的线程的调用下执行所述第二处理。
7.根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任一实施例所述的方法。
8.应用本公开实施例方案,能够基于当前图像的上一张图像中包括的目标对象的数量,动态地确定当前需要启动的线程的数量,在上一张图像中包括的目标对象的数量不同的情况下,所启动的线程的数量也不同,从而能够使当前启动的线程数量适应于不同的图像渲染情况,提高了图像渲染过程中线程调度的灵活性。
附图说明
9.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
10.图1a是一种传统的图像渲染过程中的线程调度方式的示意图。
11.图1b是另一种传统的图像渲染过程中的线程调度方式的示意图。
12.图2是本公开实施例的图像渲染方法的流程图。
13.图3是本公开实施例的美颜处理过程的示意图。
14.图4是本公开实施例的美颜处理过程的总体流程图。
15.图5是本公开实施例的人脸检测过程中的线程调度方式的示意图。
16.图6是本公开实施例的图像渲染装置的示意图。
具体实施方式
17.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
18.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
19.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
20.在进行图像渲染时,需要进行线程调度,即,确定在哪个或哪些线程上对图像渲染的各个环节进行处理。为了保证图像渲染的效果和速度,线程调度方式是十分重要的。传统的线程调度方式一般有两种,一种是如图1a所示的串行调度方式,另一种是如图1b所示的并行调度方式。在串行调度方式中,在一个线程上对图像渲染的所有环节进行处理,即,先对原始图像进行处理1,在处理1完成之后,再进行处理2,以此类推,最终得到渲染后的图像。在并行调度方式中,在两个或两个以上的线程上对图像渲染的各个环节进行处理。以两个线程为例,可以在线程1上进行处理11,在处理11完成之后,再在线程1上进行处理12,以此类推,得到线程1上的中间处理结果。此外,还可以在线程2上进行处理21,在处理21完成之后,再在线程2上进行处理22,以此类推,得到线程2上的中间处理结果。其中,线程1和线程2上均可以进行一种或多种处理,例如,线程1上的处理可以仅包括处理11,且线程1上的处理和线程2上的处理可以并行地进行。然后,还可以基于线程1上的中间处理结果和线程2上的中间处理结果,在线程3上进行处理31、处理32等处理,得到渲染后的图像。或者,线程1
上的中间处理结果也可以用于线程2的某个处理过程,以使线程2经过一系列处理后得到渲染后的图像。
21.然而,无论是哪一种线程调度方式,在任何情况下所采用的线程的数量都是固定的,即,要么固定地采用单个线程来对图像渲染的各个过程进行串行处理,要么固定地采用多个线程来对图像渲染的某些过程进行并行处理。可见,传统的线程调度方式灵活性较差。
22.基于此,本公开提供一种图像渲染方法,如图2所示,所述方法可包括:
23.步骤201:获取当前图像的上一张图像的目标对象检测结果,所述目标对象检测结果用于指示所述上一张图像中包括的目标对象的数量;
24.步骤202:基于所述目标对象检测结果确定需要启动的线程的数量;
25.步骤203:启动所述数量的线程对所述当前图像进行渲染处理。
26.本公开实施例基于当前图像的上一张图像中包括的目标对象的数量,动态地确定当前需要启动的线程的数量,在上一张图像中包括的目标对象的数量不同的情况下,能够自适应地调整所启动的线程的数量,从而能够使当前启动的线程数量适应于不同的图像渲染情况,提高了图像渲染过程中线程调度的灵活性。
27.在步骤201中,当前图像为当前处理的图像,上一张图像为在处理当前图像之前,上一次处理的图像。所述当前图像与上一张图像可以是同一图像序列中的两张图像,所述图像序列中的图像可以按照采集图像的时间顺序依次排列。在一些实施例中,当前图像和上一张图像可以是视频中的两帧图像,其中,所述当前图像和上一张图像既可以是视频中相邻的两帧图像帧,也可以是不相邻的两帧图像帧。例如,在视频拍摄场景下,进行渲染处理的当前图像与上一张图像分别是摄像头实时采集到的相邻两帧图像帧,而在视频编辑场景下,当前图像和上一张图像可以分别是用户将视频进度条拖动到不同位置时对应的两帧图像帧。在另一些实施例中,当前图像和上一张图像可以是连拍模式下拍摄到的多张图像中的相邻或者不相邻的两张图像。
28.目标对象可以是人脸、是美食、风景、证件等类别的对象。所述当前图像和上一张图像中包括的目标对象的数量均可以是0个、1个或1个以上,同一张图像中包括的目标对象的数量和类别可以相同,也可以不同。可以通过对图像进行目标检测,以确定图像中包括的目标对象的数量和类别。例如,在目标对象为人脸的情况下,可以进行人脸检测。具体来说,可以将图像输入预先训练的神经网络,并获取所述神经网络输出的人脸检测结果。所述人脸检测结果中可以包括图像中人脸的数量和类别,还可以包括图像中人脸的位置、姿态和人脸关键点位置中的部分或全部。
29.在一些情况下,渲染处理可以包括多个处理过程,不同的处理过程可以并行执行,也可以串行执行。例如,述渲染处理包括第一处理和第二处理。如果上一张图像中存在目标对象,对上一张图像中的目标对象进行第一处理得到的中间处理结果可能用于对当前图像中的目标对象进行第二处理,从而无需等对当前图像的第一处理执行完毕再对当前图像进行第二处理。因此,在步骤202中,可以基于所述上一张图像的目标对象检测结果确定对当前图像进行渲染处理时需要启动的线程的数量。例如,在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量为0时,由于没有上一张图像的中间处理结果可以参考,因此可以仅启动1个线程对当前图像进行渲染处理;在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量大于或等于1时,可以启动至少2个线程对当前图像进
行渲染处理,从而在一个线程对当前图像进行第一处理的同时,在另一个线程上基于上一张图像的中间处理结果对当前图像进行第二处理。又例如,在所述目标对象检测结果指示目标对象的数量为0时,不启动线程,只有当所述目标对象检测结果指示目标对象的数量大于或等于1时,才启动至少2个线程对当前图像进行渲染处理。可以根据实际情况预先设置好目标对象的数量与需要启动的线程的数量的对应关系,并在进行渲染处理时,根据该对应关系以及目标对象检测结果确定需要启动的线程的数量。所启动的线程的数量与对当前图像进行渲染处理所采用的处理方式相关,所述处理方式包括并行处理和串行处理。例如,在线程的数量为1时,通过串行处理的方式进行渲染处理;又例如,在线程的数量大于1时,通过并行处理的方式进行渲染处理。
30.在一些实施例中,所述渲染处理包括的多个处理过程(例如,第一处理和第二处理)可以由被启动的线程调用不同的处理器执行。在多个处理过程并行执行时,可以启动多个线程,不同的线程并行地调用不同的处理器进行处理;在多个处理过程串行执行时,可以仅启动一个线程,用这一个线程来依次调用各个处理器进行处理。
31.下面以渲染处理为美颜处理为例,对本公开的线程调度方式进行举例说明。本领域技术人员可以理解,美颜处理仅为渲染处理的一种可能的应用场景,并非用于限制本公开。美颜处理一般是指对人脸进行美化处理,以提高人脸的美感。图3示出了一些实施例的美颜处理的具体过程,一般包括人脸检测(包括人脸位置检测、人脸姿态角检测、人脸关键点检测)、磨皮处理、色彩调节处理和形变处理中的一种或多种处理。其中,人脸位置检测用于确定图像中是否存在人脸,以及在存在人脸的情况下人脸的位置和大小。人脸姿态角检测用于基于人脸位置检测人脸的姿态角,包括俯仰角、航向角和横滚角中的至少一者。人脸关键点检测用于基于人脸位置和人脸姿态角检测人脸区域的关键点的位置。所述关键点可包括眼睛、眉毛、嘴巴、鼻子等。磨皮处理用于根据人脸位置和大小对人脸区域进行磨皮处理,通过所述磨皮处理,能够使得图像中人脸区域的皮肤纹理更加细腻,轮廓更加清晰。色彩调节用于根据人脸位置和大小将人脸区域的肤色设置为指定颜色,较为常见的一种色彩调节方式是美白处理。形变处理用于基于人脸位置、人脸姿态角和人脸关键点位置,更改人脸或者五官的形状和大小,较为常见的形变处理是瘦脸处理。以上仅为美颜处理的一种可能的实现方式,在实际应用中,还可根据实际需要增加或减少处理过程。
32.由于美颜处理涉及的处理过程较多,如果只在一个处理器上运行,实时性较低。因此,为了提高美颜处理的效率,可以采用多个处理器,不同的处理器执行不同的美颜处理过程。例如,人脸检测可以通过中央处理器(central processing unit,cpu)实现,磨皮处理、色彩调节和形变处理可以通过图形处理器(graphic processing unit,gpu)实现。
33.在上一张图像中检测到人脸的情况下,gpu可以基于cpu对上一张图像的处理结果来对当前图像进行相应的处理。此时,可以启动两个线程,并行地调用cpu和gpu进行处理。假设调用cpu进行的处理称为第一处理,调用gpu进行的处理称为第二处理,则可以在第一线程上对所述当前图像进行所述第一处理,得到所述当前图像的第一处理结果,以及基于所述上一张图像的第一处理结果,在第二线程上对所述当前图像进行所述第二处理,得到所述当前图像的第二处理结果。
34.在上一张图像中未检测到人脸的情况下,由于cpu对上一张图像的处理结果不能用于对当前图像进行处理,因此,可以启动一个线程,依次调用cpu和gpu进行处理。具体来
说,可以在第一线程上对所述当前图像进行所述第一处理,得到所述当前图像的第一处理结果,基于所述当前图像的第一处理结果,在所述第一线程上对所述当前图像进行所述第二处理,得到所述当前图像的第二处理结果。
35.本公开能够自适应地根据不同的情况调整启动的线程数量。相比于固定地采用单线程的方式,本公开能够实现一定的并行处理,从而提高处理效率。相比于固定地采用多线程的方式,本公开能够避免上一张图像中不存在人脸而当前图像中存在人脸时,无法参考上一张图像中的人脸检测结果,从而导致美颜效果较差的问题。因此,本公开的方案兼顾了美颜处理的效率与效果。
36.进一步地,在图像渲染处理包括第一处理和第二处理的情况下,执行所述第一处理的第一处理器和执行所述第二处理的第二处理器共用同一内存,这样,减少了在不同的处理器之间拷贝数据所带来的时间和硬件资源的开销,减少了图像渲染处理的成本。
37.在一些实施例中,可以确定应用场景,基于所述应用场景和所述目标对象检测结果确定需要启动的线程的数量。其中,所述应用场景包括视频拍摄场景和视频编辑场景,视频拍摄场景是指通过摄像头等视频采集应用拍摄连续的视频帧的场景,而视频编辑场景是指通过视频编辑软件对视频进行拼接、裁剪等处理的场景。
38.在视频拍摄场景下,由于采集到的图像帧在时间和空间上一般是连续的,因此,可以仅基于所述目标对象检测结果确定需要启动的线程的数量。例如,在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量小于预设值的情况下,确定需要启动的线程的数量为1。又例如,在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量大于或等于所述预设值的情况下,确定需要启动的线程的数量大于或等于2。
39.而在视频编辑场景下,由于无法保证相邻两帧图像帧在时间和空间上的连续性,因此,在确定需要启动的线程数量时,不仅需要考虑所述目标对象检测结果,还需要考虑所述当前图像与所述上一张图像的连续性检测结果。其中,所述当前图像与所述上一张图像的连续性检测结果用于指示所述当前图像与所述上一张图像是否为相邻图像帧。例如,在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量大于或等于预设值,且所述连续性检测结果指示所述当前图像与所述上一张图像为相邻图像帧的情况下,确定需要启动的线程数量大于或等于2。又例如,在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量小于所述预设值,或者所述连续性检测结果指示所述当前图像与所述上一张图像不为相邻图像帧的情况下,确定需要启动的线程数量为1。
40.为了便于处理,可以基于所述目标对象检测结果和应用场景生成标志位,不同的标志位对应不同的数量,基于所述标志位确定需要启动的线程的数量。所述标志位可以是1比特的数据位,例如,用“0”表示启动1个线程,用“1”表示启动2个线程。其中,在所述应用场景为视频拍摄场景时,可以仅基于所述目标对象检测结果生成所述标志位。例如,当上一张图像中包括的目标对象数量为0时,生成的标志位为“0”,当上一张图像中包括的目标对象数量不为0时,生成的标志位为“1”。在所述应用场景为视频拍编辑景时,基于所述目标对象检测结果以及所述当前图像与所述上一张图像的连续性检测结果生成所述标志位。例如,当上一张图像中包括的目标对象数量为0,或者上一张图像与当前图像不是相邻图像帧时,生成的标志位为“0”,当上一张图像中包括的目标对象数量不为0,且上一张图像与当前图像是相邻图像帧时,生成的标志位为“1”。可以为不同的应用场景生成不同的标志位,以便
对应用场景进行区分,例如,在视频拍摄场景下,生成第一标志位,在视频编辑场景下,生成第二标志位。
41.在步骤203中,所述渲染处理可以包括但不限于亮度处理、色彩处理、分辨率处理和马赛克处理中的至少一种。所述渲染处理可包括对当前图像中的目标对象进行渲染处理,还可以包括对当前图像中所述目标对象以外的其他区域进行渲染处理,或者对整张图像区域进行渲染处理。对所述目标对象进行渲染处理的方式与对所述其他区域进行渲染处理的方式可以相同,也可以不同。
42.仍以美颜处理为例。若需要启动的线程数量等于1,则可以在第一线程上对所述当前图像依次进行人脸检测、磨皮处理、色彩调节处理和形变处理。
43.在视频拍摄场景下,若需要启动的线程数量大于或等于2,可以在第一线程上对所述当前图像进行人脸检测,得到所述当前图像的人脸检测结果;基于所述上一张图像的人脸检测结果,在第二线程上对所述当前图像进行磨皮处理、色彩调节处理和/或形变处理。所述第一线程与所述第二线程为不同的线程。
44.在视频编辑场景下,若需要启动的线程数量大于或等于2,可以在第一线程上对所述当前图像进行人脸检测,得到所述当前图像的人脸检测结果;基于所述上一张图像的人脸检测结果,在第二线程上对所述当前图像进行磨皮处理和/或色彩调节处理,得到处理后的所述当前图像;基于所述当前图像的人脸检测结果,在第三线程上对处理后的所述当前图像进行形变处理。其中,第三线程可以与第一线程相同。
45.之所以在视频拍摄场景下和在视频编辑场景下的并行方式不同,是因为视频编辑场景中相邻图像帧有可能是不连续的,从而相邻图像帧中人脸的位置可能相差较大。因此,在视频编辑场景下,可以仅将磨皮处理和色彩调节与人脸检测进行并行处理,而将形变处理与上述处理过程进行串行处理,从而在保证美颜效率的同时,兼顾美颜的准确性。
46.如图4所示,是本公开实施例的美颜处理过程的总体流程图。在本实施例中,cpu模块和gpu模块是在同一个线程还是多个线程(以两个线程为例)运行是动态的,其中,cpu模块是指主要调用cpu上的资源进行处理,gpu模块是指主要调用gpu上的资源进行处理。
47.情况一,如果当前图像帧的上一图像帧中没有检测到人脸,那么只启动一个线程,先运行cpu模块,再运行gpu模块,二者串行。在这种线程组织下,如果当前帧继续没有人脸,那么cpu模块只需进行人脸位置检测,无需进行人脸姿态角检测和人脸关键点检测,gpu模块只需进行图像色彩调节,无需进行磨皮处理和形变处理,串行处理时长相比并行处理不会明显增加;如果当前图像帧出现了人脸,那么由于串行,当前图像帧会立刻被美颜处理。
48.情况二,如果当前图像帧的上一图像帧中检测到人脸,那么将启动两个线程,分别运行cpu模块和gpu模,两个模块并行处理。该方案中是否有人脸由cpu模块的人脸检测结果决定,cpu模块可以设置标志位,指导下一帧的线程调度策略。其中,在视频拍摄场景下,仅基于上一图像帧的人脸检测结果是否为0来设置第一标志位,在视频编辑场景下,基于上一图像帧的人脸检测结果是否为0,以及上一图像帧与当前图像帧是否为相邻图像帧共同来设置第二标志位。该方案既保证了运行速度,又兼顾了美颜一致性,能有效避免从无人脸到有人脸的第一帧图像美颜效果较差的问题。
49.不同于视频拍摄场景,在视频编辑场景下,当前图像帧与上一图像帧不一定存在时间和空间上的连续关系。这种区别是普遍存在的,其原因在于视频可能是拼接的,拼接前
后的视频流在空间上不连续,或者用户在编辑视频时,可能从某一图像帧突然跳到距离该图像帧较远的另一图像帧,造成跳转前后的视频流在时间上不连续,使用上一图像帧的人脸检测结果处理当前图像帧,将造成很大误差。考虑到磨皮处理和图像色彩调节对人脸检测结果依赖度较低,一定范围内的偏差不会造成视觉上明显缺陷;而形变处理实现的是瘦脸、修嘴、修鼻等功能,对人脸检测结果的准确度要求较高。因此,在视频拍摄场景下,第一标志位为1时,人脸检测在一个线程中进行处理,磨皮、色彩调节和形变处理在另一个线程中进行处理,且两个线程上的处理并行进行。而在视频编辑场景下,第二标志位为1时,人脸检测在一个线程中进行处理,磨皮和色彩调节均在另一个线程中进行处理,且两个线程上的处理并行进行,在二者都运行完成之后,再在单一线程中进行形变处理。这种调度方案,可以避免视频编辑中因为时间和空间上不连续而使用了错误的人脸检测结果,同时,方案具有一定的并行性,且并行的两部分运行时间在多数机型上相差不大,效率较高。在视频拍摄场景和视频编辑场景下,如果对应的标志位为0,则cpu模块和gpu模块进行串行处理(可及时更新磨皮模块中使用的少量人脸检测结果)。
50.在一些实施例中,cpu与gpu可以共享内存,即,cpu与gpu共用同一块内存空间。cpu可以从该内存空间读取数据,并将美颜处理过程中得到的处理结果存储到该内存空间,以便gpu从该内存空间读取数据。这样,避免了将图像从cpu上拷贝到gpu上所带来的时间和硬件资源的消耗。
51.进一步地,进行人脸检测的第一线程可包括第一子线程,第二子线程和第三子线程,在所述第一子线程上可以对所述当前图像进行人脸位置检测,得到人脸位置信息;在所述第二子线程上可以基于所述人脸位置信息对所述当前图像进行人脸姿态角检测,得到所述当前图像的人脸姿态角信息;在所述第三子线程上可以基于所述当前图像的人脸位置信息和人脸姿态角信息对所述当前图像进行人脸关键点检测,得到所述当前图像的人脸关键点信息。
52.所述第二子线程和第三子线程的数量均等于从所述当前图像中检测到的人脸的数量。如图5所示,先由第一子线程检测图像中是否存在人脸。如果不存在,可以输出用于指示无人脸信息的检测结果。如果存在人脸信息,可以基于人脸的数量确定子线程的数量,例如,人脸数量为3时,确定子线程的数量为3,包括子线程1、子线程2和子线程3。每个子线程分别用于对一个人脸进行人脸姿态角检测和人脸关键点检测。同一线程上的人脸姿态角检测和人脸关键点检测可以串行进行。三个子线程可以分别输出检测到的人脸信息(包括人脸姿态角和人脸关键点位置)。第一线程也可以输出人脸位置信息。在图像中包括多个人脸的情况下,对于一帧图像,人脸检测模块只运行一次,但是人脸姿态角检测模块和人脸关键点检测模块,运行次数与人脸数量正相关。通过上述方式,可以进一步提高图像渲染效率,防止人脸数量增加造成处理时长显著增长。
53.在需要启动的线程的数量大于1的情况下,各个线程分别运行在不同的处理器内核上。假设人脸数量为n1,处理器核数为n2,人脸姿态角和人脸关键点检测模块处理一张人脸时间为t,那么在理想情况下,n1张人脸所需的时间大约为在处理器包括4个性能接近的内核的情况下,使用本公开的线程调度方式处理4张图像的耗时理论上与处理1张图像的耗时相差不大,从而有效提高了图像渲染效率。
54.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并
不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
55.本公开实施例还提供一种图像渲染装置,包括处理器,所述处理器用于执行以下步骤:
56.获取当前图像的上一张图像的目标对象检测结果,所述目标对象检测结果用于指示所述上一张图像中包括的目标对象的数量;
57.基于所述目标对象检测结果确定需要启动的线程的数量;
58.启动所述数量的线程对所述当前图像进行渲染处理。
59.在一些实施例中,所述渲染处理包括第一处理和第二处理,所述第一处理和所述第二处理由被启动的线程调用不同的处理器执行。
60.在一些实施例中,在需要启动的线程的数量等于1的情况下,所述处理器用于:在第一线程上对所述当前图像进行所述第一处理,得到所述当前图像的第一处理结果;基于所述当前图像的第一处理结果,在所述第一线程上对所述当前图像进行所述第二处理,得到所述当前图像的第二处理结果。
61.在一些实施例中,所述渲染处理包括第一处理和第二处理;在需要启动的线程的数量大于或等于2的情况下,所述处理器用于:在第一线程上对所述当前图像进行所述第一处理,得到所述当前图像的第一处理结果;以及基于所述上一张图像的第一处理结果,在第二线程上对所述当前图像进行所述第二处理,得到所述当前图像的第二处理结果;其中,对所述当前图像的第一处理与对所述当前图像的第二处理并行进行,所述第一线程与所述第二线程为不同的线程。
62.在一些实施例中,执行所述第一处理的第一处理器和执行所述第二处理的第二处理器共用同一内存。
63.在一些实施例中,所述第一处理器为中央处理器,所述第二处理器为图形处理器。
64.在一些实施例中,所述处理器用于:确定应用场景,所述应用场景包括视频拍摄场景和视频编辑场景;基于所述应用场景和所述目标对象检测结果确定需要启动的线程的数量。
65.在一些实施例中,所述处理器用于:在所述应用场景为视频拍摄场景时,基于所述目标对象检测结果确定需要启动的线程的数量;和/或在所述应用场景为视频编辑场景时,基于所述目标对象检测结果以及所述当前图像与所述上一张图像的连续性检测结果确定需要启动的线程数量,其中,所述当前图像与所述上一张图像的连续性检测结果用于指示所述当前图像与所述上一张图像是否为相邻图像帧。
66.在一些实施例中,在所述应用场景为视频拍摄场景时,所述处理器用于:在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量大于或等于预设值的情况下,确定需要启动的线程的数量大于或等于2;和/或在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量小于所述预设值的情况下,确定需要启动的线程的数量为1。
67.在一些实施例中,在所述应用场景为视频编辑场景时,所述处理器用于:在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量大于或等于预设值,且所述连续性检测结果指示所述当前图像与所述上一张图像为相邻图像帧的情况下,确定需要启
动的线程数量大于或等于2;和/或在所述目标对象检测结果指示所述上一张图像中包括的目标对象的数量小于所述预设值,或者所述连续性检测结果指示所述当前图像与所述上一张图像不为相邻图像帧的情况下,确定需要启动的线程数量为1。
68.在一些实施例中,所述处理器用于:基于所述目标对象检测结果和应用场景生成标志位,不同的标志位对应不同的数量,所述应用场景包括视频拍摄场景和视频编辑场景;基于所述标志位确定需要启动的线程的数量。
69.在一些实施例中,所述处理器用于:在所述应用场景为视频拍摄场景时,基于所述目标对象检测结果生成所述标志位;和/或在所述应用场景为视频拍编辑景时,基于所述目标对象检测结果以及所述当前图像与所述上一张图像的连续性检测结果生成所述标志位,其中,所述当前图像与所述上一张图像的连续性检测结果用于指示所述当前图像与所述上一张图像是否为相邻图像帧。
70.在一些实施例中,所述渲染处理包括美颜处理,所述美颜处理包括人脸检测、磨皮处理、色彩调节处理、形变处理中的一者或多者。
71.在一些实施例中,在视频拍摄场景下,若需要启动的线程数量大于或等于2,所述处理器用于:在第一线程上对所述当前图像进行人脸检测,得到所述当前图像的人脸检测结果;基于所述上一张图像的人脸检测结果,在第二线程上对所述当前图像进行磨皮处理、色彩调节处理和/或形变处理,所述第一线程与所述第二线程为不同的线程。
72.在一些实施例中,在视频编辑场景下,若需要启动的线程数量大于或等于2,所述处理器用于:在第一线程上对所述当前图像进行人脸检测,得到所述当前图像的人脸检测结果;基于所述上一张图像的人脸检测结果,在第二线程上对所述当前图像进行磨皮处理和/或色彩调节处理,得到处理后的所述当前图像;基于所述当前图像的人脸检测结果,在第三线程上对处理后的所述当前图像进行形变处理,所述第一线程与所述第二线程为不同的线程。
73.在一些实施例中,所述第一线程包括第一子线程,第二子线程和第三子线程;所述处理器用于:在所述第一子线程上对所述当前图像进行人脸位置检测,得到人脸位置信息;在所述第二子线程上基于所述人脸位置信息对所述当前图像进行人脸姿态角检测,得到所述当前图像的人脸姿态角信息;在所述第三子线程上基于所述当前图像的人脸位置信息和人脸姿态角信息对所述当前图像进行人脸关键点检测,得到所述当前图像的人脸关键点信息。
74.在一些实施例中,所述第二子线程和第三子线程的数量均等于从所述当前图像中检测到的人脸的数量。
75.在一些实施例中,在需要启动的线程的数量大于1的情况下,各个线程分别运行在不同的处理器内核上。
76.本公开实施例的图像渲染装置中处理器所执行的方法的具体实施例可参见前述方法实施例,此处不再赘述。
77.图6示出了本说明书实施例所提供的一种更为具体的数据处理装置硬件结构示意图,该设备可以包括:处理器601、存储器602、输入/输出接口603、通信接口604和总线605。其中处理器601、存储器602、输入/输出接口603和通信接口604通过总线605实现彼此之间在设备内部的通信连接。
78.处理器601可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
79.存储器602可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器602可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器602中,并由处理器601来调用执行。
80.输入/输出接口603用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
81.通信接口604用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
82.总线605包括一通路,在设备的各个组件(例如处理器601、存储器602、输入/输出接口603和通信接口604)之间传输信息。
83.需要说明的是,尽管上述设备仅示出了处理器601、存储器602、输入/输出接口603、通信接口604以及总线605,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
84.本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
85.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
86.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
87.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放
器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
88.以上实施例中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本公开的范围。
89.本领域技术人员在考虑公开及实践这里公开的说明书后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
90.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
91.以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
再多了解一些

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

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

相关文献