CN113506298A - 图像检测与渲染方法及装置、设备、存储介质 - Google Patents
图像检测与渲染方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN113506298A CN113506298A CN202111063569.9A CN202111063569A CN113506298A CN 113506298 A CN113506298 A CN 113506298A CN 202111063569 A CN202111063569 A CN 202111063569A CN 113506298 A CN113506298 A CN 113506298A
- Authority
- CN
- China
- Prior art keywords
- image
- thread
- frame image
- detection
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种图像检测与渲染方法、装置、设备及存储介质,所述方法包括:通过第一线程从图像序列中获取待检测帧图像;通过第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
Description
技术领域
本申请涉及计算机视觉技术领域,涉及但不限定于图像检测与渲染方法及装置、设备、存储介质。
背景技术
随着摄像技术的普及和应用,利用设备进行图像拍摄或视频拍摄已经成为人们日常生活中用来记录生活的重要手段之一。为了呈现的视觉效果更加丰富多彩,往往都需要在图像检测的基础上再做特效渲染,将最终渲染后的图像再呈现给用户。
相关技术中由于前端(Web)的Java描述语言(JavaScript,JS)单线程工作机制,基于深度学习的图像检测和特效渲染按序进行,导致单帧时间过长,预览时较为卡顿,不能满足用户体验的帧率指标。
发明内容
本申请实施例提供一种图像检测与渲染方法及装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种图像检测与渲染方法,所述方法包括:
通过第一线程从图像序列中获取待检测帧图像;
通过第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;
通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
在一些可能的实施例中,按照所述图像序列中图像的先后顺序,在针对所述图像序列中当前帧图像执行完所述步骤后,再按照所述步骤执行下一帧图像;其中,所述待检测帧图像和待渲染帧图像均为所述当前帧图像。
这样,对第一线程实时获取的当前帧图像,先通过第二线程执行图像检测任务,得到检测结果,再由第一线程基于检测结果执行当前帧图像的图像渲染任务,如此使得检测过程不再占用第一线程的性能,可以提高显示帧率及体验效果。
在一些可能的实施例中,所述通过第二线程对所述待检测帧图像执行图像检测任务,包括:在所述第一线程从所述图像序列中获取当前帧图像作为所述待检测帧图像的过程中,通过所述第二线程对所述当前帧图像的前一帧图像执行所述图像检测任务;所述通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务,包括:在所述第二线程对所述当前帧图像执行所述图像检测任务的过程中,通过所述第一线程将经过所述图像检测任务后的前一帧图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务。
这样,对第一线程获取的前一帧图像,在通过第二线程执行图像检测任务的同时由第一线程获取当前帧图像,然后在第一线程基于检测结果对前一帧图像进行渲染的同时由第二线程执行当前帧图像的检测过程,如此利用通过插帧交替进行图像检测和图像渲染,第一线程和第二线程可以同时执行各自任务,节省等待时间,可以提高显示帧率及体验效果。
在一些可能的实施例中,所述通过第一线程从图像序列中获取待检测帧图像,包括:通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;其中,所述图像检测队列用于缓存所述待检测帧图像;所述通过第二线程对所述待检测帧图像执行图像检测任务,包括:通过所述第二线程对从所述图像检测队列中获取的第一图像执行所述图像检测任务;所述第一图像为所述图像检测队列中的首帧图像;所述通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务,包括:通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务;所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像。
这样,通过引入图像检测队列和图像任务队列分别保存待检测帧图像和待渲染帧图像,可以确保在通过在第二线程对当前帧图像进行图像检测的过程中,同时第一线程可以对检测完成的上一帧图像进行渲染。也就是通过引入第二线程和延迟一帧渲染的方式,能够并行执行检测和渲染任务,提升渲染帧率,满足用户体验。
在一些可能的实施例中,所述图像检测队列与所述图像渲染队列为同一任务队列,且在同一时刻所述任务队列中保存有至多一帧所述待检测帧图像和/或至多一帧所述已执行完所述图像检测任务的图像。
这样,将图像检测队列和图像渲染队列优化为同一任务队列,确保任务队列中包括最多一个检测任务和最多一个渲染任务,可以同时满足检测和渲染的需要,同时减少资源浪费,提高设备的运算能力。
在一些可能的实施例中,所述方法还包括:在所述图像检测队列中不存在所述待检测帧图像且所述第一线程为空闲状态的情况下,通过所述第一线程从所述图像序列获取一帧图像作为新的待检测帧图像传输至所述图像检测队列中。
这样,如果图像检测队列中没有待检测帧图像即图像检测任务不足且第一线程空闲,则第一线程从图像序列中获取下一帧图像即新的图像检测任务存入图像检测队列备用,如此能尽可能保证任务占用的密集程度,从而有效提高程序检测渲染效率。
在一些可能的实施例中,所述方法还包括:在所述第一线程完成对所述待渲染帧图像的渲染之后,确定所述第一线程为空闲状态;或者,在所述第二线程对所述第一线程首次从所述图像序列中获取的图像进行图像检测的过程中,确定所述第一线程为空闲状态。
这样,确定第一线程在不同情况下的空闲状态,以便更好地控制画面任务流向,确保整体方案的检测渲染过程高效有序地执行。
在一些可能的实施例中,所述通过所述第二线程对从图像检测队列中获取的所述图像检测队列中获取的第一图像执行图像检测任务,包括:在确定所述第二线程处于空闲状态的情况下,通过所述第一线程获取所述图像检测队列中首帧图像作为所述第一图像并发送给所述第二线程;通过所述第二线程对所述第一图像进行图像检测,得到所述第一图像的检测结果。
这样,在任务流程处理中,检测到第二线程处于空闲状态的情况下,就将图像检测队列中的首帧图像传给第二线程进行图像检测,从而提高程序整体的检测渲染效率。
在一些可能的实施例中,所述方法还包括:在所述第二线程完成对所述第一图像的所述图像检测任务并将所述第一图像传输到所述图像渲染队列的情况下,确定所述第二线程处于所述空闲状态;或者,在所述第一线程将首次从所述图像序列中获取的图像作为所述待检测帧图像传输至所述图像检测队列的情况下,确定所述第二线程处于所述空闲状态。
这样,确定第二线程在不同情况下的空闲状态,以便及时将图像检测队列中的待检测帧图像传给第二线程进行图像检测,从而提高程序整体的检测渲染效率。
第二方面,本申请实施例提供一种图像检测与渲染装置,包括所述装置包括第一获取模块、第一执行模块和第二执行模块,其中:
所述第一获取模块,用于通过第一线程从图像序列中获取待检测帧图像;
所述第一执行模块,用于通过所述第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;
所述第二执行模块,用于通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述图像检测与渲染方法中的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述图像检测与渲染方法中的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,首先,通过第一线程从图像序列中获取待检测帧图像;然后通过所述第二线程对所述待检测帧图像执行图像检测任务;最后通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;如此,针对获取的图像,前端可以采用至少两个线程进行实时检测并渲染特效,这样不会存在所有任务都挤占同一个线程资源,能够提升渲染帧率,满足用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为相关技术中提供的图像检测与渲染方法的流程示意图;
图2为本申请实施例提供的图像检测与渲染方法的流程示意图;
图3A为本申请实施例提供的图像检测与渲染方法的流程示意图;
图3B为本申请实施例提供的任务执行过程的逻辑流程图;
图4A为本申请实施例提供的图像检测与渲染方法的流程示意图;
图4B为本申请实施例提供的任务执行过程的逻辑流程图;
图5A为本申请实施例提供的图像检测与渲染方法的流程示意图;
图5B为本申请实施例提供的任务执行过程的逻辑流程图;
图6为本申请实施例提供的图像检测与渲染方法的流程示意图;
图7为本申请实施例提供的图像检测与渲染方法的流程示意图;
图8为本申请实施例提供的图像检测与渲染装置的组成结构示意图;
图9为本申请实施例提供的电子设备的硬件实体示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。以下实施例用于说明本申请,但不用来限制本申请的范围。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请实施例所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
相关技术中提供的一种图像检测与渲染方法,如图1所示,该方法为基于单个JS线程101的人脸检测渲染流程,虚线框102和虚线框103分别表示针对当前帧图像和针对下一帧图像的任务流程。在针对当前帧图像的任务流程中,JS线程101先执行获取当前帧图像11,其中当前帧图像可以是从终端摄像头实时采集的当前画面数据;然后执行人脸检测12,即将当前帧图像送至人脸检测模块进行识别,得到当前帧图像的人脸检测结果,之后JS线程101基于当前帧图像的人脸检测结果,执行图像渲染13完成对当前帧图像的渲染。同样地,在针对下一帧图像的任务流程中,JS线程101先执行获取下一帧图像14,然后执行人脸检测15,得到下一帧图像的人脸检测结果,之后JS线程101基于下一帧图像的人脸检测结果,执行图像渲染16完成对下一帧图像的渲染。
上述的JS线程进行人脸检测和渲染任务的方案,针对单帧按序进行检测和渲染逻辑,即先进行第N帧检测,然后叠加第N帧图像的检测结果进行渲染,得到第N帧渲染结果。但由于Web端JS单线程工作机制,人脸检测算法和特效渲染过程按序进行,导致单帧图像处理时间过长,预览时较为卡顿,不能满足用户体验的帧率指标。例如当在Web端使用摄像头进行实时人脸检测并渲染特效时,所有任务会挤占同一个线程资源,从而降低显示帧率及体验效果。
以下说明本申请实施例提供的图像检测与渲染方法,本申请实施例中的图像检测模块和图像渲染模块分别通过不同线程调用,其中,图像渲染模块使用第一线程调用,在图像检测算法中使用第二线程执行WebAssembly方案,通过与渲染引擎结合,为用户提供基于图像检测和特效渲染的特效画面展示,例如增强现实(Augmented Reality,AR)体验。
其中,全球广域网(World Wide Web,Web)也称为万维网,是一种基于超文本和超文本传输协议(Hyper Text Transfer Prototol,HTTP)的、全球性的、动态交互的、跨平台的分布式图形信息系统。万维网是建立在英特网(Internet)上的一种网络服务,为浏览者在英特网上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将英特网上的信息节点组织成一个互为关联的网状结构。
Web Worker规范是超文本标记语言(Hyper Text Markup Language 5,HTML5)标准的一部分,这一规范定义了一套应用程序编程接口(Application ProgrammingInterface,API),该规范允许一段JavaScript程序运行在主线程之外的另外一个线程中。
Web Worker规范中定义了两类工作线程,分别是专用线程(Dedicated Worker)和共享线程(Shared Worker),其中,专用线程只能为一个页面所使用,而共享线程则可以被多个页面所共享。
WebAssembly是一种可以使用JS语言编写代码并且能在浏览器上运行的技术方案。WebAssembly技术由于其快速、高效、高性能等特点,广泛应用于各类算法到前端的移植,极大地拓展了算法的应用场景。例如图像检测算法中也使用了WebAssembly技术,通过与渲染引擎结合,为用户提供基于图像检测的增强现实体验。
本申请实施例提供一种图像检测与渲染方法,应用于电子设备。所述电子设备包括但不限于手机、笔记本电脑、平板电脑和掌上上网设备、多媒体设备、流媒体设备、移动互联网设备、可穿戴设备或其他类型的电子设备。该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。处理器可以用于进行图像检测与渲染的处理,存储器可以用于存储进行图像检测与渲染过程中需要的数据以及产生的数据。
图2为本申请实施例提供的图像检测与渲染方法的流程示意图,如图2所示,该方法至少包括以下步骤:
步骤S210,通过第一线程从图像序列中获取待检测帧图像;
这里,所述图像序列包括至少两帧图像。在一些实现方式中,该图像序列可以为电子设备上设置的图像采集装置,如摄像头模组实时采集的图像;在另一些实现方式中,该图像序列可以为其他设备通过即时通信的方式传输给电子设备的需要进行检测渲染展示的图像;在一些实现方式中,该图像序列也可以是电子设备响应于任务处理指令,调用本地相册并从中获取的原始采集图像,对此本申请实施例不做限制。
这里,所述待检测帧图像为对目标对象进行拍摄得到的图像或者预先存储的目标对象的图像,从而便于后续对该待检测图像执行图像检测任务。例如目标对象为人脸时,图像检测任务检测识别人脸图像中的人脸区域。或者针对医学影像,通过图像检测任务检测医学影像中的人体器官或部位。
步骤S220,通过所述第二线程对所述待检测帧图像执行图像检测任务;
这里,所述图像检测任务用于获得所述待检测帧图像的检测结果。
在一些实现方式中,所述第一线程为Web端JS线程,所述第二线程为Worker线程;在一些实现方式中,JS线程为主线程,Worker线程为子线程,同一主线程下可以包括至少一个子线程。
步骤S230,通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务。
这里,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。示例地,针对用户的自拍照,图像检测任务的执行结果则是获得该自拍照中的人脸识别结果;图像渲染任务的执行结果则是生成人脸的渲染图像。
在一种可能的实现方式中,如上所述的电子设备上设置的图像采集装置能够实施捕获视野范围内的图像,并将连续多帧图像作为视频流传输给电子设备的处理器。电子设备的处理器中设置了包含检测算法、识别算法的图像检测模块,以及包含渲染算法的图像渲染模块。在需要对采集的图像进行检测并渲染的场景下,电子设备依次调用每一帧图像以进行图像检测和渲染,生成相应帧图像的渲染图像并展示。
在一种可能的实现方式中,图像采集装置,可以包括但不限于为红绿蓝(RedGreen Blue,RGB)摄像头,或飞行时间(Time of flight,TOF)摄像头等。
在一种可能的实现方式中,图像检测模块通过对每一帧图像进行检测识别,可以确定出每一帧图像中的目标对象。可以理解的是,目标对象可以根据实际需要进行设置,例如可以包括但不限于:设置为图像中所有对象均为目标对象;或设置图像中处于中间区域的对象为目标对象;或者可以设置为识别出图像中的对象后,用户自行选择目标对象等,对此本申请实施例不做限制。
在一种可能的实现方式中,所述渲染图像为AR特效图像,电子设备中可以存储有不同AR特效对应的数据包;还可以由其他设备(例如,云端服务器)传输不同AR特效对应的数据包到该电子设备;在图像渲染模块,通过使用不同的数据包,可以将不同的AR特效展示在电子设备的前端界面上。
值得注意的是,为了解决所有图像的获取任务、图像检测任务和图像渲染任务均挤占同一第一线程资源导致单帧处理时间过长,造成预览卡顿不能满足帧率(即单位时间内的画面帧数)指标的问题,本申请实施例中的图像检测模块和图像渲染模块分别通过不同线程调用。其中,图像渲染模块因为系统浏览器的限制必须在第一线程进行,因此,图像检测模块通过WebAssembly方案运行在第二线程以实现对每一帧图像的检测识别。这样,图像检测任务部分不再占用第一线程性能,能够提高显示帧率及体验效果。
在本申请实施例中,首先,通过第一线程从图像序列中获取待检测帧图像;然后通过第二线程对所述待检测帧图像执行图像检测任务;最后通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;如此,针对获取的图像,前端可以采用至少两个线程进行实时检测并渲染特效,这样不会存在所有任务都挤占同一个线程资源,能够提升渲染帧率,满足用户体验。
在一些实施例中,按照所述图像序列中图像的先后顺序,在针对所述图像序列中当前帧图像执行完图像检测任务和图像渲染任务后,再继续执行下一帧图像;其中,所述待检测帧图像和待渲染帧图像均为所述当前帧图像。图3A为本申请实施例提供的图像检测与渲染方法的流程示意图,如图3A所示,该方法至少包括以下步骤:
步骤S310,获取待检测的图像序列;
这里,所述图像序列包括至少两帧图像。
步骤S320,通过所述第一线程依次获取所述图像序列中的当前帧图像;
这里,第一线程实时获取图像序列中的当前帧图像。在每一次循环中,当前帧图像均为图像序列中时间戳最早的第一帧图像。
步骤S330,通过所述第二线程对所述第一线程获取的所述当前帧图像进行图像检测,得到所述当前帧图像的检测结果;
这里,对当前帧图像进行图像检测,可以是采用任何已知图像检测识别技术对当前帧图像中的对象进行检测,确定出当前帧图像中的目标对象。该目标对象可以是人体、人脸、人手、其他动物等。
其中,检测识别技术例如包括但不限于:图像分割、关键点检测等技术。可以理解的是,本领域技术人员可以选择一种或多种检测识别技术,只要可以实现对当前帧图像中对象的识别即可,对此本申请实施例不做限制。
示例性的,第二线程通过第一线程调用执行,每当第一线程获取一帧图像后就将该帧图像发送给第二线程,在第二线程中对该帧图像进行图像检测得到检测结果,第二线程代码流程结束后再向第一线程返回当前帧图像的检测结果。
步骤S340,通过所述第一线程基于当前帧图像的检测结果,对当前帧图像进行渲染,生成所述当前帧图像的渲染特效画面。
这里,第一线程将预先设计的渲染逻辑叠加在第二线程返回的当前帧图像的检测结果上,得到当前帧图像的渲染结果并展示。
上述实施例中,对于同一帧图像,第一线程和第二线程分别执行图像渲染任务和图像检测任务,使得图像检测部分不再占用第一线程性能,可以得到较好的渲染帧率。但是,在各个线程执行每一步任务的过程中,另一个线程一直处于空闲状态。
如图3B所示,由于系统浏览器的限制,在第一线程301进行获取图像和图像渲染的过程,在第二线程302进行图像检测的过程。虚线框303中表示当前帧图像的任务处理流程,即第一线程301获取当前帧图像31并将当前帧图像传输给第二线程302,然后由第二线程302针对当前帧图像执行图像检测32。之后第二线程302返回当前帧图像的检测结果给第一线程301,由第一线程执行图像渲染33完成对当前帧图像的渲染。同样地,虚线框304表示下一帧图像的任务处理流程,即依次由第一线程301执行获取下一帧图像34、第二线程302针对下一帧图像执行图像检测35、第一线程执行图像渲染36完成对下一帧图像的整体流程。
应注意,在第一线程301基于第二线程302返回的当前帧图像的检测结果,对当前帧图像执行图像渲染33完成之后,第一线程301继续获取下一帧图像34,也就是说通过双线程(第一线程和第二线程)对于图像序列中的每一帧图像依次执行检测任务和渲染任务之后再进行下一帧图像的检测和渲染。
在本申请实施例中,对第一线程实时获取的当前帧图像,先通过第二线程执行图像检测任务,得到检测结果,再由第一线程基于检测结果执行当前帧图像的图像渲染任务,如此使得检测过程不再占用第一线程的性能,可以提高显示帧率及体验效果。
图4A为本申请实施例提供的图像检测与渲染方法的流程示意图,如图4A所示,所述方法可以通过以下步骤实现:
步骤S410,通过第一线程从图像序列中获取待检测帧图像;
这里,所述图像序列包括至少两帧图像。
步骤S420,在所述第一线程从所述图像序列中获取当前帧图像作为所述待检测帧图像的过程中,所述第二线程对所述当前帧图像的前一帧图像执行所述图像检测任务;
这里,首先第一线程从图像序列中获取当前帧图像的前一帧图像并传输给第二线程,然后由第二线程对该前一帧图像进行图像检测。在第二线程对前一帧图像进行图像检测的同时,第一线程同时准备好当前帧图像,以便第二线程返回前一帧图像的检测结果之后又有当前帧图像即新的画面数据待检测。
其中,在第二线程执行前一帧图像的检测任务的过程中,第一线程尚未得到第二线程返回的前一帧图像的检测结果,也就是说第一线程暂时没有待渲染的任务,可以利用空闲时段获取当前帧图像。
步骤S430,在所述第二线程对所述当前帧图像执行所述图像检测任务的过程中,通过所述第一线程将经过所述图像检测任务后的前一帧图像作为待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务。
这里,所述第二线程对当前帧图像进行渲染的过程中,说明第二线程已经完成对前一帧图像的图像检测任务,得到前一帧图像的检测结果,此时第一线程可以基于前一帧图像的检测结果,对前一帧图像进行渲染,得到前一帧图像的渲染图像。
在所述第二线程得到前一帧图像的检测结果之后,通过所述第二线程向所述第一线程返回所述前一帧图像的检测结果;也就是说,第二线程通过第一线程调用,在第二线程的代码流程执行完成后向第一线程返回前一帧图像的检测结果。
这里,第二线程向第一线程返回前一帧图像的检测结果之后,第二线程便处于空闲状态,此时第二线程可以直接对第一线程准备好的当前帧图像进行图像检测。
如图4B所示,由于系统浏览器的限制,在第一线程401进行获取图像和图像渲染的过程,在第二线程402进行图像检测的过程。虚线框403中表示当前帧图像的任务处理流程,即第一线程401获取当前帧图像41并传输给第二线程402,然后由第二线程402执行图像检测42,之后第二线程402返回当前帧图像的检测结果给第一线程401,由第一线程执行图像渲染43完成对当前帧图像的渲染。同样地,虚线框404表示下一帧图像的任务处理流程,即依次由第一线程401执行获取下一帧图像44、第二线程402执行图像检测45、第一线程执行图像渲染46完成对下一帧图像的整体流程。
其中,在第二线程402针对当前帧图像执行图像检测42的同时由第一线程401执行获取下一帧图像44;在第一线程401执行图像渲染43的过程中,第二线程也在针对下一帧图像执行图像检测45过程。这样,当前帧图像和下一帧图像作为相邻的两帧图像交叉并行执行图像检测任务和图像渲染任务,也就是说每两帧图像相互插帧处理,构成一组循环代码,直至获取第N帧图像47,并依次执行图像检测、图像渲染以完成对图像序列中每一帧图像的检测并渲染。
在本申请实施例中,对第一线程实时获取的当前帧图像,在通过第二线程执行图像检测任务的同时由第一线程获取下一帧图像,然后在第一线程基于检测结果对当前帧图像进行渲染的同时由第二线程执行下一帧图像的检测过程,如此利用通过插帧交替进行图像检测和图像渲染,第一线程和第二线程可以同时执行各自任务,节省等待时间,可以提高显示帧率及体验效果。
图5A为本申请实施例提供的图像检测与渲染方法的流程示意图,如图5A所示,所述方法可以通过以下步骤实现:
步骤S510,通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;
这里,所述图像检测队列用于缓存所述待检测帧图像。
步骤S520,通过所述第二线程对从所述图像检测队列中获取的第一图像执行所述图像检测任务;
这里,所述第一图像为所述图像检测队列中的首帧图像。也就是说,图像检测队列中保存有可以直接检测的画面,第二线程空闲时就可以从图像检测队列中获取一个检测任务,不需要等待第一线程渲染完上一帧图像后,再通过第一线程从图像序列中获取当前帧图像。
步骤S530,通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务;
这里,所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像;也就是说,图像渲染队列中保存有可以直接渲染的画面和图像检测结果,第一线程空闲时例如将当前帧图像传输至图像检测队列之后就可以直接从图像渲染队列中获取一个渲染任务,不需要等待第二线程执行完检测过程得到检测结果。
其中,在第二线程正在对第一图像执行图像检测任务的过程中,图像渲染队列中缓存的渲染任务为第一图像的前一帧图像及其检测结果;在第二线程完成对第一图像的检测后将第一图像及其检测结果传输至图像渲染队列中,此时图像渲染队列中缓存的渲染任务为第一图像及其检测结果。
在一些可能的实施例中,所述图像渲染队列与所述图像检测队列为同一任务队列,且在同一时刻所述任务队列中保存有至多一帧所述待检测帧图像和/或至多一帧所述已执行完所述图像检测任务的图像。由于第一线程已经执行完第一图像的前一帧图像的渲染任务并移除了该前一帧图像,这样,将图像检测队列和图像渲染队列优化为同一任务队列,确保队列中包括最多一个检测任务和最多一个渲染任务,可以同时满足检测和渲染的需要,同时减少资源浪费,提高设备的运算能力。
如图5B所示,由于系统浏览器的限制,在第一线程501进行获取图像和图像渲染的过程,在第二线程502进行图像检测的过程。虚线框503和虚线框504表示循环执行的代码流程,其中在第一个循环中,在第一线程501对第一帧图像进行图像渲染54的过程中,由第二线程502对第二帧图像进行图像检测55;同时第一线程501完成图像渲染54后可直接获取第三帧图像56。在第二个循环中,在第一线程501对第二帧图像进行图像渲染57的过程中,由第二线程502对第三帧图像进行图像检测58;同时第一线程501完成图像渲染57后可直接获取第四帧图像59。
在实施中,获取首帧图像51是初始时候的代码流程起点,代表第一线程501第一次获取画面任务并作为待检测帧图像传输至图像检测队列(图中未示出),此时第二线程502处于空闲状态,就直接把这个首帧图像传输给第二线程502进行图像检测53。在上述过程中由于第一线程501没有需要渲染的图像而处于空闲状态,因此执行获取第二帧图像52并将第二帧图像作为新的待检测帧图像传输至图像检测队列。之后第二线程中图像检测53执行结束,第二线程返回第一帧图像的检测结果并作为待渲染帧图像传输至图像渲染队列(图中未示出);此时第二线程处于空闲状态,又可以从图像检测队列中获取第二帧图像进行图像检测55,同时通过第一线程501从图像渲染队列中获取待渲染帧图像并执行图像渲染54,完成第一帧图像的特效画面的显示。
在本申请实施例中,通过引入任务队列保存待检测帧图像和待渲染帧图像,可以确保在通过在第二线程对当前帧图像进行图像检测的过程中,同时第一线程可以对检测完成的上一帧图像进行渲染。也就是通过引入第二线程和延迟一帧渲染的方式,能够并行执行检测和渲染任务,提升渲染帧率,满足用户体验。
图6为本申请实施例为提供的图像检测与渲染方法的流程示意图,如图6所示,所述方法至少包括以下步骤:
步骤S610,通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;
这里,所述图像检测队列用于缓存所述待检测帧图像。
步骤S620,在确定所述第二线程处于空闲状态的情况下,通过所述第一线程获取所述图像检测队列中首帧图像作为所述第一图像并发送给所述第二线程;
这里,所述第一图像为所述第一线程从所述图像序列中获取并传输至所述图像检测队列的首帧图像。
在一些可能的实现方式中,在所述第二线程完成对所述第一图像的所述图像检测任务并将所述第一图像传输到所述图像渲染队列的情况下,确定所述第二线程处于所述空闲状态;在另一些可能的实现方式中,所述当前帧图像为所述第一线程从所述图像序列中获取的首帧图像,在所述第一线程将首次从所述图像序列中获取的图像作为所述待检测帧图像传输至所述图像检测队列的情况下,确定所述第二线程处于所述空闲状态。这样,确定第二线程在不同情况下的空闲状态,以便及时将图像检测队列中的待检测帧图像传给第二线程进行图像检测,从而提高程序整体的检测渲染效率。
步骤S630,通过所述第二线程对所述第一图像进行图像检测,得到所述第一图像的检测结果;
这里,通过所述第二线程将所述待检测帧图像的检测结果作为新的渲染任务传输至所述图像渲染队列中。
步骤S640,通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务。
这里,所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像。
在实施中,第一线程基于待渲染帧图像(第一图像或其前一帧图像)的检测结果,对待渲染帧图像进行渲染。
本申请实施例在任务流程处理中,在检测到第二线程处于空闲状态的情况下,就将图像检测队列中的待检测帧图像传给第二线程进行图像检测,从而提高程序整体的检测渲染效率。
图7为本申请实施例为提供的图像检测与渲染方法的流程示意图,如图7所示,所述方法至少包括以下步骤:
步骤S710,通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;
这里,所述图像检测队列用于缓存所述待检测帧图像。
步骤S720,通过所述第二线程对从所述图像检测队列中获取的第一图像执行所述图像检测任务;
这里,所述第一图像为所述图像检测队列中的首帧图像。
其中,第二线程对所述第一图像进行图像检测,得到第一图像的检测结果,并将执行完检测任务的第一图像作为渲染任务传输到图像渲染队列中。
步骤S730,通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务;
这里,所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像。
步骤S740,在所述图像检测队列中不存在所述待检测帧图像且所述第一线程为空闲状态的情况下,通过所述第一线程从所述图像序列获取一帧图像作为新的所述待检测帧图像传输至所述图像检测队列中。
这里,可以先确定图像检测队列不存在待检测帧图像再确定第一线程为空闲状态,也可以先确定第一线程为空闲状态再确定图像检测队列不存在待检测帧图像,本申请实施例对此不做限定。
在一些可能的实现方式中,在所述第一线程完成对所述待渲染帧图像的渲染之后,确定所述第一线程为空闲状态;在另一些可能的实现方式中,在所述第二线程对所述第一线程首次从所述图像序列中获取的图像进行图像检测的过程中,确定所述第一线程为空闲状态。这样,确定第一线程在不同情况下的空闲状态,以便更好地控制画面任务流向,确保整体方案的检测渲染过程高效有序地执行。
在本申请实施例中,如果图像检测队列中没有待检测帧图像即图像检测任务不足且第一线程空闲,则第一线程从图像序列中获取下一帧图像即新的图像检测任务存入图像检测队列备用,如此能尽可能保证任务占用的密集程度,从而有效提高程序检测渲染效率。
应注意,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
下面结合一个具体实施例对上述图像检测与渲染方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
本申请实施例以人脸检测渲染流程,且图像渲染队列与图像检测队列为同一任务队列为例,提出一种基于Web Worker的双线程异步人脸检测与渲染方法,通过引入双线程和延迟渲染方案,能够并行检测和渲染,提升渲染帧率,满足用户体验。
步骤S801,确定任务队列,用来保存待检测帧图像和待渲染帧图像;
这里,待渲染帧图像为已经检测完成并获得人脸检测结果的图像。
步骤S802,在每一帧的循环中,先检测人脸检测模块是否闲置;如果闲置,则在任务队列中获取一帧待检测帧图像送去第二线程进行检测;
步骤S803,第一线程查看任务队列中是否有待渲染帧图像进行渲染;
这里,在第一线程完成对待渲染帧图像的渲染过程之后,从任务队列中移除该待渲染帧图像。
步骤S804,渲染结束后,如果任务队列中无待检测帧图像,则从终端摄像头中获取一帧新的画面作为待检测帧图像,并从入任务并队列中备用。
重复上述步骤S802至步骤S804即可循环检测渲染人脸特效。
按如上步骤S802至步骤S804的逻辑,任务队列中应该保持至多2个任务(一帧待渲染帧图像即检测完成待渲染的任务、一帧待检测帧图像即尚未检测或正在检测的任务),从而第一线程不再需要人脸检测任务的同时尽可能保证任务占用的密集程度,可以有效提高程序检测渲染效率。
本申请实施例通过引入第二线程进行人脸检测任务,提高整体检测渲染效率。同时通过任务队列的使用,使得第二线程在针对第N帧图像进行检测时,第一线程可以同时针对第N-1帧图像的检测结果进行渲染,生成第N-1帧图像的渲染图像。这样延迟一帧渲染的方案,能够并行检测和渲染,提升渲染帧率,满足用户体验。
基于前述的实施例,本申请实施例再提供一种图像检测与渲染装置,所述装置包括所包括的各模块、以及各模块所包括各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CentralProcessing Unit,CPU)、微处理器(Micro Processing Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable GateArray,FPGA)等。
图8为本申请实施例提供的图像检测与渲染装置的组成结构示意图,如图8所示,所述装置800包括第一获取模块810、第一执行模块820和第二执行模块830,其中:
所述第一获取模块810,用于通过第一线程从图像序列中获取待检测帧图像;
所述第一执行模块820,用于通过第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;
所述第二执行模块830,用于通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
在一些可能的实施例中,第一获取模块、第一执行模块和第二执行模块在对所述图像序列中当前帧图像执行后,第一获取模块、第一执行模块和第二执行模块再对下一帧图像执行;其中,所述待检测帧图像和待渲染帧图像均为所述当前帧图像。
在一些可能的实施例中,所述第一执行模块820还用于在所述第一线程从所述图像序列中获取当前帧图像作为所述待检测帧图像的过程中,通过所述第二线程对所述当前帧图像的前一帧图像执行所述图像检测任务;所述第二执行模块830还用于在所述第二线程对所述当前帧图像执行所述图像检测任务的过程中,通过所述第一线程将经过所述图像检测任务后的前一帧图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务。
在一些可能的实施例中,所述第一获取模块810还用于通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;其中,所述图像检测队列用于缓存所述待检测帧图像;所述第一执行模块820,还用于通过所述第二线程对从所述图像检测队列中获取的第一图像执行所述图像检测任务;所述第一图像为所述图像检测队列中的首帧图像;所述第二执行模块830,还用于通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务;所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像。
在一些可能的实施例中,所述图像检测队列与所述图像渲染队列为同一任务队列,且在同一时刻所述任务队列中保存有至多一帧所述待检测帧图像和/或至多一帧所述已执行完所述图像检测任务的图像。
在一些可能的实施例中,所述装置还包括第二获取模块,用于在所述图像检测队列中不存在所述待检测帧图像且所述第一线程为空闲状态的情况下,通过所述第一线程从所述图像序列获取一帧图像作为新的待检测帧图像传输至所述图像检测队列中。
在一些可能的实施例中,所述装置还包括第一确定模块,用于在所述第一线程完成对所述待渲染帧图像的渲染之后,确定所述第一线程为空闲状态;或者,在所述第二线程从所述图像检测队列中获取所述首帧图像进行图像检测的过程中,确定所述第一线程为空闲状态。
在一些可能的实施例中,所述第一获取模块包括发送单元和检测单元,其中:所述发送单元,用于在确定所述第二线程处于空闲状态的情况下,通过所述第一线程获取所述图像检测队列中首帧图像作为所述第一图像并发送给所述第二线程;所述检测单元,用于通过所述第二线程对所述第一图像进行图像检测,得到所述第一图像的检测结果。
在一些可能的实施例中,所述装置还包括第二确定模块,用于在所述第二线程完成对所述第一图像的所述图像检测任务并将所述第一图像传输到所述图像渲染队列的情况下,确定所述第二线程处于所述空闲状态;或者,在所述第一线程将首次从所述图像序列中获取的图像作为所述待检测帧图像传输至所述图像检测队列的情况下,确定所述第二线程处于所述空闲状态。
这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述图像检测与渲染方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是具有摄像头的智能手机、平板电脑等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例中所述图像检测与渲染方法中的步骤。
对应地,本申请实施例中,还提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时,用于实现上述任一实施例中所述图像检测与渲染方法中的步骤。
对应地,本申请实施例中,还提供了一种计算机程序产品,当该计算机程序产品被电子设备的处理器执行时,其用于实现上述任一实施例中所述图像检测与渲染方法中的步骤。
基于同一技术构思,本申请实施例提供一种电子设备,用于实施上述方法实施例记载的图像检测与渲染方法。图9为本申请实施例提供的电子设备的硬件实体示意图,如图9所示,所述电子设备900包括存储器910和处理器920,所述存储器910存储有可在处理器920上运行的计算机程序,所述处理器920执行所述程序时实现本申请实施例任一所述图像检测与渲染方法中的步骤。
存储器910配置为存储由处理器920可执行的指令和应用,还可以缓存待处理器920以及电子设备中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器920执行程序时实现上述任一项的图像检测与渲染方法的步骤。处理器920通常控制电子设备900的总体操作。
上述处理器可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种图像检测与渲染方法,其特征在于,包括以下步骤:
通过第一线程从图像序列中获取待检测帧图像;
通过第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;
通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
2.如权利要求1所述的方法,其特征在于,按照所述图像序列中图像的先后顺序,在针对所述图像序列中当前帧图像执行完所述步骤后,再按照所述步骤执行下一帧图像;
其中,所述待检测帧图像和待渲染帧图像均为所述当前帧图像。
3.如权利要求1所述的方法,其特征在于,所述通过第二线程对所述待检测帧图像执行图像检测任务,包括:在所述第一线程从所述图像序列中获取当前帧图像作为所述待检测帧图像的过程中,通过所述第二线程对所述当前帧图像的前一帧图像执行所述图像检测任务;
所述通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务,包括:在所述第二线程对所述当前帧图像执行所述图像检测任务的过程中,通过所述第一线程将经过所述图像检测任务后的前一帧图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务。
4.如权利要求1所述的方法,其特征在于,所述通过第一线程从图像序列中获取待检测帧图像,包括:通过所述第一线程从所述图像序列中获取所述待检测帧图像放入图像检测队列中;其中,所述图像检测队列用于缓存所述待检测帧图像;
所述通过第二线程对所述待检测帧图像执行图像检测任务,包括:通过所述第二线程对从所述图像检测队列中获取的第一图像执行所述图像检测任务;所述第一图像为所述图像检测队列中的首帧图像;
所述通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务,包括:通过所述第一线程从图像渲染队列中获取第二图像作为所述待渲染帧图像,对所述待渲染帧图像执行所述图像渲染任务;所述图像渲染队列用于缓存已执行完所述图像检测任务的图像,所述图像渲染队列中的第二图像为完成所述图像检测任务的所述第一图像或所述第一图像的前一帧图像。
5.如权利要求4所述的方法,其特征在于,所述图像检测队列与所述图像渲染队列为同一任务队列,且在同一时刻所述任务队列中保存有至多一帧所述待检测帧图像和/或至多一帧所述已执行完所述图像检测任务的图像。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
在所述图像检测队列中不存在所述待检测帧图像且所述第一线程为空闲状态的情况下,通过所述第一线程从所述图像序列获取一帧图像作为新的所述待检测帧图像传输至所述图像检测队列中。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
在所述第一线程完成对所述待渲染帧图像的渲染之后,确定所述第一线程为空闲状态;或者,
在所述第二线程对所述第一线程首次从所述图像序列中获取的图像进行图像检测的过程中,确定所述第一线程为空闲状态。
8.如权利要求4至7任一项所述的方法,其特征在于,所述通过所述第二线程对从所述图像检测队列中获取的第一图像执行图像检测任务,包括:
在确定所述第二线程处于空闲状态的情况下,通过所述第一线程获取所述图像检测队列中首帧图像作为所述第一图像并发送给所述第二线程;
通过所述第二线程对所述第一图像进行图像检测,得到所述第一图像的检测结果。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
在所述第二线程完成对所述第一图像的所述图像检测任务并将所述第一图像传输到所述图像渲染队列的情况下,确定所述第二线程处于所述空闲状态;或者,
在所述第一线程将首次从所述图像序列中获取的图像作为所述待检测帧图像传输至所述图像检测队列的情况下,确定所述第二线程处于所述空闲状态。
10.一种图像检测与渲染装置,其特征在于,所述装置包括第一获取模块、第一执行模块和第二执行模块,其中:
所述第一获取模块,用于通过第一线程从图像序列中获取待检测帧图像;
所述第一执行模块,用于通过第二线程对所述待检测帧图像执行图像检测任务;其中,所述图像检测任务用于获得所述待检测帧图像的检测结果;
所述第二执行模块,用于通过所述第一线程从经过所述第二线程执行图像检测任务后的图像中确定待渲染帧图像,对所述待渲染帧图像执行图像渲染任务;其中,所述图像渲染任务用于基于所述待渲染帧图像的检测结果,对所述待渲染帧图像进行渲染,得到所述待渲染帧图像的特效画面。
11.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至9任一项所述方法中的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至9中任一项所述方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111063569.9A CN113506298A (zh) | 2021-09-10 | 2021-09-10 | 图像检测与渲染方法及装置、设备、存储介质 |
PCT/CN2022/117294 WO2023036133A1 (zh) | 2021-09-10 | 2022-09-06 | 图像检测与渲染方法及装置、设备、存储介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111063569.9A CN113506298A (zh) | 2021-09-10 | 2021-09-10 | 图像检测与渲染方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113506298A true CN113506298A (zh) | 2021-10-15 |
Family
ID=78016760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111063569.9A Pending CN113506298A (zh) | 2021-09-10 | 2021-09-10 | 图像检测与渲染方法及装置、设备、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113506298A (zh) |
WO (1) | WO2023036133A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237739A (zh) * | 2021-12-08 | 2022-03-25 | 广州讯飞易听说网络科技有限公司 | 应用程序的图像加载方法、计算机设备及存储介质 |
WO2023036133A1 (zh) * | 2021-09-10 | 2023-03-16 | 上海商汤智能科技有限公司 | 图像检测与渲染方法及装置、设备、存储介质及计算机程序产品 |
WO2023134625A1 (zh) * | 2022-01-11 | 2023-07-20 | 华为技术有限公司 | 特效优化方法、装置、存储介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389159A (zh) * | 2014-09-03 | 2016-03-09 | 优视科技有限公司 | 图片渲染方法、装置和移动终端 |
CN107203960A (zh) * | 2016-06-30 | 2017-09-26 | 北京新媒传信科技有限公司 | 图像渲染方法及装置 |
CN110443880A (zh) * | 2019-08-08 | 2019-11-12 | Oppo广东移动通信有限公司 | 图像渲染方法、装置、存储介质及电子设备 |
US20210174475A1 (en) * | 2017-12-04 | 2021-06-10 | Nvidia Corporation | Systems and methods for frame time smoothing based on modified animation advancement and use of post render queues |
CN113347488A (zh) * | 2021-08-04 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 视频渲染方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399729B (zh) * | 2013-06-28 | 2016-04-27 | 广州市动景计算机科技有限公司 | 一种HTML5 Canvas应用处理方法、装置及处理器 |
US10365876B2 (en) * | 2017-04-19 | 2019-07-30 | International Business Machines Corporation | Automatic real-time configuration of a multi-head display system |
CN107993183A (zh) * | 2017-11-24 | 2018-05-04 | 暴风集团股份有限公司 | 图像处理装置、方法、终端和服务器 |
CN112887510A (zh) * | 2021-01-19 | 2021-06-01 | 三一重工股份有限公司 | 基于视频检测的视频播放方法及系统 |
CN113506298A (zh) * | 2021-09-10 | 2021-10-15 | 北京市商汤科技开发有限公司 | 图像检测与渲染方法及装置、设备、存储介质 |
-
2021
- 2021-09-10 CN CN202111063569.9A patent/CN113506298A/zh active Pending
-
2022
- 2022-09-06 WO PCT/CN2022/117294 patent/WO2023036133A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389159A (zh) * | 2014-09-03 | 2016-03-09 | 优视科技有限公司 | 图片渲染方法、装置和移动终端 |
CN107203960A (zh) * | 2016-06-30 | 2017-09-26 | 北京新媒传信科技有限公司 | 图像渲染方法及装置 |
US20210174475A1 (en) * | 2017-12-04 | 2021-06-10 | Nvidia Corporation | Systems and methods for frame time smoothing based on modified animation advancement and use of post render queues |
CN110443880A (zh) * | 2019-08-08 | 2019-11-12 | Oppo广东移动通信有限公司 | 图像渲染方法、装置、存储介质及电子设备 |
CN113347488A (zh) * | 2021-08-04 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 视频渲染方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023036133A1 (zh) * | 2021-09-10 | 2023-03-16 | 上海商汤智能科技有限公司 | 图像检测与渲染方法及装置、设备、存储介质及计算机程序产品 |
CN114237739A (zh) * | 2021-12-08 | 2022-03-25 | 广州讯飞易听说网络科技有限公司 | 应用程序的图像加载方法、计算机设备及存储介质 |
CN114237739B (zh) * | 2021-12-08 | 2024-02-02 | 广州讯飞易听说网络科技有限公司 | 应用程序的图像加载方法、计算机设备及存储介质 |
WO2023134625A1 (zh) * | 2022-01-11 | 2023-07-20 | 华为技术有限公司 | 特效优化方法、装置、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2023036133A1 (zh) | 2023-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113506298A (zh) | 图像检测与渲染方法及装置、设备、存储介质 | |
CN112261424B (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
JP2020512647A (ja) | ビデオ識別及びトレーニング方法、装置、電子デバイス及び媒体 | |
JP2011526013A (ja) | 画像処理 | |
US10580143B2 (en) | High-fidelity 3D reconstruction using facial features lookup and skeletal poses in voxel models | |
CN111669502B (zh) | 目标对象显示方法、装置及电子设备 | |
CN107295352B (zh) | 一种视频压缩方法、装置、设备及存储介质 | |
TWI518602B (zh) | 圖像識別方法、裝置、終端設備及伺服器 | |
CN107977437B (zh) | 图像处理方法、装置、存储介质和电子设备 | |
CN108259767B (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN113395599A (zh) | 一种视频处理方法、装置、电子设备及介质 | |
CN108924624B (zh) | 信息处理方法和装置 | |
CN108495038B (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN114650361B (zh) | 拍摄模式确定方法、装置、电子设备和存储介质 | |
CN115802148A (zh) | 一种获取图像的方法及电子设备 | |
CN114339071A (zh) | 图像处理电路、图像处理方法及电子设备 | |
CN114157626A (zh) | 应用拍照传送照片的方法、系统、存储介质及计算机设备 | |
CN108647097B (zh) | 文本图像处理方法、装置、存储介质及终端 | |
CN113747223A (zh) | 视频评论方法、装置和电子设备 | |
CN115601842B (zh) | 一种自动抓拍的方法、电子设备及存储介质 | |
CN116347009B (zh) | 视频生成方法及电子设备 | |
US11037599B2 (en) | Automatic slow motion video recording | |
CN113055612B (zh) | 一种视频播放方法、装置、电子设备、系统和介质 | |
WO2023088029A1 (zh) | 一种封面生成方法、装置、设备及介质 | |
CN116016983A (zh) | 比赛画面的识别方法、装置、设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40056151 Country of ref document: HK |