CN117710404A - 一种图像处理方法和电子设备 - Google Patents
一种图像处理方法和电子设备 Download PDFInfo
- Publication number
- CN117710404A CN117710404A CN202211105947.XA CN202211105947A CN117710404A CN 117710404 A CN117710404 A CN 117710404A CN 202211105947 A CN202211105947 A CN 202211105947A CN 117710404 A CN117710404 A CN 117710404A
- Authority
- CN
- China
- Prior art keywords
- coordinate data
- model
- frame image
- image
- determining
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000009877 rendering Methods 0.000 claims abstract description 184
- 239000013598 vector Substances 0.000 claims abstract description 147
- 230000033001 locomotion Effects 0.000 claims abstract description 141
- 230000003068 static effect Effects 0.000 claims abstract description 79
- 238000000034 method Methods 0.000 claims abstract description 75
- 239000000872 buffer Substances 0.000 claims description 76
- 230000015654 memory Effects 0.000 claims description 68
- 239000011159 matrix material Substances 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 52
- 230000009466 transformation Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 239000000523 sample Substances 0.000 claims 1
- 238000004364 calculation method Methods 0.000 abstract description 53
- 230000008569 process Effects 0.000 abstract description 28
- 238000012545 processing Methods 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 27
- 238000012546 transfer Methods 0.000 description 21
- 238000007726 management method Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/207—Analysis of motion for motion estimation over a hierarchy of resolutions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种图像处理方法和电子设备,涉及图像处理领域,可以分别准确快速地对静态网格以及动态网格进行运动矢量的计算,节省矢量计算过程中的算力开销,提升预测效率。具体方案为:根据已完成的至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置。该渲染中间变量包括对应帧图像的MVP矩阵和深度数据。根据已完成的至少两帧图像中,第一模型的坐标数据,确定下一帧图像中,该第一模型的位置。该第一模型对应网格为该图像中的动态网格,该坐标数据包括该第一模型在对应帧图像中的NDC坐标以及绘制参数,该NDC坐标包括至少一个顶点坐标该绘制参数用于该电子设备绘制该第一模型。
Description
技术领域
本申请实施例涉及图像处理领域,尤其涉及一种图像处理方法和电子设备。
背景技术
帧预测技术能够通过已经完成渲染的帧图像的相关数据,预测下一帧图像中各个物体的位置。该技术在有插帧需求的显示方案中被广泛应用。
目前的帧预测技术可以基于各个像素点的颜色或亮度匹配,确定同一个物体(模型)在不同帧图像中的位置。进而根据位置的变化计算获取各个像素点的运动矢量。基于图像显示的连续性,根据该运动矢量就能够实现对未来帧图像的预测。
该方案在实施过程中,对于算力以及功耗也提出了较高的要求。
发明内容
本申请实施例提供一种图像处理方法和电子设备,可以分别准确快速地对静态网格以及动态网格进行运动矢量的计算,进而准确进行未来帧图像的预测。通过静态网格和动态网格的分别计算,节省矢量计算过程中的算力开销,提升预测效率。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种图像处理方法,该方法应用于电子设备,该方法包括:该电子设备通过图像渲染得到至少两帧图像,至少两帧该图像中包括动态网格和静态网格,该动态网格对应模型在不同帧图像中的世界坐标系下的坐标不同,该静态网格对应模型在不同帧图像中的世界坐标系下的坐标相同。根据已完成的至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置。该渲染中间变量包括对应帧图像的模型-观察-投影MVP矩阵和深度数据。根据已完成的至少两帧图像中,第一模型的坐标数据,确定下一帧图像中,该第一模型的位置。该第一模型对应网格为该图像中的动态网格,该坐标数据包括该第一模型在对应帧图像中的归一化设备NDC坐标以及绘制参数,该NDC坐标包括至少一个顶点坐标该绘制参数用于该电子设备绘制该第一模型。由此,电子设备可以基于下一帧图像的静态网格的位置以及下一帧图像中第一模型的位置,确定所述下一帧图像。可以理解的是,在图像中包括第一模型之外的其他更多动态网格的情况下,则电子设备可以根据对应模型的坐标数据,采用类似于第一模型的处理机制,确定该运动模型在下一帧图像中的位置。结合不同运动物体在下一帧图像中的位置以及静态物体在下一帧图像中的位置,电子设备就可以综合获取下一帧图像,实现未来帧图像的预测。
这样,电子设备可以通过MVP矩阵以及深度数据确定静态网格的运动矢量。其中,MVP矩阵以及深度数据可以直接通过应用程序下发的指令流获取,避免在确定静态网格的过程中产生大量的数据计算开销。此外,电子设备还可以通过坐标数据确定每个动态网格的运动矢量。例如,电子设备可以基于坐标数据对动态网格进行匹配,从而避免逐个像素的亮度/颜色匹配产生的算力开销。由此即可通过上述方案实现静态网格以及动态网格的运动矢量的计算。同时能够显著降低算力开销,提升计算效率。
可选的,在该图像中包括多个动态网格对应的模型,该根据已完成的至少两帧图像中第一模型的坐标数据,确定下一帧图像中该第一模型的位置,包括:根据已完成的至少两帧图像中第一模型的坐标数据,基于特征哈希值匹配,确定该第一模型在不同帧图像中的坐标数据。其中,该第一模型在不同帧图像中的特征哈希值相同,不同模型在同一帧图像中的特征哈希值不同。根据该第一模型在不同帧图像中的坐标数据,确定下一帧图像中该第一模型的位置。这样,在多个动态网格的较为复杂的图像中,不需要通过像素级别的逐个匹配,即可确定同一个模型在不同帧图像的坐标对应关系。由此显著节省对应的算力开销以及时间开销。
可选的,该已完成帧图像包括第N帧图像以及第N-1帧图像,该下一帧图像为第N+1帧图像。该根据已完成的至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置,包括:根据该第N-1帧图像的第一MVP矩阵以及第一深度数据,该第N帧图像的第二MVP矩阵以及第二深度数据,确定该第N帧图像中的静态网格的运动矢量。根据该静态网格在该第N帧图像中的位置,以及该静态网格的运动矢量,确定该第N+1帧图像中该静态网格的位置。这样,以当前帧图像为第N帧图像为例,电子设备可以在当前帧图像完成渲染后,获取第N帧图像中的相关数据,结合第N-1帧图像中的数据,进行第N+1帧图像的预测。应当理解的是,在另一些实现中,已经完成的帧图像也可以是不连续的两帧图像,如第N帧图像以及第N-2帧图像等。
可选的,该电子设备的存储器中配置有渲染中间变量缓存,在该根据已完成的至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置之前,该方法还包括:获取该第一MVP矩阵、该第一深度数据、该第二MVP矩阵以及该第二深度数据,将获取的数据存储在该渲染中间变量缓存中。该根据已完成的至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置,包括:从该渲染中间变量缓存中读取该第一MVP矩阵、该第一深度数据、该第二MVP矩阵以及该第二深度数据,并确定第N+1帧图像中该静态网格的位置。
可选的,该应用程序下发第一指令流指示该电子设备进行第N-1帧图像的渲染。该渲染中间变量缓存包括第一渲染中间变量缓存。该获取并存储该第一MVP矩阵,包括:该电子设备拦截该第一指令流中,用于传输该第一MVP矩阵的第一指令段,根据该第一指令段,将该第一MVP矩阵存储在该第一渲染中间变量缓存中。
可选的,该电子设备根据第一预设标识,拦截该第一指令流的该第一指令段。
可选的,该第一预设标识为uniform参数。
这样,电子设备可以在进行第N-1帧图像的渲染过程中,通过上述方案将后续需要使用的第一MVP矩阵备份存在存储器中的预设位置,例如渲染中间变量缓存中。以便后续调用。
可选的,该应用程序下发第一指令流指示该电子设备进行第N-1帧图像的渲染。该渲染中间变量缓存包括第二渲染中间变量缓存。该获取并存储该第一深度数据,包括:该电子设备拦截该第一指令流中,与该第一深度数据相关的第二指令段,根据该第二指令段,将该第一深度数据存储在该第二渲染中间变量缓存中。
可选的,该与该第一深度数据相关的第二指令段用于指示该电子设备进行多目标渲染MRT。
这样,电子设备可以在进行第N-1帧图像的渲染过程中,通过上述方案将后续需要使用的第一深度数据备份存在存储器中的预设位置,例如渲染中间变量缓存中。以便后续调用。
可选的,该应用程序下发第二指令流指示该电子设备进行第N帧图像的渲染。该渲染中间变量缓存包括第三渲染中间变量缓存。该获取并存储该第二MVP矩阵,包括:该电子设备拦截该第二指令流中,用于传输该第二MVP矩阵的第三指令段,根据该第三指令段,将该第二MVP矩阵存储在该第三渲染中间变量缓存中。
可选的,该应用程序下发第二指令流指示该电子设备进行第N帧图像的渲染。该渲染中间变量缓存包括第四渲染中间变量缓存。该获取并存储该第二深度数据,包括:该电子设备拦截该第二指令流中,与该第二深度数据相关的第四指令段,根据该第四指令段,将该第二深度数据存储在该第四渲染中间变量缓存中。
应当理解的是,电子设备可以在执行每一帧图像的渲染过程中,执行上述MVP矩阵以及深度数据的备份存储,例如在第N-1帧图像以及第N帧图像的渲染过程中分别执行上述方案,由此使得后续进行未来帧预测时,能够顺利调用到上述备份存储的MVP矩阵和深度数据,用来确定未来帧中的静态网格的位置。
可选的,该已完成帧图像包括第N帧图像以及第N-1帧图像,该下一帧图像为第N+1帧图像。该根据已完成的至少两帧图像中,第一模型的坐标数据,确定下一帧图像中,该第一模型的位置,包括:根据该第一模型在该第N-1帧图像中的第一坐标数据,以及该第一模型在该第N帧图像中的第二坐标数据,确定该第一模型的运动矢量。根据该静态网格在该第N帧图像中的位置,以及该第一模型的运动矢量,确定该第N+1帧图像中该第一模型的位置。由此,该方案提供了一种确定动态网格的运动矢量的实现。可以理解的是,在帧图像中可以包括多个动态网格,对应多个运动物体。那么,针对每个动态网格,电子设备都可以执行该方案,由此确定各个动态网格的运动矢量。以下示例中,以第一模型为例进行说明。
可选的,该电子设备中配置有NDC缓存,在根据该第一模型的坐标数据确定该第一模型的运动矢量之前,该方法还包括:获取该第一模型的该第一坐标数据以及该第二坐标数据,将该第一坐标数据以及该第二坐标数据存储在该NDC缓存中。该根据该第一模型的坐标数据确定该第一模型的运动矢量,包括:从该NDC缓存中读取该第一模型的第一坐标数据以及该第二坐标数据,根据该第一坐标数据以及该第二坐标数据,确定该第一模型的运动矢量。通过动态网格渲染过程中,将坐标数据备份存储在预先设置的NDC缓存中。以便于后续未来帧的预测使用。
可选的,该应用程序下发第一指令流指示该电子设备进行第N-1帧图像的渲染。该述NDC缓存包括第一NDC缓存。该获取该第一模型的该第一坐标数据,包括:在开始该第N-1帧图像中该第一模型的绘制之前,使能enable变换反馈功能,该电子设备的GPU基于该变换反馈功能,在执行该第一模型的绘制时,向该电子设备反馈该第一坐标数据,该第一坐标数据包括该第一模型在该第N-1帧图像中的第一NDC坐标数据,以及该第一模型在该第N-1帧图像中对应的第一绘制参数。该电子设备将该第一坐标数据存储在该第一NDC缓存中。该示例提供了一种具体的获取坐标数据的方案。比如,通过使能变换反馈功能,使得GPU可以将渲染获取的坐标数据反馈给电子设备,以便于电子设备对该坐标数据进行备份存储。
可选的,该方法还包括:关闭该变换反馈功能。可以理解的是,在完成一个Drawcall对应的动态网格的坐标数据的存储后,电子设备可以关闭该变换反馈功能。这样如果下一个Drawcall对应绘制静态网格时,就不需要回调对应的坐标数据。
可选的,该应用程序下发第二指令流指示该电子设备进行第N帧图像的渲染。该述NDC缓存包括第二NDC缓存。该获取该第一模型的该第二坐标数据,包括:在开始该第N帧图像中该第一模型的绘制之前,使能enable变换反馈功能,该电子设备的GPU基于该变换反馈功能,在执行该第一模型的绘制时,向该电子设备反馈该第二坐标数据,该第二坐标数据包括该第一模型在该第N帧图像中的第二NDC坐标数据,以及该第一模型在该第N帧图像中对应的第二绘制参数。该电子设备将该第二坐标数据存储在该第二NDC缓存中。类似于MVP矩阵以及深度数据的获取,针对每一帧图像的渲染过程,电子设备都可以针对其中各个Drawcall执行该方案,由此使得帧图像中的所有动态网格的坐标数据都能够被获取并存储。
可选的,在该获取该第一模型的该第一坐标数据以及该第二坐标数据之前,该方法还包括:确定该第一模型的网格为动态网格。
可选的,该确定该第一模型的网格为动态网格,包括:在该第一模型在当前帧图像中的坐标数据被更新的情况下,确定该第一模型的网格为动态网格。
示例性的,电子设备可以在接收到对一个模型的渲染指令时,判断该渲染指令指示的存放坐标数据的帧缓冲中的数据是否在该帧图像被更新,如果是则表明对应模型为运动模型,对应动态网格。反之,如果未被更新,则表明对应模型为静态模型,对应静态网格。
可选的,该第N帧图像中包括至少两个网格为动态网格的模型,该第一模型包括在该至少两个网格为动态网格的模型中,该NDC缓存中存储有各个模型对应与不同帧图像的坐标数据,该方法还包括:确定该NDC缓存中,该第一模型在不同帧图像中对应的两个坐标数据。
可以理解的是,在一个帧图像中可以包括多个动态网格。不同动态网格的运动矢量可以不同。而通过前述的数据备份存储后,在NDC缓存中可以分别存储有两组坐标数据。如第一NDC缓存中的第N-1帧图像的所有动态网格的坐标数据。又如第二NDC缓存中的第N帧图像的所有动态网格的坐标数据。那么,在计算每个模型的运动矢量之前,就需要先匹配确定同一个模型在不同帧图像中的坐标数据。继续以第一模型为例。
可选的,该确定该NDC缓存中,该第一模型在不同帧图像中对应的两个坐标数据,包括:根据该NDC缓存中,存储的各个坐标数据中包括的绘制参数,确定各个坐标数据对应的特征哈希值。将该NDC缓存中,与该第一坐标数据对应的特征哈希值相同的坐标数据,确定为该第二坐标数据。本示例提供了一种简便的相同模型在不同帧图像中的坐标匹配机制。比如,针对第一NDC缓存和第二NDC缓存中的任一个坐标数据,将其中的绘制参数对应到一个唯一的特征哈希值。这样,只需要在第一NDC缓存中和第二NDC缓存中,查找具有相同特征哈希值的坐标数据,即可作为同一个模型在不同帧图像中的匹配坐标数据。
可选的,该确定该NDC缓存中,该第一模型在不同帧图像中对应的两个坐标数据,包括:根据该NDC缓存中,存储的各个坐标数据中包括的绘制参数,确定各个坐标数据对应的特征哈希值。将该NDC缓存中与该第一坐标数据对应的特征哈希值相同,并且两个坐标数据中的第一个顶点坐标之间的距离小于预设距离的坐标数据,确定为该第二坐标数据。本示例提供了一种更加准确并且渐变的坐标匹配机制。在该示例中,通过特征哈希值匹配后,还可以结合两个坐标数据中携带的多个顶点坐标之间的欧式距离,进一步验证两个坐标数据的匹配度。可以理解的是,对于同一个模型,在相邻或相近帧图像中的运动距离是有限的。因此,对于同一个模型的同一个顶点,在不同帧图像中的距离可以小于预设距离。这样能够进一步提升坐标匹配的准确度。由此提升基于坐标数据的运动矢量的计算准确度。
可选的,该绘制参数包括以下中的至少一项:顶点标识ID,索引ID,绘制数量,偏移量。
第二方面,提供一种电子设备,电子设备包括一个或多个处理器和一个或多个存储器;一个或多个存储器与一个或多个处理器耦合,一个或多个存储器存储有计算机指令;当一个或多个处理器执行计算机指令时,使得电子设备执行如上述第一方面以及各种可能的设计中任一种的方法。
第三方面,提供一种芯片系统,芯片系统包括接口电路和处理器;接口电路和处理器通过线路互联;接口电路用于从存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,芯片系统执行如上述第一方面以及各种可能的设计中任一种的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机指令,当计算机指令运行时,执行如上述第一方面以及各种可能的设计中任一种的方法。
第五方面,提供一种计算机程序产品,计算机程序产品中包括指令,当计算机程序产品在计算机上运行时,使得计算机可以根据指令执行如上述第一方面以及各种可能的设计中任一种的方法。
应当理解的是,上述第二方面,第三方面,第四方面,以及第五方面提供的技术方案,其技术特征均可对应到第一方面及其可能的设计中提供的技术方案,因此能够达到的有益效果类似,此处不再赘述。
附图说明
图1为一种图像渲染过程中的指令流传输的逻辑示意图;
图2为一种多帧图像的示意图;
图3为一种未来帧图像的预测方案示意图;
图4为本申请实施例提供的一种电子设备的软件组成示意图;
图5为本申请实施例提供的一种图像处理方法的模块交互示意图;
图6为本申请实施例提供的一种坐标数据的组成示意图;
图7为本申请实施例提供的一种NDC缓存的示意图;
图8为本申请实施例提供的一种坐标数据存储的示意图;
图9为本申请实施例提供的一种图像处理方法的模块交互示意图;
图10为本申请实施例提供的一种图像处理方法的模块交互示意图;
图11为本申请实施例提供的一种存储器存储数据的示意图;
图12为本申请实施例提供的一种存储器存储数据的示意图;
图13为本申请实施例提供的一种图像处理方法的模块交互示意图;
图14为本申请实施例提供的一种图像处理方法的模块交互示意图;
图15为本申请实施例提供的一种坐标数据与哈希值的对应示意图;
图16为本申请实施例提供的一种坐标数据匹配的示意图;
图17为本申请实施例提供的一种坐标数据匹配的示意图;
图18为本申请实施例提供的一种图像处理方法的模块交互示意图;
图19为本申请实施例提供的一种图像处理方法的流程示意图;
图20为本申请实施例提供的一种电子设备的组成示意图;
图21为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
电子设备中可以运行有各类应用程序,用于向用户提供丰富的功能。例如,电子设备中的应用程序可以指示电子设备的显示器向用户提供显示功能。该显示功能可以包括显示视频流、图像流等功能。
以显示视频流为例。视频流可以由多个帧图像构成。电子设备可以快速地顺序播放帧图像,使得用户可以通过电子设备的显示器看到连续播放的帧图像构成的动态画面。电子设备在单位时间内播放帧图像的数量可以通过帧率标识。帧率越高,电子设备在单位时间内播放的帧图像越多,对应的动态画面也就更加清晰真实。
对于每个帧图像,应用程序都可以通过渲染指令流,展示电子设备进行相应的绘制,由此获取显示信息,并通过显示器进行显示。
示例性的,结合图1,在需要显示一个帧图像时,应用程序可以下发渲染指令流,以便指示电子设备根据该渲染指令流进行渲染操作。电子设备的中央处理器(CentralProcessing Unit,CPU)可以接收渲染指令流,根据该渲染指令流调取电子设备中安装的渲染环境中相应的应用编程接口(application programming interface,API)。CPU可以通过调用API,指示电子设备中具有图像渲染功能的图形处理器(Graphic Processing Unit,GPU)进行对应的渲染操作。GPU执行一些列渲染操作后获取的渲染结果,即可对应到显示信息。在一些实现中,该显示信息可以包括当前帧图像中,各个像素点对应的颜色信息、亮度信息、深度数据、法线信息等。在需要显示该帧图像时,显示器就可以获取该渲染结果,并据此进行相应的显示。
对于视频流中的其他帧图像,其显示信息的获取过程与图1类似。也就是说,在需要快速显示多个帧图像时,电子设备就需要根据应用程序下发的各个渲染指令流进行对应的渲染操作,才能获取相应帧图像的显示信息。
目前,为了提供更好的显示体验,对电子设备的图像处理能力提出了更高的要求。例如,随着电子设备所显示图像的分辨率越来越高,那么对应的每帧图像的渲染操作也变得更加复杂。此外,电子设备显示视频流时的帧率(或屏幕刷新率)也在不断提升,这又要求电子设备能够更加快速地渲染获取各个帧图像。如果对每一帧图像都执行如图1所示的根据应用程序下发的渲染指令流执行的实时的渲染操作,就可能出现渲染结果的获取无法满足显示速度的情况,从而造成画面卡顿等问题。此外,还会导致电子设备在图像处理过程中产生较高的功耗。
为了能够应对上述问题,可以通过帧图像预测技术,基于已经完成渲染的帧图像,预测下一帧图像的显示情况。由此就可以在不需要执行下一帧图像的渲染操作的情况下,获取下一帧图像的显示信息。例如,如图2所示,以当前帧图像为第A帧图像为例。在第A帧图像以及前一帧图像(如第A-1帧图像)均已经完成渲染后,电子设备就可以根据第A-1帧图像以及第A帧图像,预测获取第A+1帧图像。
作为一种示例,请参考图3,为一种帧图像预测方案的示例。如图3所示,在第A-1帧图像中可以包括物体21以及物体22。在第A帧图像中也可以包括物体21以及物体22。其中,物体21在第A-1帧与第A帧图像中的位置相同。也即,物体21没有发生移动。物体22则在第A-1与第A帧图像中的位置不同。也即,物体22发生了位移。
在本示例中,电子设备可以将帧图像划分为多个图块。每个图块中包括多个像素点。例如,如图3所示,在第A-1帧图像中,物体21可以位于图块23的区域中。物体22可以位于图块24的区域中。在第A帧图像中,物体21依然位于图块23的区域中。物体22则移动到图块25中。电子设备可以像素为单位,分别确定各个图块在相邻两个帧图像中的运动矢量。
示例性的,以图块23为例。电子设备可以针对图块23中的每个像素点,通过对比该图块23在第A-1帧图像以及第A帧图像中对应位置的颜色信息,确定在该两帧图像中,图块23中包括的各个像素的颜色信息是否有变化。在如图3的示例中,在确定该两帧图像中,图块23中包括的各个像素的颜色信息是没有变化的情况下,则电子设备就可以确定图块23的运动矢量为0,即在该两帧图像中,图块23没有发生移动。这样,电子设备就可以预测在第A+1帧图像中,该图块23依然沿用之前的移动状态,即静止不动。
以图块24为例。电子设备可以针对图块24中的每个像素点,通过对比该图块24在第A-1帧图像以及第A帧图像中对应位置的颜色信息,确定在该两帧图像中,图块24中包括的各个像素的颜色信息是否有变化。在如图3的示例中,物体22从第A-1帧图像中的图块24移动到了第A帧图像中的图块25。那么,电子设备执行上述针对图块24的颜色对比中,可以确定在该两帧图像中图块24相应的颜色信息发生了变化。接着,电子设备可以第A-1帧图像中图块24中各个像素的颜色信息为基准,寻找第A帧图像中,与图块24相邻的其他图块中,与基准相应的图块。例如,电子设备可以确定在第A帧图像中,图块25的颜色信息与第A-1帧图像中的图块24的颜色信息相应。由此也就表明图块24在第A-1帧图像到第A帧图像的切换中,由第A-1帧图像中图块24的位置,移动到了第A帧图像中图块25的位置。这样,电子设备就可以确定图块24在第A-1帧图像与第A帧图像之间的运动矢量为由图块24指向图块25。该运动矢量的绝对长度可以根据图块24移动前后,相应的颜色信息之间的距离确定。将该图块24移动到图块25的运动矢量记为运动矢量26。显而易见的,图块24移动到图块25的过程中,物体22也会沿着运动矢量26移动。这样,电子设备就可以预测在第A+1帧图像中,第A帧图像中的图块25可以沿用之前的沿运动矢量26的移动状态,那么在第A+1帧图像中,该图块25就会移动到帧图像之外。因此,电子设备就可以基于该帧图像预测机制,确定在A-1帧图像的图块24中的物体22、在第A帧图像的图块25中的物体22,会在第A+1帧图像移动到图像外,不再需要在帧图像上显示。
依次类推,电子设备就可以根据各个图块在第A-1帧图像以及第A帧图像中的运动矢量,预测确定第A+1帧图像中需要显示的内容。
可以看到,上述如图3所示的帧图像预测方案中,电子设备可以基于二维图像(如观察空间对应的二维图像),通过颜色匹配的机制计算每个图块中的运动矢量。其中,图块划分越细致,计算量越大,对应预测结果越准确。而在需要节省算力的情况下,图块划分较为粗糙,虽然能够降低计算量,但预测结果会收到大幅影响。此外,基于颜色匹配机制的计算过程也会引入较大的算力和功耗开销。
为了解决上述问题,本申请实施例提供一种图像处理方法,能够使得电子设备可以分别针对动态物体以及静止物体进行运动矢量的计算。例如,结合图像渲染过程中的深度数据,从三维空间的角度计算获取静止物体对应的全屏运动矢量。又如通过各个绘制指令(Drawcall)对应的归一化的设备坐标(Normalize Device Coordinates,NDC)空间坐标以及相关的渲染参数,通过哈希匹配的方式,简化不同模型的匹配过程,降低动态物体运动矢量计算过程中的运算开销。
以下将结合附图对本申请实施例提供的方案进行详细说明。
本申请实施例提供的技术方案,可以应用于具有图像显示功能的电子设备中。该电子设备可以包括手机、可折叠电子设备、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificialintelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种。本申请实施例对该电子设备的具体类型不作特殊限制。
示例性的,在一些实施例中,从硬件组成的角度,本申请实施例涉及的电子设备可以包括处理器,外部存储器接口,内部存储器,通用串行总线(universal serial bus,USB)接口,充电管理模块,电源管理模块,电池,天线1,天线2,移动通信模块,无线通信模块,音频模块,扬声器,受话器,麦克风,耳机接口,传感器模块,按键,马达,指示器,摄像头,显示屏,以及用户标识模块(subscriber identification module,SIM)卡接口等。其中,传感器模块可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
需要说明的是,上述硬件组成并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
在另一些实施例中,本申请实施例涉及的电子设备还可以具有软件划分。以电子设备中运行有操作系统为例。示例性的,图4为本申请实施例提供的一种电子设备的软件组成的示意图。如图4所示,该电子设备可以包括应用(Application,APP)层,框架(Framework)层,系统库,以及硬件(HardWare)层等。
其中,应用层也可以称为应用程序层。在一些实现中,应用程序层可以包括一系列应用程序包。应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。在本申请实施例中,应用程序包还可以包括需要通过渲染图像向用户展示图像或者视频的应用程序。其中,视频可以理解为多帧图像的连续播放。示例性的,该需要渲染图像的应用程序可以包括游戏类应用程序,例如等。
框架层也可以称为应用程序框架层。该框架层可以为应用层的应用程序提供API和编程框架。框架层包括一些预先定义的函数。示例性的,框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。活动管理器可以提供活动管理服务(Activity ManagerService,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(InputManager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
在本申请实施例中,在框架层中可以设置有一个或多个功能模块,用于实现本申请实施例提供的方案。示例性的,框架层中可以设置有拦截模块,数据转存模块,矢量计算模块等。这些模块设置可以用于支持电子设备实现本申请实施例提供的图像处理方法。其具体功能以及实现将在后续详细说明。
如图4所示,电子设备中还可以设置有包括图形库的系统库。在不同实现中,图形库可以包括如下中的至少一种:开放图形库(Open Graphics Library,OpenGL)、嵌入式系统的开放图形库(OpenGL for Embedded Systems,OpenGL ES)、Vulkan等。在一些实施例中,系统库中还可以包括其他模块。例如:表面管理器(surface manager),媒体框架(MediaFramework)、标准C库(Standard C library,libc)、SQLite、Webkit等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2D)和三维(3D)图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:动态图像专家组4(MovingPictures Experts Group,MPEG4),H.264,动态影像专家压缩标准音频层面3(MovingPicture Experts Group Audio Layer3,MP3),高级音频编码(Advanced Audio Coding,AAC),自适应多码解码(Adaptive Multi-Rate,AMR),联合图像专家组(JointPhotographic Experts Group,JPEG,或称为JPG),便携式网络图形(Portable NetworkGraphics,PNG)等。OpenGL ES和/或Vulkan提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备的应用程序提供轻量级关系型数据库。
在应用程序下发渲染命令之后,框架层中的各个模块就可以调用图形库中对应的API,指示GPU执行相应的渲染操作。
在如图4的示例中,电子设备中还可以包括硬件层。该硬件层中可以包括CPU,GPU,以及具有存储功能的存储器(如内存)。在一些实现中,CPU可以用于控制框架层中的各个模块实现其各自的功能,GPU可以用于根据框架层中各个模块处理后的指令所调用的图形库(如OpenGL ES)中的API执行相应的渲染处理。
本申请实施例提供的方案均能够应用于如图4所示的电子设备中。需要说明的是,如图4的示例,并不构成对电子设备的限制。在另一些实施例中,电子设备还可以包括更多或更少的组件。本申请实施例对于电子设备的具体组成不做限制。
作为一种示例,本申请实施例提供的技术方案,可以当前帧图像以及之前的帧图像进行渲染操作时,收集并缓存相应的数据。示例性的,以当前帧图像为第N帧图像,电子设备还收集第N-1帧图像的数据为例。
结合图4,设置在框架层中的拦截模块可以用于在执行各个帧图像的渲染操作的过程中,拦截所需指令流。例如,拦截模块可以用于拦截应用程序下发的渲染指令流。在一些实施例中,拦截模块还可以具有简单的判断能力。例如,拦截模块可以根据渲染指令流对应的模型信息是否被更新,确定该指令流用于绘制静态物体或动态物体。其中,该模型信息可以包括待绘制模型的坐标数据等。又如,拦截模块还可以根据预设的函数或函数携带的参数,识别当前指令流包括当前帧图像的深度(Depth)信息和/或模型-观察-投影(Model-View-Projection,MVP)矩阵的相关数据。在以下说明中,该深度数据以及MVP矩阵可以统称为渲染中间变量。
拦截模块还可以用于将指示进行动态物体的渲染的指令流发送给数据转存模块以便后续处理。拦截模块还可以用于将指示进行静态物体的渲染的指令流发送给电子设备的GPU以便后续处理。拦截模块还可以用于将包括渲染中间变量的指令流发送给数据转存模块以便后续处理。
数据转存模块可以用于根据来自拦截模块的指令流,执行对应的数据转存操作。示例性的,在一些实现中,数据转存模块可以在接收到对动态物体的渲染指令流时,使能变换反馈(transform feedback)功能,并将该对动态物体的渲染指令流下发给GPU,以便GPU执行相应的渲染操作。基于该变换反馈功能,数据转存模块获取GPU执行渲染操作过程中生成的一些数据。例如,数据转存模块可以基于变换反馈功能,获取动态物体对应在NDC空间下的坐标数据。在本示例中,数据转存模块可以将该动态物体对应在NDC空间下的坐标数据转存到电子设备的存储器中,以便后续使用。在另一些实现中,数据转存模块可以将渲染中间变量存储在预先在存储器中创建的渲染中间变量缓存中。
应当理解的是,基于原生的图像渲染逻辑,上述拦截模块拦截的指令流最终会发送给GPU执行相关的渲染操作。该渲染流程中的各项数据对于电子设备(如电子设备的CPU)而言是不可见的。那么,为了便于后续计算相邻帧图像的运动矢量,本申请中,电子设备可以通过数据转存模块将后续需要使用的数据备份存储到电子设备的存储器中。
这样,在完成第N-1帧图像以及第N帧图像的渲染之后,在电子设备的存储器中就可以在特定位置存储有各个帧图像的MVP矩阵、各个帧图像的深度数据、以及每个帧图像中包括的动态物体对应的坐标数据。
上述存储在特定位置的数据可以用于支持电子设备预测第N+1帧图像。示例性的,在一些实施例中,电子设备中的矢量计算模块,可以根据各个帧图像的MVP矩阵、各个帧图像的深度数据,计算获取第N-1帧图像到第N帧图像对应的静态物体的运动矢量。该静态物体的运动矢量也可对应到全屏运动矢量。在另一些实施例中,电子设备中的矢量计算模块,可以根据每个帧图像包括的动态物体对应的坐标数据,计算获取第N-1帧图像到第N图像对应的动态物体的运动矢量。由此,电子设备可以基于第N帧图像的渲染结果,以及静态物体的运动矢量和动态物体的运动矢量,预测确定第N+1帧图像中各个物体的具体位置,从而实现对第N+1帧图像的预测。
这样,电子设备可以分别对静态物体以及动态物体进行运动矢量的计算。基于MVP矩阵以及深度数据的三维信息计算获取的全屏运动矢量显然比目前的基于二位信息计算获取的运动矢量更加精确。此外,对于动态物体的运动矢量的计算与全屏运动矢量的计算解耦,计算获取更加准确的动态物体的运动矢量,进而更加准确的计算的更精确化操作,由此获取从而能够获取对动态物体在第N+1帧图像中更加准确的预测效果。
以下将结合各个模块之间的交互,对上述方案的具体实现进行示例性的说明。
示例性的,结合图5,为本申请实施例提供的一种图像处理方法的模块交互示意图。该方案可以应用于任一个帧图像(如第N-1帧图像,第N帧图像等)的渲染过程中。由此实现电子设备对动态物体的坐标数据的备份存储。
如图5所示,该方案可以包括:
S501、应用程序下发指令流511。
可以理解的是,应用程序在指示电子设备进行一帧图像的渲染过程中,可以下发包括多个Drawcall的指令流。本示例中,该指令流511可以对应一个Drawcall,包括在应用程序针对某一帧图像的渲染过程下发的指令流中。
其中,该指令流511对应的Drawcall可以用于指示电子设备对当前帧图像的动态物体进行绘制。
需要说明的是,在本示例中,该指令流511可以对应一个动态物体的绘制指令。在帧图像中包括多个动态物体需要分别绘制的情况下,那么应用程序就会分别下发多个动态物体各自对应的Drawcall。这样,电子设备就可以针对每个动态物体对应的Drawcall,执行该如图5所示的流程,以便实现对各个动态物体的坐标数据的备份存储。
S502、拦截模块确定指令流511用于绘制动态网格。其中,动态网格对应动态物体的网格(Mesh)。对应的,静态物体的网格可以称为静态网格。
在本示例中,拦截模块可以具有判断当前指令流用于指示绘制动态网格或静态网格的能力。示例性的,拦截模块可以在该指令流511指示绘制的模型信息被更新的情况下,确定该指令流511用于绘制动态网格。对应的,拦截模块可以在该指令流511指示绘制的模型信息未更新的情况下,确定该指令流511用于绘制静态网格。
作为一种可能的实现,拦截模块可以对比同一个模型在当前Drawcall以及前一个Drawcall中对应的模型信息(如坐标信息等)是否有变化,确定当前Drawcall所要绘制的模型为动态网格还是静态网格。例如,拦截模块可以对比当前Drawcall下发后,存储对应模型的帧缓冲中的坐标信息是否与前一帧图像中,同一个帧缓冲中的坐标信息是否相同,实现上述判断机制。
在当前Drawcall下发后,该存储坐标信息的帧缓冲中的数据与前一个帧图像中相同帧缓冲中的坐标数据相同没有变更时,则表明该模型的坐标数据没有更新,即为静态网格。
在当前Drawcall下发后,该存储坐标信息的帧缓冲中的数据与前一个帧图像中相同帧缓冲中的坐标数据有至少部分不同时,则表明该模型的坐标数据被更新,即为动态网格。
本示例中,以指令流511用于绘制动态网格为例。
S503、拦截模块向GPU回调指令流511。
示例性的,拦截模块可以在拦截来自应用程序的指令流,确定后续策略的同时,还可以将该拦截的指令流回调给GPU,实现原生逻辑。例如,拦截模块可以在拦截指令流511,确定该指令流511用于绘制动态网格的同时,还可以将该指令流511回调给GPU,以便GPU进行相应的响应。
S504、拦截模块向数据转存模块发送动态标识。
其中,动态标识可以用于标示当前Drawcall用于绘制动态网格。
在本实例中,拦截模块在确定当前Drawcall(即指令流511)对应于动态物体的绘制后,可以通过动态标识,通知数据转存模块,执行对应的数据备份存储。例如,执行对该动态物体的坐标数据的备份存储。
S505、数据转存模块指示GPU使能变换反馈功能。
其中,变换反馈功能可以用于收集GPU执行后续渲染操作的过程中的数据。示例性的,通过使能变换反馈功能,GPU可以将根据指令流511执行的渲染操作过程中,生成的当前模型(即指令流511对应的动态物体)的坐标数据反馈给数据转存模块。
在一些实施例中,该变换反馈功能可以包括tramsform feedback功能。那么,数据转存模块可以通过调用用于使能tramsform feedback功能的函数,实现指示GPU使能变换反馈功能的目的。
S506、GPU根据指令流511,执行对应的渲染操作,获取渲染结果521。
结合前述说明,拦截模块可以在拦截指令流511的同时,向GPU回调指令流511,由此实现原生的渲染逻辑。
示例性的,GPU可以接收来自拦截模块的指令流511,并执行对应的渲染操作,获取渲染结果521。需要说明的是,GPU根据指令流511执行的渲染操作,具体实现过程可以参考图1所示的流程。也即,拦截模块可以根据指令流511调用相应的API,以便于GPU根据该API执行对应的操作。在本申请实施例的说明中,GPU根据指令流执行的渲染操作的实现可以沿用上述流程,后续不再赘述。
这样,电子设备就可以实现对指令流511的渲染响应,获取对应的动态网格的渲染结果。
S507、GPU将渲染结果521发送给存储器。
S508、存储器存储渲染结果521。
通过S507-S508,电子设备可以将渲染结果521存储在存储器中,以便于基于该渲染结果521以及当前帧图像的其他渲染结果,通过合成、去噪等操作,获取当前帧图像对应的显示信息。
S509、GPU根据变换反馈功能回调坐标数据531。
本示例中,在S505中,数据转存模块通过使能变换反馈功能,用于获取当前Drawcall指示绘制动态网格的坐标数据。
那么,在该步骤S509中,GPU可以在根据指令流511执行渲染操作的同时,在获取当前Drawcall对应的坐标数据531后,通过变换反馈功能将该坐标数据531回调给GPU。
示例性的,如图6所示,该坐标数据可以包括该Drawcall对应模型的各个顶点在NDC空间下的具体坐标。该NDC空间下的具体坐标可以简称为NDC坐标。
应当理解的是,应用程序在指示电子设备绘制一个模型时,可以在指令流中携带该模型的顶点坐标。该顶点坐标可以是基于模型本身建立的局部空间的。为了能够使得电子设备可以将不同模型分别绘制到帧图像所展示的世界空间中,应用程序还可以向电子设备发送MVP矩阵。根据MPV矩阵,电子设备就可以将基于局部空间的定点坐标,分别转换到世界空间的坐标,观察空间的坐标,以及裁剪空间的坐标。裁剪空间坐标即可对应到显示屏上的坐标。本示例中,NDC坐标可以是局部空间经过MVP矩阵变换后,归一化的设备坐标。基于NDC坐标,以及MVP矩阵,电子设备也可以还原各个顶点在世界空间中的坐标。例如,NDC坐标乘以VP矩阵的逆矩阵,然后根据w分量进行归一化还原,就可以获取对应的世界空间中的坐标。
此外,在本申请实施例中,GPU回调给数据转存模块的坐标数据还可以包括当前Drawcall对应的绘制参数。
其中,该绘制参数可以包括以下中的至少一项:顶点ID(Vertex Id),索引ID(Index Id),绘制数量(Draw Count),偏移量(Draw Offset)等。
可以理解的是,绘制参数可以为GPU执行渲染操作时的必备参数,可以携带在指令流511中下发给GPU。同一帧图像中,不同Drawcall对应的绘制参数不同。也就是说,绘制参数可以用于标识不同的Drawcall。也即,绘制参数可以用于标示不同的动态网格。这样,电子设备就可以根据该坐标数据中的绘制参数,识别匹配不同帧图像中相应的动态网格。
在本申请的另一些实施例中,该绘制参数也可以是由拦截模块发送给数据转存模块的。示例性的,拦截模块可以在识别指令流511后,将其中的绘制参数发送给数据转存模块。那么,GPU在回调坐标数据时,就可以不携带该绘制参数。
S510、数据转存模块向存储器发送坐标数据531。
S511、存储器在NDC缓存中存储坐标数据531。
在本申请实施例中,数据转存模块可以在各个帧图像渲染过程中,备份存储后续预测未来帧(如第N+1帧)时所需数据。
示例性的,数据转存模块可以从GPU获取动态网格的坐标数据531,并将该坐标数据531存储在电子设备的存储器中的特定位置。
其中,该存储坐标数据的特定位置可以是预先创建的。结合图5,该特定位置可以为在存储器中预先创建的NDC缓存。
作为一种示例,图7示出了一种NDC缓存的示意。在图7的示例中,在电子设备中的存储器可以预先创建包括多个子缓存的NDC缓存。其中,该多个子缓存可以分别构成两个缓存组,如第一NDC缓存以及第二NDC缓存。每个缓存组可以分别用于存储一个帧图像的动态网格的坐标数据。比如,第一NDC缓存可以用于存储第N-1帧图像的动态网格的坐标数据。第二NDC缓存可以用于存储第N帧图像的动态网格的坐标数据。
如图7所示,第一NDC缓存可以包括NDC缓存A1到NDC缓存An。其中,NDC缓存A1到NDC缓存An中的每个即为NDC缓存中的一个子缓存。该一个子缓存可以对应存储一个第N-1帧图像的动态网格的坐标数据。对应的,第二NDC缓存可以包括NDC缓存B1到NDC缓存Bm。其中,NDC缓存B1到NDC缓存Bm中的每个也可对应到一个子缓存。该一个子缓存可以对应存储一个第N帧图像的动态网格的坐标数据。
以第N-1帧图像包括n个动态网格为例。该n个动态网格的坐标数据分别为:坐标数据A1到坐标数据An。那么,基于上述S501-S511的步骤,对于每个坐标数据,数据转存模块都可以将其存储到一个NDC缓存中。
示例性的,结合图8,以指令流511指示对第N-1帧图像中的坐标数据A1对应动态网格进行渲染为例。根据上述方案实现,数据转存模块可以将该坐标数据A1存储在第一NDC缓存的一个子缓存中。如,将该坐标数据A1存储到NDC缓存A1中。
以指令流511指示对第N帧图像中的坐标数据B1对应动态网格进行渲染为例。根据上述方案实现,数据转存模块可以将该坐标数据B1存储在第二NDC缓存的一个子缓存中。如,将该坐标数据B1存储到NDC缓存B1中。
这样,在完成第N-1帧图像的渲染后,在第一NDC缓存中就可以存储有该第N-1帧图像中各个动态网格对应的坐标数据。类似的,在完成第N帧图像的渲染后,在第二NDC缓存中就可以存储有该第N帧图像中各个动态网格对应的坐标数据。
由此,在第N-1帧图像以及第N帧图像的渲染过程中,通过上述S501-S511,即可实现对所有动态网格的坐标数据向NDC缓存中的备份缓存。
需要说明的是,继续结合图5。在每个动态网格的Drawcall结束时,数据转存模块还可以执行S512,即关闭变换反馈功能。由此使得在拦截模块接收到下一个Drawcall时,可以重新按照如图5所示的流程,仅针对动态网格使能变换反馈功能,备份存储相应的坐标数据。
上述如图5-图8的示例中,对应用程序下发针对动态网格的渲染指令流的处理机制进行了说明。以下结合图9,对应用程序下发针对静态网格的渲染指令流时,电子设备的处理机制进行示例性说明。
如图9所示,该方案可以包括:
S901、应用程序下发指令流512。
其中,该指令流51对应的Drawcall可以用于指示电子设备对当前帧图像的动态物体进行绘制。结合图5中的S501中的说明。该指令流512可以是应用程序在指示电子设备进行第N-1帧图像或第N帧图像的渲染时,发送的多个指令流中的一个。本示例中,拦截模块可以根据如下S902的步骤识别该指令流512用于指示进行静态网格的绘制,并执行相应的策略。
S902、拦截模块拦截指令流512,确定指令流512用于绘制静态网格。
结合图5中的S502,拦截模块可以根据该指令流512所指示绘制模型的模型信息是否被更新,判断该指令流512是否用于绘制静态网格。示例性的,在当前Drawcall下发后,拦截模块可以确定指令流512对应模型的存储坐标信息的帧缓冲中的数据与前一个帧图像中相同帧缓冲中的坐标数据相同没有变更时,则表明该指令流512对应模型的坐标数据没有更新,即为静态网格。
在本示例中,电子设备不需要备份存储静态网格的坐标数据。那么,在确定指令流512用于指示进行静态网格的绘制的情况下,可以触发执行以下S903。
S903、拦截模块将指令流512回调给GPU。
S904、GPU根据指令流512,执行对应的渲染操作,获取渲染结果522。
S905、GPU将渲染结果522发送给存储器。
S906、存储器存储渲染结果522。
通过上述S903-S906,电子设备可以按照原生逻辑,对静态网格进行渲染操作,获取对应的渲染结果522。那么,结合该渲染结果522,以及当前帧图像中的其他渲染结果,通过合成、去噪等操作,即可获取当前帧图像的显示数据。
需要说明的是,应用程序在指示电子设备绘制某一个帧图像时,除了上述用于指示绘制静态物体或动态物体的指令流之外,还需要向电子设备下发其他渲染指令流。例如,应用程序可以下发MVP矩阵、用于进行深度渲染的深度数据等渲染中间变量。在本示例中,电子设备还可以备份存储该渲染中间变量,以便于后续确定全屏运动矢量。
作为一种示例,请参考图10,为本申请实施例提供的又一种图像处理方法的模块间交互示意图。通过该方案,能够实现对渲染中间变量的备份存储。该方案可以应用于对任一帧图像的渲染过程中。如图10所示,该方案可以包括:
S1001、应用程序下发指令流513。
其中,该指令流513可以携带有当前帧图像对应的渲染中间变量。
示例性的,应用程序可以在开始某一帧图像的渲染时,向电子设备发送该帧图像渲染过程中需要用到的各项数据。例如,应用程序可以通过该指令流513向电子设备发送包括MVP矩阵以及深度数据的渲染中间变量。
S1002、拦截模块确定指令流513包括当前帧图像的渲染中间变量。
本示例中,拦截模块可以根据预设的函数或函数携带的参数,确定该指令流513包括渲染中间变量。
应当理解的是,对于确定的渲染平台,传递MVP矩阵的方式一般也相对固定。比如,应用程序可以通过携带uniform参数的函数,传递MVP矩阵。那么,拦截模块就可以在指令流513中包括携带uniform参数的函数时,确定该指令流513包括MVP函数。
对于深度数据的识别,拦截模块可以根据多目标渲染(Multiple RenderTargets,MRT)对应信息获取。其中,基于MRT技术,电子设备可以通过一次渲染,将RGBA颜色、法线、深度数据或者纹理坐标输出到多个缓冲区。MRT对应的输出缓冲可以是应用程序通过指令流指示的。本申请中,拦截模块可以在指令流513指示一次性将多个渲染结果输出到不同缓冲区时,确定该指令流513中包括指示进行MRT渲染的命令。而在该指示进行MRT渲染的命令中包括用于存储深度数据的帧缓冲。也就是说,拦截模块可以确定指令流513指示MRT渲染的情况下,确定通过该指令流513即可获取当前帧图像的深度数据。在一些实施例中,该当前帧图像的深度数据也可以称为全屏深度图。
这样,拦截模块可以根据携带有uniform参数的函数,确定MVP矩阵的传输指令。拦截模块还可以根据MRT渲染的命令,确定深度数据的传输指令。其中,该MRT渲染的命令,可以对应指示一次性将多个渲染结果输出到不同缓冲区的指令。
本示例中,该MVP矩阵的传输指令以及深度数据的传输指令可以包括在指令流513中。
S1003、拦截模块向数据转存模块发送指令流513。
S1004、数据转存模块将指令流513中的渲染中间变量发送给存储器。
S1005、存储器在渲染中间变量缓存中存储当前帧图像的渲染中间变量。
结合S1002中的说明,数据转存模块可以根据携带有uniform参数的函数,获取当前帧图像的MVP矩阵,并将该MVP矩阵发送给存储器进行存储。
另外,数据转存模块可以根据MRT渲染的命令,确定存储深度数据的帧缓冲ID。那么,数据转存模块就可以从对应的帧缓冲中读取深度数据,发送给存储器进行存储。
在本示例中,如图10所示,电子设备可以在执行S1004以及S1005之前(即存储中间变量缓存)之前,在存储器中创建对应的存储空间。例如,电子设备可以在存储器中创建中间变量缓存。
这样,通过如图10所示的方案实现,就能够在任一个帧图像完成渲染时,在存储器(如中间变量缓存)中备份存储对应帧图像的渲染中间变量。结合上述图5的示例,在任一个帧图像完成时,在存储器(如NDC缓存)中还可以备份存储有对应帧图像的所有动态网格的坐标数据。
示例性的,在完成第N-1帧图像的渲染时,如图11所示,在存储器中的NDC缓存中可以备份存储有第N-1帧图像所有的动态网格的坐标数据1111。在存储器中的中间变量缓存中可以备份存储有第N-1帧图像的MVP矩阵1121,以及深度数据1131。此外,在存储器中还可以存储有第N-1帧图像对应的渲染结果。
接着,电子设备可以根据应用程序的指令,执行第N帧图像的渲染。结合前述图5-图10的方案说明,在完成第N帧图像的渲染时,如图12所示,在存储器中的NDC缓存中可以备份存储有第N-1帧图像所有的动态网格的坐标数据1111,以及第N帧图像所有的动态网格的坐标数据1112。在存储器中的中间变量缓存中可以备份存储有第N-1帧图像的渲染中间变量,以及第N帧图像的渲染中间变量。其中,第N-1帧图像的渲染中间变量可以包括MVP矩阵1121,深度数据1131。第N帧图像的渲染中间变量可以包括MVP矩阵1122,深度数据1132。此外,在存储器中还可以覆盖第N-1帧图像对应的渲染结果,存储有第N帧图像对应的渲染结果。
在本申请中,电子设备可以在完成第N帧图像的渲染操作后,根据如图12所示的存储器中备份存储的各项数据,计算第N-1帧图像到第N帧图像的运动矢量,从而达到根据运动矢量预测第N+1帧图像的目的。
示例性的,电子设备可以通过不同的方案,计算静态物体在两帧图像之间的运动矢量,以及动态物体在两帧图像之间的运动矢量。
以下分别进行说明。
如图13所示,为本申请实施例提供的又一种图像处理方法的示意图。通过该方案,能够实现静态物体在两帧图像之间的运动矢量的计算。应当理解的是,在不同帧图像中,静态物体在世界坐标系下的坐标并未变化。因此,静态物体的运动矢量即可对应到帧图像中除动态物体之外的其他所有显示元素的运动矢量。也即,静态物体的运动矢量可以对应到全屏运动矢量。如图13所示,该方案可以包括:
S1301、矢量计算模块从渲染中间变量缓存读取深度数据以及MVP矩阵。
本示例中,矢量计算模块可以从中间变量缓存分别读取第N-1帧图像以及第N帧图像各自对应的深度数据以及MVP矩阵。
作为一种示例,结合图12的示意。矢量计算模块可以从渲染中间变量缓存中读取MVP矩阵1121、深度数据1131、MVP矩阵1122以及深度数据1132。
其中,每一帧图像分别可以对应一个MVP矩阵。每帧图像的深度数据可以包括:对应帧图像的每个像素点的深度数据。
S1302、矢量计算模块计算获取屏幕上每个像素的运动矢量。
示例性的,矢量计算模块中可以预设有公式(1),用于根据S1301中读取的数据,分别屏幕上各个像素点在第N-1帧图像到第N帧图像之间的运动矢量。
公式(1):
其中,为像素点的运动矢量。Pc和Pp分别为前后两帧图像中,该像素点在相机坐标系下的三维坐标。VPp和VPc分别前后两帧图像分别对应的VP矩阵。
在上述公式(1)中,像素点在第N-1帧图像或第N帧图像中的相机坐标系下的三维坐标可以通过如下公式(2)获取。
公式(2):Px=<(u*2.0+1.0)*z|(v*2.0+1.0)*z|z>T。
其中,(u,v)为屏幕上任一个像素点。z为该像素点在当前帧图像中的深度。Px为该像素点在当前帧图像(如第N-1帧图像或第N帧图像)的相机坐标系下的三维坐标。
这样,通过上述公式(1)以及公式(2),即可基于像素点的包括深度数据在内的三维坐标,计算获取各个像素点的运动矢量。
本示例中,屏幕上各个点的运动矢量的集合即可对应到全屏运动矢量。
S1303、矢量计算模块将包括所有像素点运动矢量的全屏运动矢量发送给存储器。
S1304、存储器存储全屏运动矢量。
这样,通过如图13所示的方案,电子设备就能够在完成第N帧图像的渲染之后,根据前后两帧图像的深度数据,计算获取静态物体的运动矢量。可以理解的是,相比于现有的基于二维信息的运动矢量计算方式,该如图13所示的方案结合了深度数据进行运动矢量的获取,因此计算获取的全屏运动矢量更加准确。
应当理解的是,上述公式(1)以及公式(2)计算获取的全屏运动矢量,可以用于实现对静态物体(即世界坐标系下静止的物体)在第N+1帧图像中位置的预测。例如,以第N帧图像为基准,通过沿全屏运动矢量的位移计算,即可获取第N+1帧图像中静态物体的位置。
不同于静态物体,对于动态物体,在不同帧图像中运动趋势可以各不相同。在本申请实施例中,电子设备可以针对各个动态物体,分别计算获取其各自对应的运动矢量。那么根据该定制化的运动矢量预测该动态物体在第N+1帧图像中的位置,显然可以更加准确。
示例性的,以下结合图14-图18,对本申请实施例中动态物体的运动矢量计算方案进行举例说明。通过本申请实施例提供的方案,能够针对每个动态物体分别计算确定其对应的运动矢量。该方案可以通过两个步实现:网格匹配,运动矢量计算。以下分别进行说明。
在本方案的实现中,可以通过网格匹配,确定同一个动态物体(运动网格)在不同帧图像中的位置。如图14所示,该方案可以包括:
S1401、匹配模块从存储器读取坐标数据。
示例性的,匹配模块可以从存储器的NDC缓存中,读取第N-1帧图像以及第N帧图像的坐标数据。
作为一种实现,结合图12以及图8的说明,匹配模块可以从第一NDC缓存中读取第N-1帧图像中,各个运动网格对应的坐标数据。例如,匹配模块可以从第一NDC缓存中读取坐标数据A到坐标数据An。匹配模块还可以从第二NDC缓存中读取第N帧图像中,各个运动网格对应的坐标数据。例如,匹配模块可以从第二NDC缓存中读取坐标数据B到坐标数据Bm。
S1402、针对一帧图像中的任一个坐标数据,确定另一帧图像中与该坐标数据匹配的坐标数据。
结合前述图6的相关说明,一个坐标数据可以对应一个Drawcall,也即对应一个模型。该坐标数据中可以包括该模型在某一帧图像(如第N一1帧图像或第N帧图像)中,各个顶点在NDC空间下的具体坐标。该坐标数据还可以包括该模型对应的绘制参数。
在一些实施例中,匹配模块可以根据不同坐标数据中包括的绘制参数,确定两帧图像中,匹配的两个坐标数据。
示例性的,匹配模块可以将任一个绘制参数,转换为相应的哈希值。不同的绘制参数对应的哈希值不同。
例如,参考图15,以绘制参数包括顶点ID(Vertex Id),索引ID(Index Id),绘制数量(Draw Count),偏移量(Draw Offset)为例。对于坐标数据531,匹配模块可以根据其中包括的顶点ID、索引ID、绘制数量以及偏移量,确定该坐标数据531对应的特征哈希值。类似的,对于其他各个坐标数据,匹配模块也可以根据各个坐标数据的绘制参数,确定相应的特征哈希值。
这样,第N-1帧图像以及第N帧图像中的各个坐标数据就都可以分别对应到一个特征哈希值。
例如,参考图16。对于第N-1帧图像,坐标数据A1可以对应于特征哈希值C1,坐标数据A2可以对应于特征哈希值C2,……,坐标数据An可以对应于特征哈希值Cn。类似的,对于第N帧图像,坐标数据B1可以对应于特征哈希值D1,坐标数据B2可以对应于特征哈希值D2,……,坐标数据Bm可以对应于特征哈希值Dm。
匹配模块可以基于各个坐标数据对应的特征哈希值,实现对不同帧图像中坐标数据的匹配。
示例性的,匹配模块可以根据特征哈希值C1,在特征哈希值D1到特征哈希值Dm之间,查找与该特征哈希值C1匹配的项。匹配模块可以将该与特征哈希值C1匹配的特征哈希值对应的坐标数据,作为第N帧图像中与第N-1帧图像中的坐标数据A1向匹配的坐标数据。其中,特征哈希值之间的匹配可以包括:两个特征哈希值相同时,则认为两个特征哈希值互相匹配。
例如,以特征哈希值D1与特征哈希值C1匹配为例。匹配模块可以确定第N-1帧图像中的坐标数据A1与第N帧图像中的坐标数据B1匹配。也即,该坐标数据A1对应的模型,在第N-1帧图像到第N帧图像之间,由坐标数据A1指示的位置移动到了坐标数据B1所指示的位置。
以特征哈希值D2与特征哈希值C2匹配为例。匹配模块可以确定第N-1帧图像中的坐标数据A2与第N帧图像中的坐标数据B2匹配。也即,该坐标数据A2对应的模型,在第N-1帧图像到第N帧图像之间,由坐标数据A2指示的位置移动到了坐标数据B2所指示的位置。
在另一些实施例中,在根据如图16所示的方案初步确定第N-1帧图像以及第N帧图像互相匹配的两个坐标数据后,匹配模块可以根据该两个坐标数据中分别包括的第一个顶点坐标,验证该两个坐标数据的匹配关系。
示例性的,结合图17,匹配模块可以确定每个坐标数据对应的特征哈希值之外,还可以提取每个坐标数据中第一个顶点坐标的坐标值,作为匹配因子执行匹配操作。例如,第N-1帧图像中,坐标数据A1的第一个顶点坐标的坐标值可以为顶点坐标E1,坐标数据A2的第一个顶点坐标的坐标值可以为顶点坐标E2,……,坐标数据An的第一个顶点坐标的坐标值可以为顶点坐标En。对应的,第N帧图像中,坐标数据B1的第一个顶点坐标的坐标值可以为顶点坐标F1,坐标数据B2的第一个顶点坐标的坐标值可以为顶点坐标F2,……,坐标数据Bm的第一个顶点坐标的坐标值可以为顶点坐标Fm。
那么,匹配模块可以针对坐标数据A1到坐标数据An中的每个坐标数据,在坐标数据B1到坐标数据Bm对应的特征哈希值以及顶点坐标中,查找与该坐标数据相匹配的项,作为该坐标数据对应的第N帧图像中的坐标数据。其中,特征哈希值的匹配可以包括:两个特征哈希值相同。顶点坐标匹配可以包括:两个顶点坐标之间的欧氏距离小于预设距离。
例如,特征哈希值C1与特征哈希值D1相同,并且,顶点坐标E1与顶点坐标F1之间的欧氏距离小于预设距离。那么坐标数据A1与坐标数据B1相匹配。又如,特征哈希值C2与特征哈希值D2相同,并且,顶点坐标E2与顶点坐标F2之间的欧氏距离小于预设距离。那么坐标数据A2与坐标数据B2相匹配。
在另一些实施例中,匹配模块还可以根据多个顶点坐标之间的欧式距离,或者结合特征哈希值确定互相匹配的两个坐标数据。
由此,匹配模块就可以获取第N-1帧图像中,各个运动网格对应的坐标数据与第N帧图像中匹配的坐标数据的对应关系。
S1403、匹配模块向存储器发送匹配的两个坐标数据之间对应关系。
S1404、存储器存储匹配的两个坐标数据之间对应关系。
示例性的,该坐标数据之间的对应关系的存储方式,在不同实现中可以是不同的。
在一些实施例中,存储器中可以存储有对应表项。每个表项可以用于存储两个互相匹配的坐标数据,或者存储两个互相匹配的坐标数据的存储地址。
在另一些实施例中,存储器在获取匹配模块发送的对应关系后,可以该两个坐标数据在NDC缓存中的存储区域设置标识。以便后续可以在第一NDC缓存中和第二NDC缓存中查找相同标识,确定互相匹配的两个坐标数据。
由此,电子设备就可以完成网格匹配的过程。接着,电子设备的矢量计算模块可以根据网格匹配结果,计算获取各个动态网格对应的运动矢量。该每个动态网格的运动矢量可以用于标识每个动态物体在第N-1帧图像到第N帧图像的运动情况。
作为一种示例,请参考图18,为本申请实施例提供的又一种图像处理方法的示意图。该方案可以应用于如图14完成网格匹配之后,根据网格匹配结果,计算获取每一个动态网格对应的运动矢量。如图18所示,该方案可以包括:
S1801、矢量计算模块读取互相匹配的两个坐标数据。
结合图14所示的方案说明,在完成网格匹配之后,在存储器中可以存储有互相匹配的至少一组坐标数据的对应关系。其中,每组坐标数据可以对应到一个动态网格(模型)在两帧图像中的位置。
那么,本示例中,矢量计算模块可以读取该至少一组坐标数据中的任意一组,并依据后续的步骤计算该组坐标数据对应动态网格的运动矢量。
S1802、矢量计算模块计算该互相匹配的两个坐标数据对应的运动矢量。
在本示例中,矢量计算模块可以根据预设的公式(3),计算获取该两个坐标数据对应的运动矢量。
公式(3):
其中,为运动矢量。{Vc}和{VP}分别为前后帧互相匹配的两个坐标数据。可以理解的是,互相匹配的两个坐标数据可以分别对应一个动态物体(模型)的多个顶点坐标。因此,{Vc}和{VP}分别可以分别包括前后帧图像中,同一个动态物体的多个顶点坐标构成的顶点坐标集合。
在本申请的一些实施例中,在通过公式(3)计算获取后,还可以对该/>进行光栅化处理,进而获取该两个坐标数据对应的动态物体在第N-1帧到第N帧之间的运动矢量。
需要说明的是,在本申请的另一些实施例中,矢量计算模块在计算运动物体的运动矢量时,还可以开启深度测试。
在本示例中,电子设备可以开启深度测试,比较源深度值与目标深度值,并参考预设规则判断深度测试是否通过。其中,源深度值和目标深度值可以分别标识同一个帧图像中具有相同坐标信息的两个不同深度值。可以理解的是,在图像渲染过程中,物体会从三维被压缩到二维,那么就不可避免地存在一些在二维图像上互相覆盖的三维空间点。那么,通过该深度测试,就可以确定需要显示的点的位置。
由此,矢量计算模块可以在计算一个运动物体相应的运动矢量时,选择性地对通过深度测试的点进行运动矢量的计算。对于未通过深度测试的点则可以跳过不执行运动矢量的计算。由此节省运动矢量的计算开销。
S1803、矢量计算模块向存储器发送该互相匹配的两个坐标数据对应的运动矢量。
S1804、存储器存储该互相匹配的两个坐标数据对应的运动矢量。
在获取互相匹配的两个坐标数据对应的运动矢量后,矢量计算模块可以将该运动矢量存储在存储器中。
这样,针对第N-1帧图像或第N帧图像中,每一组互相匹配的坐标数据执行上述S1801-S1804,即可获取所有运动物体各自对应的运动矢量。
需要说明的是,在一些情况下,在互相匹配的坐标数据包括多组时,也即在图像中存在多个运动物体需要计算运动矢量时,为了使得计算获取运动矢量能够与运动物体向对应,电子设备可以在每获取并存储一个运动矢量时,存储该运动矢量与对应的坐标数据(或运动物体)的对应关系。以便在后续使用时能够准确调用。
基于上述图5-图18的方案实现,即可分别完成对静态物体以及动态物体的运动矢量的计算确定。那么基于此,电子设备就可以执行对第N+1帧图像的预测。
示例性的,电子设备可以根据静态物体和动态物体的运动矢量预测第N+1帧图像。
作为一种可能的实现,电子设备可以第N帧图像为基准,对第N帧图像中的静态物体根据上述计算获取的静态物体的运动矢量进行矢量移动,从而预测获取第N+1帧图像中的静态物体的位置。
在另一种实现中,电子设备可以第N帧图像为基准,对第N帧图像中的任一个动态物体,根据上述计算获取的与之对应的运动矢量进行矢量移动,从而预测获取该动态物体在第N+1帧图像中的位置。相应的,针对其他动态物体,电子设备也可以执行类似的预测,从而获取其他动态物体在第N+1帧图像中的位置。
为了使得本领域技术人员能够更加清楚地了解本申请提供方案的全貌,图19示出了本申请实施例提供的图像处理方法在实施过程中的一种逻辑示意图。
如图19所示,以当前帧图像为第N帧图像为例。
在执行第N-1帧图像的渲染过程中,电子设备可以拦截并存储第N-1帧的动态网格对应的NDC坐标数据。电子设备还可以拦截并存储第N-1帧的渲染中间变量。该渲染中间变量可以包括该第N-1帧图像的MVP矩阵以及深度数据等。
类似的,在执行第N帧图像的渲染过程中,电子设备可以拦截并存储第N帧的动态网格对应的NDC坐标数据。电子设备还可以拦截并存储第N帧的渲染中间变量。该渲染中间变量可以包括该第N帧图像的MVP矩阵以及深度数据等。
这样,在完成第N帧图像的渲染之后,电子设备就可以根据上述备份存储的数据,计算运动矢量。示例性的,电子设备可以根据渲染中间变量,确定静态物体的运动矢量。电子设备可以根据NDC坐标数据,确定动态物体的运动矢量。由此即可获取第N-1帧图像到第N帧图像的静态物体的运动矢量,以及各个动态物体各自对应的运动矢量。
那么基于此,电子设备就可以根据静态物体和动态物体的运动矢量预测第N+1帧图像。
本申请实施例提供的方案中,对于静态物体的运动矢量计算过程结合了深度数据,相较于基于二维坐标计算确定的运动矢量更加准确。通过动态物体和静态物体的分离,对动态物体进行各自对应的运动矢量的计算,从而获取更加准确的动态物体的运动矢量。基于上述更加准确的静态物体以及动态物体的运动矢量,就可以准确地执行对未来帧图像的预测。
此外,在对动态物体进行运动矢量计算时,所采用的匹配方式为基于绘制参数的哈希匹配,相较于基于亮度或颜色的匹配方式,能够显著降低对算力的需求以及功耗开销。
上述主要从各个服务模块的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图20示出了的一种电子设备2000的组成示意图。如图20所示,该电子设备2000可以包括:处理器2001和存储器2002。该存储器2002用于存储计算机执行指令。示例性的,在一些实施例中,当该处理器2001执行该存储器2002存储的指令时,可以使得该电子设备2000执行上述实施例中任一种所示的图像处理方法。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图21示出了的一种芯片系统2100的组成示意图。该芯片系统2100可以包括:处理器2101和通信接口2102,用于支持相关设备实现上述实施例中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,用于保存终端必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。需要说明的是,在本申请的一些实现方式中,该通信接口2102也可称为接口电路。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在上述实施例中的功能或动作或操作或步骤等,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (24)
1.一种图像处理方法,其特征在于,所述方法应用于电子设备,所述方法包括:
所述电子设备通过图像渲染得到至少两帧图像,所述至少两帧图像中的任一帧图像包括动态网格和静态网格,所述动态网格对应模型在不同帧图像中的世界坐标系下的坐标不同,所述静态网格对应模型在不同帧图像中的世界坐标系下的坐标相同;
根据所述至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置;所述渲染中间变量包括对应帧图像的MVP矩阵和深度数据;
根据所述至少两帧图像中第一模型的坐标数据,确定下一帧图像中所述第一模型的位置;所述第一模型对应网格为动态网格,所述坐标数据包括所述第一模型在对应帧图像中的NDC坐标以及绘制参数,所述NDC坐标包括至少一个顶点坐标,所述绘制参数用于指示所述电子设备绘制所述第一模型;
基于所述下一帧图像的静态网格的位置以及所述下一帧图像中所述第一模型的位置,确定所述下一帧图像。
2.根据权利要求1所述的方法,其特征在于,在所述图像中包括多个动态网格对应的模型;
所述根据所述至少两帧图像中第一模型的坐标数据,确定下一帧图像中所述第一模型的位置,包括:
根据所述至少两帧图像中第一模型的坐标数据,基于特征哈希值匹配,确定所述第一模型在不同帧图像中的坐标数据;其中,所述第一模型在不同帧图像中的特征哈希值相同,不同模型在同一帧图像中的特征哈希值不同;
根据所述第一模型在不同帧图像中的坐标数据,确定下一帧图像中所述第一模型的位置。
3.根据权利要求1或2所述的方法,其特征在于,所述至少两帧图像包括第N帧图像以及第N-1帧图像,所述下一帧图像为第N+1帧图像;
所述根据所述至少两帧图像中第一模型的坐标数据,确定下一帧图像中所述第一模型的位置,包括:
根据所述第一模型在所述第N-1帧图像中的第一坐标数据,以及所述第一模型在所述第N帧图像中的第二坐标数据,确定所述第一模型的运动矢量;
根据所述静态网格在所述第N帧图像中的位置,以及所述第一模型的运动矢量,确定所述第N+1帧图像中所述第一模型的位置。
4.根据权利要求3所述的方法,其特征在于,所述电子设备中配置有NDC缓存,在根据所述第一模型的坐标数据确定所述第一模型的运动矢量之前,所述方法还包括:
获取所述第一坐标数据以及所述第二坐标数据,将所述第一坐标数据以及所述第二坐标数据存储在所述NDC缓存中;
所述根据所述第一模型的坐标数据确定所述第一模型的运动矢量,包括:
从所述NDC缓存中读取所述第一模型的第一坐标数据以及所述第二坐标数据,根据所述第一坐标数据以及所述第二坐标数据,确定所述第一模型的运动矢量。
5.根据权利要求4所述的方法,其特征在于,所述获取所述第一模型的所述第一坐标数据,包括:
在开始所述第N-1帧图像中所述第一模型的绘制之前,打开变换反馈功能,
所述电子设备的图形处理器GPU基于所述变换反馈功能,在执行所述第一模型的绘制时,向所述电子设备反馈所述第一坐标数据,所述第一坐标数据包括所述第一模型在所述第N-1帧图像中的第一NDC坐标数据,以及所述第一模型在所述第N-1帧图像中对应的第一绘制参数;
所述电子设备从所述GPU获取所述第一坐标数据,并存储在NDC缓存的第一NDC缓存中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:关闭所述变换反馈功能。
7.根据权利要求4-6中任一项所述的方法,其特征在于,所述获取所述第一模型的所述第二坐标数据,包括:
在开始所述第N帧图像中所述第一模型的绘制之前,打开变换反馈功能,
所述电子设备的GPU基于所述变换反馈功能,在执行所述第一模型的绘制时,向所述电子设备反馈所述第二坐标数据,所述第二坐标数据包括所述第一模型在所述第N帧图像中的第二NDC坐标数据,以及所述第一模型在所述第N帧图像中对应的第二绘制参数;
所述电子设备将所述第二坐标数据存储在所述NDC缓存的第二NDC缓存中。
8.根据权利要求4-7中任一项所述的方法,其特征在于,在所述获取所述第一模型的所述第一坐标数据以及所述第二坐标数据之前,所述方法还包括:
确定所述第一模型的网格为动态网格。
9.根据权利要求8所述的方法,其特征在于,所述确定所述第一模型的网格为动态网格,包括:
在所述第一模型在当前帧图像中的坐标数据被更新的情况下,确定所述第一模型的网格为动态网格。
10.根据权利要求3-9中任一项所述的方法,其特征在于,所述图像中包括至少两个网格为动态网格的模型,所述第一模型包括在所述至少两个网格为动态网格的模型中,所述NDC缓存中存储有各个模型对应与不同帧图像的坐标数据,所述方法还包括:
确定所述NDC缓存中,所述第一模型在不同帧图像中对应的两个坐标数据。
11.根据权利要求10所述的方法,其特征在于,
所述确定所述NDC缓存中,所述第一模型在不同帧图像中对应的两个坐标数据,包括:
根据所述NDC缓存中,存储的各个坐标数据中包括的绘制参数,确定各个坐标数据对应的特征哈希值;
将所述NDC缓存中,与所述第一坐标数据对应的特征哈希值相同的坐标数据,确定为所述第二坐标数据。
12.根据权利要求10所述的方法,其特征在于,
所述确定所述NDC缓存中,所述第一模型在不同帧图像中对应的两个坐标数据,包括:
根据所述NDC缓存中,存储的各个坐标数据中包括的绘制参数,确定各个坐标数据对应的特征哈希值;
将所述NDC缓存中与所述第一坐标数据对应的特征哈希值相同,并且两个坐标数据中的第一个顶点坐标之间的距离小于预设距离的坐标数据,确定为所述第二坐标数据。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述绘制参数包括以下中的至少一项:
顶点标识ID,索引ID,绘制数量,偏移量。
14.根据权利要求1-13中任一项所述的方法,其特征在于,所述至少两帧图像包括第N帧图像以及第N-1帧图像,所述下一帧图像为第N+1帧图像;
所述根据所述至少两帧图像的渲染中间变量,确定下一帧图像的静态网格的位置,包括:
根据所述第N-1帧图像的第一MVP矩阵以及第一深度数据,所述第N帧图像的第二MVP矩阵以及第二深度数据,确定所述第N帧图像中的静态网格的运动矢量;
根据所述静态网格在所述第N帧图像中的位置,以及所述静态网格的运动矢量,确定所述第N+1帧图像中所述静态网格的位置。
15.根据权利要求14所述的方法,其特征在于,所述电子设备的存储器中配置有渲染中间变量缓存,在根据所述至少两帧图像的渲染中间变量,确定所述第N帧图像中的静态网格的运动矢量之前,所述方法还包括:
获取所述第一MVP矩阵、所述第一深度数据、所述第二MVP矩阵以及所述第二深度数据,将获取的数据存储在所述渲染中间变量缓存中;
所述根据所述至少两帧图像的渲染中间变量,确定所述第N帧图像中的静态网格的运动矢量,包括:
从所述渲染中间变量缓存中读取所述第一MVP矩阵、所述第一深度数据、所述第二MVP矩阵以及所述第二深度数据,并确定所述第N帧图像中的静态网格的运动矢量。
16.根据权利要求15所述的方法,其特征在于,
所述获取并存储所述第一MVP矩阵,包括:
所述电子设备拦截第一指令流中,用于传输所述第一MVP矩阵的第一指令段,根据所述第一指令段,将所述第一MVP矩阵存储在所述渲染中间变量缓存的第一渲染中间变量缓存中;
其中,所述第一指令流用于指示所述电子设备进行第N-1帧图像的渲染。
17.根据权利要求16所述的方法,其特征在于,所述电子设备拦截所述第一指令段,包括:
所述电子设备拦截所述第一指令流中,携带有uniform参数的第一指令段。
18.根据权利要求15-17中任一项所述的方法,其特征在于,所述获取并存储所述第一深度数据,包括:
所述电子设备拦截第一指令流中,与所述第一深度数据相关的第二指令段,根据所述第二指令段,将所述第一深度数据存储在所述渲染中间变量缓存的第二渲染中间变量缓存中;
其中,所述第一指令流用于指示所述电子设备进行第N-1帧图像的渲染。
19.根据权利要求18所述的方法,其特征在于,所述与所述第一深度数据相关的第二指令段用于指示所述电子设备进行多目标渲染MRT。
20.根据权利要求15-19中任一项所述的方法,其特征在于,所述获取并存储所述第二MVP矩阵,包括:
所述电子设备拦截所述第二指令流中,用于传输所述第二MVP矩阵的第三指令段,根据所述第三指令段,将所述第二MVP矩阵存储在所述渲染中间变量缓存的第三渲染中间变量缓存中;
其中,所述第二指令流用于指示所述电子设备进行第N帧图像的渲染。
21.根据权利要求15-20中任一项所述的方法,其特征在于,所述获取并存储所述第二深度数据,包括:
所述电子设备拦截所述第二指令流中,与所述第二深度数据相关的第四指令段,根据所述第四指令段,将所述第二深度数据存储在所述渲染中间变量缓存的第四渲染中间变量缓存中;
其中,所述第二指令流用于指示所述电子设备进行第N帧图像的渲染。
22.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令;
当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-21中任一项所述的方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令运行时,执行如权利要求1-21中任一项所述的方法。
24.一种芯片系统,其特征在于,所述芯片系统包括处理器和通信接口;所述处理器用于从存储介质中调用并运行所述存储介质中存储的计算机程序,执行如权利要求1-21中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105947.XA CN117710404A (zh) | 2022-09-07 | 2022-09-07 | 一种图像处理方法和电子设备 |
PCT/CN2023/113746 WO2024051471A1 (zh) | 2022-09-07 | 2023-08-18 | 一种图像处理方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105947.XA CN117710404A (zh) | 2022-09-07 | 2022-09-07 | 一种图像处理方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117710404A true CN117710404A (zh) | 2024-03-15 |
Family
ID=90143019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211105947.XA Pending CN117710404A (zh) | 2022-09-07 | 2022-09-07 | 一种图像处理方法和电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117710404A (zh) |
WO (1) | WO2024051471A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102391680B1 (ko) * | 2015-06-15 | 2022-04-28 | 엘지전자 주식회사 | 프레임 간 변화량을 이용한 가변 해상도 처리 장치 및 그 제어 방법 |
CN113362442A (zh) * | 2021-01-22 | 2021-09-07 | 惠州Tcl移动通信有限公司 | 一种虚拟现实图像的渲染方法、存储介质及虚拟现实设备 |
CN113837920B (zh) * | 2021-08-18 | 2023-03-10 | 荣耀终端有限公司 | 一种图像渲染方法及电子设备 |
CN114862997A (zh) * | 2022-04-08 | 2022-08-05 | 北京大甜绵白糖科技有限公司 | 图像渲染方法和装置、介质和计算机设备 |
-
2022
- 2022-09-07 CN CN202211105947.XA patent/CN117710404A/zh active Pending
-
2023
- 2023-08-18 WO PCT/CN2023/113746 patent/WO2024051471A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024051471A1 (zh) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101980990B1 (ko) | 중간-분류 아키텍처에서 프레임 대 프레임 일관성의 활용 | |
CN112933599B (zh) | 三维模型渲染方法、装置、设备及存储介质 | |
CN113244614B (zh) | 图像画面展示方法、装置、设备及存储介质 | |
CN116672702A (zh) | 一种图像渲染方法和电子设备 | |
CN110020300B (zh) | 一种浏览器页面合成方法及终端 | |
CN114708369B (zh) | 一种图像渲染方法和电子设备 | |
CN113368492A (zh) | 渲染的方法、装置 | |
CN115018692B (zh) | 一种图像渲染方法及电子设备 | |
CN114669047A (zh) | 一种图像处理方法、电子设备及存储介质 | |
CN114443189B (zh) | 一种图像处理方法和电子设备 | |
US20200364926A1 (en) | Methods and apparatus for adaptive object space shading | |
WO2024027231A1 (zh) | 一种图像渲染方法和电子设备 | |
CN111199569A (zh) | 数据处理的方法、装置、电子设备及计算机可读介质 | |
CN111275607A (zh) | 界面显示方法、装置、计算机设备及存储介质 | |
CN117710404A (zh) | 一种图像处理方法和电子设备 | |
CN116149773A (zh) | 倾斜摄影模型展示方法、装置和电子设备 | |
CN114897688A (zh) | 视频处理方法、装置、计算机设备及介质 | |
CN116527993A (zh) | 视频的处理方法、装置、电子设备、存储介质和程序产品 | |
US20110314412A1 (en) | Compositing application content and system content for display | |
CN115690269B (zh) | 一种视图对象的处理方法及电子设备 | |
CN111125571B (zh) | 图片显示方法及装置 | |
WO2024067202A1 (zh) | 扩展图像的方法、装置、存储介质及电子设备 | |
CN113658283B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
US8587599B1 (en) | Asset server for shared hardware graphic data | |
CN117710548A (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 |