CN116740241A - 一种图像处理方法及电子设备 - Google Patents

一种图像处理方法及电子设备 Download PDF

Info

Publication number
CN116740241A
CN116740241A CN202211215657.0A CN202211215657A CN116740241A CN 116740241 A CN116740241 A CN 116740241A CN 202211215657 A CN202211215657 A CN 202211215657A CN 116740241 A CN116740241 A CN 116740241A
Authority
CN
China
Prior art keywords
region
drawing instruction
area
block
subdivision
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
CN202211215657.0A
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 CN202211215657.0A priority Critical patent/CN116740241A/zh
Publication of CN116740241A publication Critical patent/CN116740241A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/269Analysis of motion using gradient-based methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)

Abstract

本申请实施例提供一种图像处理方法及电子设备,应用于图像处理技术领域。该方法中电子设备从真实帧中获取近处动态物体,对绘制近处动态物体的指令对应的图像区块进行细分,使近处动态物体所在图像区块被分成的网格块小,这样网格块匹配的精度高,计算得到的网格块的运动矢量更精细,因此匹配准确度更高,预测帧的渲染效果也就更好。由于电子设备并未对真实帧的所有图像区块进行细分,因此算法开销也更小。

Description

一种图像处理方法及电子设备
技术领域
本申请涉及图像处理技术领域,尤其涉及一种图像处理方法及电子设备。
背景技术
图像插帧技术通过在两帧画面之间插入过渡帧,即可把画面帧数从原本只有45、60帧提 升至90、120帧甚至更多,因此该技术在一定程度上改善了目前终端的高帧率画面短缺的问 题。
在预测过渡帧的过程中需要先对画面进行分块,再以网格块为单位确定前后两帧画面的 运动矢量图,之后基于运动矢量图匹配过渡帧前后两帧画面每一网格块的光度、色彩等信息。
在匹配光度、色度等信息时网格块的细分程度决定了匹配的精度。而现有的视频插帧技 术通过分块获得多个网格块,在计算前后多帧图像的运动矢量图时,前后多帧图像的同一网 格块的匹配准确度低,导致网格块在前后多帧图像中的位置发生扭曲。因此渲染得到的过渡 帧的渲染效果差,影响用户观看体验。
发明内容
基于此,本申请实施例提供一种图像处理方法及电子设备,可以采用不均匀分块的方式 对图像帧显示区域进行分割处理,比如根据投影缩放信息对图像中近处物体采取比远处物体 更精细地分割方式,以提高近处物体的图像细节部分的匹配精度。网格块在前后多帧图像中 的位置不易匹配错误,渲染得到的过渡帧的图像显示正常,不易发生部分图像块扭曲的情况。 因此可以达到基于图像预测的预测帧图像的渲染效果好,且算法开销小的有益效果。
第一方面,本申请实施例提供一种图像处理方法,应用于电子设备,该方法中,在电子 设备执行图像帧的渲染操作时,电子设备获取图像帧的至少一个绘制指令对应的投影缩放信 息,其中,投影缩放信息表示绘制指令对应的绘制对象在待显示区域中的缩放度。然后电子 设备根据投影缩放信息确定图像帧在待显示区域中的细分区域和粗分区域,其中,粗分区域 被分割为多个网格块,细分区域被分割为多个第一级分块。将细分区域的至少一个第一级分 块分割成多个第二级分块,以使得细分区域中第二级分块的尺寸小于粗分区域中的网格块的 尺寸,其中,细分区域分割获得的网格块和粗分区域分割获得的网格块用于确定至少一个绘 制对象在图像帧中的对象位置。
本申请中,电子设备采用不均匀分块的方式对图像帧显示区域进行分割处理。具体的, 在图像帧渲染过程中,电子设备获取绘制指令对应的绘制对象在显示区域的缩放度,基于缩 放度可确定绘制对象从模型空间映射到相机视角下的缩放情况。若缩放度大,说明绘制对象 离相机远;反之,若缩放度小,说明绘制对象离相机近。因此,基于投影缩放信息可以对显 示区域的细分区域和粗分区域进行区分。对细分区域采取比粗分区域更精细的分割方式,这 样细分区域被分割获得的网格块数量就会的大于粗分区域分割获得的网格块数量。网格块数 量多,则网格块的匹配精度高,那么获得的绘制对象在图像帧中的对象位置越高。即,本申 请通过采用不均匀分块的方式对图像帧显示区域进行分割处理可以达到提高分割获得的网格 块的匹配精度的有益效果。
在第一方面的另一种可能的设计方式中,在将细分区域的至少一个第一级分块分割成多 个第二级分块之后,该方法还包括:根据粗分区域以及细分区域中的第一级分块和第二级分 块,确定至少一个绘制对象在每相邻两帧图像帧的对象位置,基于绘制对象在每相邻两帧图 像帧的对象位置,获得绘制对象的运动向量。基于运动向量在每相邻两帧图像帧之间预测得 到预测帧。
该设计方式下,电子设备可以基于对粗分区域和细分区域分割所获得的网格块匹配绘制 对象在相邻两帧图像帧中的对象位置。由于细分区域的匹配精度更高,因此细分区域在进行 前后多帧图像帧的位置匹配时不易匹配错误。那么基于匹配得到的绘制对象的运动矢量渲染 得到的过渡帧就不易发生部分图像块扭曲的情况,因此过渡帧的图像渲染效果好。
在第一方面的另一种可能的设计方式中,获取图像帧的至少一个绘制指令对应的投影缩 放信息,包括:获取图像帧的至少一个绘制指令的相机视角参数,以及至少一个绘制指令对 应的绘制对象的物理位置信息。基于相机视角参数和物理位置信息,获得绘制对象在相机视 角下的投影缩放信息。
该设计方式下,电子设备可以通过获取相机视角参数和位置信息获得投影缩放信息,根 据投影缩放信息对图像中近处物体采取比远处物体更精细地分割方式,以提高近处物体的图 像细节部分的匹配精度。
在第一方面的另一种可能的设计方式中,获取图像帧的至少一个绘制指令的相机视角参 数,以及至少一个绘制指令对应的绘制对象的物理位置信息,包括:检测到绘制指令为动态 绘制指令,获取图像帧的至少一个动态绘制指令的相机视角参数以及至少一个动态绘制指令 对应的绘制对象的物理位置信息,其中,动态绘制指令用于指示绘制动态对象。
该设计方式下,电子设备只获取动态对象的投影缩放信息,并基于投影缩放信息确定动 态对象的绘制区域是粗分区域还是细分区域。也就是说,电子设备只对近处动态对象所在图 像区块进行细分,以减少算法开销,提高处理速度。
在第一方面的另一种可能的设计方式中,根据投影缩放信息确定图像帧在待显示区域中 的细分区域和粗分区域,包括:检测到绘制指令为动态绘制指令,根据投影缩放信息确定图 像帧在待显示区域中的细分区域和粗分区域。检测到绘制指令为静态绘制指令,将静态绘制 指令所绘制的区域确定为粗分区域,其中,静态绘制指令用于指示绘制静态对象。
该设计方式下,电子设备在检测到绘制指令为静态绘制指令时,不获取静态绘制指令的 投影缩放信息,直接将静态绘制指令的区域确定为粗分区域。而检测到绘制指令为动态绘制 指令时,基于投影缩放信息确定动态绘制指令对应的区域是否需要进行细分。对静态绘制指 令和动态绘制指令采用不均匀分块的方式,可以减少算法的开销。
在第一方面的另一种可能的设计方式中,投影缩放信息包括投影缩放因子,根据投影缩 放信息确定图像帧在待显示区域中的细分区域和粗分区域,包括:若投影缩放因子大于第一 阈值,则确定投影缩放因子对应的绘制指令所绘制的区域为粗分区域。若投影缩放因子小于 或等于第一阈值,则确定投影缩放因子对应的绘制指令所绘制的区域为细分区域。
该设计方式下,电子设备可以通过投影缩放因子与第一阈值的大小关系来确定粗分区域 和细分区域。投影缩放因子表示绘制对象的映射到相机视角后,在相机视角下的缩放度。投 影缩放因子大于第一阈值,说明绘制对象映射到相机视角后面积小,则确定绘制对象是远处 的对象,那么将绘制该绘制对象的绘制指令所绘制的区域确定为粗分区域。反之,投影缩放 因子小于或等于第一阈值,说,绘制对象映射到相机视角后面积大,则确定绘制对象是近处 的对象,那么将绘制该绘制对象的绘制指令所绘制的区域确定为细分区域。这样,通过设置 投影缩放因子和第一阈值,便可快速地在待显示区域中确定粗分区域和细分区域。
在第一方面的另一种可能的设计方式中,细分区域是将绘制指令对应的绘制对象网格化 获得的网格区域,绘制对象在待显示区域中的显示区块包含在细分区域内;在将细分区域的 至少一个第一级分块分割成多个第二级分块之后,该方法还包括:检测到第二级分块中包含 待显示区域中的显示区块之外的区域,将第二级分块分割成多个第三级分块。
该设计方式下,电子设备在确定需进一步对细分区域的第二级分块进行分割操作时,则 将第二级分块分割成多个第三级分块。具体的,在分块时,一般将网格块细分为n*n的网格 块。因此在分块后,网格块内可能包含除绘制指令对应的图像区块的其他区域。因此该图像 块可能包含多个色度和光度,容易匹配错误。因此针对还包含其他绘制对象的第二级分块, 电子设备对其进一步细分,使得进一步细分获得的网格块在前后多帧图像中的位置不易匹配 错误,这样匹配准确率更好。
在第一方面的另一种可能的设计方式中,将第二级分块分割成多个第三级分块,包括: 若第二级分块的尺寸未满足预设尺寸条件,则将第二级分块分割成多个第三级分块。该方法 还包括:若第二级分块的尺寸满足预设尺寸条件,则停止对第二级分块的分割操作。
该设计方式下,预设尺寸条件包括:网格块的尺寸为预设的最小尺寸。电子设备在第二 级分块的尺寸为最小尺寸时,表示第二级分块无法再进一步细分,因此不对其分割。在第二 级分块的尺寸不为最小尺寸时,当第二级分块中包含其他绘制对象时,将其分割为第三级分 块。通过设置预设条件可以在第二级分块无法进一步细分时结束流程,以提高处理流程的效 率,避免占用GPU计算资源。
在第一方面的另一种可能的设计方式中,在根据投影缩放信息确定图像帧在待显示区域 中的细分区域和粗分区域之后,该方法还包括:对绘制细分区域的绘制指令进行标记,得到 第一标记消息,其中,第一标记消息用于在细分区域的绘制指令渲染得到的图像块中标记提 示字符。将细分区域的至少一个第一级分块分割成多个第二级分块,包括:将细分区域中提 示字符所在区域的至少一个第一级分块分割成多个第二级分块。
该设计方式下,第一标记消息能够在电子设备对图像帧进行渲染的过程中,让带标记的 绘制区域被标记上提示字符,以便于电子设备能够根据提示信息确定需要进行细分的细分区 域。换言之,电子设备在渲染图像帧之前发送第一标记消息,以使得渲染得到的图像帧被标 记上提示字符。这样电子设备可以直接对带标记的区域进行细分操作。
在第一方面的另一种可能的设计方式中,在根据投影缩放信息确定图像帧在待显示区域 中的细分区域和粗分区域之后,该方法还包括:对绘制细分区域的绘制指令进行标记得到第 二标记消息,其中,每个绘制指令对应的细分区域的第二标记消息不同,其中,第二标记消 息用于在细分区域的绘制指令渲染得到的图像块中标记提示字符,以及用于确定是否对第二 级分块进行分割。在将细分区域的至少一个第一级分块分割成多个第二级分块之后,该方法 还包括:若第二级分块包括多个第二标记消息,则将第二级分块分割成多个第三级分块。若 第二级分块包括一个第二标记消息,则停止对第二级分块的分割操作。
该设计方式下,对不同绘制对象标记不同提示字符,这样便可直接根据第二级分块是否 包括多种提示字符来确定是否进一步对第二级分块进行分割操作,提高了分割操作的效率。
在第一方面的另一种可能的设计方式中,检测到绘制指令为动态绘制指令,包括:若相 邻两个绘制指令对应的物理位置信息不同,则确定绘制指令为动态绘制指令。
在第一方面的另一种可能的设计方式中,细分区域是绘制指令对应的绘制对象网格化获 得的网格区域,物理位置信息包括绘制对象所在细分区域中的一个网格顶点的坐标信息,其 中网格顶点为网格区域的顶点。
该设计方式下,近似通过一个网格顶点得到的投影缩放信息来确定绘制指令所绘制的图 像区块的投影缩放信息,这样计算量小,计算效率更高。
第二方面,本申请实施例提供一种图像处理方法,该方法可应用于电子设备,以及应用 于图像帧中包含多个绘制对象,绘制对象包括第一对象、第二对象,且第一对象的在模型空 间中的体积和第二对象在模型空间中的体积的相差度大于或等于阈值时,对图像帧进行分块 处理;该方法中,在电子设备执行图像帧的渲染操作时,获取图像帧的至少一个绘制指令对 应的对象屏幕占比,其中,对象屏幕占比用于表示绘制指令对应的绘制对象在待显示区域中 的占据度。若对象屏幕占比大于或等于第二阈值,则确定对象屏幕占比对应的绘制指令所绘 制的区域为细分区域。若对象屏幕占比小于第二阈值,则确定对象屏幕占比对应的绘制指令 所绘制的区域为粗分区域,其中,粗分区域被分割为多个网格块,细分区域被分割为多个第 一级分块。将细分区域的至少一个第一级分块分割成多个第二级分块,以使得细分区域分割 获得的每个第二级分块的尺寸小于粗分区域分割获得的每个网格块的尺寸,其中,细分区域 分割获得的网格块和粗分区域分割获得的网格块被用于确定至少一个绘制对象在图像帧中的 对象位置。
本申请中,在第一对象和第二对象的体积相差度大的情况下,不根据投影缩放信息来确 定细分区域和粗分区域,而是以绘制对象在待显示区域中的占据度来确定。占据度高,则说 明若绘制对象的位置匹配错误会更明显,那么用户体验就更差,因此需要对占据度高的绘制 对象所在的区域进行细分,以达到提高绘制对象的图像细节部分的匹配精度的有益效果。
在第二方面的另一种可能的设计方式中,占据度包括绘制对象在待显示区域中的面积在 待显示区域总面积中的占比。
第三方面,本申请实施例提供一种电子设备,包括:存储器和一个或多个处理器。存储 器和处理器耦合。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处 理器执行计算机指令时,使得电子设备执行如第一方面及其可能的设计方式的方法,第二方 面及其可能的设计方式的方法。
第四方面,本申请提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电 子设备上运行时,使得电子设备执行如第一方面及其可能的设计方式的方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使 得计算机执行如第一方面及其可能的设计方式的方法,第二方面及其可能的设计方式的方法。
可以理解地,上述提供的第二方面及其任一种可能的设计方式的方法,第三方面所述的 电子设备,第四方面所述的计算机存储介质,第五方面所述的计算机程序产品所能达到的有 益效果,可参考第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种插帧技术的原理图;
图2为本申请实施例提供的一种电子设备的硬件结构示意图;
图3为本申请实施例提供的一种电子设备的软件结构示意图;
图4为本申请实施例提供的一种图像处理方法的交互图;
图5为本申请实施例提供的一种模板测试操作的示意图;
图6为本申请实施例提供的一种带标记的动态绘制指令渲染过程的示意图;
图7为本申请实施例提供的一种分块操作的示意图;
图8为本申请实施例提供的一种匹配网格块的操作的示意图;
图9为本申请实施例提供的一种图像处理方法对应的效果示意图;
图10为本申请实施例提供的一种资源拦截过程的示意图;
图11为本申请实施例提供的一种图像处理方法的流程图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者 隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含 地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个 或两个以上。
在介绍本申请实施例提供的图像处理方法之前,先在此介绍图像插帧技术。
图1为本申请实施例提供的一种插帧技术的原理图。如图1所示,真实帧N-1,N,N+1为插帧前游戏应用以时间顺序进行显示的图像帧。真实帧的数量少,导致游戏流畅度低。由于每个真实帧都包括至少一个对象,每个对象都可通过图形处理器(Graphics ProcessingUnit, GPU)执行对象所对应的绘制指令获得,且同一对象的绘制指令相同,故相邻真实帧之间的 对象的运动轨迹是可预测的。例如图1中角色为动态对象,树和车为静态对象。树和车自身 静止,只会因视角而变化,因此树和车的运动轨迹很容易根据视角变化获得。而角色自身会 在世界空间(世界空间可以理解为游戏应用可以显示的总空间)移动,如真实帧N-1中,角 色在屏幕中的位置(简称位置)在树和车的左侧。而真实帧N中,角色的位置在树的右侧及 车的左侧。那么可以预测角色的位置发生从左到右的变化。因此可以基于相邻两个真实帧预 测获得预测帧并在两个真实帧之间插入预测帧(又称过渡帧)。如图1中真实帧N-1和真实帧 N之间插入预测帧M,真实帧N和真实帧N+1之间插入预测帧M+1,以实现对象运动轨迹 的过渡。
相关技术中,计算运动对象在前后两帧图像之间的运动轨迹通常通过块匹配来计算。具 体地,将屏幕的空间划分为多个网格块,将前后两帧光度、色彩相同的网格块相匹配,以块 的运动矢量精准确定图像中对象运动轨迹。在网格分块过程中,网格块的细分程度越大,则 网格块越小,但匹配次数越多,因此算法开销就越大;而块的细分程度越小,则块网格越大, 那么匹配度精度就越低,过渡帧的渲染效果就越差。因此无论是均匀细分网格还是均匀粗分 网格都无法达到兼顾算法开销小和渲染效果好的目的。
为了在不增加算法开销的情况下提高插入的预测帧的渲染效果,本申请实施例提供的图 像处理方法中,电子设备从真实帧中获取近处动态物体,对绘制近处动态物体的指令对应的 图像区块进行细分,使近处动态物体所在图像区块被分成的网格块小,这样网格块匹配的精 度高,计算得到的网格块的运动矢量更精细,因此匹配准确度更高,预测帧的渲染效果也就 更好。由于电子设备并未对真实帧的所有图像区块进行细分,因此算法开销也更小。
示例性的,本申请实施例中的电子设备可以是手机、平板电脑、桌面型、膝上型、手持 计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网 本、增强现实(augmented reality,AR)或者虚拟现实(virtual reality,VR)设备等具有显示 屏的设备,本申请实施例对该电子设备的具体形态不作特殊限制。
图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等。
可以理解的是,本实施例示意的结构并不构成对手机的具体限定。在另一些实施例中, 手机可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同 的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括中央处理器(Central Processing Unit,CPU)、应用处理器(application processor,AP),调制解调处理器,图形处 理器GPU,图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器, 数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器 (neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可 以集成在一个或多个处理器中。
控制器可以是手机的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产 生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210 中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数 据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复 存取,减少了处理器210的等待时间,因而提高了系统的效率。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可 以是有线充电器。在一些有线充电的实施例中,充电管理模块240可以通过USB接口230接 收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块240可以通过手机的 无线充电线圈接收无线充电输入。充电管理模块240为电池242充电的同时,还可以通过电 源管理模块241为手机供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块 241接收电池242和/或充电管理模块240的输入,为处理器210,内部存储器221,外部存储 器,显示屏294,摄像头293,和无线通信模块260等供电。电源管理模块241还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中, 电源管理模块241也可以设置于处理器210中。在另一些实施例中,电源管理模块241和充 电管理模块240也可以设置于同一个器件中。
手机的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260, 调制解调处理器以及基带处理器等实现。
手机通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处 理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。该显示屏294是上述折叠屏(如柔性折叠屏或多屏 折叠屏)。显示屏294包括显示面板。显示面板可以采用液晶显示屏(liquid crystaldisplay, LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或 主动矩阵有机发光二极体(active-matrix organic light emittingdiode,AMOLED),柔性发光二 极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极 管(quantum dot light emitting diodes,QLED)等。
手机可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及APP处理器等实现拍摄功能。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机的存储 能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将 音乐,视频等媒体文件保存在外部存储卡中。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。 处理器210通过运行存储在内部存储器221的指令,从而执行手机的各种功能APP以及数据 处理。内部存储器221可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系 统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区 可存储手机使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221 可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件, 闪存器件,通用闪存存储器(universal flash storage,UFS)等。
需要说明的是,前述图2及其说明仅为本申请实施例提供的方案的一种应用载体的示例。 图2的组成并不构成对本申请实施例所述的方案的限定。在另一些实施例中,电子设备还可 以具有比图2所示组成更多或更少的部件。
在图2所示的示例中,提供了电子设备的硬件组成。在一些实施例中,电子设备还可以 通过其各个硬件部件(如图2所示的硬件组成),运行操作系统。在该操作系统中,可以设置 有不同的软件分层,从而实现不同程序的运行。
图3为本申请实施例提供的一种电子设备的软件结构示意图。电子设备的软件系统可以 采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架 构的Android系统为例,示例性说明手机的软件结构。
如图3所示,分层架构可将软件分成若干个层,每一层都有清晰的角色和分工。层与层 之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用 程序层,应用程序框架层(framework),本地方法层(native),以及内核层。
其中,应用程序层可以包括一系列应用程序包。例如,应用程序包可以包括相机,日历, 地图,视频、音乐、短信息、图库、通话及导航等应用程序。本申请实施例中,应用程序层 还包括游戏应用。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架,以为应用程序层中应用的运行提供支撑。
其中,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通 知管理器,活动管理器,输入管理器等。
窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口 管理、窗口动画管理、surface管理以及作为输入系统的中转站。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括 视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构 建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面, 可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视 频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息, 可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒 等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后 台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提 示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
活动管理器可以提供活动管理服务(ActivityManagerService,AMS),AMS可以用于系 统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的 管理和调度工作。
输入管理器可以提供输入管理服务(InputManagerService,IMS),IMS可以用于管理系 统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通 过和WMS的交互,将事件分配至合适的窗口。
在本申请实施例中,在应用程序框架层中可以设置一个或多个功能模块,用于实现本申 请实施例提供的渲染方案。示例性的,应用程序框架层中可以设置有拦截模块、分离模块、 识别模块、标记模块、分块模块等。在后续示例中,将会对上述各个模块的功能进行详细说 明。
native层用于为应用程序层中的应用提供系统服务,位置服务,开放图形库(如opengl 开放图形库、vulkan开放图形库),触摸服务,显示服务等。首先需要说明的是,安卓(Android) 操作系统是一种以Linux为基础的操作系统,主要用于便携设备。Android系统中上层(例如 应用层和框架层)应用的开发一般基于Java完成。由于有些底层的任务用Java实现起来并不 容易,因此当涉及本地服务、链接库或硬件驱动等方面的任务时,通常需要允许C程序来实 现,而C程序运行在系统Native库。系统Native库包括供Java调用C++代码的接口。
内核层是硬件和软件之间的层。内核层至少包含摄像头驱动,音频驱动,传感器驱动等。
在图3的示例中,电子设备还可以包括硬件层,硬件层中可以包括处理器(如CPU和GPU)。在一些实现中,CPU可以用于控制应用程序框架层中的各个模块实现其各自的功能,GPU可以用于根据应用程序框架层中各个模块处理后的指令所调用的图形库中的API执行相 应的渲染处理。
本申请实施例提供的图像处理方法,可以在具有上述硬件结构和软件结构的手机中实现。
下面结合插帧场景,示例性说明手机软件及硬件的工作流程。
应用层的游戏应用需要进行图像渲染时,下发渲染命令。应用程序框架层响应于渲染命 令,将渲染命令转换成绘制指令,并下发绘制指令。在应用程序层下发过程中,应用程序框 架层调用native层的接口来截获绘制指令,并识别绘制指令是否用于绘制近处动态对象,若 是,则对该绘制指令进行标注。在分块模块中对标注的绘制指令对应的图像区块进行细分, 对未标注的绘制指令对应的图像区块进行粗分。硬件层的GPU基于绘制指令执行渲染,以及 对粗分和细分后的块进行前后帧匹配,得到全屏对象的运动矢量图。基于绘制指令和运动矢 量图,GPU生成过渡帧,并将过渡帧插入前后两帧渲染的真实帧中,以结束插帧流程。
在详细说明本申请实施例提供的图像处理方法之前,先在此介绍该方法可能涉及的的一 些专业技术术语。
图形库:也称为绘图库,图形库用于定义跨编程语言、跨平台的应用程序编程接口(Application Programming Interface,API),其中包含许多对图形进行处理的函数,以OpenGL (Open Graphics Library,开放式图形库)为例,OpenGL定义的API中包括用于绘制二维图 像或三维图像的接口,如绘制函数glDrawElements();OpenGL定义的API中还包括将绘制 函数绘制的图像呈现到显示界面上的接口,如呈现函数eglSwapBuffers(),本申请实施例在 此不进行一一举例。其中,OpenGL中的函数可以通过指令来调用,例如,在游戏应用开发 时开发人员根据图形库内的函数编写的绘制指令,通过绘制指令可以调用绘制函数,以绘制 二维图像或三维图像。
图像帧:前文提到的绘制指令调用绘制函数所绘制的二维图像或三维图像称为图像帧。 具体地,在游戏运行或视频播放过程中,是通过对一帧帧图像进行连续渲染和快速播放显示 的。每一帧图像帧就是游戏应用或视频中显示的一帧静态图像,每帧静态图像都有一个个对 象组成,每个对象又都可通过GPU执行对象所对应的绘制指令获得。图像帧中的对象根据自 身是否会移动又可分为静态对象和动态对象。其中动态对象又可根据是远离镜头(或屏幕) 的对象还是靠近镜头的对象进一步分为远处动态对象和近处动态对象。
绘制指令:图像帧中的每个对象都是通过电子设备通过软件或者硬件执行绘制指令绘制 获得的。一个对象可以由一条或者多条绘制指令绘制获得。一般情况下,一个对象与绘制指 令一一对应。每条绘制指令还包括其携带的特定参数,例如顶点信息等。在电子设备执行该 绘制指令时,基于其特定参数绘制该绘制指令对应的对象。需要说明的是,对于不同帧中的 同一对象所对应的绘制指令是一致的,例如,游戏画面连续的多个游戏图像帧中显示的某棵 大树是电子设备硬件基于相同的绘制指令绘制获得的。但是本申请并不限制这种“相同”是 毫无差别的,在一些实施例中相同也可以是“近似”或“相似”。
下文中将结合附图和游戏场景对本申请实施例提供的图像处理方法进行详细介绍。应理 解,本申请实施例提供的图像处理方法并不局限于游戏场景,例如对非游戏应用下发的绘制 指令,都可采用本申请实施例提供的方法进行处理。如图4所示,图像处理方法包括:
S401、游戏应用向图形库发送绘制指令。
在S401之前,该方法还包括:手机响应于启动游戏应用的操作,启动游戏应用。
然后游戏应用中的游戏引擎可基于游戏应用下发的绘制指令,通过图形库接口调用图形 库内的绘制函数来绘制图像帧。
也就是说,本实施例在游戏应用的画面渲染过程中执行,在CPU向GPU传动态指令的 过程中,手机拦截绘制指令并基于绘制指令包括的信息来确定如何对画面的不同区域采用不 同尺寸的网格块进行分块。具体的拦截技术可参见下文S403。
需要说明的是,CPU向GPU传的是绘制指令流,一个绘制指令流一般用于绘制一帧图 像帧。绘制指令流包括一条或多条绘制指令,每条绘制指令用于绘制一个对象。但对象被完 整的绘制可能需要多条绘制指令,如图1中角色可能由多条绘制指令绘制完成,其中,角色 的头部对应一条绘制指令,角色的手部对应一条绘制指令,角色的躯干对应一条绘制指令等, 本申请实施例在此不进行一一举例。
CPU将绘制指令流传给GPU后,GPU运行绘制指令流中一条或多条绘制指令调用图形 库的一个或多个接口,来实现对图像帧中一个或多个对象进行绘制。
在本实施例中,以一条绘制指令进行说明,应理解,在实际操作中,绘制指令流包括的 每条绘制指令都可采用本方案来处理。
S402、分离模块判断绘制指令是否是动态绘制指令。若是,执行S403,若否,分离模块 执行S1。
在拦截绘制指令之前,先通过分离模块对动态绘制指令和静态绘制指令进行分离。具体 的,如前文所述,静态对象自身静止,只会因视角而变化,所以静态对象的运动轨迹很容易 根据视角变化获得。而动态对象自身会在世界空间移动,因此动态对象的运动矢量需要精细 化计算。由此,本实施例对绘制动态对象的绘制指令对应的图像区块进行细分,这样可以减 少算法开销,提高处理效率。
在一些实施例中,上述分离模块判断绘制指令是否是动态绘制指令,可以包括S2-S4, 即S402包括S2-S4。
S2:分离模块获取绘制指令的上下文参数信息,其中,上下文参数信息包括上一绘制指 令的第一模型位置信息和该绘制指令的第二模型位置信息。
S3:判断第二模型位置信息是否相对于第一模型位置信息发生数据更新。
S4:若第二模型位置信息发生数据更新,则确定绘制指令为动态绘制指令。
具体的,静态绘制指令绘制的静态对象的模型位置信息(又称物理位置信息)保持静止, 即静态对象自身的位置不会发生变化,因此静态绘制指令的模型位置信息只会更新一次。而 动态绘制指令绘制的动态对象的物理位置信息可以移动,即动态对象自身的位置会发生变化, 因此动态绘制指令的模型位置信息在每次CPU向GPU传绘制指令时都会更新。基于此,分 离模块可根据上下文参数信息判断模型位置信息是否更新,若更新,则确定该绘制指令为动 态绘制指令,反之,若不更新,则确定该绘制指令为静态绘制指令。
示例性的,相关技术中绘制指令可以通过glBuffersubData()函数更新模型位置信息, 因此,若分离模块识别到glBuffersubData()函数,则表示该绘制指令是动态绘制指令,然 后分离模块将绘制指令是动态绘制指令的第一消息发送给拦截模块,拦截模块接收到第一消 息后,执行S403。
S403、拦截模块拦截动态绘制指令的顶点信息和相机视角矩阵,并发送给识别模块。
其中,拦截是指拦截模块可以将指向图形库的绘制指令同时也指向图形库外的识别模块。 即拦截模块拦截绘制指令的拦截操作并不影响绘制指令发送给图形库。
本步骤中,拦截绘制指令的目的在于利用拦截的资源获取绘制指令对应的图像区块的深 度信息,根据深度信息便可确定绘制对象是近景对象还是远景对象,从而对不同深度信息的 动态对象采用不同精度的分块操作。
具体的,拦截的资源包括顶点信息和相机视角矩阵。其中,顶点信息用于确定动态绘制 指令绘制的动态对象在世界空间的顶点空间坐标;相机视角矩阵用于确定相机在世界空间的 位置。其中,顶点信息和相机视角矩阵可以在CPU将绘制指令流传给GPU的过程中被截获。 将顶点信息转换到相机空间,就能够得到基于相机视角的顶点视角坐标,顶点视角坐标可用 于获得动态对象的深度信息。
因此,拦截模块将顶点信息和相机视角矩阵发送给识别模块,以便于识别模块执行下述 S404,获得动态对象的深度信息。
S404、识别模块根据顶点信息和相机视角矩阵判断动态绘制指令是否是绘制近景对象的 动态绘制指令。若是,识别模块执行S406,若否,识别模块执行S5。
其中,近景对象是指相机近距离摄取的对象。在游戏画面中显示屏上显示的是相机视角 的画面,因此当对象靠近相机,则对象也靠近屏幕/用户视线。与近景对象相对的,动态绘制 指令还可绘制远景对象,远景对象是指相机远距离摄取的对象。当对象远离相机,则对象也 远离屏幕/用户视线。
近景对象和远景对象在游戏画面中的显示清晰度是不同的,靠近用户视线的近景对象所 显示的画面更清晰,远离用户视线的远景图像所显示的画面更模糊。因此在该步骤中,识别 近景对象从而只对绘制近景对象的动态绘制指令进行分块处理,这样可以在提高画面前景细 节部分的匹配精度的同时达到减少算法开销,提高处理效率的目的。
如前所述,将顶点信息转换到相机空间可以得到基于相机视角的顶点视角坐标。因此在 识别模块中先根据顶点信息和相机视角矩阵获得顶点视角坐标,之后基于顶点视角坐标判断 动态绘制指令绘制的是否是近景对象。
示例性的,以顶点信息包括绘制指令中一个顶点的信息为例,介绍该步骤中判断动态绘 制指令是否是近景对象的详细过程。
以Pf表示顶点信息,MVP4x4表示相机视角矩阵,MVP4x4*Pf得到(x,y,z,w),其中, (x,y,z)表示一个顶点的顶点视角坐标。w表示投影缩放因子。若投影缩放因子小,则说 明动态对象是近景;若投影缩放因子大,则说明动态对象是远景。因此,设置阈值A如1.0 确定动态对象是否是近景,当w>1.0,动态对象是远景;当w≤1,动态对象是近景。识别模 块识别动态绘制指令是绘制近景对象的动态绘制指令之后,识别模块将标记该绘制近景对象 的动态绘制指令的第二消息发送给标记模块,标记模块执行下述S406。
S405、标记模块接收第二消息,第二消息用于指示对绘制近景对象的动态绘制指令进行 标记,响应于第二消息,对动态绘制指令进行标记,并向渲染模块发送带标记的动态绘制指 令。
标记模块标记绘制近景对象的动态绘制指令的目的在于,通过对指令进行标记能够在游 戏画面绘制过程中,让绘制区域被标记上标记模块标记的内容,以便于分区模块直接从绘制 区域中确定需要分区的图像区块。也就是说,标记模块对指令进行标记,以便于GPU基于指 令绘制区域时能显示带标记的图像区块,这样分区模块便可直接对带标记的图像区块进行分 块处理。
具体的,CPU向GPU传动态指令,相当于将需绘制的图像帧的顶点信息、顶点颜色信息等参数传给GPU以便于GPU进行绘制。传递的参数包括颜色缓冲color buffer、深度缓冲depth buffer以及stencil buffer模板缓冲等。其中,颜色缓冲表示每个网格点的颜色信息如RGB 值。深度缓冲表示每个网格点的深度信息。而模板缓冲是用来记录一些标记值,以便于后续 渲染时对标记部分进行对应处理。故本步骤中获取stencil buffer,并在stencil buffer中写入标 记的内容,如写入标记的内容是1,那么对于绘制指令的图像区块如图像帧中的角色都被标 记为1,表示角色需要进一步做网格细分。
示例性的,如图5所示,标记模块接收到动态绘制指令,开启模板测试,即在stencil buffer 中写入标记的内容如标记“1”,生成GLstencil Mask(1)指令。在后续渲染过程中,插入GLstencil Mask(1)指令让绘制的图像区块被标记上1。之后标记模块向分块模块发送带标记的动态绘 制指令,即将GLstencil Mask(1)和动态绘制指令一起发送给渲染模块。
S406、渲染模块接收带标记的动态绘制指令,渲染获得图像区块,其中,图像区块中显 示标记信息。
渲染模块在GPU中,GPU的离屏渲染操作是在当前用于显示的屏幕缓存区中进行的。 当离屏渲染结束后,插入标记的动态绘制指令对应的图像区块则可以显示标记信息。关于渲 染的具体方式,可参见相关技术中离屏渲染技术的实现,在此不做累赘说明。
带标记的动态绘制指令渲染过程如图6所示。首先将模型初始网格进行骨骼化,骨骼化 后得到骨骼矩阵。目的是模仿自然物体的骨骼变化,让动态对象动作更自然。然后GPU再将 骨骼矩阵转化为MVP矩阵。最后在顶点着色器中处理获得标准化设备坐标(Normalized Device Coordinates,NDC)顶点。在GPU渲染过程中得到的骨骼矩阵、MVP矩阵、Ndc顶 点中,骨骼矩阵只能够指示骨骼位置,但无法区别动态对象的远近。而在转化为MVP矩阵 后,通过MVP*Pf才可得到w。因此在GPU渲染过程中,识别模块是在GPU得到MVP矩阵后才拦截MPV矩阵的。
渲染结束后,分块模块接收显示标记信息的图像区块,并执行下述S407。
S407、分块模块对显示标记的图像区块进行细分。
其中,细分是相对于粗分来说的一种分块精度。如图7所示,图7的(b)和图7的(c)相对图7的(a)来说就是一种粗分方式。
在一些实施例中,将分块次数作为细分和粗分的区别。如分块次数≥阈值B,表示细分 操作。分块次数<阈值B,表示粗分操作。
在另一些实施例中,将分得的网格块的大小作为细分和粗分的区块。如网格块体积≥阈 值C,表示粗分操作。网格块体积<阈值C,表示细分操作。
下面结合图7介绍本步骤的细分过程。对每个绘制指令对应的图像区块,无论其是否带 有显示标记,分块模块都根据初始设定的网格数进行分块操作,如图7的(a)所示,动态对 象所在区块经过第一次分块操作,被分为5*5的网格B。若图像区块带显示标记,则分块模 块在图7的(a)的基础上进一步分块,在分块前分块模块先确定本次细分的区域。反之,若 图像区块不带显示标记,则结束分块。
经过第一次分块操作后,分块模块对带显示标记的执行第二次分块操作(即细分)。如图 7的(a)中,圆形中间区域占据了一整个网格,那么在匹配圆形中间区域时以该帧图像帧整 块网格的光度、色度与上一帧图像帧整块网格的光度、色度匹配,能够匹配到正确的网格。 而圆形中间区域以外的部分未占据一整个网格,网格B的一部分显示圆的光度、色度,而另 一部分显示其他对象的光度、色度,因此进行网格匹配时不容易匹配到正确的网格。基于此, 将对象未占据整个网格的网格B进行第二次分块操作,该网格B被细分获得2*2的网格C。
同样的,对网格C分块前也要先确定本次细分的区域,确定好细分区域后,再对对象未 占据整个网格的网格C进行第三次分块操作,该网格C被细分获得2*2的网格D。
在一些实施例中,上述S406中,每个绘制近景对象的动态绘制指令插入的标记信息不同。 以便于在S407中,能够基于标记信息确定是否进行二次分块操作。
具体地,在分块时,一般将网格块细分为n*n的网格块。因此在分块后,网格块内可能 包含除绘制指令对应的图像区块的其他区域。例如图7的(a),圆的边缘的四个网格块除了 包括圆所在区域(即图形区块的区域)外,还包括圆以外区域。因此圆以外区域会被插入与 圆的标记信息不同的其他标记信息。如圆的标记信息为1,圆以外的标记信息为2。那么原的 边缘的四个网格块被标记了1和2两个标记信息。也就是说,上述所说的对象未占据一整个 网格的网格B会被标记多个标记信息。那么当分块模块检测到网格块包括多个标记信息,则 进行再次分块操作。通过不同标记信息来确定是否对网格块进行再次分块操作能够提高分块 的效率。
直至细分的网格的大小为预设的最小网格大小,则停止细分,最终细分得到的网格图如 图7的(c)所示,可以看到,图像区块的大部分区域都被细分为一个完整网格,以便于后续 执行S408进行精准的网格块匹配。
S408、匹配模块接收细分后的图像区块,对相邻两帧图像帧的同一网格块进行匹配,得 到所有网格块的在相邻两帧图像帧之间的运动矢量图。
上述S407介绍的是对一块图像区块的细分操作,而根据绘制指令流可以对一帧图像帧中 需细分的图像区块都进行细分操作,而不需要细分的图像区块则可采用如S407中所说的以初 始设定的网格数细分。如此,可得到一帧图像帧分块后的图像。这样反复操作多次,便可得 到多帧图像帧。然后匹配模块进行匹配操作,如图8所示,图像帧B是图像帧A的后一帧图 像帧,在图像帧A中选取一个第一网格块801,识别第一网格块801的颜色为红色;匹配模 块在图像帧B中去匹配颜色为红色的网格块,匹配到图像帧B中的第二网格块802。然后获 取第一网格块801和第二网格块802之间的位移差值,得到运动矢量。对图像帧A中每个网 格块都进行匹配操作后,可以得到每个网格块的运动矢量,将运动矢量表示在同一张图内, 便得到运动矢量图。
基于运动矢量图,包括手机在内的电子设备可进行图像帧的预测处理、时域抗锯齿 (Temporal Anti-Aliasing,TAA)运动模糊处理、超分处理等。
下面以基于运动矢量图进行图像帧的预测处理的场景介绍对图像区块进行细分处理能够 达到的效果。
图像帧的预测是通过图像帧A和图像帧B之间,插入一帧预测帧C,起到提高画面帧数 的作用。
如图9的(a)中,在图像帧A中,手部图像区块被分为两个网格块,记作网格块901,RGB值(252,224,203),及网格块902,RGB值(248,197,183)。手部图像区块周围的 场景区块被分为一个网格块,记作网格块903,RGB值(124,252,)。图像帧B中,手部图 像区块被分为网格块904,网格块905,场景区块被分为网格块906,RGB值同上。正确的匹 配结果应该是:网格块901匹配网格块904,网格块902匹配网格块905,网格块903匹配网 格块906。那么网格块901的运动矢量可以记作x4-x1,网格块902的运动矢量记作x5-x2, 网格块903的运动矢量记作x6-x3。如此,在图像帧A和图像帧B之间插入的预测帧C的图 像块的运动矢量可以近似记作:网格块907为(x4-x1)/2,网格块908为(x5-x2)/2,网格 块909为(x6-x3)/2。然后将RGB值填充至网格块907~网格块909中。得到预测结果准确 的预测帧C。
但由于分块精度低,网格块902匹配到了网格块906,导致网格块902的运动矢量错误 地记成了x6-x2,那么网格块908的运动矢量被错误预测为(x6-x2)/2,则如图9的(a)所示,渲染得到的预测帧C中网格块908的位置发生扭曲。
而图9的(b)中,在图像帧D中手部图像区块被分为八个网格块911,两个网格块912, 一个网格块913,场景区块被分为一个网格块914。网格块的分块精度高,所以网格块不易匹 配错误,那么预测的网格块的运动矢量和RGB值就更为准确,如图9的(b)中预测帧F的 渲染效果比图9的(a)中的预测帧C的渲染效果就更好。
前文实施例中,介绍了对绘制近景对象的动态绘制指令的处理。
在一些实施例中,上述方法还包括:
S1:分离模块确定绘制指令是静态绘制指令,不向拦截模块发送第一消息。
该步骤中,拦截模块接收到第一消息,进行拦截资源的操作。若未收到第一消息,则相 应的不拦截资源。那么后续标记模块也不会对静态绘制指令进行标记,分块模块也就不会对 静态绘制指令进行细分。如此,包括手机在内的电子设备可以对有针对性的对不同绘制指令 进行不同精度的分块处理,以在算法开销小的情况下提高图像细节部分的匹配精度。
在一些实施例中,上述方法还包括:
S5:识别模块确定动态绘制指令是绘制远景对象的动态绘制指令,不向标记模块发送第 二消息。
该步骤中,识别模块不向标记模块发送第二消息,则标记模块不对绘制远景的动态绘制 指令进行标记。那么后续分块模块也就不会对绘制远景的动态绘制指令对应的图像区块进行 细分。以达到减少算法开销的有益效果。
在一些实施例中,上述S404中的顶点信息可以是网格起点。其中,网格起点表示区块图 像所在网格的第一个顶点。在离屏渲染过程中,顶点会被依次写入内存,因此获取写入内存 的第一个顶点的值,则为网格起点。
示例性的,每个动态绘制指令都包括网格顶点标识Mesh VertexId,它是一个资源句柄, 在GPU对应着一块存放顶点的缓存buffer。它的数据格式可以由glVertexAttribPointer函数决 定。
void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,G Lsizei stride,const void*pointer)
在函数中,type代表数据类型,pointer(指针)代表网格信息在buffer中的偏移位置, 即pointer表示网格信息在内存地址上的偏移。
根据Mesh Vertex Id和pointer便可获取到网格起点。
在该实施例中,可以维护一个Mesh Vertex Id+pointer与网格起点的映射表。首先,先寻 找当前的绘制指令所绘制的网格是否存在映射表记录,如果存在,则记录下网格起点。如果 不存在,则通过glMapBuffer(获取缓存对象指针的函数)映射Mesh Vertex GPU内存到CPU 可访问的内存空间,以得到pointer。再根据pointer偏移值记录网格起点,同时加入映射表中, 以便于后续使用。
如图10所示,结合获取网格起点和相机视角矩阵的示例,对S403进一步说明。
动态绘制指令包括网格顶点标识、变换参数、相机视角矩阵等资源。其中,相机视角矩 阵可被直接截获。网格顶点则需要先基于网格顶点标识判断是否存在关于该网格顶点标识的 映射表,若存在,则从映射表中获取对应的网格起点。若不存在映射表,则先基于缓存对象 指针的函数得到pointer,再根据pointer偏移值记录网格起点,同时加入映射表中。
只获取网格起点的好处在于,可近似通过网格起点得到的投影缩放因子来确定绘制指令 所绘制的图像区块的投影缩放因子。这样计算量小,计算效率更高。
综上所述,本申请实施例提供一种图像处理方法,可以从绘制指令中获取动态绘制指令, 并在动态绘制指令中获取动态对象的深度信息,根据深度信息便可确定动态对象是近景对象 还是远景对象,从而对近景对象采用高精度的细分操作。近景对象越细分,进行对象的运动 矢量的计算结果就更精细,那么结果的准确率就越高。因此基于运动矢量进行如后续的图像 帧的预测处理,就能得到渲染效果更好、画面更真实的预测帧,从而提高了用户的体验。
至此,为方便对前文各个实施例的理解,下面以一个完整的流程示例来说明本申请方案 及其效果。图11为本申请一个具体示例中的图像处理方法的流程图。
参照图11,本申请实施例提供的图像处理方法可以包括:
S1101、下发绘制指令流。该步骤中,包括手机在内的电子设备响应于启动游戏应用的操 作,启动游戏应用。然后游戏应用中的游戏引擎可基于游戏应用下发的绘制指令流,绘制指 令流用于渲染全屏图像(即一帧图像帧)。
S1102、判断绘制指令的动静。该步骤相当于上述S402,在此不做累赘说明。
S1103、若静态,则正常绘制。
S1104、若动态,则拦截统一变量(uniform)中的相机视角矩阵。
S1105、将网格顶点标识映射为网格起点。
重复S1102-S1105以对绘制指令流中的每个绘制指令进行渲染。
S1106、拦截相机视角矩阵和网格起点。该步骤相当于上述S403。
S1107、判断动态网格是否靠近相机。该步骤相当于上述S404。
S1108、若是,启动模板测试,得到模板掩码图。启动模板测试的目的在于插入标记指令, 在渲染过程中,插入标记指令的图像区块会被标记上标记的内容,从而得到模板掩码图。模 板掩码图相当于上述S407中显示标记的图像区块。
S1109、基于模板掩码图对网格进行粗分或细分。该步骤相当于上述S407。
S1110、计算全屏运动矢量。该步骤相当于上述S408。
综上所述,采用本申请实施例的方法,包含手机在内的电子设备可以有效的解决目前图 像分块的精度低,导致图像细节部分的匹配精度差的问题。
本申请另一些实施例提供了一种电子设备,该电子设备可以包括:上述显示屏(如触摸 屏)、存储器和一个或多个处理器。该显示屏、存储器和处理器耦合。该存储器用于存储计算 机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可 执行上述方法实施例中手机执行的各个功能或者步骤。该电子设备的结构可以参考图3所示 的电子设备200的结构。
本申请实施例还提供一种计算机可读存储介质,该计算机存储介质包括计算机指令,当 所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中手机执行 的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时, 使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简 洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分 配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的 全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的 方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分, 仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结 合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的 相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信 连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部 件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同 地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个 单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以 采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以 存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对 现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该 软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等) 或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介 质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本 申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的 保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种图像处理方法,其特征在于,应用于电子设备,所述方法包括:
在所述电子设备执行图像帧的渲染操作时,获取所述图像帧的至少一个绘制指令对应的投影缩放信息,其中,所述投影缩放信息表示所述绘制指令对应的绘制对象在待显示区域中的缩放度;
根据所述投影缩放信息确定所述图像帧在所述待显示区域中的细分区域和粗分区域,其中,所述粗分区域包括多个网格块,所述细分区域包括多个第一级网格块;
将所述细分区域的至少一个第一级分块分割成多个第二级分块,以使得所述细分区域分割获得的每个第二级网格块尺寸小于所述粗分区域分割获得的每个网格块尺寸,其中,所述细分区域分割获得的网格块和所述粗分区域分割获得的网格块被用于确定至少一个所述绘制对象在所述图像帧中的对象位置。
2.根据权利要求1所述的方法,其特征在于,在所述将所述细分区域的至少一个第一级分块分割成多个第二级分块之后,所述方法还包括:
根据所述粗分区域以及所述细分区域中的所述第一级分块和所述第二级分块,确定至少一个所述绘制对象在每相邻两帧所述图像帧的对象位置,基于所述绘制对象在每相邻两帧所述图像帧的对象位置,获得所述绘制对象的运动向量;
基于所述运动向量在每相邻两帧所述图像帧之间预测得到预测帧。
3.根据权利要求1或2所述的方法,其特征在于,所述获取所述图像帧的至少一个绘制指令对应的投影缩放信息,包括:
获取所述图像帧的至少一个所述绘制指令的相机视角参数,以及至少一个所述绘制指令对应的绘制对象的物理位置信息;
基于所述相机视角参数和所述物理位置信息,获得绘制对象在相机视角下的投影缩放信息。
4.根据权利要求3所述的方法,其特征在于,所述获取所述图像帧的至少一个所述绘制指令的相机视角参数,以及至少一个所述绘制指令对应的绘制对象的物理位置信息,包括:
检测到所述绘制指令为动态绘制指令,获取所述图像帧的至少一个所述动态绘制指令的相机视角参数以及至少一个所述动态绘制指令对应的绘制对象的物理位置信息,其中,所述动态绘制指令是绘制动态对象的指令。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述投影缩放信息包括投影缩放因子,所述根据所述投影缩放信息确定所述图像帧在所述待显示区域中的细分区域和粗分区域,包括:
若所述投影缩放因子大于第一阈值,则确定所述投影缩放因子对应的绘制指令所绘制的区域为所述粗分区域;
若所述投影缩放因子小于或等于所述第一阈值,则确定所述投影缩放因子对应的绘制指令所绘制的区域为所述细分区域。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述细分区域是将所述绘制指令对应的绘制对象网格化获得的网格区域,所述绘制对象在待显示区域中的显示区块包含在所述细分区域内;在将所述细分区域的至少一个所述第一级分块分割成多个第二级分块之后,所述方法还包括:
检测到所述第二级分块中包含所述待显示区域中的显示区块之外的区域,将所述第二级分块分割成多个第三级分块。
7.根据权利要求1-5中任一项所述的方法,其特征在于,在所述将所述细分区域的至少一个所述第一级分块分割成多个第二级分块之后,所述方法还包括:
若所述第二级分块的尺寸满足预设尺寸条件,则停止对所述第二级分块的分割操作。
8.根据权利要求1-7中任一项所述的方法,其特征在于,在所述根据所述投影缩放信息确定所述图像帧在所述待显示区域中的细分区域和粗分区域之后,所述方法还包括:
对绘制所述细分区域的绘制指令进行标记,得到第一标记消息,其中,所述第一标记消息用于在所述细分区域的绘制指令渲染得到的图像块中标记提示字符;
所述将所述细分区域的至少一个第一级分块分割成多个第二级分块,包括:
将所述细分区域中所述提示字符所在区域的至少一个所述第一级分块分割成多个第二级分块。
9.根据权利要求1-7中任一项所述的方法,其特征在于,在所述获取所述图像帧的至少一个绘制指令对应的投影缩放信息之前,所述方法还包括:
检测到所述绘制指令为所述静态绘制指令,将所述静态绘制指令所绘制的区域确定为所述粗分区域,其中,所述静态绘制指令是绘制静态对象的指令。
10.根据权利要求1-9中任一项所述的方法,其特征在于,在所述根据所述投影缩放信息确定所述图像帧在所述待显示区域中的细分区域和粗分区域之后,所述方法还包括:
对绘制所述细分区域的绘制指令进行标记得到第二标记消息,其中,每个绘制指令对应的细分区域的第二标记消息不同,其中,所述第二标记消息用于在所述细分区域的绘制指令渲染得到的图像块中标记提示字符,以及用于确定是否对所述第二级分块进行分割;
在所述将所述细分区域的至少一个第一级分块分割成多个第二级分块之后,所述方法还包括:
若所述第二级分块包括多个所述第二标记消息,则将所述第二级分块分割成多个第三级分块;
若所述第二级分块包括一个所述第二标记消息,则停止对所述第二级分块的分割操作。
11.根据权利要求4所述的方法,其特征在于,所述检测到所述绘制指令为动态绘制指令,包括:
若相邻两个所述绘制指令对应的所述物理位置信息不同,则确定所述绘制指令为所述动态绘制指令。
12.根据权利要求3或4所述的方法,其特征在于,所述细分区域是所述绘制指令对应的绘制对象网格化获得的网格区域,所述物理位置信息包括所述绘制对象所在细分区域中的一个网格顶点的坐标信息,其中网格顶点为网格区域的顶点。
13.一种图像处理方法,其特征在于,应用于电子设备,应用于图像帧中包含多个绘制对象,所述绘制对象包括第一对象、第二对象,且所述第一对象的在模型空间中的体积和所述第二对象在所述模型空间中的体积的相差度大于或等于阈值时,对所述图像帧进行分块处理;所述方法包括:
在所述电子设备执行所述图像帧的渲染操作时,获取所述图像帧的至少一个绘制指令对应的对象屏幕占比,其中,所述对象屏幕占比用于表示所述绘制指令对应的绘制对象在待显示区域中的占据度;
若所述对象屏幕占比大于或等于第二阈值,则确定所述对象屏幕占比对应的绘制指令所绘制的区域为细分区域;
若所述对象屏幕占比小于第二阈值,则确定所述对象屏幕占比对应的绘制指令所绘制的区域为粗分区域,其中,粗分区域包括多个网格块,细分区域包括多个第一级网格块;
将所述细分区域的至少一个第一级分块分割成多个第二级分块,以使得所述细分区域分割获得的每个第二级网格块尺寸小于所述粗分区域分割获得的每个网格块尺寸,其中,所述细分区域分割获得的网格块和所述粗分区域分割获得的网格块被用于确定至少一个绘制对象在图像帧中的对象位置。
14.根据权利要求13所述的方法,其特征在于,所述占据度包括所述绘制对象在所述待显示区域中的面积在待显示区域总面积中的占比。
15.一种电子设备,其特征在于,包括:通信模块、存储器和一个或多个处理器;所述通信模块、所述存储器与所述处理器耦合;其中,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述计算机指令被所述处理器执行时,
当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-12中任一项所述的方法或执行如权利要求13或14所述的方法。
16.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在所述电子设备上运行时,使得所述电子设备执行如权利要求1-12中任一项所述的方法或执行如权利要求13或14所述的方法。
CN202211215657.0A 2022-09-30 2022-09-30 一种图像处理方法及电子设备 Pending CN116740241A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211215657.0A CN116740241A (zh) 2022-09-30 2022-09-30 一种图像处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211215657.0A CN116740241A (zh) 2022-09-30 2022-09-30 一种图像处理方法及电子设备

Publications (1)

Publication Number Publication Date
CN116740241A true CN116740241A (zh) 2023-09-12

Family

ID=87908595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211215657.0A Pending CN116740241A (zh) 2022-09-30 2022-09-30 一种图像处理方法及电子设备

Country Status (1)

Country Link
CN (1) CN116740241A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152148A (ja) * 2002-10-31 2004-05-27 Fuji Photo Film Co Ltd 動画像合成方法および装置並びにプログラム
CN103714529A (zh) * 2012-09-29 2014-04-09 西门子公司 一种基于多级网格的图像分割方法及装置
CN108921050A (zh) * 2018-06-14 2018-11-30 华中科技大学 一种基于移动端的虚拟现实图像处理系统
US10593066B1 (en) * 2017-09-29 2020-03-17 A9.Com, Inc. Compression of multi-dimensional object representations
CN110933497A (zh) * 2019-12-10 2020-03-27 Oppo广东移动通信有限公司 视频图像数据插帧处理方法及相关设备
CN113066001A (zh) * 2021-02-26 2021-07-02 华为技术有限公司 一种图像处理方法及相关设备
US20220005255A1 (en) * 2019-03-22 2022-01-06 Huawei Technologies Co., Ltd. Image rendering method and apparatus, and electronic device
CN114782251A (zh) * 2022-04-26 2022-07-22 深延科技(北京)有限公司 视频超分方法、装置、电子设备及可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152148A (ja) * 2002-10-31 2004-05-27 Fuji Photo Film Co Ltd 動画像合成方法および装置並びにプログラム
CN103714529A (zh) * 2012-09-29 2014-04-09 西门子公司 一种基于多级网格的图像分割方法及装置
US10593066B1 (en) * 2017-09-29 2020-03-17 A9.Com, Inc. Compression of multi-dimensional object representations
CN108921050A (zh) * 2018-06-14 2018-11-30 华中科技大学 一种基于移动端的虚拟现实图像处理系统
US20220005255A1 (en) * 2019-03-22 2022-01-06 Huawei Technologies Co., Ltd. Image rendering method and apparatus, and electronic device
CN110933497A (zh) * 2019-12-10 2020-03-27 Oppo广东移动通信有限公司 视频图像数据插帧处理方法及相关设备
CN113066001A (zh) * 2021-02-26 2021-07-02 华为技术有限公司 一种图像处理方法及相关设备
CN114782251A (zh) * 2022-04-26 2022-07-22 深延科技(北京)有限公司 视频超分方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
EP3657327B1 (en) Method for rendering game, and method, apparatus and device for generating game resource file
US11852499B2 (en) Map rendering method and apparatus, computer device, and storage medium
US20080198158A1 (en) 3D map display system, 3D map display method and display program
CN111400024B (zh) 渲染过程中的资源调用方法、装置和渲染引擎
CN110020300B (zh) 一种浏览器页面合成方法及终端
CN116091329B (zh) 图像处理方法、装置、设备及存储介质
EP4290464A1 (en) Image rendering method and apparatus, and electronic device and storage medium
CN113409411B (zh) 图形界面的渲染方法、装置、电子设备及存储介质
CN115375815A (zh) 阴影渲染方法、装置、电子设备及存储介质
CN113157357A (zh) 一种页面显示的方法、装置、终端以及存储介质
CN115018955B (zh) 一种图像生成方法及设备
CN115018692A (zh) 一种图像渲染方法及电子设备
CN115686700A (zh) 渲染方法及电子设备
WO2024027286A1 (zh) 渲染方法、装置、设备及存储介质
CN116740241A (zh) 一种图像处理方法及电子设备
WO2024045701A9 (zh) 数据处理方法、装置、设备及存储介质
CN115690269B (zh) 一种视图对象的处理方法及电子设备
CN116700655B (zh) 一种界面显示方法及电子设备
CN116700535B (zh) 基于笔记应用的悬浮栏显示方法、电子设备以及存储介质
US11087526B2 (en) Image processing program, image processing apparatus, and image processing method
CN116193050A (zh) 一种图像处理方法、装置、设备及存储介质
CN118672570A (zh) 一种自适应应用页面显示方法及设备
CN118446876A (zh) 单目标追踪方法、电子设备、存储介质及芯片
CN118436984A (zh) 在虚拟场景上显示用户界面的方法、装置及电子设备
CN116688494A (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