CN117710368A - 图像处理方法、装置、设备、介质及程序产品 - Google Patents
图像处理方法、装置、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN117710368A CN117710368A CN202410161021.5A CN202410161021A CN117710368A CN 117710368 A CN117710368 A CN 117710368A CN 202410161021 A CN202410161021 A CN 202410161021A CN 117710368 A CN117710368 A CN 117710368A
- Authority
- CN
- China
- Prior art keywords
- collision
- scene
- image
- fitting
- game
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000001514 detection method Methods 0.000 claims abstract description 275
- 230000002159 abnormal effect Effects 0.000 claims abstract description 195
- 238000012545 processing Methods 0.000 claims abstract description 147
- 238000000034 method Methods 0.000 claims abstract description 118
- 238000004458 analytical method Methods 0.000 claims abstract description 46
- 230000006870 function Effects 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 23
- 238000005070 sampling Methods 0.000 claims description 22
- 238000012360 testing method Methods 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 15
- 238000009877 rendering Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 230000005855 radiation Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 15
- 241000196324 Embryophyta Species 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 244000025254 Cannabis sativa Species 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Image Analysis (AREA)
Abstract
本申请实施例提供了一种图像处理方法、装置、设备、介质及程序产品,适用于游戏领域,该方法包括:获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定检测参数;在游戏场景中按照检测参数发射检测射线,获取M个碰撞点;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。本申请通过场景捕获组件获取深度图像,并按照深度图像及射线碰撞结果对各个碰撞点进行距离对比,能够自动化检测出异常碰撞位置,并提高异常碰撞检测的准确性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种图像处理方法、装置、设备、介质及程序产品。
背景技术
在游戏场景中,往往涉及诸如:空气墙、穿模、地陷等异常碰撞问题,这些异常碰撞情况非常影响玩家体验。因此,为了克服游戏场景中的异常碰撞问题,往往需要对游戏进行检测以识别出游戏场景中的异常碰撞位置。
目前,通常是采用人工遍历游戏场景来进行异常碰撞位置的检测,这种方式会耗费大量人力及物力,效率较低。
发明内容
本申请实施例提出了一种图像处理方法、装置、设备、介质及程序产品,通过场景捕获组件获取到剔除指定对象的游戏场景的深度图像,并按照深度图像及射线碰撞结果对各个碰撞点进行距离对比分析,能够自动化检测出游戏场景中的异常碰撞位置,并提高异常碰撞检测的准确性。
一方面,本申请实施例提供了一种图像处理方法,该方法包括:
获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
调用场景捕获组件获取第二场景图像的深度图像;
基于深度图像确定需发射的检测射线的检测参数,检测参数包含检测射线的发射位置及发射方向;
在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点,一个碰撞点在游戏场景中对应一个碰撞位置,M为正整数;
将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
一方面,本申请实施例提供了一种图像处理装置,该装置包括:
获取单元,用于获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
获取单元,还用于调用场景捕获组件获取第二场景图像的深度图像;
处理单元,用于基于深度图像确定需发射的检测射线的检测参数,检测参数包含检测射线的发射位置及发射方向;
处理单元,还用于在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点,一个碰撞点在游戏场景中对应一个碰撞位置,M为正整数;
处理单元,还用于将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
在一种可能的实现方式中,获取单元获取游戏场景中的第一场景图像,用于执行以下操作:
获取游戏场景中采样得到的至少一个路径关键点;
对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点;
基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置;
调用摄像机,按照摄像机位置获取游戏场景中的第一场景图像。
在一种可能的实现方式中,获取单元获取游戏场景中采样得到的至少一个路径关键点,用于执行以下操作:
确定游戏场景中待录制的游戏关键路径;
对游戏关键路径进行游戏录制,并在游戏关键路径的录制过程中,记录游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,路径序列包括K个路径点,K为正整数;
按照预设间隔距离,对路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。
在一种可能的实现方式中,处理单元将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像,用于执行以下操作:
确定游戏场景中待剔除对象的预设类型;
遍历第一场景图像中的各个对象,确定各个对象的对象类型;
若目标对象的对象类型为预设类型,则获取目标对象在游戏场景中对应的对象实例代码;
将对象实例代码的属性设置为不可见属性,以将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
在一种可能的实现方式中,处理单元调用场景捕获组件获取第二场景图像的深度图像,用于执行以下操作:
获取场景捕获组件所指示的引擎方法,并按照游戏场景中的摄像机位置,在引擎方法中设置一个或多个参数;
将场景捕获组件的捕获源类型设置为深度信息;
调用场景捕获组件设置好的引擎方法,按照深度信息捕获游戏场景的渲染结果,得到第二场景图像的深度图像。
在一种可能的实现方式中,处理单元基于深度图像确定需发射的检测射线的检测参数,用于执行以下操作:
将深度图像划分为N×N个网格,并确定N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;
调用游戏引擎接口,分别将N×N个中心点的图像位置转换为大世界坐标;
按照N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。
在一种可能的实现方式中,深度图像包括所述第二场景图像中至少一个像素点的深度值,所述深度值用于指示相应像素点与摄像机之间的距离;异常碰撞检测结果包括M个碰撞点的碰撞检测结果,M个碰撞点中的任一个碰撞点表示为碰撞点i;
处理单元将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,用于执行以下操作:
采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值;
获取碰撞点i在深度图像中对应的深度值;
基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果。
在一种可能的实现方式中,碰撞点i的碰撞检测结果用于指示碰撞点i为异常点或正常点;处理单元基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果,用于执行以下操作:
计算碰撞点i的拟合深度值及深度值之间的差值;
若差值大于或等于预设距离阈值,则碰撞点i为异常点;
若差值小于预设距离阈值,则碰撞点i为正常点。
在一种可能的实现方式中,处理单元采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值,用于执行以下操作:
按照摄像机所在的摄像点、碰撞点i对应的发射方向、以及碰撞点i,计算碰撞点i到摄像机之间的碰撞距离;
基于碰撞点i的碰撞距离,采用深度值拟合函数对碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值。
在一种可能的实现方式中,处理单元还用于执行以下操作:
在游戏场景中确定拟合场景,拟合场景是指不存在异常碰撞的场景;
基于拟合场景,调用游戏引擎接口设置摄像机的拟合位置;
通过设置好位置的摄像机,按照拟合位置获取拟合场景中的拟合场景图像;
调用场景捕获组件获取拟合场景图像的拟合深度图像;
基于拟合深度图像,确定深度值拟合函数。
在一种可能的实现方式中,处理单元基于拟合深度图像,确定深度值拟合函数,用于执行以下操作:
在拟合深度图像中选取P个拟合像素点,P为正整数;
基于P个拟合像素点的位置,确定待发射的P条拟合射线的发射方向,并按照待发射的P条拟合射线的发射方向,调用游戏场景中的摄像机发射P条拟合射线,得到发射结果;发射结果包括Q个拟合碰撞点,Q为正整数;
按照摄像机所在的摄像点、P条拟合射线的发射方向、以及Q个拟合碰撞点,计算任一个拟合碰撞点j到摄像机之间的拟合距离;
按照拟合距离、及拟合碰撞点j的深度值之间的映射关系,构建深度值拟合函数。
在一种可能的实现方式中,异常碰撞检测结果用于指示M个碰撞点中的碰撞点i为异常点或正常点;处理单元将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果之后,还用于执行以下操作:
若碰撞点i为异常点,则确定碰撞点i在游戏场景中对应的异常碰撞位置Si;
获取异常碰撞位置Si在游戏场景中对应的待测试实例代码;
对获取到的待测试实例代码进行编辑测试处理,其中,编辑测试处理包括:更新处理、删除处理中的任一种。
一方面,本申请实施例提供了一种计算机设备,该计算机设备包括处理器、输入设备、输出设备和存储器;该存储器中存储有计算机程序;该计算机程序被处理器执行时,执行上述图像处理方法。
一方面,本申请实施例提供了一种计算机可读存储介质,计算机存储介质存储有计算机程序,计算机程序被处理器执行时,执行上述图像处理方法。
一方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序被处理器执行时,执行上述图像处理方法。
本申请实施例中,可以获取游戏场景的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定包含需发射的检测射线的发射位置及发射方向的检测参数,在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。由此可见,一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可防止异常碰撞的误判,从而能够提高游戏场景中碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,能够自动化检测出游戏场景中的异常碰撞位置,并可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术对象来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种图像处理方案的原理示意图;
图2a是本申请实施例提供的一种游戏场景中的第一场景图像的示意图;
图2b是本申请实施例提供的一种游戏场景中的第二场景图像的示意图;
图3是本申请实施例提供的一种图像处理***的架构示意图;
图4是本申请实施例提供的一种图像处理方法的流程示意图;
图5是本申请实施例提供的一种摄像机位置的示意图;
图6是本申请实施例提供的一种深度图像的示意图;
图7是本申请实施例提供的一种发射检测射线的场景示意图;
图8是本申请实施例提供的一种距离对比分析的流程示意图;
图9是本申请实施例提供的另一种图像处理方法的流程示意图;
图10是本申请实施例提供的一种图像处理的游戏场景示意图;
图11是本申请实施例提供的一种图像处理装置的结构示意图;
图12是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供了一种图像处理方案,适应于游戏场景中诸如:空气墙、穿模、地陷等异常碰撞位置的自动化检测。具体地,本申请首先可以对游戏场景中的指定对象(如花草等对象)进行剔除处理,然后采用场景捕获组件获取对象剔除后的游戏场景所对应的深度图像;接下来,在游戏场景中发射多条检测射线得到射线碰撞结果,并按照射线碰撞结果及深度图像对各个碰撞点进行距离对比分析,从而分析得到游戏场景中各个碰撞点的异常检测情况;可见,本申请能够提高碰撞检测的准确性,并可以实现对游戏碰撞检测的自动化测试。请参见图1,图1是本申请实施例提供的一种图像处理方案的原理示意图。下面结合图1,对本申请提供的图像处理方案的原理进行大致阐述:
①路径关键点采样。具体实现时,可以人工录制游戏核心场景的路径,并在录制过程中记录不同时刻游戏玩家在游戏大世界中的位置(即路径点),然后得到路径序列;然后按照预设间隔距离(如10米)对路径序列中的各个路径点进行采样处理,即可得到多个路径关键点。
②摄像机位置设置。具体实现时,针对每个路径关键点,可以进行位置偏移处理(例如向上偏移、向下偏移、向左偏移、向右偏移等任一种或多种);并按照位置偏移后的路径关键点,设置游戏场景中的摄像机位置。
③特殊物体剔除。具体实现时,在游戏场景中调用设置好的摄像机获取第一场景图像,并对第一场景图像中的预设类型的目标对象(如花草等特殊物体)进行剔除处理,得到第二场景图像。
④获取深度图像。具体实现时,可以调用场景捕获组件获取第二场景图像的深度图像,其中,该场景捕获组件Unreal Engine(虚幻引擎)中的一个特殊组件,可以认为是一个接口函数,可用于获取游戏场景中的深度图像。
⑤深度值拟合。具体实现时,首先需确定出不存在异常碰撞的拟合游戏场景,然后在该拟合游戏场景中发射拟合射线,按照拟合射线的发现结果学习距离与深度图像中深度值之间的映射关系,最后构建得到深度值拟合函数。
⑥碰撞位置获取。具体实现时,基于深度图像确定检测参数,检测参数包含需发射的检测射线的发射位置及发射方向;在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数。
⑦距离对比。将M个碰撞点对应的碰撞位置与该碰撞点在深度图像中的深度值进行距离对比分析,得到每个碰撞点的碰撞检测结果(如该碰撞点为异常点还是正常点),从而确定当前游戏场景的异常碰撞检测结果;该异常碰撞检测结果用于指示当前游戏场景中的异常碰撞位置(即异常点对应的游戏位置)。
上述可见,一方面,本申请能够对游戏场景中预设类型的目标对象(如花草)进行剔除处理,由于剔除后的游戏场景不存在异常碰撞的干扰情况,可防止异常碰撞的误判,因此可以提高对游戏场景进行碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
下面对本申请涉及到的关键技术术语进行详细介绍。
一、游戏场景、第一场景图像、以及第二场景图像。
游戏场景是指游戏中的环境、建筑、物件等视觉元素以及各种音效、声音等听觉元素构成的虚拟环境;其中,游戏场景是通过游戏设备进行渲染后呈现给用户的,此处的呈现包括:画面呈现及音频播放,例如游戏场景中涉及可视的游戏画面能够显示在游戏设备的屏幕上以供用户观看,游戏场景中涉及的可听的游戏音效能够通过游戏设备进行音频播放以供用户收听。
第一场景图像是指当前游戏场景中呈现出来的完整游戏画面所对应的图像。请参见图2a,图2a是本申请实施例提供的一种游戏场景中的第一场景图像的示意图;如图2a所示,当前游戏场景呈现出来的完整游戏画面中可以包括:花草(201)、游戏角色(202)、以及建筑(203)等对象(或元素),截取图2a所示的完整游戏画面得到的图像即为当前游戏场景的第一场景图像。
第二场景图像是指对第一场景图像中预设类型的目标对象进行剔除处理后的游戏图像,此处预设类型的目标对象例如可以包括但不限于:花、草、树木等等。请参见图2b,图2b是本申请实施例提供的一种游戏场景中的第二场景图像的示意图;如图2b所示,在图2a所示的完整游戏画面的基础上,可以将花草等目标对象进行剔除处理,得到剔除后的部分游戏画面,部分游戏画面可以包括:游戏角色、建筑等对象(或元素),截取图2b所示的部分游戏画面得到的图像即为当前游戏场景的第二场景图像。
二、碰撞点及碰撞位置。
碰撞点,是指游戏场景中游戏角色存在碰撞情况的位置点,即碰撞点是指游戏场景中属于碰撞位置所对应的像素点,一个碰撞点对应游戏场景中的一个碰撞位置。例如游戏场景中常见的碰撞位置包括:墙体、房屋等建筑,游戏角色在墙体、房屋等碰撞位置处发生碰撞时的位置点即可确定为一个碰撞点。
碰撞位置,是指碰撞点在游戏场景中对应的位置,碰撞点是指二维(即2D)的游戏图像(如第二场景图像)中的像素点,碰撞位置是指该碰撞点对应的像素点在游戏场景中对应的三维(即3D)位置,如墙***置。
三、异常碰撞位置。
所谓异常碰撞位置,顾名思义,是指游戏场景中存在异常情况的碰撞位置,此处的异常情况是指在游戏场景中,本不应该发生碰撞却产生了碰撞的情况,或者,本应该发生碰撞却未发生碰撞的情况。常见异常碰撞位置可以包括:空气墙、穿模、地陷等,例如当异常碰撞位置为空气墙时,该空气墙在游戏场景中并未呈现出相应的墙体画面,即此位置本不应该发生碰撞,但游戏角色在此空气墙位置处却发生了碰撞,那么即可认为该空气墙所在的位置为当前游戏场景中的一个异常碰撞位置。可见,本申请方案中能够自动化检测出游戏场景中的异常碰撞位置,从而有利于后续对游戏进行优化及完善,以提升游戏体验感。
四、人工智能。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器;人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请提出的图像处理方案,可以涉及人工智能领域内的机器学习技术,具体地,本申请可以采用机器学习技术训练第一神经网络模型,以使该第一神经网络模型具备获取游戏场景的深度图像的功能,从而能够调用训练好的第一神经网络模型获取第二场景图像的深度图像。或者,还可以采用机器学习技术训练第二神经网络模型,以使该第二神经网络模型具备对游戏图像中特殊类型物体的剔除功能,从而能够调用训练好的第二神经网络模型将第一场景图像中预设类型的目标对象(如花草等对象)进行剔除处理,得到第二场景图像。
五、智慧交通。
智能交通***(Intelligent Traffic System,ITS)又称智能运输***(Intelligent Transportation System),是将先进的科学技术(信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输***。
本申请提出的图像处理方案,能够应用于智慧交通领域,例如在交通仿真平台中,能够对交通场景中的异常碰撞位置进行自动化识别,从而能够基于交通仿真平台中所识别得到的异常碰撞位置进行交通道路的测试及优化;进一步地,在自动驾驶领域,可以对实时交通场景中的异常碰撞位置进行预测及判断,以此提高自动驾驶的安全性。
六、云技术。
本申请提出的图像处理方案中,涉及较多的数据计算服务以及数据存储服务,因此需要花费大量的计算机运营成本。那么,可以采用云技术为本方案提供数据计算服务以及数据存储服务,以便于能够更好的进行图像处理。具体地,可以基于数据计算服务基于深度图像确定需发射的检测射线的检测参数,以及基于数据计算服务将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,从而得到游戏场景的异常碰撞检测结果;另外,可以基于数据存储服务将检测射线的检测参数、游戏场景的射线碰撞结果和异常碰撞检测结果进行数据存储,以便于后续对该游戏场景进行异常碰撞位置的游戏检测。其中,云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。其中,云技术可以包括云存储技术,所谓云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(也可称为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
七、区块链。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Block chain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。下面对区块链***、区块链节点、以及区块结构等相关概念进行说明。
本申请中,图像处理过程中涉及诸多数据,诸如:第一场景图像、第二场景图像、检测参数、射线碰撞结果、以及异常碰撞检测结果,可选的,本申请可将上述数据发送至区块链进行存储,基于区块链的不可篡改、可追溯等特性可避免数据被篡改或泄露,从而提高图像处理过程的数据安全性和可靠性。
需要特别说明的是,在本申请在图像处理过程中涉及到的诸多数据,例如:第一场景图像、第二场景图像、检测参数、射线碰撞结果、以及异常碰撞检测结果等等。在本申请以上实施例运用到具体产品或技术中时,需获得用户许可或同意,且相关数据收集、使用和处理过程需遵守地区的相关法律法规和标准,符合合法、正当、必要的原则,不涉及获取法律法规禁止或限制的数据类型。在一些可选的实施例中,本申请实施例中所涉及的相关数据是经过对象单独授权后获取的,另外,在获取对象单独授权时,需向对象表明所涉及的相关数据的用途。
下面对本申请提供的图像处理***的架构图进行具体介绍。
请参见图3,图3是本申请实施例提供的一种图像处理***的架构示意图。如图3所示,该图像处理***的架构图中至少可以包括:终端设备集群以及服务器304。其中,终端设备集群中可以包括至少一个终端设备,例如:终端设备301、终端设备302、终端设备303等等;另外,任一终端设备中运行有游戏客户端,该游戏客户端用于提供游戏场景。应当理解的是,本申请实施例对该终端设备集群中的终端设备的数量不做具体限定,设备数量可以根据业务场景的不同需求而灵活变更,例如游戏场景中的游戏设备的数量为2,又如交通场景中的车辆设备的数量为3。需要说明的是,任一个终端设备可以通过有线或无线通信方式与服务器304之间进行直接或间接地连接。
本申请提供的图像处理***中的任一计算机设备(终端设备、或服务器)可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、车辆、车载设备、路边设备、智能机器人、飞行器、可穿戴设备,诸如智能手表、智能手环、计步器等智能设备,虚拟现实设备等。
本申请提供的图像处理***中的任一计算机设备(终端设备、或服务器)也可以是服务器。具体地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可以理解的是,本申请的图像处理***中的各个计算机设备的类型可以相同或不同,例如,终端设备301可以是手机,终端设备302可以是游戏设备,终端设备303可以是车辆设备;再如,终端设备301、终端设备302及终端设备303均可以是游戏设备,服务器304可以是服务器,本申请并不对基于图像处理***中的各个计算机设备的数量及类型进行限定。下面以终端设备301与服务器304为例,对本申请实施例涉及的图像处理的具体过程进行简要描述。
①终端设备301的游戏客户端中可运行有目标游戏(如对战游戏、唱歌游戏等任意类型的游戏)的游戏场景,在该游戏场景中,终端设备301可以获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象(如花草)进行剔除处理,得到第二场景图像。
②终端设备301调用场景捕获组件获取第二场景图像的深度图像,并将获取到的第一场景图像、第二场景图像、以及深度图像发送至服务器304。
③服务器304可以基于深度图像确定需发射的检测射线的检测参数,该检测参数包含检测射线的发射位置及发射方向。
④服务器304在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数。
⑤服务器304将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,该异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
⑥服务器304将识别出来的游戏场景中的异常碰撞检测结果返回至终端设备301;后续,可基于游戏场景中的异常碰撞位置对目标游戏进行优化测试。
需要说明的是,上述流程仅作为一个示例,并不对终端设备301及服务器304的执行步骤进行具体限定。可选的,将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,也可以由终端设备301来执行;或者,调用场景捕获组件获取第二场景图像的深度图像,也可以由服务器304来执行;再或者,上述流程可以由终端设备301或服务器304单独执行。
在一种可能的实现方式中,可以将本申请提供的图像处理***部署在区块链***中,即可以将终端设备301、终端设备302、终端设备303、以及服务器304均作为区块链***中的节点设备,并将上述图像处理过程所涉及的相关数据(例如第一场景图像、第二场景图像、检测参数、射线碰撞结果、以及异常碰撞检测结果等)均存储在区块链上,从而本申请中对游戏图像的具体处理流程可以在区块链上执行,这样既可以保证图像处理流程的公平公正化,同时可以使得图像处理流程具备可追溯性,提升图像处理流程的安全性及可靠性。
本申请提供的***,计算机设备(任一终端设备或服务器)可以获取游戏场景的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定包含需发射的检测射线的发射位置及发射方向的检测参数,在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。由此可见,一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可以提高对游戏场景进行碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,能够自动化检测出游戏场景中的异常碰撞位置,并可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
可以理解的是,本申请实施例描述的图像处理***是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术对象可知,随着***架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合附图对图像处理方案涉及的具体实施例进行描述。
请参见图4,图4是本申请实施例提供的一种图像处理方法的流程示意图。该方法可以由图3所示的图像处理***中的计算机设备(例如终端设备或服务器)执行。如图4所示,该图像处理方法主要包括但不限于如下步骤S401-S405:
S401:获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
(1)第一场景图像的获取过程。
在一种可能的实现方式中,计算机设备获取游戏场景中的第一场景图像,具体包括如下流程1)-4):
1)获取游戏场景中采样得到的至少一个路径关键点。
具体实现时,计算机设备获取游戏场景中采样得到的至少一个路径关键点,具体包括如下流程:①确定游戏场景中待录制的游戏关键路径,所谓游戏关键路径是指不同游戏玩家在当前游戏场景中使用频率较高的核心路径,例如某游戏场景中包括三条路径:a->b->c,a->d->c,a->e->c,其中,a->b->c这条路径是使用频率最高的路径,那么这条路径即可确定为当前游戏场景的游戏关键路径;②对游戏关键路径进行游戏录制,并在游戏关键路径的录制过程中,记录游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,路径序列包括K个路径点,K为正整数;其中,路径序列可以如下表1所示:
表1.路径序列
③按照预设间隔距离,对路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。例如预设间隔距离为10米,那么可以对路径序列中的K个路径点进行间隔采样处理,即按照10米的间隔距离进行采样,得到至少一个路径关键点,其中,路径关键点1与路径关键点2之间的距离为10米,同理,路径关键点2与路径关键点3之间的距离也为10米。
2)对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点。此处的偏移处理可以包括:向上偏移、向下偏移、向左偏移、向右偏移中的任一种,本申请中,可以将每个路径关键点向上偏移处理(例如水平向上偏移2米),从而得到偏移后的各个路径关键点。
3)基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置。具体的,可以将待录制的摄像机的视角设置为向下偏移45度,请参见图5,图5是本申请实施例提供的一种摄像机位置的示意图。如图5所示,针对任一个路径关键点,可以将摄像机位置设置于该路径关键点上方2米处,并将摄像机的视角设置为水平向下45度角。总结来说,本申请所设置的摄像机位置具体包括坐标及方向,此处的坐标可以为当前路径关键点向上偏移2米后的坐标、方向可以为:水平向下45度角。其中,向上偏移2米可以模拟人眼的高度,使得能够在游戏场景中达到更逼真的游戏体验效果;视角向下偏移45度是为了在游戏场景中捕获更多的水平区域。另外,可以设置摄像机按照东、南、西、北这四个方向,分别获取对应方向的游戏场景。
4)调用摄像机,按照摄像机位置获取游戏场景中的第一场景图像。具体地,调用摄像机按照图5所示的摄像机位置及东、南、西、北这四个方向,分别获取得到游戏场景中的第一场景图像。
上述步骤1)-4)可知,本申请在获取第一场景图像的过程中,是基于游戏场景中的核心路径采样进行图像获取的,并且按照采样得到的关键路径点来适应性设置摄像机位置,使得摄像机能够更准确地获取得到第一场景图像。
(2)第二场景图像的获取过程。
在一种可能的实现方式中,计算机设备将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像,具体包括如下流程:确定游戏场景中待剔除对象的预设类型;遍历第一场景图像中的各个对象,确定各个对象的对象类型;若目标对象的对象类型为预设类型,则获取所述目标对象在游戏场景中对应的对象实例代码;将对象实例代码的属性设置为不可见属性,以将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。举例来说,例如预设类型包括:花、草等类型,则可以遍历当前游戏场景中的所有对象,确定出花、草等目标对象在游戏场景中对应的对象实例代码,随后,将属于花草的对象实例代码的是属性设置为不可见属性,这样便能剔除游戏场景中的花草类对象,最后,基于属性设置后的对象实例代码进行游戏渲染,即可得到剔除花草后的游戏场景,进而能够获取得到不包括花草等对象的第二场景图像。
S402:调用场景捕获组件获取第二场景图像的深度图像。
其中,深度图像用于反映第二场景图像中各个像素点与摄像机之间的距离,该距离例如可以包括:欧式距离、余弦距离等等。请参见图6,图6是本申请实施例提供的一种深度图像的示意图,如图6所示,该深度图像中像素点(例如像素点a)的深度值越小,则表示该像素点a距离摄像机越近,同时该像素点a在深度图像中所呈现出来的颜色越深;反之,深度图像中像素点(例如像素点b)的深度值越大,则表示该像素点b距离摄像机越远,同时该像素点b在深度图像中所呈现出来的颜色越浅;另外,无任何像素点的区域认为是背景区域(如区域c)。从颜色上来区别,深度图像中颜色越浅的像素点属于背景区域的像素点的概率越大;反之,深度图像中颜色越深的像素点属于背景区域的像素点的概率越小。此处所提及的深度图像的颜色深浅程度可基于像素点的深度值进行量化区分。具体地,深度图像的获取方式可以包括如下:
方式一、调用场景捕获组件获取深度图像。具体实现时,计算机设备调用场景捕获组件获取第二场景图像的深度图像,具体可以包括如下流程:①获取场景捕获组件所指示的引擎方法,并按照游戏场景中的摄像机位置,在引擎方法中设置一个或多个参数,也就是说,将场景捕获组件添加至摄像机中,按照摄像机位置设置场景捕获组件所指示的引擎方法中的各个参数;②将场景捕获组件的捕获源类型设置为深度信息;③调用场景捕获组件设置好的引擎方法,按照深度信息捕获游戏场景的渲染结果,得到第二场景图像的深度图像。采用这种方式,能够直接调用Unreal Engine(虚幻引擎)中的场景捕获组件来获取游戏场景中的深度图像,可以便捷、高效地获取得到深度图像。
方式二、基于第二场景图像进行深度信息估计得到深度图像。具体实现时,计算机设备可以对第二场景图像进行深度信息估计处理,得到第二场景图像的深度图像。其中,此处的深度信息估计处理可以包括但不限于:激光雷达反射(即利用激光雷达或结构光对第二场景图像进行处理,并基于第二场景图像的反射获取深度点云的方式来计算三维网格的深度图像)、双目测距、单目测距中的任一种方式来生成深度图像,本申请对此不作具体限定。在该实现方式下,可以无需调用采用额外的组件,直接基于第二场景图像进行深度信息估计处理,同样也可以获取得到深度图像,能够适配未配置有场景捕获组件的游戏场景。
S403:基于深度图像确定需发射的检测射线的检测参数,检测参数包含检测射线的发射位置及发射方向。
在一种可能的实现方式中,计算机设备基于深度图像确定检测参数,具体包括如下流程:①将深度图像划分为N×N个网格,并确定N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;②调用游戏引擎接口,分别将N×N个中心点的图像位置转换为大世界坐标;③按照N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。请参见图7,图7是本申请实施例提供的一种发射检测射线的场景示意图。如图7所示,首先可以将深度图像划分为3×3个网格,一个网格对应一个中心点;然后获取每个网格中心点的位置(如中心点A),由于任一个网格的中心点的位置是深度图像中的2D图像位置,那么可以调用引擎接口将该中心点A的2D图像位置转换为游戏场景中的大世界坐标,进而计算检测射线的发射方向,此处检测射线的发射方向可以调用引擎接口,基于中心点A在游戏场景中的大世界坐标,直接确定出当前中心点A对应发射的检测射线的发射方向。应当理解,由于一个中心点对应发射一条检测射线,那么可以采用上述方式计算得到需发射的N×N条检测射线中每条检测射线的发射方向。另外,需发射的N×N条检测射线在游戏场景中是由同一发射对象(即摄像机)发射的,那么这N×N条检测射线的发射位置是相同的,例如发射位置可以为摄像机所在的位置(即摄像机位置),即按照摄像机位置,发射N×N条(如9条)检测射线。
S404:在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点,一个碰撞点在游戏场景中对应一个碰撞位置,M为正整数。
具体实现时,上述步骤已确定出需发射的N×N条检测射线的检测参数,一条检测射线对应一个检测参数。接下来,可以在游戏场景中按照检测参数发射N×N条检测射线,即按照计算出来的检测参数发射N×N条检测射线,应当理解,由于N×N条检测射线的发射位置均为同一位置(即摄像机所在的位置),那么在游戏场景中是并行发射N×N条检测射线的,从而可以得到N×N条检测射线在游戏场景中的射线碰撞结果。其中,射线碰撞结果包括M个碰撞点,由于一条检测射线在游戏场景中对应零个或一个碰撞点,那么M≤N×N;应当理解,一个碰撞点在游戏场景中对应一个碰撞位置,此处的碰撞位置例如可以包括:当前碰撞点在游戏场景中的大世界坐标。
S405:将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
其中,深度图像包括第二场景图像中至少一个像素点的深度值,深度值用于指示相应像素点与摄像机(或摄像机所在的平面)之间的距离;异常碰撞检测结果包括M个碰撞点的碰撞检测结果,M个碰撞点中的任一个碰撞点表示为碰撞点i。下面对M个碰撞点中任一个碰撞点i的碰撞检测过程进行详细说明。
在一种可能的实现方式中,计算机设备将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,包括如下流程:
1)采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值。
具体实现时,计算机设备采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值,具体包括如下过程:①按照摄像机所在的摄像点、碰撞点i对应的发射方向、以及碰撞点i,计算碰撞点i到摄像机之间的碰撞距离;例如,摄像点表示为P0(x0, y0, z0),碰撞点i对应的发射方向表示为N(A, B, C),碰撞点i表示为(xi, yi, zi),那么可以计算得到碰撞距离Di:。②基于碰撞点i的碰撞距离Di,采用深度值拟合函数对碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值;假设深度值拟合函数表示为:/>,那么基于上述碰撞距离D即可计算得到碰撞点i的拟合深度值,其中,a、b、c为拟合参数,假设a=b=1,c=2,x=Di,那么该碰撞点i的拟合深度值为:/>。
2)获取碰撞点i在深度图像中对应的深度值。
具体地,深度图像中任一像素点的深度值的取值范围为[0,255],其中,任意像素点a的深度值越小,则表示该像素点a距离摄像机(或平面)越近,同时该像素点a在深度图像中所呈现出来的颜色越深;反之,深度图像中像素点(例如像素点b)的深度值越大,则表示该像素点b距离摄像机(或平面)越远。
3)基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果。
具体实现时,碰撞点i的碰撞检测结果用于指示碰撞点i为异常点或正常点;所谓异常点是指该碰撞点i所在的碰撞位置为异常碰撞位置,即当前碰撞点i所在的碰撞位置本不应该发生碰撞情况而实际发生了碰撞,所谓正常点是指该碰撞点i所在的碰撞位置为正常碰撞位置,即当前碰撞点i所在的碰撞位置发生碰撞情况是合理且正常的。那么,计算机设备基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果,包括如下流程:
①计算碰撞点i的拟合深度值及深度值之间的差值。假设碰撞点i的深度值表示为yi,则该碰撞点i的拟合深度值及深度值/>之间的差值/>。
②若差值大于或等于预设距离阈值(如2),则碰撞点i为异常点,那么可以将该碰撞点i对应的碰撞位置作为当前游戏场景中的一个异常碰撞位置,即可说明射线碰撞的结果(即当前碰撞点i所在的碰撞位置)与碰撞点i在深度图像中对应位置的距离不匹配。具体实现时,考虑到物体边界可能存在稍宽一些的正常空气墙,为了防止误检,本申请实施例中可以截取一个边长为20像素的正方形区域,区域的中心为上述中心点所在的位置。请参见图8,图8是本申请实施例提供的一种距离对比分析的流程示意图。如图8所示,为了方便展示,可以将检测射线的数量设置为4,基于上述方式对每个碰撞点i均按照上述方式进行距离对比后,即可得到各个碰撞点的异常检测结果。
③若差值小于预设距离阈值,则碰撞点i为正常点,即该碰撞点i对应的碰撞位置是当前游戏场景中的非异常碰撞位置(即正常或合理的碰撞位置)。
上述流程1)-3)可知,针对任一个碰撞点i,本申请需要基于该碰撞点i在深度图像中的深度值,该深度值可用于反映碰撞点i与平面之间的距离,进一步地可以基于该碰撞点i的拟合深度值与深度图像中对应的深度值进行距离对比分析,该距离对比分析的实质是指将检测射线的碰撞结果与深度图对应位置进行距离匹配,若二者距离相差过大,即可认为当前碰撞点i为在一个异常碰撞点,该异常碰撞点i所对应的碰撞位置即为游戏场景中的一个异常碰撞位置。以此类推,针对每个碰撞点均按照上述方式进行异常碰撞的检测,从而可以筛选出游戏场景中存在的所有异常碰撞位置,以便于后续进行游戏的优化及测试。
进一步地,本申请还可以基于异常碰撞检测结果进行游戏测试及优化处理。
在一种可能的实现方式中,计算机设备在得到游戏场景的异常碰撞检测结果之后,还可以执行如下步骤:若碰撞点i为异常点,则确定碰撞点i在游戏场景中对应的异常碰撞位置Si;获取异常碰撞位置Si在游戏场景中对应的待测试实例代码;对获取到的待测试实例代码进行编辑测试处理,其中,编辑测试处理包括:更新处理、删除处理等任一种。具体实现时,在基于上述步骤确定出游戏场景中的异常点后,可以进一步进行游戏测试及优化,具体过程如下:①首先可以获取游戏场景对应的游戏实例代码,所谓游戏实例代码是指用于呈现游戏场景的代码,具体可以基于游戏引擎对该游戏实例代码进行渲染后即可呈现出游戏场景;②然后基于本方案确定出来的游戏场景中的异常碰撞位置Si后,即可从游戏代码中确定出异常碰撞位置Si对应的待测试实例代码;③最后对该待测试实例代码进行编辑测试处理,所谓的编辑测试处理是指对当前待测试实例代码进行代码漏洞检测、或代码格式校验等处理;最后基于检测结果对待测试实例代码进行更新处理或删除处理,从而使得游戏引擎在基于编辑后的待测试实例代码进行游戏渲染后,所呈现出来的游戏场景中不存在异常碰撞位置,以此来优化游戏效果,从而提升游戏体验感。
本申请实施例中,可以获取游戏场景的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定包含需发射的检测射线的发射位置及发射方向的检测参数,在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。由此可见,一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可防止异常碰撞的误判,从而能够提高游戏场景中碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,能够自动化检测出游戏场景中的异常碰撞位置,并可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
请参见图9,图9是本申请实施例提供的另一种图像处理方法的流程示意图。该方法可以由图3所示的图像处理***中的计算机设备(例如终端设备或服务器)执行。如图9所示,该图像处理方法主要包括但不限于如下步骤S901-S907:
S901:获取游戏场景中采样得到的至少一个路径关键点。
在一种可能的实现方式中,采样路径关键点包括如下流程:确定游戏场景中待录制的游戏关键路径;对游戏关键路径进行游戏录制,并在游戏关键路径的录制过程中,记录游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,路径序列包括K个路径点,K为正整数;按照预设间隔距离,对路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。
S902:基于各个路径关键点,设置摄像机位置。
在一种可能的实现方式中,设置摄像机位置包括如下流程:①对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点,此处的偏移处理可以包括:向上偏移、向下偏移、向左偏移、向右偏移中的任一种,本申请中,可以将每个路径关键点向上偏移处理(例如水平向上偏移2米),从而得到偏移后的各个路径关键点。②基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置;其中,摄像机位置可以包括坐标及方向,此处的坐标可以为当前路径关键点向上偏移2米后的坐标、方向可以为:水平向下45度角。
S903:获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
在一种可能的实现方式中,计算机设备获取游戏场景中的第一场景图像,具体包括如下步骤:获取游戏场景中采样得到的至少一个路径关键点;对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点;基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置;调用摄像机,按照摄像机位置获取游戏场景中的第一场景图像。
进一步地,将第一场景图像中预设类型的目标对象(如花、草等对象)进行剔除处理,即可得到第二场景图像。
需要说明的是,本申请中步骤S903中计算机设备所执行的具体过程详细可参考图4实施例中步骤S401中计算机设备的相关过程,在此不再赘述。
S904:调用场景捕获组件获取第二场景图像的深度图像。
本申请中,获取深度图像可以包括以下任一种方式:
方式一、调用场景捕获组件获取深度图像。具体实现时,计算机设备调用场景捕获组件获取第二场景图像的深度图像,具体可以包括如下流程:①获取场景捕获组件所指示的引擎方法,并按照游戏场景中的摄像机位置,在引擎方法中设置一个或多个参数,也就是说,将场景捕获组件添加至摄像机中,按照摄像机位置设置场景捕获组件所指示的引擎方法中的各个参数;②将场景捕获组件的捕获源类型设置为深度信息;③调用场景捕获组件设置好的引擎方法,按照深度信息捕获游戏场景的渲染结果,得到第二场景图像的深度图像。
方式二、基于第二场景图像进行深度信息估计得到深度图像。具体实现时,可以对第二场景图像进行深度信息估计处理,得到第二场景图像的深度图像。
S905:在拟合游戏场景中进行深度值拟合,确定深度值拟合函数。
在一种可能的实现方式中,确定深度值拟合函数的具体过程如下:
1)在游戏场景中确定拟合场景,该拟合场景是指不存在异常碰撞的场景。
2)基于拟合场景,调用游戏引擎接口设置摄像机的拟合位置。
具体地,在确定好拟合场景后,可以调用游戏引擎接口设置摄像机的拟合位置,此处的拟合位置可以包括:拟合场景中的任意位置或拟合场景中的指定位置,本申请对此不做限定;另外,还可以设置摄像机的方向,例如将摄像机的方向设置为水平向北(需要说明的是,这里水平角度任意设置的,只要在游戏场景中视野前方不存在遮挡即可,从而来获取不同距离对应的深度值)。
3)调用设置好位置的摄像机,按照拟合位置获取拟合游戏场景中的拟合场景图像。其中,可以调用摄像机按照拟合位置及水平向北的方向采集图像,即可采集得到拟合游戏场景中的拟合场景图像。
4)调用场景捕获组件获取拟合场景图像的拟合深度图像。
具体实现时,计算机设备调用场景捕获组件获取拟合场景图像的拟合深度图像包括如下流程:①获取场景捕获组件所指示的引擎方法,并按照拟合场景中的摄像机位置,在引擎方法中设置一个或多个参数,也就是说,将场景捕获组件添加至摄像机中,按照摄像机位置设置场景捕获组件所指示的引擎方法中的各个参数;②将场景捕获组件的捕获源类型设置为深度信息;③调用场景捕获组件设置好的引擎方法,按照深度信息捕获拟合场景的渲染结果,得到拟合场景图像的拟合深度图像。可选的,也可以直接对拟合场景图像进行深度信息估计处理,得到拟合深度图像。
5)基于拟合深度图像,确定深度值拟合函数。
具体实现时,深度值拟合函数的确定过程具体可以包括如下步骤①-④:
①在拟合深度图像中选取P个拟合像素点,P为正整数;P个拟合像素点可以是从拟合深度图像中随机选取得到的,也可以是在拟合深度图像中多个指定位置处(如图像中心点)选取得到的,为便于准确处理,本申请中P≥3,即至少选取3个拟合像素点。
②基于P个拟合像素点的位置,确定待发射的P条拟合射线的发射方向,并按照待发射的P条拟合射线的发射方向,调用游戏场景中的摄像机发射P条拟合射线,得到发射结果;发射结果包括Q个碰撞点,Q为正整数。具体地,首先可以调用游戏引擎接口将各个拟合像素点所在的深度图位置转换为大世界坐标,进而计算射线的发生方向;然后可以按照摄像机位置为起点,按照发射方向发射P条拟合射线,从而得到发射结果,该发射结果包括Q个拟合碰撞点及每个拟合碰撞点在拟合场景中的位置。
③按照摄像机所在的摄像点、P条拟合射线的发射方向、以及Q个拟合碰撞点,计算任一个拟合碰撞点j到摄像机之间的拟合距离。
假设将摄像机所在的摄像点表示为P0(x0, y0, z0),任一条射线的发射方向表示为法向量N(A, B, C),任一个拟合碰撞点j表示为P1(xj, yj, zj),那么可以计算得到当前拟合碰撞点j到摄像机所在的平面之间的拟合距离Dj:
④按照拟合距离、及拟合碰撞点j的深度值之间的映射关系,构建深度值拟合函数。随后,按照上述拟合距离D构建的深度值拟合函数的公式如下:
其中,是指拟合碰撞点j拟合后的深度值,x是指拟合碰撞点j到平面之间的距离D,a、b、c均为拟合参数。
进一步地,假设拟合碰撞点j的深度值表示为y,那么可以按照如下损失函数L进行拟合参数a、b、c的学习:
其中,L对应Q个拟合碰撞点的总损失,N对应样本总数,y是指任一拟合碰撞点真实的深度值(即拟合碰撞点在拟合深度图像中对应的深度值),对应拟合的深度值。通过梯度后向传递的方式优化上述损失L,当损失L达到最小值时,可以学习得到拟合参数a、b、c各自的取值。
上述步骤1)-5)可知,本申请可以在不存在异常碰撞的拟合场景中学习距离到深度值(0到255)之间的映射规律。由于拟合深度图像中的深度值代表对应位置到摄像机之间的远近,但其并不是真实的距离,因此按照上述步骤能够针对任一拟合碰撞点进行深度值拟合,并按照任一拟合碰撞点的真实深度值及拟合深度值进行拟合参数(即上述参数a、b、c)的学习,从而能够准确的学习得到距离到深度值之间的映射规律,以便于后续进行碰撞检测。
S906:在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果。
1)基于深度图像确定需发射的检测射线的检测参数。具体地,①将深度图像划分为N×N个网格,并确定N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;②调用游戏引擎接口,分别将N×N个中心点的图像位置转换为大世界坐标;③按照N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。
2)在游戏场景中按照上述检测参数发射N×N条检测射线。
3)获取检测射线在游戏场景中的射线碰撞结果。
S907:将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果。
其中,异常碰撞检测结果用于指示游戏场景中的异常碰撞位置,异常碰撞检测结果包括M个碰撞点中各个碰撞点分别对应的碰撞检测结果,M个碰撞点中的任一个碰撞点表示为碰撞点i。
在一种可能的实现方式中,计算机设备将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,可以包括如下流程:①采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值;②获取碰撞点i在深度图像中对应的深度值;③基于碰撞点i的拟合深度值及深度值进行距离对比,得到碰撞点i的碰撞检测结果。
需要说明的是,本申请对M个碰撞点中的任一个碰撞点i的距离分析过程详细可参考图4实施例中步骤S405中相关过程,本申请实施例在此不再赘述。应当理解,按照本申请实施例所示的上述流程可以依次分析得到M个碰撞点的碰撞检测结果,即检测出M个碰撞点中的一个或多个异常点,所谓异常点是指碰撞点的碰撞位置为异常碰撞位置的点;进而,即可基于异常点从游戏场景中确定出各个异常碰撞位置,以便于后续对异常碰撞位置进行游戏调试及优化。
下面结合附图对游戏场景中的异常碰撞的检测处理过程进行举例说明。
请参见图10,图10是本申请实施例提供的一种图像处理的游戏场景示意图。如图10所示,该游戏场景中主要涉及:游戏终端及游戏服务器。其中,游戏终端中运行有目标游戏,该目标游戏的游戏场景通过游戏引擎进行渲染呈现,游戏场景在游戏终端中被渲染后呈现出如图10中所示的游戏画面S100。在目标游戏的测试场景中,将本申请上述提及的图像处理流程构建为一套UE(Unreal Engine,虚幻引擎)通用的SDK代码插件,基于该插件能够实现游戏场景中异常碰撞位置的自动化检测。具体过程如下:①首先,游戏终端可以获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象(如花、草等对象)进行剔除处理,得到第二场景图像。②游戏终端调用场景捕获组件获取第二场景图像的深度图像,并将获取到的第一场景图像、第二场景图像、以及深度图像打包为游戏图像发送至游戏服务器。③游戏服务器可以基于深度图像确定需发射的检测射线的检测参数,该检测参数包含检测射线的发射位置及发射方向;并在游戏场景中按照检测参数发射检测射线,从而可以获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置。④游戏服务器将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,即可得到当前游戏场景的异常碰撞检测结果,该异常碰撞检测结果用于指示游戏场景中的异常碰撞位置(如图10中的位置S01和位置S02)。⑤后续,游戏服务器可以基于异常碰撞检测结果所指示的异常碰撞位置(即位置S01和位置S02),对目标游戏的游戏实例代码进行更新处理,避免在游戏场景中出现异常碰撞位置,从而可以提升游戏体验感。
本申请实施例中,提出了一种基于场景捕获组件和特殊对象剔除的异常碰撞检测方案,能够在游戏场景中自动识别异常的碰撞问题,进而能够实现游戏自动化测试及优化,从而提升游戏效果及游戏体验感。一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可防止异常碰撞的误判,从而能够提高对游戏场景进行碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
下面对本申请实施例提供的图像处理方案的相关装置进行相关阐述。
请参见图11,图11是本申请实施例提供的一种图像处理装置的结构示意图。如图11所示,该图像处理装置1100可应用于前述实施例中所提及的计算机设备(例如终端设备或服务器)。具体来说,图像处理装置1100可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该图像处理装置1100为一个应用软件;该图像处理装置1100可以用于执行本申请实施例提供的图像处理方法中的相应步骤。具体实现时,该图像处理装置1100具体可以包括:
获取单元1101,用于获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
获取单元1101,还用于调用场景捕获组件获取第二场景图像的深度图像;
处理单元1102,用于基于深度图像确定需发射的检测射线的检测参数,检测参数包含检测射线的发射位置及发射方向;
处理单元1102,还用于在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点,一个碰撞点在游戏场景中对应一个碰撞位置,M为正整数;
处理单元1102,还用于将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
在一种可能的实现方式中,获取单元1101获取游戏场景中的第一场景图像,用于执行以下操作:
获取游戏场景中采样得到的至少一个路径关键点;
对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点;
基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置;
调用摄像机,按照摄像机位置获取游戏场景中的第一场景图像。
在一种可能的实现方式中,获取单元1101获取游戏场景中采样得到的至少一个路径关键点,用于执行以下操作:
确定游戏场景中待录制的游戏关键路径;
对游戏关键路径进行游戏录制,并在游戏关键路径的录制过程中,记录游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,路径序列包括K个路径点,K为正整数;
按照预设间隔距离,对路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。
在一种可能的实现方式中,处理单元1102将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像,用于执行以下操作:
确定游戏场景中待剔除对象的预设类型;
遍历第一场景图像中的各个对象,确定各个对象的对象类型;
若目标对象的对象类型为预设类型,则获取目标对象在游戏场景中对应的对象实例代码;
将对象实例代码的属性设置为不可见属性,以将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
在一种可能的实现方式中,处理单元1102调用场景捕获组件获取第二场景图像的深度图像,用于执行以下操作:
获取场景捕获组件所指示的引擎方法,并按照游戏场景中的摄像机位置,在引擎方法中设置一个或多个参数;
将场景捕获组件的捕获源类型设置为深度信息;
调用场景捕获组件设置好的引擎方法,按照深度信息捕获游戏场景的渲染结果,得到第二场景图像的深度图像。
在一种可能的实现方式中,处理单元1102基于深度图像确定需发射的检测射线的检测参数,用于执行以下操作:
将深度图像划分为N×N个网格,并确定N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;
调用游戏引擎接口,分别将N×N个中心点的图像位置转换为大世界坐标;
按照N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。
在一种可能的实现方式中,深度图像包括所述第二场景图像中至少一个像素点的深度值,所述深度值用于指示相应像素点与摄像机之间的距离;异常碰撞检测结果包括M个碰撞点的碰撞检测结果,M个碰撞点中的任一个碰撞点表示为碰撞点i;
处理单元1102将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,用于执行以下操作:
采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值;
获取碰撞点i在深度图像中对应的深度值;
基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果。
在一种可能的实现方式中,碰撞点i的碰撞检测结果用于指示碰撞点i为异常点或正常点;处理单元1102基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果,用于执行以下操作:
计算碰撞点i的拟合深度值及深度值之间的差值;
若差值大于或等于预设距离阈值,则碰撞点i为异常点;
若差值小于预设距离阈值,则碰撞点i为正常点。
在一种可能的实现方式中,处理单元1102采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值,用于执行以下操作:
按照摄像机所在的摄像点、碰撞点i对应的发射方向、以及碰撞点i,计算碰撞点i到摄像机之间的碰撞距离;
基于碰撞点i的碰撞距离,采用深度值拟合函数对碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值。
在一种可能的实现方式中,处理单元1102还用于执行以下操作:
在游戏场景中确定拟合场景,拟合场景是指不存在异常碰撞的场景;
基于拟合场景,调用游戏引擎接口设置摄像机的拟合位置;
通过设置好位置的摄像机,按照拟合位置获取拟合场景中的拟合场景图像;
调用场景捕获组件获取拟合场景图像的拟合深度图像;
基于拟合深度图像,确定深度值拟合函数。
在一种可能的实现方式中,处理单元1102基于拟合深度图像,确定深度值拟合函数,用于执行以下操作:
在拟合深度图像中选取P个拟合像素点,P为正整数;
基于P个拟合像素点的位置,确定待发射的P条拟合射线的发射方向,并按照待发射的P条拟合射线的发射方向,调用游戏场景中的摄像机发射P条拟合射线,得到发射结果;发射结果包括Q个拟合碰撞点,Q为正整数;
按照摄像机所在的摄像点、P条拟合射线的发射方向、以及Q个拟合碰撞点,计算任一个拟合碰撞点j到摄像机之间的拟合距离;
按照拟合距离、及拟合碰撞点j的深度值之间的映射关系,构建深度值拟合函数。
在一种可能的实现方式中,异常碰撞检测结果用于指示M个碰撞点中的碰撞点i为异常点或正常点;处理单元1102将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果之后,还用于执行以下操作:
若碰撞点i为异常点,则确定碰撞点i在游戏场景中对应的异常碰撞位置Si;
获取异常碰撞位置Si在游戏场景中对应的待测试实例代码;
对获取到的待测试实例代码进行编辑测试处理,其中,编辑测试处理包括:更新处理、删除处理中的任一种。
本申请实施例中,可以获取游戏场景的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定包含需发射的检测射线的发射位置及发射方向的检测参数,在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。由此可见,一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可防止异常碰撞的误判,从而能够提高游戏场景中碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,能够自动化检测出游戏场景中的异常碰撞位置,并可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
请参见图12,图12是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备1200用于执行前述方法实施例中终端设备或服务器所执行的步骤,该计算机设备1200可以包含独立设备(例如服务器、节点、终端等等中的一个或者多个),也可以包含独立设备内部的部件(例如芯片、软件模块或者硬件模块等)。该计算机设备可以包括至少一个处理器1201和通信接口1202,进一步可选地,计算机设备还可以包括至少一个存储器1203和总线1204。另外,处理器1201、通信接口1202和存储器1203通过总线1204相连。其中:
1)处理器1201是进行算术运算和/或逻辑运算的模块,具体可以是中央处理器(central processing unit,CPU)、图片处理器(graphics processing unit,GPU)、微处理器(microprocessor unit,MPU)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、复杂可编程逻辑器件(Complex programmable logic device,CPLD)、协处理器(协助中央处理器完成相应处理和应用)、微控制单元(Micro Controller Unit,MCU)等处理模块中的一种或者多种的组合。
2)通信接口1202可以用于为至少一个处理器1201提供信息输入或者输出。和/或,通信接口1202可以用于接收外部发送的数据和/或向外部发送数据,可以为包括诸如以太网电缆等的有线链路接口,也可以是无线链路(Wi-Fi、蓝牙、通用无线传输、车载短距通信技术以及其他短距无线通信技术等)接口。通信接口1202可以作为网络接口。
3)存储器1203用于提供存储空间,存储空间中可以存储操作***和计算机程序等数据。存储器1203可以是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read onlymemory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)等等中的一种或者多种的组合。
具体实现时,处理器1201用于调用存储器1203存储的程序指令,用于执行以下操作:
获取游戏场景中的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
调用场景捕获组件获取第二场景图像的深度图像;
基于深度图像确定需发射的检测射线的检测参数,检测参数包含检测射线的发射位置及发射方向;
在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,射线碰撞结果包括M个碰撞点,一个碰撞点在游戏场景中对应一个碰撞位置,M为正整数;
将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。
在一种可能的实现方式中,处理器1201获取游戏场景中的第一场景图像,用于执行以下操作:
获取游戏场景中采样得到的至少一个路径关键点;
对每个路径关键点进行偏移处理,得到偏移后的各个路径关键点;
基于偏移后的各个路径关键点在游戏场景中的位置,调用游戏引擎接口设置游戏场景对应的摄像机位置;
调用摄像机,按照摄像机位置获取游戏场景中的第一场景图像。
在一种可能的实现方式中,处理器1201获取游戏场景中采样得到的至少一个路径关键点,用于执行以下操作:
确定游戏场景中待录制的游戏关键路径;
对游戏关键路径进行游戏录制,并在游戏关键路径的录制过程中,记录游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,路径序列包括K个路径点,K为正整数;
按照预设间隔距离,对路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。
在一种可能的实现方式中,处理器1201将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像,用于执行以下操作:
确定游戏场景中待剔除对象的预设类型;
遍历第一场景图像中的各个对象,确定各个对象的对象类型;
若目标对象的对象类型为预设类型,则获取目标对象在游戏场景中对应的对象实例代码;
将对象实例代码的属性设置为不可见属性,以将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
在一种可能的实现方式中,处理器1201调用场景捕获组件获取第二场景图像的深度图像,用于执行以下操作:
获取场景捕获组件所指示的引擎方法,并按照游戏场景中的摄像机位置,在引擎方法中设置一个或多个参数;
将场景捕获组件的捕获源类型设置为深度信息;
调用场景捕获组件设置好的引擎方法,按照深度信息捕获游戏场景的渲染结果,得到第二场景图像的深度图像。
在一种可能的实现方式中,处理器1201基于深度图像确定需发射的检测射线的检测参数,用于执行以下操作:
将深度图像划分为N×N个网格,并确定N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;
调用游戏引擎接口,分别将N×N个中心点的图像位置转换为大世界坐标;
按照N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。
在一种可能的实现方式中,深度图像包括所述第二场景图像中至少一个像素点的深度值,所述深度值用于指示相应像素点与摄像机之间的距离;异常碰撞检测结果包括M个碰撞点的碰撞检测结果,M个碰撞点中的任一个碰撞点表示为碰撞点i;
处理器1201将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果,用于执行以下操作:
采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值;
获取碰撞点i在深度图像中对应的深度值;
基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果。
在一种可能的实现方式中,碰撞点i的碰撞检测结果用于指示碰撞点i为异常点或正常点;处理器1201基于碰撞点i的拟合深度值及深度值进行距离对比分析,得到碰撞点i的碰撞检测结果,用于执行以下操作:
计算碰撞点i的拟合深度值及深度值之间的差值;
若差值大于或等于预设距离阈值,则碰撞点i为异常点;
若差值小于预设距离阈值,则碰撞点i为正常点。
在一种可能的实现方式中,处理器1201采用深度值拟合函数对M个碰撞点中的碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值,用于执行以下操作:
按照摄像机所在的摄像点、碰撞点i对应的发射方向、以及碰撞点i,计算碰撞点i到摄像机之间的碰撞距离;
基于碰撞点i的碰撞距离,采用深度值拟合函数对碰撞点i进行深度值拟合处理,得到碰撞点i的拟合深度值。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
在游戏场景中确定拟合场景,拟合场景是指不存在异常碰撞的场景;
基于拟合场景,调用游戏引擎接口设置摄像机的拟合位置;
通过设置好位置的摄像机,按照拟合位置获取拟合场景中的拟合场景图像;
调用场景捕获组件获取拟合场景图像的拟合深度图像;
基于拟合深度图像,确定深度值拟合函数。
在一种可能的实现方式中,处理器1201基于拟合深度图像,确定深度值拟合函数,用于执行以下操作:
在拟合深度图像中选取P个拟合像素点,P为正整数;
基于P个拟合像素点的位置,确定待发射的P条拟合射线的发射方向,并按照待发射的P条拟合射线的发射方向,调用游戏场景中的摄像机发射P条拟合射线,得到发射结果;发射结果包括Q个拟合碰撞点,Q为正整数;
按照摄像机所在的摄像点、P条拟合射线的发射方向、以及Q个拟合碰撞点,计算任一个拟合碰撞点j到摄像机之间的拟合距离;
按照拟合距离、及拟合碰撞点j的深度值之间的映射关系,构建深度值拟合函数。
在一种可能的实现方式中,异常碰撞检测结果用于指示M个碰撞点中的碰撞点i为异常点或正常点;处理器1201将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果之后,还用于执行以下操作:
若碰撞点i为异常点,则确定碰撞点i在游戏场景中对应的异常碰撞位置Si;
获取异常碰撞位置Si在游戏场景中对应的待测试实例代码;
对获取到的待测试实例代码进行编辑测试处理,其中,编辑测试处理包括:更新处理、删除处理中的任一种。
本申请实施例中,可以获取游戏场景的第一场景图像,并将第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;调用场景捕获组件获取第二场景图像的深度图像;基于深度图像确定包含需发射的检测射线的发射位置及发射方向的检测参数,在游戏场景中按照检测参数发射检测射线,并获取检测射线在游戏场景中的射线碰撞结果,该射线碰撞结果包括M个碰撞点及每个碰撞点在游戏场景中对应的碰撞位置,M为正整数;将M个碰撞点对应的碰撞位置与深度图像进行距离对比分析,得到游戏场景的异常碰撞检测结果;异常碰撞检测结果用于指示游戏场景中的异常碰撞位置。由此可见,一方面,本申请能够对游戏场景中存在干扰的预设类型的目标对象(如花草)进行剔除处理,可防止异常碰撞的误判,从而能够提高游戏场景中碰撞检测的准确性;另一方面,本申请在获取到深度图像后能够在游戏场景中发射检测射线得到射线碰撞结果,进一步可基于深度图像及射线的碰撞结果进行距离对比,能够自动化检测出游戏场景中的异常碰撞位置,并可较为准确的分析游戏场景中的异常碰撞位置,从而提高游戏场景中异常碰撞检测的准确性。
在上述实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可以执行前文所对应实施例中的方法,因此,这里将不再进行赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种图像处理方法,其特征在于,包括:
获取游戏场景中的第一场景图像,并将所述第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
调用场景捕获组件获取所述第二场景图像的深度图像;
基于所述深度图像确定需发射的检测射线的检测参数,所述检测参数包含所述检测射线的发射位置及发射方向;
在所述游戏场景中按照所述检测参数发射检测射线,并获取所述检测射线在所述游戏场景中的射线碰撞结果,所述射线碰撞结果包括M个碰撞点,一个碰撞点在所述游戏场景中对应一个碰撞位置,M为正整数;
将所述M个碰撞点对应的碰撞位置与所述深度图像进行距离对比分析,得到所述游戏场景的异常碰撞检测结果;所述异常碰撞检测结果用于指示所述游戏场景中的异常碰撞位置。
2.如权利要求1所述的方法,其特征在于,所述获取游戏场景中的第一场景图像,包括:
获取游戏场景中采样得到的至少一个路径关键点;
对每个所述路径关键点进行偏移处理,得到偏移后的各个路径关键点;
基于所述偏移后的各个路径关键点在所述游戏场景中的位置,调用游戏引擎接口设置所述游戏场景对应的摄像机位置;
调用摄像机,按照所述摄像机位置获取所述游戏场景中的第一场景图像。
3.如权利要求2所述的方法,其特征在于,所述获取游戏场景中采样得到的至少一个路径关键点,包括:
确定游戏场景中待录制的游戏关键路径;
对所述游戏关键路径进行游戏录制,并在所述游戏关键路径的录制过程中,记录所述游戏场景中游戏角色在不同时刻分别对应的路径点,以构建得到路径序列,所述路径序列包括K个路径点,K为正整数;
按照预设间隔距离,对所述路径序列中的K个路径点进行间隔采样处理,得到至少一个路径关键点。
4.如权利要求2所述的方法,其特征在于,所述将所述第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像,包括:
确定所述游戏场景中待剔除对象的预设类型;
遍历所述第一场景图像中的各个对象,确定各个对象的对象类型;
若目标对象的对象类型为所述预设类型,则获取所述目标对象在所述游戏场景中对应的对象实例代码;
将所述对象实例代码的属性设置为不可见属性,以将所述第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像。
5.如权利要求4所述的方法,其特征在于,所述调用场景捕获组件获取所述第二场景图像的深度图像,包括:
获取所述场景捕获组件所指示的引擎方法,并按照所述游戏场景中的摄像机位置,在所述引擎方法中设置一个或多个参数;
将所述场景捕获组件的捕获源类型设置为深度信息;
调用所述场景捕获组件设置好的引擎方法,按照所述深度信息捕获所述游戏场景的渲染结果,得到所述第二场景图像的深度图像。
6.如权利要求1所述的方法,其特征在于,所述基于所述深度图像确定需发射的检测射线的检测参数,包括:
将所述深度图像划分为N×N个网格,并确定所述N×N个网格的N×N个中心点,一个网格对应一个中心点,N为正整数;
调用游戏引擎接口,分别将所述N×N个中心点的图像位置转换为大世界坐标;
按照所述N×N个中心点的大世界坐标,计算需发射的N×N条检测射线的发射方向;一个中心点对应发射一条检测射线。
7.如权利要求1所述的方法,其特征在于,所述深度图像包括所述第二场景图像中至少一个像素点的深度值,所述深度值用于指示相应像素点与摄像机之间的距离;所述异常碰撞检测结果包括M个碰撞点的碰撞检测结果,所述M个碰撞点中的任一个碰撞点表示为碰撞点i;
所述将所述M个碰撞点对应的碰撞位置与所述深度图像进行距离对比分析,得到所述游戏场景的异常碰撞检测结果,包括:
采用深度值拟合函数对所述M个碰撞点中的碰撞点i进行深度值拟合处理,得到所述碰撞点i的拟合深度值;
获取所述碰撞点i在所述深度图像中对应的深度值;
基于所述碰撞点i的拟合深度值及深度值进行距离对比分析,得到所述碰撞点i的碰撞检测结果。
8.如权利要求7所述的方法,其特征在于,所述碰撞点i的碰撞检测结果用于指示所述碰撞点i为异常点或正常点;所述基于所述碰撞点i的拟合深度值及深度值进行距离对比分析,得到所述碰撞点i的碰撞检测结果,包括:
计算所述碰撞点i的拟合深度值及深度值之间的差值;
若所述差值大于或等于预设距离阈值,则所述碰撞点i为异常点;
若所述差值小于预设距离阈值,则所述碰撞点i为正常点。
9.如权利要求7或8所述的方法,其特征在于,所述采用深度值拟合函数对所述M个碰撞点中的碰撞点i进行深度值拟合处理,得到所述碰撞点i的拟合深度值,包括:
按照所述摄像机所在的摄像点、所述碰撞点i对应的发射方向、以及所述碰撞点i,计算所述碰撞点i到所述摄像机之间的碰撞距离;
基于所述碰撞点i的碰撞距离,采用深度值拟合函数对所述碰撞点i进行深度值拟合处理,得到所述碰撞点i的拟合深度值。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
在游戏场景中确定拟合场景,所述拟合场景是指不存在异常碰撞的场景;
基于所述拟合场景,调用游戏引擎接口设置所述摄像机的拟合位置;
通过设置好位置的所述摄像机,按照所述拟合位置获取所述拟合场景中的拟合场景图像;
调用场景捕获组件获取所述拟合场景图像的拟合深度图像;
基于所述拟合深度图像,确定深度值拟合函数。
11.如权利要求10所述的方法,其特征在于,所述基于所述拟合深度图像,确定深度值拟合函数,包括:
在所述拟合深度图像中选取P个拟合像素点,P为正整数;
基于所述P个拟合像素点的位置,确定待发射的P条拟合射线的发射方向,并按照待发射的P条拟合射线的发射方向,调用所述游戏场景中的摄像机发射P条拟合射线,得到发射结果;所述发射结果包括Q个拟合碰撞点,Q为正整数;
按照所述摄像机所在的摄像点、所述P条拟合射线的发射方向、以及所述Q个拟合碰撞点,计算任一个拟合碰撞点j到所述摄像机之间的拟合距离;
按照所述拟合距离、及所述拟合碰撞点j的深度值之间的映射关系,构建深度值拟合函数。
12.如权利要求1所述的方法,其特征在于,所述异常碰撞检测结果用于指示所述M个碰撞点中的碰撞点i为异常点或正常点;所述将所述M个碰撞点对应的碰撞位置与所述深度图像进行距离对比分析,得到所述游戏场景的异常碰撞检测结果之后,还包括:
若所述碰撞点i为异常点,则确定所述碰撞点i在所述游戏场景中对应的异常碰撞位置Si;
获取所述异常碰撞位置Si在所述游戏场景中对应的待测试实例代码;
对获取到的所述待测试实例代码进行编辑测试处理,其中,所述编辑测试处理包括:更新处理、删除处理中的任一种。
13.一种图像处理装置,其特征在于,包括:
获取单元,用于获取游戏场景的第一场景图像,并将所述第一场景图像中预设类型的目标对象进行剔除处理,得到第二场景图像;
所述获取单元,还用于调用场景捕获组件获取所述第二场景图像的深度图像;
处理单元,用于基于所述深度图像确定需发射的检测射线的检测参数,所述检测参数包含所述检测射线的发射位置及发射方向;
所述处理单元,还用于在所述游戏场景中按照所述检测参数发射检测射线,并获取所述检测射线在所述游戏场景中的射线碰撞结果,所述射线碰撞结果包括M个碰撞点,一个碰撞点在所述游戏场景中对应一个碰撞位置,M为正整数;
所述处理单元,还用于将所述M个碰撞点对应的碰撞位置与所述深度图像进行距离对比分析,得到所述游戏场景的异常碰撞检测结果;所述异常碰撞检测结果用于指示所述游戏场景中的异常碰撞位置。
14.一种计算机设备,其特征在于,包括:存储装置和处理器;
存储器,所述存储器中存储一条或多条计算机程序;
处理器,用于加载所述一条或多条计算机程序实现如权利要求1-12中任一项所述的图像处理方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-12中任一项所述的图像处理方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-12中任一项所述的图像处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410161021.5A CN117710368B (zh) | 2024-02-05 | 2024-02-05 | 图像处理方法、装置、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410161021.5A CN117710368B (zh) | 2024-02-05 | 2024-02-05 | 图像处理方法、装置、设备、介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117710368A true CN117710368A (zh) | 2024-03-15 |
CN117710368B CN117710368B (zh) | 2024-04-30 |
Family
ID=90146560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410161021.5A Active CN117710368B (zh) | 2024-02-05 | 2024-02-05 | 图像处理方法、装置、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117710368B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111870952A (zh) * | 2020-07-24 | 2020-11-03 | 上海米哈游天命科技有限公司 | 一种高度图生成方法、装置、设备及存储介质 |
CN112023400A (zh) * | 2020-07-24 | 2020-12-04 | 上海米哈游天命科技有限公司 | 一种高度图生成方法、装置、设备及存储介质 |
CN112657192A (zh) * | 2020-12-25 | 2021-04-16 | 珠海西山居移动游戏科技有限公司 | 一种碰撞检测方法及装置 |
CN112807681A (zh) * | 2021-02-25 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 游戏控制方法、装置、电子设备及存储介质 |
CN113559518A (zh) * | 2021-07-30 | 2021-10-29 | 网易(杭州)网络有限公司 | 虚拟模型的交互检测方法、装置、电子设备及存储介质 |
CN115859411A (zh) * | 2022-12-09 | 2023-03-28 | 腾讯科技(深圳)有限公司 | 一种体渲染碰撞检测方法、装置、设备以及存储介质 |
CN116943216A (zh) * | 2022-11-21 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 一种贴合关系检测方法、装置、设备及存储介质 |
-
2024
- 2024-02-05 CN CN202410161021.5A patent/CN117710368B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111870952A (zh) * | 2020-07-24 | 2020-11-03 | 上海米哈游天命科技有限公司 | 一种高度图生成方法、装置、设备及存储介质 |
CN112023400A (zh) * | 2020-07-24 | 2020-12-04 | 上海米哈游天命科技有限公司 | 一种高度图生成方法、装置、设备及存储介质 |
CN112657192A (zh) * | 2020-12-25 | 2021-04-16 | 珠海西山居移动游戏科技有限公司 | 一种碰撞检测方法及装置 |
CN112807681A (zh) * | 2021-02-25 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 游戏控制方法、装置、电子设备及存储介质 |
CN113559518A (zh) * | 2021-07-30 | 2021-10-29 | 网易(杭州)网络有限公司 | 虚拟模型的交互检测方法、装置、电子设备及存储介质 |
CN116943216A (zh) * | 2022-11-21 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 一种贴合关系检测方法、装置、设备及存储介质 |
CN115859411A (zh) * | 2022-12-09 | 2023-03-28 | 腾讯科技(深圳)有限公司 | 一种体渲染碰撞检测方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117710368B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110427917B (zh) | 用于检测关键点的方法和装置 | |
CN110470333B (zh) | 传感器参数的标定方法及装置、存储介质和电子装置 | |
KR101965878B1 (ko) | 시각적 피처들을 이용한 이미지들의 자동 연결 | |
CN109298629A (zh) | 用于为自主和非自主位置意识提供鲁棒跟踪的容错 | |
CN111060948B (zh) | 一种定位方法、装置、头盔及计算机可读存储介质 | |
CN102982560A (zh) | 根据rgb和深度图像的表面分割 | |
KR102139172B1 (ko) | 가상환경에서의 자율주행차량 시뮬레이션 방법 | |
CN111177887A (zh) | 一种基于真实驾驶场景构造仿真轨迹数据的方法和装置 | |
CN115546672A (zh) | 基于图像处理的森林图片处理方法及*** | |
CN112023400A (zh) | 一种高度图生成方法、装置、设备及存储介质 | |
CN113269168B (zh) | 障碍物数据处理方法、装置、电子设备和计算机可读介质 | |
CN112258647B (zh) | 地图重建方法及装置、计算机可读介质和电子设备 | |
CN117710368B (zh) | 图像处理方法、装置、设备、介质及程序产品 | |
CN110942485B (zh) | 基于人工智能的场景感知方法、装置及电子设备 | |
CN114674328B (zh) | 地图生成方法、装置、电子设备、存储介质、及车辆 | |
CN116943216A (zh) | 一种贴合关系检测方法、装置、设备及存储介质 | |
CN115375855A (zh) | 工程项目的可视化方法、装置、电子设备和可读介质 | |
CN112308093B (zh) | 基于图像识别的空气质量感知方法、模型训练方法及*** | |
CN113705432A (zh) | 一种模型训练、三维目标检测方法、装置、设备及介质 | |
CN116109756B (zh) | 光线追踪方法、装置、设备及存储介质 | |
CN117830305B (zh) | 对象测量方法、装置、设备及介质 | |
CN112788536B (zh) | 基于工作流的可信pnt服务数据追溯方法及装置 | |
CN115468778B (zh) | 车辆测试方法、装置、电子设备及存储介质 | |
KR20220136883A (ko) | 포인트 클라우드 데이터 완성 및 포인트 클라우드 데이터 처리 | |
CN117389502A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |