CN116704075A - 图像处理方法、设备及存储介质 - Google Patents

图像处理方法、设备及存储介质 Download PDF

Info

Publication number
CN116704075A
CN116704075A CN202211261351.9A CN202211261351A CN116704075A CN 116704075 A CN116704075 A CN 116704075A CN 202211261351 A CN202211261351 A CN 202211261351A CN 116704075 A CN116704075 A CN 116704075A
Authority
CN
China
Prior art keywords
rendering
image
texture data
image content
coloring
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
Application number
CN202211261351.9A
Other languages
English (en)
Inventor
陈浩
刘金晓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211261351.9A priority Critical patent/CN116704075A/zh
Publication of CN116704075A publication Critical patent/CN116704075A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本申请提供一种图像处理方法、设备及存储介质,应用于终端技术领域。该方法包括:电子设备获取来自应用程序的第一渲染指令,第一渲染指令用于绘制第N帧图像的第一图像内容,N为正整数;在确定预设存储空间中存储的着色率纹理数据可用时,基于第一渲染指令和着色率纹理数据绘制第一图像内容;获取来自应用程序的第二渲染指令,第二渲染指令用于绘制第N帧图像的第二图像内容,第二图像内容的绘制调用次数小于第一图像内容的绘制调用次数;基于所述第二渲染指令和预设着色率,以单个像素为单位绘制所述第二图像内容。上述方法中,通过对第N帧图像的不同图像内容采用不同的渲染方式,以降低设备的渲染开销。

Description

图像处理方法、设备及存储介质
技术领域
本申请涉及图像处理技术领域,尤其涉及图像处理方法、设备及存储介质。
背景技术
随着屏幕技术的发展,当前移动终端的屏幕分辨率越来越高,在移动终端上渲染游戏的场景复杂度越来越高,内存占用和渲染功耗也随之增加。对于高分辨率游戏,在移动终端上往往由于功耗或处理器CPU能力的限制,容易出现发热或卡顿现象,影响用户体验。
发明内容
本申请实施例提供一种图像处理方法、设备及存储介质,通过对图像中不同图像内容采用不同的渲染方式,以降低设备的渲染开销,提升用户体验。
第一方面,本申请实施例提供一种图像处理方法,应用于电子设备,所述电子设备上运行有应用程序,所述方法包括:获取来自所述应用程序的第一渲染指令,所述第一渲染指令用于绘制第N帧图像的第一图像内容,N为正整数;在确定预设存储空间中存储的着色率纹理数据可用时,基于所述第一渲染指令和所述着色率纹理数据绘制所述第一图像内容;获取来自所述应用程序的第二渲染指令,所述第二渲染指令用于绘制所述第N帧图像的第二图像内容,所述第二图像内容的绘制调用次数小于所述第一图像内容的绘制调用次数;基于所述第二渲染指令和预设着色率,以单个像素为单位绘制所述第二图像内容。
其中,着色率纹理数据用于指示绘制第一图像内容不同区域的着色率。
示例性的,上述应用程序可以是游戏应用,第一图像内容可以是游戏应用的主场景的图像内容,是游戏图像的主体部分,例如包括人物、建筑、地面、山体等内容。第二图像内容可以是游戏应用中除主场景外的其他图像内容,是游戏图像的辅助部分,例如包括光照、阴影等效果。第一图像内容的渲染功耗大于第二图像内容的渲染功耗。
可选的,上述应用程序还可以是其他需要图像渲染的应用,如家居设计类、三维建模类应用程序,对此本申请不作限定。
该方案中,对于第N帧图像的第一图像内容,可直接使用预设存储空间的着色率纹理数据来绘制第N帧图像的第一图像内容,由于着色率纹理数据指示了图像不同区域的着色率,不同区域着色率有高有低,因此可以在一定程度上降低设备渲染开销。对于第N帧图像的第二图像内容,由于第二图像内容的绘制调用次数相比第一图像内容小很多,基于预设的着色率,对第二图像内容以单个像素为单元进行图像渲染,能够达到较理想的渲染效果。相反,若对第二图像内容也采用着色率纹理进行渲染,基于相同原理,设备还需要预先计算用于绘制第二图像内容的着色率纹理数据,这将额外地加剧设备的计算量,在渲染画质没有很大提升的情况下,反而提高了渲染负载。
结合第一方面,一种可能的实施方式中,所述着色率纹理数据是基于第M帧图像的第三图像内容的渲染图确定的;所述第三图像内容的绘制调用次数大于所述第M帧图像中除所述第三图像内容之外的图像内容的绘制调用次数,N和M的差值大于0且小于或等于预设阈值,M为正整数。
示例性的,基于上述示例,第三图像内容可以是游戏应用的主场景的图像内容,由于第M帧图像区别于第N帧图像,因此第三图像内容和第一图像内容存在一定差异。
该方案中,第M帧图像是第N帧图像之前的一帧图像,在对第N帧图像的第一图像内容渲染时,可直接复用基于第M帧图像的第三图像内容的渲染图确定的着色率纹理,相比基于预设着色率对第一图像内容逐个像素进行图像渲染,可在一定程度减小设备的计算量,有效降低设备渲染负载。
结合第一方面,一种可能的实施方式中,所述方法还包括:获取第M帧图像的第三图像内容的渲染图;确定所述第三图像内容的渲染图的图像强度变化;基于所述第三图像内容的渲染图的图像强度变化,确定所述第三图像内容的渲染图中不同区域的着色率,得到所述着色率纹理数据;将所述着色率纹理数据存储在所述预设存储空间。
其中,渲染图的图像强度变化可以包括渲染图的灰度和/或亮度的变化。
该方案中,通过对第M帧图像的第三图像内容的渲染图的图像强度分析,为第三图像内容中图像强度变化不同的区域设置不同的着色率,以指导第M帧之后的一帧或几帧图像的渲染,有效降低设备渲染负载。
结合第一方面,一种可能的实施方式中,所述第三图像内容的渲染图包括第一区域和第二区域,所述着色率纹理数据包括所述第一区域的着色率和所述第二区域的着色率;若所述第一区域的图像强度变化大于所述第二区域的图像强度变化,所述第一区域的着色率大于所述第二区域的着色率;若所述第一区域的图像强度变化小于所述第二区域的图像强度变化,所述第一区域的着色率小于所述第二区域的着色率;若所述第一区域的图像强度变化等于所述第二区域的图像强度变化,所述第一区域的着色率等于所述第二区域的着色率。
该方案中,通过对第三图像内容中图像强度变化较大的区域设置较高的着色率,对第三图像内容中图像强度变化较小的区域设置较低的着色率,实现可变着色率,从而降低设备渲染的负载。
结合第一方面,一种可能的实施方式中,所述电子设备中配置有拦截模块以及图像处理器GPU;获取来自所述应用程序的第一渲染指令,包括:所述拦截模块拦截所述第一渲染指令;在确定预设存储空间中存储的着色率纹理数据可用时,基于所述第一渲染指令和所述着色率纹理数据绘制所述第一图像内容,包括:在所述拦截模块确定所述着色率纹理数据可用时,所述拦截模块通过所述电子设备的图形库,向所述GPU下发使用所述着色率纹理数据的第一着色指令;所述GPU基于所述第一着色指令和所述着色率纹理数据绘制所述第一图像内容。
该方案中,渲染模块拦截第一渲染指令,获知需要渲染第一图像内容时,渲染模块需确定预存空间中是否有可用的着色率纹理数据,若有可用的着色率纹理数据,渲染模块通过图形库告知GPU直接使用着色率纹理数据绘制第一图像内容,由此节省着色过程中的渲染开销,降低设备功耗。
结合第一方面,一种可能的实施方式中,获取来自所述应用程序的第二渲染指令,包括:拦截模块拦截来自所述应用程序的第二渲染指令;基于所述第二渲染指令和预设着色率,以单个像素为单位绘制所述第二图像内容,包括:所述拦截模块通过所述图形库向GPU下发使用单像素着色的第二着色指令;所述GPU基于所述第二着色指令和所述预设着色率,以单个像素为单元绘制所述第二图像内容。
该方案中,渲染模块拦截第二渲染指令,获知需要渲染第二图像内容时,渲染模块通过图形库告知GPU采用单像素着色方式绘制第二图像内容。相比第一图像内容,第二图像内容的渲染功耗较低,直接采用单像素着色方式绘制第二图像内容,能够达到较理想的渲染效果,若采用第一图像内容类似的渲染方式,反而加剧渲染开销。
结合第一方面,一种可能的实施方式中,所述电子设备中配置有计算控制模块,在所述GPU完成对所述第一图像内容的绘制之后,所述方法还包括:所述计算控制模块确定是否更新所述着色率纹理数据;若所述计算控制模块确定更新所述着色率纹理数据,所述计算控制模块通过所述图形库向所述GPU下发计算指令;所述GPU基于所述计算指令和所述第一图像内容的渲染图,确定所述第一图像内容中不同区域的着色率,以更新所述着色率纹理数据。
其中,GPU中预置着色率计算模型,该着色率计算模型可用于分析第一图像内容的渲染图的频域信息,为第一图像内容中频域较高的区域和频域较低的区域设置不同的着色率,即基于第一图像内容的渲染图计算着色率纹理数据。频域信息指示了渲染图的图像强度变化情况,较高频域的区域图像强度变化较大,较低频域的区域图像强度变化较小。
该方案中,计算控制模块可根据预设的更新策略,及时更新预设存储空间的着色率纹理数据,GPU可根据计算控制模块的指示来计算最新的着色率纹理数据,以满足后续图像帧的图像渲染,降低设备对连续图像帧的渲染开销。
结合第一方面,一种可能的实施方式中,所述计算控制模块确定是否更新所述着色率纹理数据,包括:若N和M的差值等于预设阈值,所述计算控制模块确定更新所述着色率纹理数据;若N和M的差值小于所述预设阈值,所述计算控制模块不更新所述着色率纹理数据。
示例性的,预设阈值可以为2,若N和M的差值等于2,则需要更新着色率纹理数据,也即每两帧需要更新一次着色率纹理数据。在完成第N帧图像的第一图像内容的绘制后,GPU基于第N帧图像的第一图像内容的渲染图,计算新的着色率纹理数据,新的着色率纹理数据可用于第N+1帧的第四图像内容和第N+2帧的第五图像内容的绘制,第四图像内容和第五图像内容可以是如游戏应用的主场景的图像内容。
该方案中,只有在N和M的差值等于预设阈值时,才更新着色率纹理数据,即在第M帧图像和第N帧图像之间的图像可以直接复用基于第M帧图像的第三图像内容的渲染图确定的着色率纹理数据,可进一步降低设备渲染开销。
结合第一方面,一种可能的实施方式中,所述方法还包括:所述GPU更新所述着色率纹理数据之后,所述GPU向所述拦截模块发送通知信号,所述通知信号用于指示所述着色率纹理数据是否可用。
该方案中,拦截模块通过GPU发送的通知信号获知预设存储空间的着色率纹理数据是否可用,以便拦截模块在拦截渲染指令后,向GPU发送相应的着色指令,着色指令中可指示是否复用着色率纹理,以降低设备渲染开销。
第二方面,本申请实施例提供一种图像处理方法,应用于电子设备,所述电子设备上运行有应用程序,所述电子设备中配置有拦截模块以及图像处理器GPU,所述方法包括:所述拦截模块拦截来自应用程序的第一渲染指令;在所述拦截模块确定预设存储空间中存储的着色率纹理数据可用时,所述拦截模块通过所述电子设备的图形库,向所述GPU下发使用所述着色率纹理数据的第一着色指令;所述GPU基于所述第一着色指令和所述着色率纹理数据绘制所述第一图像内容。
结合第二方面,一种可能的实施方式中,在拦截模块确定预设存储空间中没有可用的着色率纹理数据,拦截模块通过图形库指示GPU基于单像素着色方式绘制第一图像内容。在GPU完成第一图像内容绘制后,GPU可基于第一图像内容的渲染图确定该渲染图对应的着色率纹理数据,并将该着色率纹理数据存储至预设存储空间,以便后续图像帧复用,由此降低设备的渲染开销。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括处理器,所述处理器用于调用存储器中的计算机程序,以执行如第一方面或第二方面,或第一方面的任一种实施方式中描述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面或第二方面,或第一方面的任一种实施方式中描述的方法。
第五方面,本申请实施例提供了一种芯片***,所述芯片***应用于包括处理器和存储器的电子设备,所述芯片***包括一个或多个接口电路和一个或多个处理器,所述接口电路和所述处理器通过线路互联,所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令,当所述处理器执行所述计算机指令时,使得所述电子设备执行如第一方面或第二方面,或第一方面的任一种实施方式中描述的方法。
应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种图像处理方法的原理示意图;
图2为本申请实施例提供的一种电子设备的结构示意图;
图3A为本申请实施例提供的一种图像处理方法的流程示意图;
图3B为本申请实施例提供的一种图像处理方法的流程示意图;
图4为本申请实施例提供的一种电子设备的软件组成的示意图;
图5为本申请实施例提供的一种图像处理方法的流程示意图;
图6A为本申请实施例提供的一种图像处理方法的流程示意图;
图6B为本申请实施例提供的一种图像处理方法的流程示意图;
图7为本申请实施例提供的一种图像处理方法的流程示意图;
图8为本申请实施例提供的一种芯片***的结构示意图。
具体实施方式
用户在使用电子设备中的游戏、家居设计、建模等应用程序时,电子设备可以根据这些应用程序下发的渲染命令,完成图像渲染处理,然后显示图像。
相关技术中,当应用程序(如游戏应用)需要显示图像时,可以向电子设备的中央处理器(Central Processing Unit,CPU)发出针对该图像的渲染命令。CPU可以根据这些渲染命令,控制电子设备的图形处理器(Graphics Processing Unit,GPU)对该图像进行渲染,渲染后的数据可存储至电子设备的默认帧缓冲(provided framebuffer)中。默认帧缓冲可以是电子设备在内存中为当前需要显示的图像配置的存储空间,可在图像渲染前创建,默认帧缓冲中包含的内容可以全部在屏幕上呈现。即在电子设备需要显示某一图像时,可以根据默认帧缓冲中存储的该图像对应显示数据,控制显示器显示该图像。
在一些渲染场景中,一帧图像中包括较多或复杂的图形元素,或者包括较多或复杂的图像效果(如阴影、半透明、特效等),往往需要多个步骤才能完成渲染。例如,在高分辨率游戏的渲染场景中,一帧游戏图像的渲染通常包括游戏主场景以及其他场景的渲染,其中游戏主场景的渲染功耗是最高的。游戏主场景也称为高负载场景,是游戏图像的主体,通常包括人物、建筑、地面、山体等内容,其他场景是游戏图像的辅助,包括对上述内容添加的光照、阴影等效果。在执行对游戏图像的渲染时,可以先执行对游戏主场景的渲染步骤后,再执行对其他场景的渲染步骤,将渲染结果绘制到默认帧缓冲中,最终将渲染结果呈现在屏幕上。当然,在一些场景中,也存在先渲染游戏其他场景再渲染主场景的情况。
上述渲染场景对设备内存和CPU处理能力的要求较高,对于普通移动终端而言,由于功耗和CPU能力的限制,极易出现发热或卡顿现象,从而影响用户的使用体验。
基于该问题,本申请提供一种图像处理方法,该方法可应用于手机、平板等具有图像渲染能力的电子设备。具体的,基于可变着色率技术(variable rate shading,VRS,也称为可变速率着色),通过分析应用程序下发的渲染指令,识别应用程序待渲染的游戏主场景,根据游戏主场景中内容(或区域)的频域信息,调整场景中不同内容的着色率,将调整结果记录在着色率纹理数据中,着色率纹理数据可用于进行后续游戏主场景图像的渲染。本申请实施例中,着色率纹理数据可以理解为着色率在空间以一定的形式变化而产生的图案(模式),可用来确定图像中不同区域以何种着色率进行渲染。
进一步的,电子设备可根据预设的更新策略,如采用每两帧更新一次,或者根据游戏应用的运行情况确定是否更新,来动态地调整着色率纹理数据,以便后续游戏主场景图像(如后续一帧或几帧图像)基于调整后的着色率纹理数据进行图像渲染。
采用本申请实施例的方法,电子设备可通过游戏主场景中图像内容确定场景中不同内容的着色率,使得高频内容采用较高的着色率渲染,低频内容采用较低的着色率渲染,从而降低游戏主场景的渲染负载。电子设备通过动态地调整着色率纹理数据,以指示后续图像基于何种着色率进行图像渲染,可在一定程度减小设备的计算量,有效降低设备功耗,提升用户的使用体验。
示例性的,图1为本申请实施例提供的一种图像处理方法的原理示意图。图1以高分辨率游戏的渲染场景为例,图1左侧示出当前帧主场景的渲染图,该渲染图中包括天空、山体、草地、车辆、道路等内容。GPU可根据当前主场景的渲染图识别场景中的高频和低频内容,通过对高频内容设置一个较高的着色率,对低频内容设置一个较低的着色率,实现对场景中不同内容的差异化渲染,在确保画质的同时,减少GPU的渲染负载,提升渲染效率。
具体的,如图1所示,可将当前帧主场景的渲染图作为GPU中着色率计算模型的输入,得到图1右侧的着色率纹理图(即着色率纹理数据),着色率纹理图中记录了渲染图中不同内容(或区域)的着色率,着色率纹理图可用于下一帧或几帧的主场景的渲染。需要说明的是,渲染图中的高频内容是指图像强度(亮度或灰度)变化剧烈的内容,例如图1中车辆。渲染图中的低频内容是指图像强度(亮度或灰度)变化平缓的内容,例如图1中的天空、山体、草地、道路。本实施例中,车辆对应的区域4的着色率大于其他区域(例如区域1、2、3)的着色率。
应理解,渲染图中的高频内容的重要程度高于低频内容,通过对不同内容设置不同的着色率,使得高频内容画质优于低频内容画质,在满足画质整体要求的同时,降低GPU的渲染负载。
本申请实施例提供的图像处理方法,可以应用于电子设备中,电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等电子设备。本申请实施例对该设备的具体形态不作特殊限制。
示例性的,图2为本申请实施例提供的一种电子设备的结构示意图。如图2所示,该电子设备200可以包括处理器210,外部存储器接口220,内部存储器221,通用串行总线(universal serial bus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及用户标识模块(subscriber identification module,SIM)卡接口295等。其中,传感器模块280可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本实施例示意的结构并不构成对电子设备200的具体限定。在另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括中央处理器(Central Processing Unit,CPU),应用处理器(application processor,AP),调制解调处理器,GPU,图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器210中。作为一种示例,在本申请中,ISP可以对图像进行处理,如该处理可以包括自动曝光(Automatic Exposure)、自动对焦(Automatic Focus)、自动白平衡(Automatic White Balance)、去噪、背光补偿、色彩增强等处理。其中,自动曝光,自动对焦,以及自动白平衡的处理也可以称为3A处理。经过处理后,ISP就可以进行获取对应的照片。该过程也可称为ISP的成片操作。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integratedcircuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
电子设备200可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。
ISP用于处理摄像头293反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头293感光元件上,光信号转换为电信号,摄像头293感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度等进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头293中。
摄像头293用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备200可以包括1个或N个摄像头293,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备200在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备200可以支持一种或多种视频编解码器。这样,电子设备200可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备200的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块240可以通过USB接口230接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块240可以通过电子设备200的无线充电线圈接收无线充电输入。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为电子设备200供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,内部存储器221,外部存储器,显示屏294,摄像头293,和无线通信模块260等供电。电源管理模块241还可以用于监测电池242容量,电池242循环次数,电池242健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块241也可以设置于处理器210中。在另一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
电子设备200的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器210以及基带处理器210等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在电子设备200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器270A,受话器270B等)输出声音信号,或通过显示屏294显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器210,与移动通信模块250或其他功能模块设置在同一个器件中。
无线通信模块260可以提供应用在电子设备200上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备200的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得电子设备200可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯***(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code divisionmultipleaccess,WCDMA),时分码分多址(time-division code division multipleaccess,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(global navigation satellite system,GLONASS),北斗卫星导航***(beidounavigation satellite system,BDS),准天顶卫星***(quasi-zenithsatellitesystem,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
电子设备200通过GPU,显示屏294,以及应用处理器210等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。显示屏294包括显示面板。显示面板可以采用液晶显示屏294(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlightemitting diodes,QLED)等。在一些实施例中,电子设备200可以包括1个或N个显示屏294,N为大于1的正整数。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备200的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器210通过运行存储在内部存储器221的指令,从而执行电子设备200的各种功能应用以及数据处理。内部存储器221可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备200可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器210等实现音频功能。例如音乐播放,录音等。
音频模块270用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块270还可以用于对音频信号编码和解码。在一些实施例中,音频模块270可以设置于处理器210中,或将音频模块270的部分功能模块设置于处理器210中。扬声器270A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备200可以通过扬声器270A收听音乐,或收听免提通话。受话器270B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备200接听电话或语音信息时,可以通过将受话器270B靠近人耳接听语音。麦克风270C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息或需要通过语音助手触发电子设备200执行某些功能时,用户可以通过人嘴靠近麦克风270C发声,将声音信号输入到麦克风270C。电子设备200可以设置至少一个麦克风270C。在另一些实施例中,电子设备200可以设置两个麦克风270C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备200还可以设置三个,四个或更多麦克风270C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。耳机接口270D用于连接有线耳机。耳机接口270D可以是USB接口230,也可以是3.5mm的开放移动电子设备200平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
触摸传感器,也称“触控面板”。触摸传感器可以设置于显示屏294,由触摸传感器与显示屏294组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。在一些实施例中,可以通过显示屏294提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于电子设备200的表面,与显示屏294所处的位置不同。
压力传感器用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器可以设置于显示屏294。压力传感器的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器,电极之间的电容改变。电子设备200根据电容的变化确定压力的强度。当有触摸操作作用于显示屏294,电子设备200根据压力传感器检测所述触摸操作强度。电子设备200也可以根据压力传感器的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。陀螺仪传感器可以用于确定电子设备200的运动姿态。加速度传感器可检测电子设备200在各个方向上(一般为三轴)加速度的大小。距离传感器,用于测量距离。电子设备200可以通过红外或激光测量距离。电子设备200可以利用接近光传感器检测用户手持电子设备200贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。环境光传感器用于感知环境光亮度。指纹传感器用于采集指纹。温度传感器用于检测温度。在一些实施例中,电子设备200利用温度传感器检测的温度,执行温度处理策略。音频模块270可以基于所述骨传导传感器获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器获取的血压跳动信号解析心率信息,实现心率检测功能。
按键290包括开机键,音量键等。马达291可以产生振动提示。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口295用于连接SIM卡。电子设备200可以支持1个或N个SIM卡接口295,N为大于1的正整数。SIM卡接口295可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口295可以同时***多张卡。SIM卡接口295也可以兼容不同类型的SIM卡。SIM卡接口295也可以兼容外部存储卡。电子设备200通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备200采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备200中,不能和电子设备200分离。
本申请实施例提供的图像处理方法均能够应用于具有如图2所示的电子设备中。
需要说明的是,上述图2及其说明仅为本申请实施例提供的方案的一种应用载体的示例。图2的组成并不构成对本申请实施例所述的方案的限定。在另一些实施例中,电子设备还可以具有比图2所示组成更多或更少的部件。
为了便于说明,下文实施例中,将以电子设备中的游戏应用为例来说明本申请方案。应理解,当应用程序是其他需要显示大量且复杂的图像的应用,如建模应用时,其实现原理也与之类似。本文中将不再一一列举。
示例性的,图3A为本申请实施例提供的一种图像处理方法的流程示意图。本实施例提供的方法应用于电子设备,该电子设备可以包括游戏应用、CPU、GPU和内部内储器(后文简称内存)。在图3A中,以游戏主场景的渲染为例,对方案进行说明。
步骤301、游戏应用向CPU发送第一帧的渲染指令流1。
游戏应用启动后,游戏应用下发游戏场景的第一帧的渲染指令流1,渲染指令流1包括多条渲染指令,这多条渲染指令中包括第一帧的游戏主场景的渲染指令,以及第一帧的其他场景的渲染指令。
在移动终端中,游戏应用下发的渲染指令流通常是OpenGLES或Vulkan指令流。
步骤302、CPU获取第一帧的渲染信息,识别第一帧的游戏主场景。
CPU接收第一帧的渲染指令流1,从渲染指令流1中获取第一帧的渲染信息。其中,渲染信息包括例如绘制调用(Drawcall)数量、顶点数量、分辨率等信息。第一帧的渲染信息包括第一帧的游戏主场景的渲染信息和第一帧的其他场景的渲染信息。
CPU可基于第一帧的渲染信息识别第一帧的游戏主场景,即确定渲染指令流1中用于渲染第一帧的游戏主场景的渲染指令,同时,也可确定用于渲染第一帧的其他场景的渲染指令。
一种可能的实施方式中,CPU可以根据渲染信息中的Drawcall数量识别第一帧的游戏主场景。具体的,将Drawcall数量最多的渲染场景确定为游戏主场景。
一种可能的实施方式中,CPU还可以结合渲染信息中的分辨率识别第一帧的游戏主场景,即CPU还可以根据渲染信息中的Drawcall数量和分辨率信息识别第一帧的游戏主场景。示例性的,可结合分辨率是否满足预设条件,确定渲染场景是否为游戏主场景,此处的分辨率是否满足预设条件是指当前场景的分辨率是否与电子设备的屏幕分辨率近似相等。对于游戏主场景而言,游戏主场景的分辨率与电子设备的屏幕分辨率近似相等,因此可结合上述预设条件识别当前场景是否为游戏主场景。
步骤303、CPU将第一帧的游戏主场景信息存储至内存。
第一帧的游戏主场景信息即第一帧的游戏主场景的渲染信息,包括用于渲染第一帧的游戏主场景的顶点数据、颜色附着信息、深度/模板附着信息、分辨率信息等。
需要说明的是,通常情况下,第一帧的游戏主场景信息存储至内存直至用户退出或关闭游戏,或游戏主场景信息发生较大变化。其中,游戏主场景发生较大变化可以理解为游戏主场景信息中的关键信息改变,例如默认帧缓冲标识ID或分辨率发生较大变化。当游戏主场景信息发生较大变化时,CPU将不再执行本申请方案,采用传统方案(如单像素着色)进行游戏场景的渲染。本申请实施例中,单像素着色是以一个像素为粒度的着色操作,即以单个像素为单位进行着色操作,例如,在渲染某一帧的游戏主场景时,基于预设的着色率,对该帧的游戏主场景以单个像素为单元进行图像渲染。
步骤304、CPU指示GPU创建可变着色率(VRS)资源。
CPU在获取第一帧的游戏主场景的渲染信息之后,指示GPU根据第一帧的游戏主场景的渲染信息初始化VRS资源,即指示GPU创建VRS资源。创建VRS资源包括:创建着色率纹理,创建计算管线(compute pipeline),初始化着色率计算模型,创建信号同步机制。
其中,创建着色率纹理是指在内存中创建一块用于记录着色率的存储空间。着色率计算模型是运行在计算管线中的一种数据处理模型,着色率计算模型用于基于渲染图像的高低频信息计算渲染图像不同区域的着色率。信号同步机制是指GPU与CPU之间的信号同步,包括对内存中着色率纹理数据是否可用的信号同步。
需要说明的是,本实施例中创建的计算管线为GPU中新增的一个计算管线,在该计算管线内部署上述着色率计算模型,计算过程相对独立,不会影响原有的游戏渲染流程。
步骤301至步骤304,示出了游戏渲染的初始化(启动)阶段。在初始化阶段,CPU通过获取游戏应用下发的渲染指令流,识别游戏主场景的渲染信息,基于游戏主场景的渲染信息创建VRS资源,为后续渲染方案的执行提供支持。
步骤305、CPU确定着色率纹理数据是否可用。
可选的,CPU可通过着色率纹理数据的状态确定着色率纹理数据是否可用,着色率纹理数据的状态包括可用和不可用两种。通常,在对第一帧的游戏主场景进行渲染前,着色率纹理数据的状态为不可用。
步骤306、若确定着色率纹理数据不可用,CPU向GPU回调渲染指令流1。
回调渲染指令流1可以理解为CPU向GPU发送原渲染指令流1。
步骤307、CPU以单像素着色的方式渲染第一帧的游戏主场景。
应理解,在游戏渲染的初始阶段,没有可用的着色率纹理数据,因此对于第一帧的游戏主场景的渲染,可基于预设的着色率,采用逐个像素着色的方式进行图像渲染,获取第一帧的游戏主场景的渲染图。
步骤308、GPU将第一帧的游戏主场景的渲染图存储至内存。
在完成对第一帧的游戏主场景的渲染操作后,在第一帧的游戏主场景的渲染图的基础上,对第一帧的其他场景进行渲染。
步骤309、CPU确定是否更新着色率纹理数据。
步骤310、若CPU确定更新着色率纹理数据,向GPU发送计算指令。
在完成对第一帧的游戏主场景的渲染后,可计算初始的着色率纹理数据,参见步骤311。后续在每完成一帧的游戏主场景的渲染后,可根据预设的更新策略确定是否需要更新着色率纹理数据,具体可参照后文步骤321和步骤322的说明。
步骤311、GPU响应于计算指令,基于第一帧的游戏主场景的渲染图,计算着色率纹理数据。
具体的,GPU将第一帧的游戏主场景的渲染图作为GPU中着色率计算模型的输入,着色率计算模型首先对第一帧的游戏主场景的渲染图进行高低频信息提取,再根据渲染图中高低频信息计算渲染图中不同内容(或区域)的着色率,得到着色率纹理数据。
步骤312、GPU将计算得到的着色率纹理数据存储至内存。着色率纹理数据可用于后续帧(下一帧或多帧)的游戏主场景的渲染。
步骤313、GPU向CPU发送着色率纹理数据的可用信号。
在完成着色率纹理数据计算之后,GPU向CPU发送着色率纹理数据的可用信号,以便CPU在下一帧的渲染指令流到来时,通知GPU启用内存中的着色率纹理数据进行图像渲染。
步骤305至步骤313,示出了在初始化阶段之后对第一帧游戏主场景的渲染执行过程,由于着色率纹理数据不可用(即没有可用的着色率纹理数据),因此采用单像素着色来渲染第一帧游戏主场景。在获取第一帧游戏主场景的渲染图后,GPU通过预置的着色率计算模型计算第一帧的游戏主场景的着色率纹理数据,用于后续帧的游戏主场景的渲染。
在上述实施例的基础上,下面结合图3B对游戏应用的第二帧的游戏主场景的渲染过程进行说明。示例性的,图3B为本申请实施例提供的一种图像处理方法的流程示意图。如图3B所示,图像处理方法还包括:
步骤314、游戏应用向CPU发送第二帧的渲染指令流2。
与第一帧的渲染指令流1类似,第二帧的渲染指令流2同样包括多条渲染指令,这多条渲染指令中包括第二帧的游戏主场景的渲染指令,以及第二帧的其他场景的渲染指令。
步骤315、CPU获取第二帧的渲染信息,识别第二帧的游戏主场景。
CPU接收第二帧的渲染指令流2,从渲染指令流2中获取第二帧的渲染信息。第二帧的渲染信息包括第二帧的游戏主场景的渲染信息和第二帧的其他场景的渲染信息。
CPU可基于第二帧的渲染信息识别第二帧的游戏主场景,即确定渲染指令流2中用于渲染第二帧的游戏主场景的渲染指令,以及用于渲染第二帧的其他场景的渲染指令。识别第二帧的游戏主场景的方式可参照第一帧,此处不再赘述。
步骤316、CPU确定更新游戏主场景信息。
CPU识别第二帧的游戏主场景,获取第二帧的游戏主场景信息,即第二帧的游戏主场景的渲染信息。第二帧的游戏主场景的渲染信息包括用于渲染第二帧的游戏主场景的顶点数据、颜色附着信息、深度/模板附着信息、分辨率信息等。CPU对比前后两帧的游戏主场景信息,一种情况,若前后两帧的游戏主场景信息未发生较大变化,如前后两帧的游戏主场景信息中的关键信息(默认缓冲帧ID和/或分辨率)未改变,可基于后一帧的游戏主场景信息更新游戏主场景信息。另一种情况,若前后两帧的游戏主场景信息发生较大变化,可释放存储游戏主场景信息的内存空间,采用传统方案进行游戏场景的渲染。
步骤317、CPU确定着色率纹理数据是否可用。
步骤318、若确定着色率纹理数据可用,CPU向GPU发送使用着色率纹理数据的指令。
基于步骤313,CPU中记录了着色率纹理数据为可用,因此可直接使用内存中的着色率纹理数据对第二帧的游戏主场景进行渲染。
步骤319、GPU以内存中的着色率纹理数据渲染第二帧的游戏主场景。
步骤320、GPU将第二帧的游戏主场景的渲染图存储至内存。
在完成对第二帧的游戏主场景的渲染操作后,在第二帧的游戏主场景的渲染图的基础上,对第二帧的其他场景进行渲染。
步骤321、CPU确定是否更新着色率纹理数据。
步骤322、若确定更新着色率纹理数据,CPU向GPU发送计算指令。
需要说明的是,在本实施例中,假设CPU采用每一帧更新一次着色率纹理数据,因此在完成对第二帧的游戏主场景的渲染操作后,CPU需要向GPU发送计算指令,计算指令用于指示GPU计算并更新着色率纹理数据,更新后的着色率纹理数据,用于后续帧的渲染。
一种可能的实施方式中,CPU可以根据预设的更新策略。例如,采用每一帧或者每两帧更新一次着色率纹理数据。
一种可能的实施方式中,CPU可以根据游戏应用的运行情况,确定是否更新着色率纹理数据。
可选的,运行情况包括场景中目标的运行速度。例如,游戏中目标对象(如人物、车辆等)在场景中的运行速度等,确定是否更新着色率纹理数据。若目标对象在场景中的运行速度大于或等于预设值,可采用每一帧更新一次着色率纹理数据;若目标对象在场景中的运行速度小于预设值,可采用如每两帧(具体可根据游戏测试结果设置合适的数值)更新一次着色率纹理数据。
可选的,运行情况包括场景中屏幕像素的运动矢量。
通过设置预设的更新策略,实现动态地更新着色率纹理数据,从而有效减少GPU的计算量。
步骤323、GPU响应于计算指令,基于第二帧的游戏主场景的渲染图,计算着色率纹理数据。
具体的,GPU将第二帧的游戏主场景的渲染图作为GPU中着色率计算模型的输入,着色率计算模型首先对第二帧的游戏主场景的渲染图进行高低频信息提取,再根据渲染图中高低频信息计算渲染图中不同内容(或区域)的着色率,得到着色率纹理数据。
步骤324、GPU更新内存中的着色率纹理数据。
需要说明的是,GPU更新内存中的着色率纹理数据是指:将基于第一帧的游戏主场景的渲染图计算得到的着色率纹理数据替换为:基于第二帧的游戏主场景的渲染图计算得到的着色率纹理数据。更新后的着色率纹理数据可用于下一帧(或几帧)的游戏主场景的渲染。
步骤325、GPU向CPU发送着色率纹理数据的可用信号。
步骤321至步骤325,示出了着色率纹理数据的更新过程。GPU基于预设的更新策略,在完成每一帧游戏主场景的渲染后,确定是否需要更新着色率纹理数据,后续帧的游戏主场景的渲染将基于内存记录的着色率纹理数据进行,以提升GPU的渲染效率。
上述实施例中,在游戏渲染的初始化阶段,CPU响应于来自游戏应用的渲染指令流,识别渲染指令流中用于渲染游戏主场景的渲染信息,以指示GPU基于游戏主场景的渲染信息创建着色率纹理、创建计算管线、初始化着色率计算模型、创建信号同步机制。在游戏渲染的执行阶段,GPU采用单像素着色方式渲染第一帧游戏主场景,得到第一帧游戏主场景的渲染图,随后可通过着色率计算模型对第一帧游戏主场景的渲染图的内容进行着色率自适应调整,得到第一帧对应的着色率纹理数据。GPU在渲染后续帧时,可直接利用第一帧对应的着色率纹理数据调整游戏主场景中不同区域的着色率。上述方案通过图像内容决定不同区域的着色率,可在满足一定画质要求的同时,降低设备渲染功耗,提升渲染效率。
需要说明的是,上述实施例仅以游戏场景的第一帧和第二帧为例进行方案说明,游戏场景中的其他帧的图像处理方案可参照第二帧。
在如图2所示的示例中,提供了电子设备的硬件组成。在一些实施例中,电子设备还可以通过其各个硬件部件(如图2所示的硬件组成),运行操作***。在该操作***中,可以设置有不同的软件分层,从而实现不同程序的运行。
示例性的,图4为本申请实施例提供的一种电子设备的软件组成的示意图。如图4所示,该电子设备可以包括应用层401,框架层402,***库403,以及硬件层404等。
其中,应用层401也可以称为应用程序层,或者应用(application,APP)层。在一些实现中,应用程序层可以包括一系列应用程序包。应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。应用程序包还可以包括需要通过渲染图像向用户展示图片或者视频的应用程序。比如,该应用层401中包括的应用程序可以为游戏类应用程序、家居设计类应用程序等。
框架层402也可以称为应用程序框架层。该框架层402可以为应用层401的应用程序提供应用编程接口(application programming interface,API)和编程框架。框架层402包括一些预先定义的函数。
示例性的,框架层402可以包括窗口管理器,内容提供器,视图***,资源管理器,通知管理器,活动管理器,输入管理器等。窗口管理器提供窗口管理服务(WindowManagerService,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入***的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于***组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理***的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
***库403可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework),标准C库(Standard C library,libc),嵌入式***的开放图形库(OpenGL for Embedded Systems,OpenGL ES)、Vulkan、SQLite、Webkit等。
其中,表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:动态图像专家组4(MovingPicturesExperts Group,MPEG4),H.264,动态影像专家压缩标准音频层面3(MovingPictureExperts Group Audio Layer3,MP3),高级音频编码(Advanced Audio Coding,AAC),自适应多码解码(Adaptive Multi-Rate,AMR),联合图像专家组(JointPhotographic ExpertsGroup,JPEG,或称为JPG),便携式网络图形(Portable NetworkGraphics,PNG)等。OpenGLES和/或Vulkan提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备400的应用程序提供轻量级关系型数据库。在一些实现中,***库403中的OpenGL ES能够提供可变着色率功能。电子设备可以在需要针对某一个绘制命令(Drawcall)执行可变着色率时,调用OpenGL ES中的可变着色率API,与其他指令一同实现对当前Drawcall的可变着色率。比如,电子设备可以使用较低的着色率(如2×1,2×2,4×2,4×4等)对当前Drawcall进行着色,由此降低对当前Drawcall进行着色产生的开销。
在如图4的示例中,电子设备中还可以包括硬件层404。该硬件层404中可以包括处理器(如CPU,GPU等),以及具有存储功能的部件(如图2所示的内部存储器221等)。在一些实现中,CPU可以用于控制框架层402中的各个模块实现其各自的功能,GPU可以用于根据框架层402中各个模块处理后的指令所调用的图形库(如OpenGL ES)中的API执行相应的渲染处理。
示例性的,图5为本申请实施例提供的一种图像处理方法的流程示意图。如图5所示,在电子设备的框架层中可以设置一个或多个功能模块,用于实现本申请实施例提供的图像处理方案。示例性的,框架层中可以设置有拦截模块,计算控制模块等。并且,硬件层中的CPU可以控制框架层中的上述各个模块实现其各自的功能,GPU或者NPU可以根据框架层中各个模块处理后的指令所调用的图形库(如OpenGL ES)中的API执行相应的渲染处理。
下面将结合各个模块,对本申请实施例提供的图像处理方法做进一步详细说明。需要说明的是,下述实施例是以Vulkan API框架为例进行方案说明。
在游戏渲染的初始化阶段,框架层中的拦截模块可以拦截游戏应用下发的渲染指令流,从渲染指令流中读取游戏渲染信息,游戏渲染信息包括游戏主场景的渲染信息以及其他场景的渲染信息。
拦截模块可以通过vkCmdBeginRenderPass和vkCmdEndRenderPass两个接口之间的Drawcall指令的调用次数,确定游戏主场景,即识别游戏主场景。作为一种示例,可将Drawcall数量最多的场景作为游戏主场景。示例性的,以Race Master游戏为例,Drawcall指令的调用包括vkCmdDrawIndexed、vkCmdDraw、vkCmdBindIndexBuffer三个接口,通过确定这三个接口的调用次数确定Drawcall数量。作为一种示例,可将分辨率满足预设条件的渲染场景确定为游戏主场景,其中预设条件包括场景分辨率与电子设备的屏幕分辨率近似相等。
拦截模块在识别任一帧的游戏主场景之后,可以通过拦截如vkCreateRenderPass、vkCreateFramebuffer、vkCreateGraphicsPipelines等接口,分别获取VkRenderpassCreateInfo、VkFramebufferCreateInfo、VkGraphicsPipeLineCreateInfo等结构体信息,从这些结构体信息中获取游戏主场景的渲染信息,游戏主场景的渲染信息包括游戏主场景的ImageView图像视图信息、FrameBuffer帧缓冲信息、RenderPass渲染通道信息、Pipeline管线信息等信息。其中,图像视图信息包括分辨率信息等,帧缓冲信息包括默认缓冲帧的标识,渲染通道信息包括渲染通道的标识、颜色附着信息、深度/模板附着信息,管线信息包括计算管线的标识。
拦截模块可以将获取的游戏主场景的渲染信息发送至框架层的计算控制模块,以便计算控制模块记录游戏主场景的渲染信息。可选的,计算控制模块可以向内存发送缓存指令,以便将游戏主场景的渲染信息存储至内存。通过上述对游戏主场景的渲染信息的备份存储,保证后续渲染方案的实现。
计算控制模块在获取游戏主场景的渲染信息后,可通过***库的图形库向硬件层的GPU发送创建指令,创建指令用于指示GPU根据游戏主场景的渲染信息初始化VRS资源,即指示GPU创建着色率纹理、计算管线,初始化着色率计算模型,创建信号同步机制等。本实施例中,计算控制模块发送的创建指令可对应图3A所示实施例的步骤304。
示例性的,以Race Master游戏为例,GPU可以通过vkCreateImageView创建一个着色率纹理,通过vkCreateRenderPass2KHR创建包含着色率纹理附件Attachment的渲染通道RenderPass,通过vkCreateFramebuffer创建一个包含着色率纹理的帧缓冲Framebuffer,通过vkCreateGraphicsPipelines创建包含可变着色率特性的计算管线computepipeline。
在游戏渲染的执行阶段,对于第一帧的游戏主场景的渲染,由于初始时没有可用的着色率纹理数据,因此拦截模块在确定着色率纹理数据不可用时,可通过图形库向GPU发送第一帧的渲染指令,即回调第一帧的原渲染指令,以使GPU采用单像素着色的方式渲染第一帧的游戏主场景。
在GPU采用单像素着色的方式渲染第一帧的游戏主场景之后,GPU可将第一帧的游戏主场景的渲染图存储至内存,以便后续GPU计算着色率纹理数据。
GPU在完成每一帧游戏主场景的渲染之后,计算控制模块可以根据预设的着色率纹理数据的更新策略,或者,根据当前游戏的运行情况确定是否需要更新着色率纹理数据。若计算控制模块确定需要更新着色率纹理数据,则通过图形库向GPU发送计算指令,以使GPU从内存中获取当前帧的游戏主场景的渲染图,并基于当前帧的游戏主场景的渲染图计算着色率纹理数据,并将计算的着色率纹理数据存储至内存,用于后续帧的图像渲染。以Race Master游戏为例,计算控制模块可通过vkCmdBindPipeline配置计算管线状态,通过vkCmdBindDescriptorSets配置计算资源,通过vkCmdDispatch下发计算指令。
示例性的,在完成对第一帧的游戏主场景的渲染后,GPU接收来自计算控制模块的计算指令,可从内存中获取第一帧的游戏主场景的渲染图,将第一帧的游戏主场景的渲染图输入GPU中的着色率计算模型,得到第一帧对应的着色率纹理数据,用于后续帧的游戏主场景的渲染。若着色率纹理数据的更新策略为每两帧更新一次,则第一帧对应的着色率纹理数据可用于第二帧和第三帧的游戏主场景的渲染。在完成对第三帧的游戏主场景的渲染后,GPU会接收到来自计算控制模块的计算指令,进而从内存中获取第三帧的游戏主场景的渲染图,将第三帧的游戏主场景的渲染图输入GPU中的着色率计算控制模块,得到第三帧对应的着色率纹理数据。可将内存中第一帧对应的着色率纹理数据替换为第三帧对应的着色率纹理数据,用于后续帧的游戏主场景的渲染。
GPU基于计算指令计算某一帧游戏主场景渲染图对应的着色率纹理数据之后,可向拦截模块发送着色率纹理数据可用的信号,拦截模块基于该信号记录着色率纹理数据的状态,以便在拦截渲染指令后,确定是否使用内存中的着色率纹理数据。
上述实施例中,通过拦截模块拦截游戏应用下发的渲染指令流,从中识别游戏主场景,并将游戏主场景的渲染信息传递给计算控制模块。拦截模块还可以根据着色率纹理数据的状态,确定当前帧渲染是否启动着色率纹理数据。当着色率纹理数据的状态为可用时,拦截模块通过图形库向GPU发送使用着色率纹理数据的指令。计算控制模块主要负责完成着色率纹理数据的资源配置,确定当前帧是否需要更新着色率纹理数据。若需要更新着色率纹理数据,计算控制模块通过图形库向GPU下发计算指令,由GPU完成着色率纹理数据的计算。当GPU完成着色率纹理数据计算后,可向拦截模块发送着色率纹理数据可用的信号,以便拦截模块在拦截渲染指令流后,确定是否向GPU发送使用着色率纹理数据的指令。
上述方案通过识别当前帧的游戏主场景的渲染图内容,确定图像不同区域的着色率,以指导后续帧的游戏主场景的渲染,能够降低设备渲染功耗又不至于丢失太多图像细节。通过额外增加的计算管线,执行对游戏主场景的渲染图的着色率纹理数据的计算,不会对原有游戏渲染流程造成影响。通过预设更新策略动态地确定是否更新着色率纹理数据,可进一步减少GPU的计算量,提升渲染效率。
基于图5所示实施例,下面结合一个具体实施例,对电子设备内部模块在执行图像处理方案时的交互过程进行详细说明。
示例性的,图6A为本申请实施例提供的一种图像处理方法的流程示意图。在图6A中,以游戏主场景的渲染为例,对方案进行说明。
步骤601、游戏应用发送第一帧的渲染指令流1。
步骤602、拦截模块拦截渲染指令流1,获取第一帧的游戏主场景信息。
步骤603、拦截模块向计算控制模块发送第一帧的游戏主场景信息。
步骤604、计算控制模块向内存发送缓存指令,缓存指令用于指示内存存储第一帧的游戏主场景信息。
步骤605、计算控制模块向GPU发送创建指令。
步骤606、GPU响应于创建指令,创建可变着色率VRS资源。
步骤601至步骤606为游戏渲染的初始化阶段,在初始化阶段,通过拦截游戏应用下发的渲染指令流,识别游戏主场景信息,基于游戏主场景信息初始化VRS资源,为后续渲染方案的执行提供支持。
步骤607、渲染模块确定着色率纹理数据是否可用。
步骤608、若确定着色率纹理数据不可用,渲染模块向GPU回调渲染指令流1。
步骤609、GPU以单像素着色的方式渲染第一帧的游戏主场景。
步骤610、GPU将第一帧的游戏主场景的渲染图存储至内存。
步骤611、计算控制模块确定是否更新着色率纹理数据。
步骤612、若计算控制模块确定更新着色率纹理数据,向GPU发送计算指令。
步骤613、GPU响应于计算指令,基于第一帧的游戏主场景的渲染图,计算着色率纹理数据。
步骤614、GPU将计算得到的着色率纹理数据存储至内存。
步骤615、GPU向拦截模块发送着色率纹理数据的可用信号。
步骤607至步骤615为游戏初始化后对第一帧游戏主场景的渲染执行阶段,第一帧游戏主场景的渲染仍采用传统的单像素着色方式,然而在完成第一帧游戏主场景渲染后,GPU需要基于第一帧游戏主场景的渲染图,分析图像频域信息,计算图像中不同区域的着色率,用于后续帧游戏主场景的渲染。
示例性的,图6B为本申请实施例提供的一种图像处理方法的流程示意图。在图6A实施例基础上,如图6B所示,图像处理方法还包括:
步骤616、游戏应用发送第二帧的渲染指令流2。
步骤617、拦截模块拦截渲染指令流2,获取第二帧的游戏主场景信息。
步骤618、拦截模块确定更新游戏主场景信息。
若第一帧游戏主场景信息和第二帧游戏主场景信息未发生较大变化,可基于第二帧游戏主场景信息来更新游戏主场景信息,即用第二帧游戏主场景信息替换第一帧游戏主场景信息。
步骤619、拦截模块确定着色率纹理数据是否可用。
步骤620、若拦截模块确定着色率纹理数据可用,则向GPU发送使用着色率纹理数据的指令。
步骤621、GPU以内存中的着色率纹理数据渲染第二帧的游戏主场景。
步骤622、GPU将第二帧的游戏主场景的渲染图存储至内存。
步骤616至步骤622为对第二帧游戏主场景的渲染执行阶段,第二帧游戏主场景的渲染采用基于第一帧渲染图确定的着色率纹理数据进行渲染,使得第二帧主场景中低频区域的内容以较低着色率渲染,高频区域的内容以较高着色率渲染,实现对主场景中不同区域的差异化渲染,在确保画质的同时,减少设备渲染负载,提升渲染效率。
步骤623、计算控制模块确定是否更新着色率纹理数据。
计算控制模块基于预设的更新策略确定当前是否需要更新着色率纹理数据,更新策略可参照上文。
步骤624、若计算控制模块确定更新着色率纹理数据,则向GPU发送计算指令。
步骤625、GPU响应于计算指令,基于第二帧的游戏主场景的渲染图,计算着色率纹理数据。
步骤626、GPU更新内存中的着色率纹理数据。
步骤627、GPU向拦截模块发送着色率纹理数据的可用信号。
步骤623至步骤627为着色率纹理数据的更新阶段,可根据实际需求设置合理的更新策略,后续帧的渲染可基于内存中更新后的着色率纹理数据进行渲染,以提升GPU的渲染效率。
本申请实施例提供一种图像处理方法,应用于电子设备,电子设备上运行有应用程序,方法包括:获取来自应用程序的第一渲染指令,第一渲染指令用于绘制第N帧图像的第一图像内容,N为正整数;在确定预设存储空间中存储的着色率纹理数据可用时,基于第一渲染指令和着色率纹理数据绘制第一图像内容;获取来自应用程序的第二渲染指令,第二渲染指令用于绘制第N帧图像的第二图像内容,第二图像内容的绘制调用次数小于第一图像内容的绘制调用次数;基于第二渲染指令和预设着色率,以单个像素为单位绘制第二图像内容。
其中,着色率纹理数据用于指示绘制第一图像内容不同区域的着色率。
示例性的,上述应用程序可以是游戏应用,第一图像内容可以是游戏应用的主场景的图像内容,是游戏图像的主体部分,例如包括人物、建筑、地面、山体等内容。第二图像内容可以是游戏应用中除主场景外的其他图像内容,是游戏图像的辅助部分,例如包括光照、阴影等效果。第一图像内容的渲染功耗大于第二图像内容的渲染功耗。
可选的,上述应用程序还可以是其他需要图像渲染的应用,如家居设计类、三维建模类应用程序,对此本申请不作限定。
本实施例中,对于第N帧图像的第一图像内容,可直接使用预设存储空间的着色率纹理数据来绘制第N帧图像的第一图像内容,由于着色率纹理数据指示了图像不同区域的着色率,不同区域着色率有高有低,因此可以在一定程度上降低设备渲染开销。对于第N帧图像的第二图像内容,由于第二图像内容的绘制调用次数相比第一图像内容小很多,基于预设的着色率,对第二图像内容以单个像素为单元进行图像渲染,能够达到较理想的渲染效果。相反,若对第二图像内容也采用着色率纹理进行渲染,基于相同原理,设备还需要预先计算用于绘制第二图像内容的着色率纹理数据,这将额外地加剧设备的计算量,在渲染画质没有很大提升的情况下,反而提高了渲染负载。
一种可能的实施方式中,着色率纹理数据是基于第M帧图像的第三图像内容的渲染图确定的;第三图像内容的绘制调用次数大于第M帧图像中除第三图像内容之外的图像内容的绘制调用次数,N和M的差值大于0且小于或等于预设阈值,M为正整数。
示例性的,基于上述示例,第三图像内容可以是游戏应用的主场景的图像内容,由于第M帧图像区别于第N帧图像,因此第三图像内容和第一图像内容存在一定差异。
该实施方式中,第M帧图像是第N帧图像之前的一帧图像,在对第N帧图像的第一图像内容渲染时,可直接复用基于第M帧图像的第三图像内容的渲染图确定的着色率纹理,相比基于预设着色率对第一图像内容逐个像素进行图像渲染,可在一定程度减小设备的计算量,有效降低设备渲染负载。
一种可能的实施方式中,方法还包括:获取第M帧图像的第三图像内容的渲染图;确定第三图像内容的渲染图的图像强度变化;基于第三图像内容的渲染图的图像强度变化,确定第三图像内容的渲染图中不同区域的着色率,得到着色率纹理数据;将着色率纹理数据存储在预设存储空间。
其中,渲染图的图像强度变化可以包括渲染图的灰度和/或亮度的变化。
该实施方式中,通过对第M帧图像的第三图像内容的渲染图的图像强度分析,为第三图像内容中图像强度变化不同的区域设置不同的着色率,以指导第M帧之后的一帧或几帧图像的渲染,有效降低设备渲染负载。
一种可能的实施方式中,第三图像内容的渲染图包括第一区域和第二区域,着色率纹理数据包括第一区域的着色率和第二区域的着色率;若第一区域的图像强度变化大于第二区域的图像强度变化,第一区域的着色率大于第二区域的着色率;若第一区域的图像强度变化小于第二区域的图像强度变化,第一区域的着色率小于第二区域的着色率;若第一区域的图像强度变化等于第二区域的图像强度变化,第一区域的着色率等于第二区域的着色率。
该实施方式中,通过对第三图像内容中图像强度变化较大的区域设置较高的着色率,对第三图像内容中图像强度变化较小的区域设置较低的着色率,实现可变着色率,从而降低设备渲染的负载。
一种可能的实施方式中,电子设备中配置有拦截模块以及图像处理器GPU;获取来自应用程序的第一渲染指令,包括:拦截模块拦截第一渲染指令;在确定预设存储空间中存储的着色率纹理数据可用时,基于第一渲染指令和着色率纹理数据绘制第一图像内容,包括:在拦截模块确定着色率纹理数据可用时,拦截模块通过电子设备的图形库,向GPU下发使用着色率纹理数据的第一着色指令;GPU基于第一着色指令和着色率纹理数据绘制第一图像内容。
该实施方式中,渲染模块拦截第一渲染指令,获知需要渲染第一图像内容时,渲染模块需确定预存空间中是否有可用的着色率纹理数据,若有可用的着色率纹理数据,渲染模块通过图形库告知GPU直接使用着色率纹理数据绘制第一图像内容,由此节省着色过程中的渲染开销,降低设备功耗。
一种可能的实施方式中,获取来自应用程序的第二渲染指令,包括:拦截模块拦截来自应用程序的第二渲染指令;基于第二渲染指令和预设着色率,以单个像素为单位绘制第二图像内容,包括:拦截模块通过图形库向GPU下发使用单像素着色的第二着色指令;GPU基于第二着色指令和预设着色率,以单个像素为单元绘制第二图像内容。
该实施方式中,渲染模块拦截第二渲染指令,获知需要渲染第二图像内容时,渲染模块通过图形库告知GPU采用单像素着色方式绘制第二图像内容。相比第一图像内容,第二图像内容的渲染功耗较低,直接采用单像素着色方式绘制第二图像内容,能够达到较理想的渲染效果,若采用第一图像内容类似的渲染方式,反而加剧渲染开销。
一种可能的实施方式中,电子设备中配置有计算控制模块,在GPU完成对第一图像内容的绘制之后,方法还包括:计算控制模块确定是否更新着色率纹理数据;若计算控制模块确定更新着色率纹理数据,计算控制模块通过图形库向GPU下发计算指令;GPU基于计算指令和第一图像内容的渲染图,确定第一图像内容中不同区域的着色率,以更新着色率纹理数据。
其中,GPU中预置着色率计算模型,该着色率计算模型可用于分析第一图像内容的渲染图的频域信息,为第一图像内容中频域较高的区域和频域较低的区域设置不同的着色率,即基于第一图像内容的渲染图计算着色率纹理数据。频域信息指示了渲染图的图像强度变化情况,较高频域的区域图像强度变化较大,较低频域的区域图像强度变化较小。
该实施方式中,计算控制模块可根据预设的更新策略,及时更新预设存储空间的着色率纹理数据,GPU可根据计算控制模块的指示来计算最新的着色率纹理数据,以满足后续图像帧的图像渲染,降低设备对连续图像帧的渲染开销。
一种可能的实施方式中,计算控制模块确定是否更新着色率纹理数据,包括:若N和M的差值等于预设阈值,计算控制模块确定更新着色率纹理数据;若N和M的差值小于预设阈值,计算控制模块不更新着色率纹理数据。
示例性的,预设阈值可以为2,若N和M的差值等于2,则需要更新着色率纹理数据,也即每两帧需要更新一次着色率纹理数据。在完成第N帧图像的第一图像内容的绘制后,GPU基于第N帧图像的第一图像内容的渲染图,计算新的着色率纹理数据,新的着色率纹理数据可用于第N+1帧的第四图像内容和第N+2帧的第五图像内容的绘制,第四图像内容和第五图像内容可以是如游戏应用的主场景的图像内容。
该实施方式中,只有在N和M的差值等于预设阈值时,才更新着色率纹理数据,即在第M帧图像和第N帧图像之间的图像可以直接复用基于第M帧图像的第三图像内容的渲染图确定的着色率纹理数据,可进一步降低设备渲染开销。
一种可能的实施方式中,方法还包括:GPU更新着色率纹理数据之后,GPU向拦截模块发送通知信号,通知信号用于指示着色率纹理数据是否可用。
该实施方式中,拦截模块通过GPU发送的通知信号获知预设存储空间的着色率纹理数据是否可用,以便拦截模块在拦截渲染指令后,向GPU发送相应的着色指令,着色指令中可指示是否复用着色率纹理,以降低设备渲染开销。
基于上述各实施例,下面以游戏应用为例对本申请提供的图像处理方法作如下综述。
示例性的,图7为本申请实施例提供的一种图像处理方法的流程示意图。如图7所示,电子设备开启游戏应用,在初始化阶段,主要执行如下动作:
获取游戏主场景信息,游戏主场景信息包括渲染游戏主场景的渲染参数;创建着色率纹理,包括在电子设备预设的存储空间内存储着色率纹理数据;初始化计算管线,并在计算管线内初始化着色率计算模型,着色率计算模型用于基于游戏主场景的渲染结果计算着色率纹理数据。
在完成初始化后,开始绘制下一帧(如第一帧或任一帧)的主场景图像。在图像队列(Graphics Pipeline)中,识别当前帧游戏主场景帧缓冲framebuffer,确定预设的存储空间内是否有可用的着色率纹理数据,若有可用的着色率纹理数据,则使用着色率纹理数据渲染当前帧游戏主场景图像,若没有可用的着色率纹理数据,可采用单像素着色方式渲染当前帧游戏主场景,然后将渲染结果进行后处理和UI渲染。示例性的,将当前帧游戏主场景渲染结果经一系列后处理(比如,半透明物体绘制、特效绘制等内容)和UI渲染后,获得最终的渲染结果,将其绘制到framebuffer,将framebuffer的结果通过游戏自身逻辑进行上屏显示。
在完成对当前帧的渲染后,确定当前帧是否更新着色率纹理数据计算,确定方式可根据上文所述的更新策略。若确定需要更新着色率纹理数据,可在计算队列中,将当前帧游戏主场景渲染结果作为着色率计算模型的输入,着色率计算模型根据当前帧游戏主场景渲染结果计算着色率纹理数据,以更新预设的存储空间内的着色率纹理数据,为后续帧的游戏主场景提供数据支撑。若确定不需要更新着色率纹理数据,可直接进入下一帧游戏主场景的渲染。
上述对游戏主场景的渲染过程涉及着色率纹理数据的复用,即当前帧游戏主场景的渲染可以使用例如当前帧的前一帧或前前一帧游戏主场景渲染结果确定的着色率纹理数据,相比每一帧游戏主场景都采用单像素着色,可大大降低设备的渲染开销。
本申请实施例还提供一种电子设备,该电子设备可以包括:存储器和一个或多个处理器(如CPU、GPU、NPU等)。存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中设备执行的各个功能或者步骤。
本申请实施例还提供一种芯片***,图8为本申请实施例提供的一种芯片***的结构示意图。如图8所示,该芯片***800包括至少一个处理器801和至少一个接口电路802。处理器801和接口电路802可通过线路互联。例如,接口电路802可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路802可用于向其它装置(例如处理器801)发送信号。示例性的,接口电路802可读取存储器中存储的指令,并将该指令发送给处理器801。当所述指令被处理器801执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片***还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的图像处理方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的图像处理方法。
另外,本申请实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的图像处理方法。
其中,本申请实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。

Claims (12)

1.一种图像处理方法,其特征在于,应用于电子设备,所述电子设备上运行有应用程序,所述方法包括:
获取来自所述应用程序的第一渲染指令,所述第一渲染指令用于绘制第N帧图像的第一图像内容,N为正整数;
在确定预设存储空间中存储的着色率纹理数据可用时,基于所述第一渲染指令和所述着色率纹理数据绘制所述第一图像内容;
获取来自所述应用程序的第二渲染指令,所述第二渲染指令用于绘制所述第N帧图像的第二图像内容,所述第二图像内容的绘制调用次数小于所述第一图像内容的绘制调用次数;
基于所述第二渲染指令和预设着色率,以单个像素为单位绘制所述第二图像内容。
2.根据权利要求1所述的方法,其特征在于,所述着色率纹理数据是基于第M帧图像的第三图像内容的渲染图确定的;所述第三图像内容的绘制调用次数大于所述第M帧图像中除所述第三图像内容之外的图像内容的绘制调用次数,N和M的差值大于0且小于或等于预设阈值,M为正整数。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取第M帧图像的第三图像内容的渲染图;
确定所述第三图像内容的渲染图的图像强度变化;
基于所述第三图像内容的渲染图的图像强度变化,确定所述第三图像内容的渲染图中不同区域的着色率,得到所述着色率纹理数据;
将所述着色率纹理数据存储在所述预设存储空间。
4.根据权利要求3所述的方法,其特征在于,所述第三图像内容的渲染图包括第一区域和第二区域,所述着色率纹理数据包括所述第一区域的着色率和所述第二区域的着色率;
若所述第一区域的图像强度变化大于所述第二区域的图像强度变化,所述第一区域的着色率大于所述第二区域的着色率;
若所述第一区域的图像强度变化小于所述第二区域的图像强度变化,所述第一区域的着色率小于所述第二区域的着色率;
若所述第一区域的图像强度变化等于所述第二区域的图像强度变化,所述第一区域的着色率等于所述第二区域的着色率。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述电子设备中配置有拦截模块以及图像处理器GPU;
获取来自所述应用程序的第一渲染指令,包括:
所述拦截模块拦截所述第一渲染指令;
在确定预设存储空间中存储的着色率纹理数据可用时,基于所述第一渲染指令和所述着色率纹理数据绘制所述第一图像内容,包括:
在所述拦截模块确定所述着色率纹理数据可用时,所述拦截模块通过所述电子设备的图形库,向所述GPU下发使用所述着色率纹理数据的第一着色指令;
所述GPU基于所述第一着色指令和所述着色率纹理数据绘制所述第一图像内容。
6.根据权利要求1至5任一项所述的方法,其特征在于,获取来自所述应用程序的第二渲染指令,包括:拦截模块拦截来自所述应用程序的第二渲染指令;
基于所述第二渲染指令和预设着色率,以单个像素为单位绘制所述第二图像内容,包括:
所述拦截模块通过所述图形库向GPU下发使用单像素着色的第二着色指令;
所述GPU基于所述第二着色指令和所述预设着色率,以单个像素为单元绘制所述第二图像内容。
7.根据权利要求5所述的方法,其特征在于,所述电子设备中配置有计算控制模块,在所述GPU完成对所述第一图像内容的绘制之后,所述方法还包括:
所述计算控制模块确定是否更新所述着色率纹理数据;
若所述计算控制模块确定更新所述着色率纹理数据,所述计算控制模块通过所述图形库向所述GPU下发计算指令;
所述GPU基于所述计算指令和所述第一图像内容的渲染图,确定所述第一图像内容中不同区域的着色率,以更新所述着色率纹理数据。
8.根据权利要求7所述的方法,其特征在于,所述计算控制模块确定是否更新所述着色率纹理数据,包括:
若N和M的差值等于预设阈值,所述计算控制模块确定更新所述着色率纹理数据;
若N和M的差值小于所述预设阈值,所述计算控制模块不更新所述着色率纹理数据。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述GPU更新所述着色率纹理数据之后,所述GPU向所述拦截模块发送通知信号,所述通知信号用于指示所述着色率纹理数据是否可用。
10.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于调用存储器中的计算机程序,以执行如权利要求1至9任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至9任一项所述的方法。
12.一种芯片***,其特征在于,所述芯片***应用于包括处理器和存储器的电子设备,所述芯片***包括一个或多个接口电路和一个或多个处理器,所述接口电路和所述处理器通过线路互联,所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令,当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1至9中任一项所述的方法。
CN202211261351.9A 2022-10-14 2022-10-14 图像处理方法、设备及存储介质 Pending CN116704075A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211261351.9A CN116704075A (zh) 2022-10-14 2022-10-14 图像处理方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211261351.9A CN116704075A (zh) 2022-10-14 2022-10-14 图像处理方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116704075A true CN116704075A (zh) 2023-09-05

Family

ID=87838085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211261351.9A Pending CN116704075A (zh) 2022-10-14 2022-10-14 图像处理方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116704075A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106774782A (zh) * 2015-11-24 2017-05-31 中兴通讯股份有限公司 界面显示方法、装置及终端
CN113726950A (zh) * 2021-06-10 2021-11-30 荣耀终端有限公司 一种图像处理方法和电子设备
CN113781289A (zh) * 2020-06-09 2021-12-10 Arm有限公司 图形处理
CN114092310A (zh) * 2021-11-09 2022-02-25 杭州逗酷软件科技有限公司 图像渲染方法及电子设备、计算机可读存储介质
CN114210055A (zh) * 2022-02-22 2022-03-22 荣耀终端有限公司 一种图像渲染方法和电子设备
CN114494328A (zh) * 2022-02-11 2022-05-13 北京字跳网络技术有限公司 图像显示方法、装置、电子设备及存储介质
CN114972001A (zh) * 2022-06-08 2022-08-30 Oppo广东移动通信有限公司 图像序列渲染方法及装置、计算机可读介质和电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106774782A (zh) * 2015-11-24 2017-05-31 中兴通讯股份有限公司 界面显示方法、装置及终端
CN113781289A (zh) * 2020-06-09 2021-12-10 Arm有限公司 图形处理
CN113726950A (zh) * 2021-06-10 2021-11-30 荣耀终端有限公司 一种图像处理方法和电子设备
CN114092310A (zh) * 2021-11-09 2022-02-25 杭州逗酷软件科技有限公司 图像渲染方法及电子设备、计算机可读存储介质
CN114494328A (zh) * 2022-02-11 2022-05-13 北京字跳网络技术有限公司 图像显示方法、装置、电子设备及存储介质
CN114210055A (zh) * 2022-02-22 2022-03-22 荣耀终端有限公司 一种图像渲染方法和电子设备
CN114972001A (zh) * 2022-06-08 2022-08-30 Oppo广东移动通信有限公司 图像序列渲染方法及装置、计算机可读介质和电子设备

Similar Documents

Publication Publication Date Title
CN115473957B (zh) 一种图像处理方法和电子设备
CN111666119B (zh) Ui组件显示的方法及电子设备
CN113254120B (zh) 数据处理方法和相关装置
WO2023065873A1 (zh) 帧率调整方法、终端设备及帧率调整***
CN113935898A (zh) 图像处理方法、***、电子设备及计算机可读存储介质
CN114089932B (zh) 多屏显示方法、装置、终端设备及存储介质
WO2020233593A1 (zh) 一种前景元素的显示方法和电子设备
CN116048358B (zh) 悬浮球的控制方法和相关装置
CN116051351B (zh) 一种特效处理方法和电子设备
CN116048831B (zh) 一种目标信号处理方法和电子设备
CN114691248B (zh) 显示虚拟现实界面的方法、装置、设备和可读存储介质
CN117009005A (zh) 一种显示方法、汽车和电子设备
CN113495733A (zh) 主题包安装方法、装置、电子设备及计算机可读存储介质
CN116704075A (zh) 图像处理方法、设备及存储介质
CN116389640A (zh) 一种界面显示的方法和电子设备
CN116700578B (zh) 图层合成方法、电子设备以及存储介质
CN116185245B (zh) 一种页面显示方法及电子设备
CN115941836B (zh) 一种界面显示方法、电子设备及存储介质
CN116095512B (zh) 终端设备的拍照方法及相关装置
CN115904576B (zh) 一种应用壁纸的方法、电子设备及存储介质
CN116664375B (zh) 图像预测方法、装置、设备及存储介质
WO2024083031A1 (zh) 一种显示方法、电子设备和***
CN116414493A (zh) 图像处理方法、电子设备及存储介质
CN117666819A (zh) 鼠标操作方法、电子设备、鼠标和计算机可读存储介质
CN117692693A (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