轨迹回放方法、计算机程序产品、存储介质及电子设备与流程

文档序号:29737082发布日期:2022-04-21 17:49阅读:171来源:国知局
轨迹回放方法、计算机程序产品、存储介质及电子设备与流程

1.本发明涉及计算机技术领域,具体而言,涉及一种轨迹回放方法、计算机程序产品、存储介质及电子设备。


背景技术:

2.目前,越来越多的商场、园区、写字楼、街道等场所均安装有图像采集设备(例如,摄像头、抓拍机等),通过图像采集设备对经过的目标(例如,人员、车辆等)进行抓拍,以此来记录目标的运动轨迹。
3.参照图1(a),地图上带有数字的圆圈代表目标被抓拍到的位置,或称轨迹点,图1(a)中共示出了5个轨迹点,按抓拍时间的先后顺序分别是轨迹点1、轨迹点2、

、轨迹点5,这些轨迹点连接之后形成的折线就是对目标的运动轨迹的一个合理估计。
4.为了更好地观察目标的运动情况,可以在地图上对图1(a)中的轨迹进行回放,图1(b)至图1(d)示出了现有技术中一种可能的轨迹回放方式。假设每秒播放一个轨迹点,在第1秒时,将一个代表目标的小人图标显示在轨迹点1的位置,如图1(b)所示,在第2秒时,将小人图标显示在轨迹点2的位置,如图1(c)所示,在第3秒时,将小人图标显示在轨迹点3的位置,如图1(d)所示,以此类推。
5.然而,上述轨迹回放方式的显示效果非常跳跃,给用户的感觉是目标从一个轨迹点瞬间移动到了下一个轨迹点,不利于用户观察目标的运动状态。


技术实现要素:

6.本技术实施例的目的在于提供一种轨迹回放方法、计算机程序产品、存储介质及电子设备,以改善上述技术问题。
7.为实现上述目的,本技术提供如下技术方案:
8.第一方面,本技术实施例提供一种轨迹回放方法,包括:接收对目标轨迹进行回放的轨迹回放指令;根据所述轨迹回放指令,按照第一序列中的轨迹点的位置在地图上依次显示运动目标;其中,所述第一序列为多个轨迹点构成的序列,所述多个轨迹点包括所述目标轨迹的原始轨迹点,以及在所述第一序列中位于相邻的原始轨迹点之间的辅助轨迹点,所述辅助轨迹点在所述地图上的位置处于所述相邻的原始轨迹点之间的所述目标轨迹上。
9.上述方法并不是直接利用目标轨迹的原始轨迹点实现目标轨迹的回放,而是利用第一序列来实现目标轨迹的回放,由于第一序列中相邻的原始轨迹点之间插入有辅助轨迹点,且这些辅助轨迹点的位置也都在目标轨迹上,相当于增加了属于目标轨迹的轨迹点数量,因此对目标轨迹进行轨迹回放的显示效果更加平滑,更有利于用户观察目标的运动状态,显著改善了用户体验。
10.第二方面,本技术实施例提供一种轨迹回放装置,包括:指令接收模块,用于接收对目标轨迹进行回放的轨迹回放指令;轨迹回放模块,用于根据所述轨迹回放指令,按照第一序列中的轨迹点的位置在地图上依次显示运动目标;其中,所述第一序列为多个轨迹点
构成的序列,所述多个轨迹点包括所述目标轨迹的原始轨迹点,以及在所述第一序列中位于相邻的原始轨迹点之间的辅助轨迹点,所述辅助轨迹点在所述地图上的位置处于所述相邻的原始轨迹点之间的所述目标轨迹上。
11.第三方面,本技术实施例提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
12.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
13.第五方面,本技术实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
附图说明
14.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
15.图1(a)至图1(d)示出了现有技术中的轨迹回放过程;
16.图2示出了本技术实施例提供的一种轨迹回放系统的结构;
17.图3示出了本技术实施例提供的一种轨迹回放方法的流程;
18.图4(a)至图4(d)示出了在采用本技术实施例提供的轨迹回放方法后的轨迹回放过程;
19.图5示出了本技术实施例提供的一种用于轨迹回放的播放器界面;
20.图6示出了图5中播放器的工作原理;
21.图7示出了本技术实施例提供的轨迹回放方法中第二序列的生成原理;
22.图8示出了本技术实施例提供的一种轨迹回放装置的结构;
23.图9示出了本技术实施例提供的一种电子设备的结构。
具体实施方式
24.近年来,基于人工智能的计算机视觉、深度学习、机器学习、图像处理、图像识别等技术研究取得了重要进展。人工智能(artificial intelligence,简称ai)是研究、开发用于模拟、延伸人的智能的理论、方法、技术及应用系统的新兴科学技术。人工智能学科是一门综合性学科,涉及芯片、大数据、云计算、物联网、分布式存储、深度学习、机器学习、神经网络等诸多技术种类。计算机视觉作为人工智能的一个重要分支,具体是让机器识别世界,计算机视觉技术通常包括人脸识别、活体检测、指纹识别与防伪验证、生物特征识别、人脸检测、行人检测、目标检测、行人识别、图像处理、图像识别、图像语义理解、图像检索、文字识别、视频处理、视频内容识别、行为识别、三维重建、虚拟现实、增强现实、同步定位与地图构建、计算摄影、机器人导航与定位等技术。随着人工智能技术的研究和进步,该项技术在
众多领域展开了应用,例如安防、城市管理、交通管理、楼宇管理、园区管理、人脸通行、人脸考勤、物流管理、仓储管理、机器人、智能营销、计算摄影、手机影像、云服务、智能家居、穿戴设备、无人驾驶、自动驾驶、智能医疗、人脸支付、人脸解锁、指纹解锁、人证核验、智慧屏、智能电视、摄像机、移动互联网、网络直播、美颜、美妆、医疗美容、智能测温等领域。
25.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
26.术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
27.术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
28.在介绍本技术实施例提供的轨迹回放方法之前,先简单说明有关轨迹点回放的一些基本概念。注意,虽然下面主要结合图1(a)至图1(d)进行阐述,但不代表这些概念的内容均为现有技术。
29.运动目标:用户感兴趣的某个可运动的对象,例如特定的人、特定的车辆、特定的机器人等。运动目标的运动是轨迹形成的来源。在不致混淆的情况下,后文有时也将运动目标简称为目标。为简单起见,后文内容均以单个运动目标的情况为例,多个运动目标的情况可以类似分析。
30.图像采集设备:能够抓拍运动目标,并形成抓拍图像的设备。图像采集设备可以是摄像头、抓拍机等设备。
31.地图:图1(a)中网格状的部分,对应于目标运动的区域。地图是进行轨迹回放的背景,其具体类型不作限定,例如可以是平面地图、地理信息系统(geographic information system,简称gis)地图等。
32.轨迹点:图1(a)中带有数字的圆圈,每个轨迹点代表地图中的一个位置,即运动目标出现的位置。根据后文内容可知,轨迹点可以代表运动目标真实出现的位置,也可以仅代表运动目标可能出现的位置。轨迹点可以具有多种属性,比如坐标属性、顺序属性、图像属性、时间属性中的一项或多项,将这些属性也视为轨迹点的一部分。
33.例如,某个图像采集设备在地图中的坐标是(100,40),该图像采集设备在下午14:50抓拍到运动目标,则可以得到图1(a)中一个对应的轨迹点(假设是轨迹点4),坐标属性为(100,40),顺序属性为4,图像属性为运动目标的抓拍图像,时间属性为14:50。
34.轨迹:将多个轨迹点按照其顺序属性(或者时间属性)依次连接后可以得到运动目标的轨迹,例如图1(a)中连接轨迹点1~5的折线就是一条轨迹,该轨迹代表了运动目标从轨迹点1出发,沿轨迹点2~4,一直运动到轨迹点5所经过的路线。
35.需要注意,其一,轨迹中的轨迹点是有序的,例如在图1(a)中是按照轨迹点1、轨迹点2、

、轨迹点5的顺序。
36.其二,轨迹点之间连接方式可以有很多,图1(a)中的直线连接只是其中的一种。以顺序上相邻的两个轨迹点1和2为例,假设这两个轨迹点对应运动目标真实出现的两个位置,这两个位置是由于运动目标被图像采集设备抓拍才确定下来的,在轨迹点1和2之间,运动目标究竟如何运动,实际上并不清楚,可能沿直线运动,也可能沿曲线运动,因此用直线连接轨迹点1和2,仅仅表示对目标运动路线的一种估计而已。不过,为简单起见,后文在阐述时仍主要以直线连接的方式为例。
37.轨迹回放:在地图上将运动目标的轨迹以动画的方式播放出来,以便用户可以直观地观察到目标在某个时段或者某个区域内的运动情况。
38.在用户未进行特殊指示的情况下,进行轨迹回放的方式默认为按照轨迹中轨迹点的顺序逐个播放轨迹点,所谓播放某个轨迹点,可以理解为获取该轨迹点的信息,并将获取到的信息在地图上进行某种不同于其他轨迹点的特殊显示,以表明目标当前运动到了该轨迹点。比如,在地图上该轨迹点的位置处以某种方式将运动目标显示出来就是一种播放轨迹点的方式。
39.例如,在图1(a)中,先将轨迹点1~5以及运动目标的轨迹在地图上显示出来,但此时的显示效果是静态的,可以认为是轨迹回放之前的准备阶段。图1(b)至图1(d)是轨迹回放开始后的情况,在图1(b)中对轨迹点1进行播放,小人图标代表运动目标,将该小人图标显示在轨迹点1处(需要先获取轨迹点1的坐标属性),表明目标运动到了轨迹点1的位置,在一些扩展方案中,还可以同时在地图上显示目标运动到轨迹点1的时间(需要先获取轨迹点1的时间属性)、在轨迹点1处采集到的目标的抓拍图像(需要先获取轨迹点1的图像属性)等信息。在图1(c)和图1(d)中分别对轨迹点2、3进行播放,和图1(b)类似,不再重复阐述。直观上看,小人图标从轨迹点1的位置沿轨迹点2、轨迹点3运动,形成了动画效果。
40.轨迹回放的效果取决于上述动画效果,例如,如前文所述,现有技术中进行轨迹回放的方式是跳跃式地播放各个轨迹点,导致用户观察到的轨迹不连贯,不能很好地反映目标的运动情况。本技术实施例中的轨迹回放方法通过插入辅助轨迹点对这一问题进行了改进,使轨迹的回放效果变得平滑,用户的观看体验也得到提升。
41.图2示出了本技术实施例提供的轨迹回放系统100的一种可能的结构,参照图2,轨迹回放系统100包括图像采集设备110、服务器120以及终端设备130。
42.其中,图像采集设备110可以包括多台,其功能上面已经介绍。图像采集设备110抓拍到运动目标的图像后,可以将其上传给服务器120。这里需要注意,某些图像采集设备110未必知道自身抓拍的图像是否是运动目标的图像,因此关于运动目标的识别也有可能是在服务器120上完成。另外,图像采集设备110除了上传抓拍图像以外,还有可能上传一些额外的信息,例如抓拍时间,图像采集设备110的标识信息、图像采集设备110的位置信息等。
43.服务器120可以有一台或多台,多台服务器120可以形成服务器集群,服务器120可以是实体服务器,也可以是虚拟服务器。服务器120可以根据接收到的抓拍图像以及其他必要的信息,确定运动目标的原始轨迹点,并将由原始轨迹点构成的轨迹点序列(后文中的第二序列)发送给终端设备130,发送方式可以是主动推送,也可以是应终端设备130的请求而发送。关于原始轨迹点和第二序列的概念、以及服务器120如何确定第二序列中的原始轨迹点,在后文还会详细阐述,此处暂不展开。
44.终端设备130可以有一台或多台,终端设备130可以实现为图8示出的电子设备
400。终端设备130接收到服务器120发送的第二序列后,可以在其中插入辅助轨迹点,得到第一序列,然后执行本技术实施例提供的轨迹回放方法,在界面上进行轨迹回放。这里所说的“界面”,可以是网页,也可以是客户端软件的界面,等等。以网页为例,终端设备130可以通过浏览器访问服务器120上的某个地址以获取第二序列,然后根据第二序列的内容渲染出包含回放动画的网页,并将该网页展现给用户。关于辅助轨迹点和第一序列的概念、以及终端设备130如何根据第一序列进行轨迹回放,在后文还会详细阐述,此处暂不展开。
45.可以理解,图2所示的结构仅为示意,轨迹回放系统100还可以包括比图2中所示更多或者更少的组件。
46.图3示出了本技术实施例中的一种轨迹回放方法的流程,该方法可以由上述轨迹回放系统100中的终端设备130执行,后文也主要以此种情况为例进行介绍。但需要说明的是,轨迹回放方法的执行并不依赖于轨迹回放系统100,例如,在一种实现方式中,终端设备130并未与服务器120、图像采集设备110构成系统,但终端设备130本地已经预先存储有通过某些渠道获得的第一序列,则可以直接在终端设备130本地执行轨迹回放方法。
47.参照图3,轨迹回放方法包括:
48.步骤s210:接收对目标轨迹进行回放的轨迹回放指令。
49.运动目标在运动过程中可能形成多条轨迹,目标轨迹可以是其中的任意一条轨迹,即轨迹回放指令中指定要进行回放的轨迹。
50.轨迹回放指令可能是在用户的界面操作触发下生成的,例如,用户点击图5中的开始播放按钮、重新播放按钮等都可能触发轨迹回放指令的生成。当然轨迹回放指令也可能通过其他方式产生,例如,可以由用户直接输入,可以由终端设备130自动生成,等等。
51.步骤s220:根据轨迹回放指令,按照第一序列中的轨迹点的位置在地图上依次显示运动目标。
52.第一序列是由多个轨迹点构成的、代表目标轨迹的序列,第一序列中的轨迹点包括原始轨迹点和辅助轨迹点。
53.原始轨迹点可以认为是目标轨迹中本来就包含的轨迹点,“本来”可以理解为目标轨迹的轨迹形态刚确定下来时。仅靠第一序列中的原始轨迹点也能够代表目标轨迹,辅助轨迹点的作用主要是改善目标轨迹的回放效果。
54.第一序列中的原始轨迹点之间是有序的(该顺序和原始轨迹点在目标轨迹中的顺序一致),如果直接播放第一序列中的原始轨迹点(相当于按照原始轨迹点对目标轨迹进行回放),则按照其在第一序列中的顺序依次进行播放,但如前所述,此时回放效果不佳,原始轨迹点之间存在明显的跳跃感。
55.可选的,第一序列可以实现为一个轨迹点数组,该数组中原始轨迹点的顺序就是数组元素的下标顺序。在后文中,经常会出现“第一序列中相邻的原始轨迹点”的概念,应当理解,此处的“相邻”是指按照第一序列中的排序相邻,比如,数组下标0和数组下标4的原始轨迹点之间没有间隔其他原始轨迹点,因此二者是相邻的,等等。对于后文中的“第二序列中相邻的原始轨迹点”可以作类似理解。
56.第一序列中的原始轨迹点允许有重复的点,因为运动目标很可能会多次出现在同一位置。
57.原始轨迹点的属性,除了上面已经提到过的之外,还有一项可能的属性是轨迹形
态信息。比如,第一序列中依次包含轨迹点1、轨迹点2、

、轨迹点5共5个原始轨迹点,轨迹点1和轨迹点2之间是直线轨迹,轨迹点2和轨迹点3之间是二次曲线轨迹,则轨迹点1可以包含轨迹形态信息1,用于描述轨迹点1和2之间直线轨迹,轨迹点2可以包含轨迹形态信息2,用于描述轨迹点2和3之间二次曲线轨迹,等等。概括来说,轨迹形态信息这项属性可用于对目标轨迹中的各个轨迹片段的形态进行描述,其内容可以包括轨迹的类型(如直线、二次曲线)、轨迹的参数(如直线、二次曲线的系数),等等。如果原始轨迹点的属性中均未包含轨迹形态信息,则说明原始轨迹点之间可以采用默认的轨迹形态,比如直线轨迹,此时目标轨迹在地图上的显示效果如图1(a)所示。
58.辅助轨迹点是为了使目标轨迹的播放效果变得平滑而后插入到第一序列中的轨迹点,其在第一序列中的插入位置在相邻的原始轨迹点之间。刚刚提到,第一序列中的原始轨迹点之间是有序的,在插入了辅助轨迹点之后,第一序列中的轨迹点仍然是有序的。
59.另外,所插入的辅助轨迹点在地图上的位置应当处于第一序列中相邻的原始轨迹点之间的目标轨迹上。该限制条件确保了辅助轨迹点的插入不会影响目标轨迹的形态,即在插入辅助轨迹点之前目标轨迹的形态是怎样的,在插入辅助轨迹点之后还是怎样的。设置该条件是合理的,因为本技术的方案仅仅是要改变轨迹回放的平滑性,而并非要改变轨迹的形态。
60.在一种实现方式中,可以按照如下方式插入辅助轨迹点:
61.步骤a:获取由原始轨迹点构成的第二序列。
62.步骤b:在第二序列中相邻的原始轨迹点之间插入辅助轨迹点,得到第一序列。
63.步骤a中的第二序列包含了第一序列中全部的原始轨迹点,并且这些原始轨迹点在第二序列中的顺序和其在第一序列中的顺序也是一致的,都与这些原始轨迹点在目标轨迹中的顺序一致,从这个意义上讲,也可以认为第二序列是第一序列的一种原始形态。如果直接按照第二序列中的原始轨迹点进行目标轨迹的回放,动画将存在明显的跳跃感,用户体验不佳。
64.根据上面对轨迹回放系统100的阐述,第二序列可以在服务器120上生成,终端设备130在执行步骤a时,从服务器120处获取第二序列,之后终端设备130执行步骤b。关于第二序列的生成方式,在后文再进行阐述。
65.对于步骤b,举例来说,第二序列为[p1,p2,p3,p4,p5],其中p1~p5分别表示轨迹点1~5,插入辅助轨迹点后得到的第一序列是[p1,q1,q2,q3,p2,q4,p3,q5,q6,q7,q8,q9,q
10
,q
11
,p4,q
12
,q
13
,q
14
,q
15
,p5]。其中,原始轨迹点p1和p2之间插入了辅助轨迹点q1~q3,原始轨迹点p2和p3之间插入了辅助轨迹点q4,p3和p4之间插入了辅助轨迹点q5~q
11
,原始轨迹点p4和p5之间插入了辅助轨迹点q
12
~q
15

[0066]
在第二序列中的任意两个相邻的原始轨迹点之间插入辅助轨迹点的方法都是类似的,但是否要在第二序列中每两个相邻的原始轨迹点之间都插入辅助轨迹点,以及在第二序列中每两个相邻的原始轨迹点之间插入的辅助轨迹点的数量,都应当根据需求确定。
[0067]
例如,若第二序列中某两个相邻的原始轨迹点之间本就距离很近,其播放效果本就不存在跳跃,可以不插入或者少插入辅助轨迹点;若第二序列中某两个相邻的原始轨迹点之间距离很远,其播放效果存在跳跃,可以在二者之间多插入辅助轨迹点。
[0068]
又例如,插入更多的辅助轨迹点虽然可以使得播放效果更加平滑,但计算这些辅
助轨迹点的位置也需要消耗更多的计算资源、存储这些辅助轨迹点的位置也需要消耗更多的存储资源,并且播放轨迹点不同于播放视频,用户本身对动画的平滑度一般并没有过高的要求,因此也不是辅助轨迹点插入得越多越好。
[0069]
进一步的,所插入的辅助轨迹点的位置应当处于第二序列中相邻的原始轨迹点之间的轨迹上,该限制条件前面已经提到过,目的是为了确保了第一序列中的轨迹点形成的轨迹和第二序列中的轨迹点形成的轨迹具有完全相同的形态,即都是目标轨迹。
[0070]
如果原始轨迹点的属性中包含有轨迹形态信息,根据前文中的阐述,轨迹形态信息会对相邻的原始轨迹点之间的轨迹形态进行描述,从而再结合第二序列中相邻的原始轨迹点的位置,就可以计算出辅助轨迹点的位置。如果原始轨迹点的属性中未包含轨迹形态信息,根据前文中的阐述,此时的轨迹形态是默认的(比如直线轨迹),从而同样可以计算出辅助轨迹点的位置。
[0071]
例如,若第二序列对应图1(a),则在插入辅助轨迹点后的显示效果如图4(a)所示。其中,黑色的圆圈表示辅助轨迹点,不难看出,黑色的圆圈全部位于第二序列原来对应的轨迹上。
[0072]
进一步的,假设图4(a)中的轨迹点1~5是根据抓拍图像所确定的运动目标真实出现的位置,由于辅助轨迹点仅仅是为了使得轨迹的播放效果更加平滑而添加的,所以不一定是运动目标真实出现的位置。如果将辅助轨迹点呈现给用户,可能会引起用户的困扰,使得用户难以确定运动目标真实出现的位置到底是哪些。因此,可选的,虽然第一序列中包含了辅助轨迹点,但在进行轨迹回放时没有必要将其呈现出来,如图4(b)至图4(c)所示。
[0073]
至于如何区分第一序列中的原始轨迹点和辅助轨迹点,从而进行不同的显示,可以有多种方式:例如,可以为轨迹点专门增设一项属性,用来区分原始轨迹点和辅助轨迹点;又例如,若原始轨迹点均对应有抓拍图像,而辅助轨迹点没有对应的抓拍图像,则通过判断轨迹点的图像属性是否为空,也可以将二者区别开来,等等。
[0074]
需要注意,步骤a和b的执行和步骤s210并没有必然的先后顺序要求,例如,有可能在执行完步骤s210后,终端设备130才执行步骤a和b来获得需要进行回放的第一序列,也有可能在执行步骤s210之前,终端设备130已经通过执行步骤a和b获得了需要进行回放的第一序列。
[0075]
另外,生成第一序列的方式有多种,不一定要像步骤a和b中一样,先生成第二序列,再通过插入辅助轨迹点生成第一序列,也有可能一次性生成第一序列。但后文未便于阐述,主要以先生成第二序列的方式为例进行介绍。
[0076]
在介绍完第一序列的生成方式后,回到步骤s220,步骤s220描述的就是按顺序播放第一序列中的轨迹点的过程。参照图4(b)至图4(d),假设每秒播放第一序列中的一个轨迹点。在第1秒时,将一个代表运动目标的小人图标显示在地图上轨迹点1的位置,如图4(b)所示;在第2秒时,将小人图标显示在地图上位于轨迹点1和2之间的第1个辅助轨迹点的位置(根据前文的阐述,该辅助轨迹点的位置并未在地图上明确示出),大概位于轨迹点1和2之间的1/3处,如图4(c)所示;在第3秒时,将小人图标显示在地图上位于轨迹点1和2之间的第2个辅助轨迹点的位置,大概位于轨迹点1和2之间的2/3处,如图4(d)所示。后续轨迹点的播放过程以此类推,不再详细说明。直观上看,小人图标从轨迹点1的位置出发,经过3个辅助轨迹点移动到轨迹点2,再经过1个辅助轨迹点移动到轨迹点3,

,形成了动画效果。
[0077]
在一些扩展方案中,若第一序列中播放的轨迹点是目标轨迹的原始轨迹点(例如,轨迹点1~5),由于原始轨迹点可能代表目标真实出现的位置,所以此时还可以在地图上显示目标运动到轨迹点的时间(图像采集设备抓拍到目标的时间)、目标的抓拍图像等信息。
[0078]
在另一些扩展方案中,进行轨迹回放时还可以将运动目标已经经过的轨迹进行特殊显示,将其与运动目标尚未经过的轨迹区分开来,便于用户掌握运动目标当前的运动状态。例如,在图4(c)和图4(d)中,对运动目标已经经过的轨迹用加粗的黑色线条进行显示。
[0079]
对比图4(c)、图4(d)以及图1(c),轨迹的形态是相同的,但在现有技术中,仅仅1秒钟时间,小人图标就从轨迹点1移动到了轨迹点2,观看时的跳跃感严重,而在本技术的方案中,由于辅助轨迹点的插入,经过了3秒时间,小人图标才沿着轨迹点1和2之间的直线轨迹移动到二者之间的2/3处,观看时的跳跃感大幅削弱,用户有充分的时间观察目标经过每个轨迹点的过程。
[0080]
综上所述,本技术实施例提供的轨迹回放方法并不是直接利用目标轨迹的原始轨迹点实现目标轨迹的回放,而是利用第一序列来实现目标轨迹的回放,由于第一序列中相邻的原始轨迹点之间插入有辅助轨迹点,且这些辅助轨迹点的位置也都在目标轨迹上,相当于增加了属于目标轨迹的轨迹点数量,因此对目标轨迹进行轨迹回放的显示效果更加平滑,更有利于用户观察目标的运动状态,显著改善了用户体验。下面,在以上实施例的基础上,继续介绍步骤b中插入辅助轨迹点的方法:
[0081]
在一种实现方式中,步骤b可以进一步包括:
[0082]
步骤a:确定相邻的原始轨迹点之间待插入的辅助轨迹点的总数量n。
[0083]
步骤b:根据相邻的原始轨迹点的位置计算n个待插入的辅助轨迹点的位置。
[0084]
步骤c:将步骤b中计算好位置的n个辅助轨迹点插入到相邻的原始轨迹点之间。
[0085]
上述步骤a~c中,“相邻的原始轨迹点”可以是第二序列中的任意两个相邻的原始轨迹点,也就是说对第二序列中每两个相邻的原始轨迹点都执行完步骤a~c后,可以得到第一序列。注意,步骤a计算出的待插入的辅助轨迹点的总数量n也可能是0,此时步骤b和c都无需执行。
[0086]
步骤a~c可以简单概括为:先确定待插入的辅助轨迹点的总数量和每个待插入的辅助轨迹点的位置,再进行轨迹点插入,此种插入辅助轨迹点的方式简单高效。当然,也不排除其他插入辅助轨迹点的方式:例如,事先不确定待插入的辅助轨迹点的总数量,每计算出一个待插入的辅助轨迹点的位置后,将其插入第二序列,直至在满足某种条件时终止插入过程。
[0087]
步骤a中确定待插入的辅助轨迹点的总数量有多种不同的方式,比如:
[0088]
方式1:根据相邻的原始轨迹点在地图上的距离,确定待插入的辅助轨迹点的总数量。
[0089]
轨迹点具有坐标属性,从而,若相邻的原始轨迹点之间的轨迹为直线,则根据二者的坐标就可以计算二者在地图上的距离,若相邻的原始轨迹点之间的轨迹不是直线,则根据二者的坐标再结合相应的轨迹形态信息也可以计算二者在地图上的距离,不过此时计算出的距离不是相邻的原始轨迹点之间的直线距离,而是二者之间的轨迹长度。
[0090]
待插入的辅助轨迹点的总数量和相邻的原始轨迹点在地图上的距离,二者之间可以具有特定的映射关系。以正相关关系为例,因为相邻的原始轨迹点在地图上相距越远,进
行轨迹回放时产生的跳跃感也就越明显,插入更多的辅助轨迹点有利于改善这种跳跃感,而如果相邻的原始轨迹点在地图上相距越近,进行轨迹回放时产生的跳跃感也就越不明显,可以少插入甚至不插入辅助轨迹点,以节约运算存储资源。
[0091]
例如,第二序列中相邻的两个原始轨迹点分别为pi和p
i+1
(i表示轨迹点序号),pi为其中顺序靠前的原始轨迹点,也称为前置原始轨迹点,p
i+1
为其中顺序靠后的原始轨迹点,也称为后置原始轨迹点。假设pi和p
i+1
之间的距离为si,单位距离内需要插入的辅助轨迹点的数量为m(m可以是一个预设值),则pi和p
i+1
之间待插入的辅助轨迹点的数量ni=si×
m(此时步骤a中的n=ni)。
[0092]
又例如,设置如下规则来确定ni:若si<20,则ni=0;若20≤si<50,则ni=1,若50≤si<100,则ni=2,

。其中,20、50、100表示某种度量下的距离值。
[0093]
又例如,图4(a)中辅助轨迹点的数据就是通过方式1确定的。
[0094]
方式2:根据相邻的原始轨迹点之间的时间间隔,确定待插入的辅助轨迹点的总数量。
[0095]
之前提到,轨迹点可以具有时间属性,从而相邻的原始轨迹点之间的时间间隔可以根据二者的时间属性进行计算。
[0096]
待插入的辅助轨迹点的总数量和相邻的原始轨迹点之间的时间间隔,二者之间可以具有特定的映射关系。以正相关关系为例,因为原始轨迹点的时间属性可以代表运动目标出现的时间,如果目标的运动速度相对稳定,相邻的原始轨迹点之间的时间间隔越长,表明二者之间在地图上的距离也越远,从而进行轨迹回放时产生的跳跃感也就越明显,此时插入更多的辅助轨迹点有利于改善这种跳跃感,而如果相邻的原始轨迹点之间的时间间隔越短,表明二者之间在地图上的距离也越近,从而进行轨迹回放时产生的跳跃感也就越不明显,此时可以少插入甚至不插入辅助轨迹点,以节约运算存储资源。
[0097]
从另一种角度来看,在距离恒定的情况下,若相邻的原始轨迹点之间的时间间隔越长,表明运动目标在这两个原始轨迹点之间的运动速度越慢,假设在进行轨迹回放时播放轨迹点的速度是恒定的,插入较多的辅助轨迹点,可以使得这两个原始轨迹点之间的轨迹播放得更慢,即播放效果比较符合目标实际的运动情况;反之,相邻的原始轨迹点之间的时间间隔越短,表明运动目标在这两个原始轨迹点之间的运动速度越快,插入越少的辅助轨迹点,可以使得这两个原始轨迹点之间的轨迹播放得更快,同样比较符合目标实际的运动情况。
[0098]
例如,第二序列中相邻的两个原始轨迹点分别为pi和p
i+1
。假设pi和p
i+1
之间的时间间隔为ti,单位时间内需要插入的辅助轨迹点的数量为k(k可以是一个预设值),则pi和p
i+1
之间待插入的辅助轨迹点的数量ni=ti×
k(此时步骤a中的n=ni)。
[0099]
方式3:根据相邻的原始轨迹点在地图上的距离以及相互之间的时间间隔,确定待插入的辅助轨迹点的总数量。
[0100]
方式3实际上就是方式1与方式2的结合,根据上面的分析,方式3既能够使得轨迹的回放效果更加平滑,又能够使得轨迹在回放时可以在一定程度上再现目标的运动速度,从而更有利于用户对运动目标进行观察。
[0101]
对于步骤b,先考虑相邻的原始轨迹点之间的轨迹为直线轨迹,且辅助轨迹点采用均匀插入的方式,所谓均匀插入,意思是辅助轨迹点应插入到直线轨迹的等分点位置(允许
少量的误差)。
[0102]
例如,第二序列中相邻的两个原始轨迹点分别为pi和p
i+1
,根据步骤a所确定的待插入的辅助轨迹点共有ni个,则可以通过如下方式计算这些辅助轨迹点的位置:
[0103]
步骤b1:计算p
i+1
相对于pi的位置偏移量。假设轨迹点pi在地图上的位置(坐标)为(pi.x,pi.y),轨迹点p
i+1
在地图上的位置为(p
i+1
.x,p
i+1
.y),则二者之间的位置偏移量(dx,dy)=(p
i+1
.x-pi.x,p
i+1
.y-pi.y),其中dx表示x方向上的偏移量,dy表示y方向上的偏移量。
[0104]
步骤b2:根据p
i+1
相对于pi的偏移量计算待插入的辅助轨迹点qj对应的位置偏移量,其中j=1,2,

,ni,计算公式为:(dxj,dyj)=(j
×
dx/ni,j
×
dy/ni)。
[0105]
步骤b3:以pi的位置为基础,在其上叠加待插入的辅助轨迹点qj对应的位置偏移量,得到qj的位置,计算公式为(qj.x,qj.y)=(pi.x+dxj,pi.y+dyj)。
[0106]
其中,步骤b2和步骤b3对于每个待插入的辅助轨迹点都要执行一次,即总共要执行ni次,这样就得到了每个待插入的辅助轨迹点的位置。
[0107]
观察步骤b1~b3可知,直线轨迹有一个优势,只需要知道两个端点(pi和p
i+1
)的位置就可以计算出直线轨迹的各个等分点(即待插入的辅助轨迹点)的位置,而不需要知道直线轨迹的方程,这使得步骤b实施起来比较容易。
[0108]
最为对比的,如果pi和p
i+1
之间的轨迹并非直线,则仅知道两个端点的位置并不能计算出轨迹的等分点位置,还需要结合轨迹形态信息才能计算,这使得步骤b实施起来会比较复杂。
[0109]
进一步的,上面介绍的都是均匀插入的情况,但在插入辅助轨迹点时也可以采用非均匀插入的方式,例如,假设相邻的原始轨迹点之间为直线轨迹,可以在靠近该直线的中点的位置少插入辅助轨迹点,在靠近该直线的端点的位置多插入辅助轨迹点。若采用非均匀插入,除了原始轨迹点的位置、轨迹形态信息以外,可能还要结合具体的插入规则才能计算待插入的辅助轨迹点的位置。
[0110]
进一步的,步骤s220中的地图可能具有不同的显示比例,该显示比例和地图的放大程度正相关:地图的显示比例较大,表明地图被放大的程度较高,此时第二序列中相邻的原始轨迹点在地图上的距离会变远,换句话说,若按照此时地图的显示比例直接对第二序列进行轨迹回放,动画中产生的跳跃感可能会比较严重;反之,若地图的显示比例较小,则代表地图被放大的程度较低(也可以认为是缩小的程度较高),此时第二序列中相邻的原始轨迹点在地图上的距离会变近,换句话说,若按照此时地图的显示比例直接对第二序列进行轨迹回放,动画中产生的跳跃感可能会比较轻,甚至没有明显的跳跃感。
[0111]
因此,在一种实现方式中,可以仅在确定地图的显示比例大于第一阈值时,才执行步骤b,否则可以不执行步骤b,而直接按照第二序列进行目标轨迹的回放。其中,第一阈值代表了足以引起轨迹回放时的跳跃感的地图显示比例的分界线。此种实现方式可以根据地图的缩放程度自适应地决定是否进行辅助轨迹点的插入,从而有利于避免无意义的辅助轨迹点插入,达到节约运算量的效果。
[0112]
可选的,还可以根据地图的显示比例来决定待插入的辅助轨迹点的总数量(或者单位距离、单位时间内待插入的辅助轨迹点的数量),可以类似上面进行分析,不再详细阐述。
[0113]
下面,在以上实施例的基础上,继续介绍如何计算轨迹点的朝向:
[0114]
发明人研究发现,现有技术中在进行轨迹回放时还存在一个缺点,即无法显示运动目标的朝向。参照图1(b)至图1(d),无论播放哪个轨迹点,小人图标的外观都没有任何变化,用户并不能非常直观地看出目标在朝哪个方向移动。作为对比的,参照图4(b)至图4(d),在图4(b)中,小人图标没有明确的朝向,但在4(c)和图4(d)中,小人图标的朝向为向右,这正好与轨迹点2相对于轨迹点1的方向一致。另外,还可以参照图5,小人的图标的朝向为向左,这正好与轨迹点3相对于轨迹点2的方向一致。可见,在本技术方案的某些实施例中,除了显示运动目标的位置之外,还可以对运动目标的朝向进行显示,方便用户更直观地观察目标的运动情况。
[0115]
为显示运动目标的朝向,可以为轨迹点增加朝向这一属性,在播放至某个轨迹点时,只需读取其朝向属性的值,然后按照该值对目标的朝向进行显示即可。
[0116]
不失一般性,假设第二序列中相邻的两个原始轨迹点分别为pi和p
i+1
,根据pi和p
i+1
的位置,可以确定待插入到pi和p
i+1
之间的辅助轨迹点qj(j=1,2,

,ni)的朝向以及p
i+1
的朝向。
[0117]
例如,pi和p
i+1
之间为直线轨迹,待插入的辅助轨迹点的位置按照步骤b1~b3给出的方式进行计算。先考虑只有两种朝向,向左和向右的情况。轨迹点的朝向属性toleft可以取true和false两个值,取true表示向左,取false表示向右。若p
i+1
相对于pi在x方向上的偏移量dx<0(dx在步骤b1中会计算),则表明地图上p
i+1
在pi左边,从而有p
i+1
.toleft=true,又根据辅助轨迹点应插入到轨迹上的规则,qj(j=1,2,

,ni)也都在pi左边,从而有qj.toleft=true(j=1,2,

,ni)。若p
i+1
相对于pi在x方向上的偏移量dx≥0,则表明地图上p
i+1
在pi右边(这里为简单起见,将dx=0的情况也视为右边),从而有p
i+1
.toleft=false,qj.toleft=false(j=1,2,

,ni)。
[0118]
假设p1是第二序列中的首个原始轨迹点(也是第一序列中的首个轨迹点),遍历i所有可能的取值、按照上面给出的方式计算轨迹点的朝向后,第一序列中所有除p1以外的所有轨迹点都具有了toleft属性,在进行轨迹回放时只需根据轨迹点的toleft属性对应地显示运动目标的朝向即可(小人图标的朝向和轨迹点的朝向属性保持一致),如图4(c)和图4(d)所示。至于p1,由于是目标轨迹的起始位置,无法确定运动目标的朝向,可以默认一个朝向,或者也可以保持无朝向状态,如图4(b)所示。
[0119]
需要注意,在图4(c)和图4(d)中,显示运动目标的朝向只影响了小人图标的外观,至于小人图标的位置显示仍遵从前文阐述的方法。
[0120]
上面的例子只讨论了轨迹点的朝向为向左或向右的情况,根据实际需求,轨迹点的朝向也可能为其他值:例如,向上或向下;又例如,左上、左下、右上或右下等。但确定轨迹点的朝向的方式和上面是类似的,都可以通过相邻的原始轨迹点的位置(可能还会结合轨迹形态信息)进行计算,不再详细说明。
[0121]
下面,在以上实施例的基础上,继续介绍有关播放倍速的切换方法:
[0122]
发明人研究发现,现有技术在进行轨迹回放时还存在一个缺点,即不能调整播放速度,例如,只能以每秒一个轨迹点的固定速度播放,不能根据需求调整为每秒播放两个轨迹点或者每两秒播放一个轨迹点。
[0123]
为了使用户能够看清每个目标的运动情况,上述固定的播放速度一般不能设置得太快,但如此一来,在轨迹中包含的轨迹点较多时,轨迹回放的时间会变得很长。但用户往
往并不是对整条轨迹都感兴趣,而是只对其中的部分轨迹片段(或者轨迹点)感兴趣,这就导致用户要花费很长的时间观看轨迹回放过程,才能定位到自己感兴趣的轨迹片段。或者,如果用户要快速定位到自己感兴趣的轨迹片段,必须设置复杂的检索条件(例如,对轨迹点的时间属性、坐标属性进行限定),操作十分不便。
[0124]
为解决上述问题,在一些实现方式中,可以将轨迹回放时的播放速度设置为可调的,以满足用户多样化的轨迹回放需求。例如,步骤s230可以采用如下实现方式:
[0125]
首先,获取播放倍速。播放倍速和播放速度具有对应关系:将某个默认的播放速度认为是1倍速,其他播放速度与该播放速度的比值就是播放倍速。例如,默认的播放速度为1轨迹点/秒,那么2轨迹点/秒就是2倍速,3轨迹点/秒就是3倍速,0.5轨迹点/秒就是0.5倍速,等等。播放倍速有多种可能的获取方式,例如,可以从进行轨迹回放的界面上获取(参照图5的例子),可以从配置文件中读取,等等。
[0126]
然后,根据播放倍速确定第一序列中相邻的轨迹点之间的播放时间间隔。例如,1倍速的播放时间间隔为1秒,2倍速的播放时间间隔为0.5秒,3倍速的播放时间间隔为0.33秒,0.5倍速的播放时间间隔为2秒,等等。
[0127]
最后,按照播放时间间隔依次播放第一序列中的轨迹点。例如,若播放倍速是2倍速,则每播放一个轨迹点后,等待0.5秒,再播放下一个轨迹点;若播放倍速是0.5倍速,则每播放一个轨迹点后,等待2秒,再播放下一个轨迹点。其中,轨迹点播放的显示效果可以认为是瞬间完成的,即一旦开始播放某个轨迹点,运动目标就会立即显示在地图上的该轨迹点位置,从而,上面说的“每播放一个轨迹点后,等待0.5秒”,其计时起点最早可以是开始播放该轨迹点的时刻。
[0128]
以上三个步骤存在不同的执行方式,例如:
[0129]
方式1:在开始回放轨迹之前,获取播放倍速,在轨迹回放的过程中,该播放倍速不能调整,但在轨迹回放完之后可以调整播放倍速,在下次回放轨迹时新的播放倍速生效。
[0130]
方式2:在轨迹回放的过程中,播放倍速可以随时进行调整。此时的轨迹回放过程为:
[0131]
首先,播放第一序列中的首个轨迹点。由于首个轨迹点开始播放的时间不受播放倍速的影响,直接进行播放即可。
[0132]
然后,针对第一序列中除首个以外的每个轨迹点,按照以下步骤进行播放:
[0133]
步骤1:获取当前的播放倍速,并根据当前的播放倍速确定当前的播放时间间隔。第一序列中除首个以外的轨迹点开始播放的时间都可能受播放倍速的影响,而在方式2中播放倍速随时可能发生变化,所以在播放当前的轨迹点之前要先获取当前的播放倍速。例如,当前的播放倍速是1倍速,则当前的播放时间间隔为1秒,当前的播放倍速是2倍速,则当前的播放时间间隔为0.5秒。
[0134]
步骤2:在当前轨迹点的前一轨迹点开始播放后,先等待当前的播放时间间隔,再播放当前的轨迹点。
[0135]
步骤2中的“前一”是指在第一序列中的顺序。“前一轨迹点开始播放后”可以理解为按照前一轨迹点的位置在地图上显示出运动目标后。之前提到,轨迹点播放的显示效果可以认为是在开始播放后的很短时间内完成的,此种显示效果将持续一段时间(即播放时间间隔),直到后续的轨迹点开始播放为止。
[0136]
例如,回放图4(a)中的轨迹,首先播放轨迹点1,小人图标立刻显示在地图上的轨迹点1处,如图4(b)所示;然后播放轨迹点1和2之间的第1个辅助轨迹点,假设此时的播放倍速是2倍速,即当前的播放时间间隔为0.5秒,则图4(b)中的显示效果维持0.5秒后,变化为图4(c)中的显示效果;然后播放轨迹点1和2之间的第2个辅助轨迹点,假设此时的播放倍速被用户调整为5倍速,即当前的播放时间间隔为0.2秒,则图4(c)中的显示效果维持0.2秒后,变化为图4(d)中的显示效果,以此类推。
[0137]
在方式2中,由于播放除首个以外的每个轨迹点前都会获取当前的播放倍速,从而可以支持播放倍速的实时切换,进而用户可以根据自己的观看需求灵活地调整播放倍速,例如,对于不感兴趣的轨迹片段,可以加快播放倍速,对于感兴趣的轨迹片段,可以降低播放倍速。进一步的,在方式2中,每个轨迹点何时播放,只与前一轨迹点何时开始播放以及当前的播放倍速有关,与其他因素均无关,因此计算起来较为简便。
[0138]
图5示出了本技术实施例提供的一种用于轨迹回放的播放器界面,图6则示出了图5中播放器的工作原理。该播放器可以运行在终端设备130上,步骤s210~s230都可以由该播放器执行。下面将结合图5和图6,再回顾一下播放倍速的调整过程,并简要介绍该播放器具有的其他功能。
[0139]
参照图5,播放器界面大致可以分为两部分,上面灰色的部分是显示区域,用于显示地图和轨迹,下面白色的部分是控制面板,面板上设置有各种功能控件,用户可以通过这些控件控制轨迹的回放过程。
[0140]
从左至右,控制面板中的控件依次包括:
[0141]
开始播放按钮:点击后开始轨迹回放。
[0142]
暂停播放按钮(图5中未示出):点击后暂停轨迹回放。暂停播放按钮和开始播放按钮处于同一位置,但二者不会同时显示。点击开始播放按钮后,开始播放按钮将自动变成暂停播放按钮;点击暂停播放按钮后,暂停播放按钮将自动变成开始播放按钮。
[0143]
播放倍速选择框:可供用户选择播放倍速,例如x1表示1倍速、x2表示2倍速,等等。
[0144]
重新播放按钮:无论当前播放进度如何,点击都将重新开始轨迹回放。
[0145]
播放进度条:用于显示及控制轨迹回放的进度。
[0146]
场景切换按钮:对应图5中的f1、f5、上一场景、下一场景共4个按钮,点击后可进行场景切换,其含义稍后再介绍。
[0147]
图6左侧对应图5中的播放器界面,其中示出了开始播放(对应开始播放按钮)、暂停播放(对应暂停播放按钮)以及重新播放(对应重新播放按钮)三项功能,图6右侧则示出了实现这些功能的程序逻辑。下面分别介绍这三项功能:
[0148]
(1)开始播放
[0149]
当用户点击图5中的开始播放按钮后,触发轨迹回放流程,如图6右侧的虚线方框所示,注意图6中的轨迹回放是指在已经获得了第一序列的情况下,对第一序列中的轨迹点进行播放的流程,即步骤s230的内容,而并非图2中的整个轨迹回放方法。
[0150]
为便于阐述,假设第一序列中共有l个轨迹点,分别记为d1,d2,

,d
l
,其中下标表示轨迹点在第一序列中的序号,图6中的播放索引就是指当前正要播放的轨迹点的序号。
[0151]
参照图6,轨迹回放是一个迭代过程。在第一轮迭代中,获取到的播放索引为1,表示当前轮次要播放轨迹点d1,由于1<l,即满足循环控制条件,可以从第一序列中获取有关
d1的信息(例如d1的位置、d1的朝向、d1对应的时间等等),并结合这些信息在播放器的界面上播放轨迹点d1。然后,将播放索引累加1,播放索引变成2,此时可以认为当前的轨迹点已经变成d2,但d2还未开始播放。再然后,获取当前的播放倍速,假设此时的播放倍速是播放器默认的1倍速,则对应的播放时间间隔为1秒。接着,可以设置一个延迟播放任务,延迟时间为1秒,在这1秒时间内,播放器界面上继续播放轨迹点d1,暂不开始第二轮迭代,在到达1秒后,程序流程进入第二轮迭代。
[0152]
在第二轮迭代中,获取到的播放索引为2,表示当前轮次要播放轨迹点d2,由于2<l,即满足循环控制条件,可以从第一序列中获取有关d2的信息,并结合这些信息在播放器的界面上播放轨迹点d2。然后,将播放索引累加1,播放索引变成3,此时可以认为当前的轨迹点已经变成d3,但d3还未开始播放。再然后,获取当前的播放倍速,假设用户在播放d1期间将播放倍速切换成了2倍速,则获取到的当前播放倍速为2倍速,对应的播放时间间隔为0.5秒。接着,可以设置一个延迟播放任务,延迟时间为0.5秒,在这0.5秒时间内,播放器界面上继续播放轨迹点d2,暂不开始第三轮迭代,在到达0.5秒后,程序流程进入第三轮迭代。
[0153]
以此类推,由于每一轮迭代中,播放倍速都会重新获取,所以该轨迹回放流程可以实时响应用户做出的切换播放倍速的行为。
[0154]
在第l轮迭代执行完后,进入第l+1轮迭代,此时获取到的播放索引为l+1,由于l+1>l,即不满足循环控制条件,所以第l+1轮迭代不会完整执行,轨迹回放过程结束,此时可以清除延迟播放任务,并将播放索引重置为1,避免对下次轨迹回放造成影响。
[0155]
(2)暂停播放
[0156]
暂停回放只需清除延迟播放任务,此时相当于延迟时间为无穷大,轨迹回放停留在当前的迭代轮次,不会进入下一轮迭代,从而播放器界面上目标将一致显示在当前轮次要播放的轨迹点位置。
[0157]
(3)重新播放
[0158]
重新播放只需将播放索引设置1,相当于强制回到第一轮迭代,重新开始轨迹回放流程。
[0159]
下面继续介绍图5中的播放进度条,结合图6中的流程,在每一轮迭代中获得播放索引后,根据播放索引和第一序列的长度,可以计算相应的播放进度,并将该进度反映在播放进度条上。
[0160]
可选的,用户还可以拖拽播放进度条上的图标(黑色圆圈)来自主决定播放进度,从而快速定位到自己感兴趣的轨迹片段:例如,用户将图标拖拽至进度条的1/2位置,根据第一序列的长度以及1/2可以计算出对应的播放索引,假设是60,播放器可以直接将播放索引设置为60,然后继续执行图6中的迭代,此时将从当前的轨迹点直接跳到第一序列中的第60个轨迹点开始播放。
[0161]
类似的,用户也可以直接在地图上点击某个轨迹点,假设点击了第一序列中的第60个轨迹点,播放器也会直接将播放索引设置为60,此时将从当前的轨迹点直接跳到第一序列中的第60个轨迹点开始播放,同时根据第一序列的长度以及60可以计算出当前的播放进度为1/2,然后将播放进度条上的图标显示在1/2处。应当理解,即使某种播放器实现中不包含进度条,用户也可以通过直接在地图上点击轨迹点来实现上面阐述的播放效果。下面继续介绍图5中的场景切换按钮,首先说明场景的概念。一个场景,可以理解为具有某种特
定含义一片地理区域,每个场景对应一张地图或者一张地图的一部分。例如,一栋5层建筑,每层楼都是一个场景,对应5张地图;又例如,一个城市中包括4个行政区,每个行政区都是一个场景,对应城市地图的一部分,等等。
[0162]
运动目标很有可能在多个场景中运动,从而形成多条轨迹,即步骤s210中的第一序列可以有多个,每个第一序列对应一个不同的场景,或者说每个不同的场景下包含一个第一序列。
[0163]
同时对不同场景下的第一序列进行轨迹回放并不利于用户观察目标的运动情况,因此在一些实现方式中,采取了同一时刻只回放一个场景下的第一序列的方式,并支持用户进行场景切换,在不影响用户观看自由度的情况下保证了轨迹回放的效果。
[0164]
假设正在进行轨迹回放的场景为当前场景,即目前正按照前面介绍的方法依次播放该场景下的第一序列中的轨迹点。在对当前场景进行轨迹回放的过程中,可以随时接收场景切换指令,场景切换指令指示从当前场景切换至目标场景,场景切换指令可以根据用户操作生成,也可能有其他来源,例如,播放器在播放完当前场景下的第一序列后,自动生成场景切换指令,指示从当前场景切换至下一场景,等等。接收到场景切换指令后,首先需要将当前场景的地图切换为目标场景的地图,然后再以该目标场景下的地图为基础,播放目标场景下的第一序列。
[0165]
参照图5,图5中共包含两个场景,某建筑的1层(f1)和5层(f5),在播放器上对应设置了两个按钮,启动播放器后,默认的当前场景为1层,即按钮f1处于选中状态,此时播放器上显示的是1层的地图,播放的是1层对应的第一序列。若播放过程中用户点击了f5按钮,则播放器生成场景切换指令,指示从1层切换至5层(目标场景),此时播放器上的地图切换为5层的地图,然后在5层的地图上播放5层对应的第一序列。当然,之后用户随时可以再切换回1层的轨迹播放,不再重复阐述。
[0166]
如果有更多的场景,例如某建筑的1~5层对应5个场景,则播放器界面上可以显示一个选择框(类似于播放倍速那样的选择框),供用户快速地选择场景。
[0167]
继续参照图5,除了f1和f5两个按钮以外,播放器上还存在上一场景和下一场景两个按钮,这两个按钮同样用于切换场景,只是切换的方式是依次切换。例如某建筑的1~5层对应5个场景,若当前场景是1层,点击下一场景按钮将切换至2层,再点击下一场景按钮将切换至3层,此时点击上一场景按钮将切换回2层。下面,在以上实施例的基础上,继续介绍第二序列可能的构成以及如何生成第二序列:
[0168]
首先引出路径的概念:路径可以定义为地图中存在的可供实际通行的路线,例如,行人从地图上的a点走到b点所经过的道路就是一条路径,a点和b点之间的连线并非都是路径,比如a点和b点之间可能存在障碍物(栏杆、建筑、工地、湖泊等),行人必须绕开障碍物行走,而不能直接穿过障碍物。
[0169]
在一种实现方式中,第二序列中的原始轨迹点形成的轨迹(即目标轨迹)对应地图中的一条连通各个原始轨迹点的路径。换句话说,在此种实现方式下,确定构成第二序列的原始轨迹点时,要考虑这些原始轨迹点相互连接后能否构成地图中的一条路径。
[0170]
若第二序列中的原始轨迹点形成的目标轨迹对应地图中一条路径,按照上面的方法对该轨迹进行回放,回放效果将更加接近于目标的真实运动情况。试想,若第二序列对应的轨迹穿过了一堵墙,显然大概率并非目标真实的运动轨迹。
[0171]
结合图7说明这一问题,在图7的地图中,网格状的部分表示道路,灰色的矩形表示障碍物。第二序列依次包括以下原始轨迹点:轨迹点1、轨迹点a、轨迹点2、轨迹点3、轨迹点b、轨迹点4、轨迹点c以及轨迹点5。只考虑相邻轨迹点之间为直线轨迹的情况,这些轨迹点所形成的轨迹全部位于地图中的道路上,即属于一条路径。若真的有一个行人想从轨迹点1沿着轨迹点2、3、4走到轨迹点5,很可能会选择这条轨迹,即比较符合目标真实的运动情况。注意,这里所说的“符合”仅仅是概率意义上的,因为图像采集设备110的密度是有限的,不可能通过抓拍完全还原目标的曾经的运动过程。
[0172]
作为对比的,如果图7中的第二序列和图4(b)中一样,只包括轨迹点1~5,则这些轨迹点所形成的轨迹(虚线)将多次穿过障碍物。若真的有一个行人想从轨迹点1沿着轨迹点2、3、4走到轨迹点5,大概率不会选择这条轨迹。
[0173]
进一步的,在以上实施例的基础上,第二序列中的原始轨迹点可以包括两类:第一类原始轨迹点和第二类原始轨迹点。
[0174]
其中,第一类原始轨迹点在地图中的位置对应于拍摄到运动目标的图像采集设备110。这里的“对应”可以这样理解,或者第一类原始轨迹点在地图中的位置就是图像采集设备110的位置,或者第一类原始轨迹点在地图中的位置位于图像采集设备110附近。
[0175]
例如,图7中的黑色三角形为地图中图像采集设备110的位置,轨迹点1、轨迹点2、轨迹点3、轨迹点4以及轨迹点5都是第一类原始轨迹点,其位置在图像采集设备110附近,之所以没有完全和图像采集设备110重合,有多方面的原因:其一,根据上面的阐述,第一类原始轨迹点应当位于图7中的道路上,否则无法构成路径;其二,图像采集设备110拍摄的区域和图像采集设备110安装的位置本来也存在区别,等等。
[0176]
至于第一类原始轨迹点在第二序列中的顺序,则可以根据图像采集设备110拍摄到运动目标的时间先后顺序确定。例如,在图7中,运动目标先后在轨迹点1、轨迹点2、轨迹点3、轨迹点4以及轨迹点5的位置被图像采集设备110抓拍到,所以在第二序列中,这几个轨迹点的先后顺序为:轨迹点1、轨迹点2、轨迹点3、轨迹点4、轨迹点5。
[0177]
第二类原始轨迹点处于地图中能够将各个第一类原始轨迹点连通为一条路径的位置上。例如,轨迹点1和2都是第一类原始轨迹点,行人从轨迹点1出发向右走,然后在第一个路口处向上走可以到达轨迹点2,第二类原始轨迹点a就位于该路口处。
[0178]
在第二序列中,第一类原始轨迹点是必然存在的,但第二类原始轨迹点是可选的,在生成第二序列时,可以先将第一类原始轨迹点包含在其中,然后根据需要决定是否要添加第二类原始轨迹点:若由第一类原始轨迹点形成的轨迹(可以认为是目标轨迹的初始形态)在地图中不存在对应的路径,则可以向第二序列中添加第二类原始轨迹点,使得第一类原始轨迹点和第二类原始轨迹点形成的轨迹(目标轨迹)在地图中存在对应的路径;若由第一类原始轨迹点形成的轨迹在地图中存在对应的路径,则没有必要向第二序列中添加第二类原始轨迹点,此时第二序列中只有第一类原始轨迹点。
[0179]
通过上面的阐述可知,第二类原始轨迹点的主要作用是辅助相邻的第一类原始轨迹点之间形成路径。例如,只考虑相邻轨迹点之间为直线轨迹的情况,第一类原始轨迹点1和2之间不能直接通过直线连接,否则二者之间的轨迹不是一段路径,但在二者之间增设了第二类原始轨迹点a之后,“轨迹点1-轨迹点a”、“轨迹点a-轨迹点2”则能够形成一条折线路径。对于第二类原始轨迹点b、c的情况,可以类似分析。另外,对于第一类原始轨迹点2和
3,由于二者之间的直线轨迹本来就是一段路径,所以二者之间可以不设置第二类原始轨迹点。
[0180]
结合图7可知,第二类原始轨迹点在地图上的位置并不与图像采集设备110相对应,因此也不一定是运动目标真实出现的位置,只能认为是估计出的、运动目标曾经出现的位置。第二类原始轨迹点可能是人工或算法在地图上标注出来的,其位置可以处于路径的分叉或者拐弯处,从而便于连接第一类原始轨迹点以形成地图上的路径。
[0181]
第二类原始轨迹点在第二序列中的位置处于第一类原始轨迹点之间,且第二类原始轨迹点在第二序列中的顺序,为其在连通各个第一类原始轨迹点的路径上出现的顺序。从而,第二序列中的首个和最后一个轨迹点都应当是第一类原始轨迹点。
[0182]
例如,在图7对应第二序列中,轨迹点a位于轨迹点1和2之间,且由于在连通各个第一类原始轨迹点的路径上,这三个轨迹点出现的顺序为“轨迹点1-轨迹点a-轨迹点2”,所以在第二序列中这三个轨迹点的先后顺序为轨迹点1、轨迹点a、轨迹点2。
[0183]
另外,由于第二类原始轨迹点并不对应图像采集设备110,所以其很可能并没有时间属性和图像属性,这也是第二类原始轨迹点与第一类原始轨迹点的主要区别之一。
[0184]
服务器120可以在每次接收到图像采集设备110上传的抓拍信息(例如,抓拍图像、抓拍时间、图像采集设备110的标识、图像采集设备110的位置等)后,根据抓拍信息临时确定出第一类原始轨迹点的位置,然后再根据第一类原始轨迹点的位置结合地图上的路径分布情况临时确定出第二类原始轨迹点的位置,进而形成第二序列,但这样做效率不高。下面介绍通过虚拟轨迹点标注的方法,来提高确定第二序列中的原始轨迹点的效率:
[0185]
虚拟轨迹点为事先通过人工或算法在地图上标记出的轨迹点。每个虚拟轨迹点表示一个候选的原始轨迹点:可能是第一类原始轨迹点的候选,也可能是第二类原始轨迹点的候选。虚拟轨迹点都标记在地图中的路径上(例如,图7中的网格区域),所以从虚拟轨迹点中恰当地选择第二序列中的原始轨迹点,这些原始轨迹点所形成的轨迹必然可以对应地图中的一条路径。
[0186]
具体而言,针对每个图像采集设备,可以在地图上为其标注一个对应的虚拟轨迹点,例如图7中的轨迹点1、轨迹点2、轨迹点3、轨迹点4、轨迹点5、轨迹点f都是对应于图像采集设备的虚拟轨迹点,也不排除距离较近的多个图像采集设备共用一个虚拟轨迹点。
[0187]
这类对应于图像采集设备的虚拟轨迹点可作为第一类原始轨迹点的候选,不妨称为第一类虚拟轨迹点。例如,服务器120接收到图像采集设备110上传的设备标识信息后,根据标识信息与第一类虚拟轨迹点之间的对应关系,就可以很快地从第一类虚拟轨迹点中确定出属于第二序列的第一类原始轨迹点。
[0188]
除了第一类虚拟轨迹点之外,剩余的虚拟轨迹点都可以视为第二类虚拟轨迹点,第二类虚拟轨迹点可作为第二类原始轨迹点的候选。第二类虚拟轨迹点可以结合地图中路径的分布进行标注,比如在路径的分叉或者拐弯处均可以标注第二类虚拟轨迹点。参照图7,轨迹点a、轨迹点b、轨迹点c、轨迹点d、轨迹点e、轨迹点g、轨迹点h都是第二类虚拟轨迹点,其中的轨迹点a、轨迹点b、轨迹点c被选为了第二序列中的第二类原始轨迹点。
[0189]
对于第二序列中任意两个相邻的第一类原始轨迹点,在地图中可能存在多条不同的路径将二者连接,也就是说,若要选择虚拟轨迹点作为这两个相邻的第一类原始轨迹点之间第二类原始轨迹点,可能会存在多种选择。例如,在图7中,从轨迹点1到轨迹点2有两条
路径(这两条路径可以通过人工确定或者通过算法搜索得到),分别是“轨迹点1-轨迹点a-轨迹点2”,以及“轨迹点1-轨迹点g-轨迹点h-轨迹点2”,也就是说,可以选择轨迹点a作为轨迹点1和2之间的第二类原始轨迹点,也可以选择轨迹点g和h作为轨迹点1和2之间的第二类原始轨迹点。
[0190]
如何从第二类虚拟轨迹点中选择第二类原始轨迹点有多种方式。比如,可以按照以下规则选择:使得在地图中,连通相邻的第一类原始轨迹点且经过被选出的第二类虚拟轨迹点的路径,为相邻的第一类原始轨迹点之间的最短路径。若按照此种方式选择,上面的例子应选择轨迹点a作为轨迹点1和2之间的第二类原始轨迹点,因为路径“轨迹点1-轨迹点a-轨迹点2”比“轨迹点1-轨迹点g-轨迹点h-轨迹点2”更短。
[0191]
这种选择第二类原始轨迹点的方式有其合理性:由于运动目标在相邻的第一类原始轨迹点之间的实际轨迹无法获知,可以合理地推断,运动目标会尽可能选择二者之间最短路径行进,从而若要在二者之间选择虚拟轨迹点作为第二类原始轨迹点,可以选择使得相邻的第一类原始轨迹点之间的路径最短的虚拟轨迹点。
[0192]
另外,按照该选择方式,若相邻的第一类原始轨迹点之间本就存在最短路径(例如直线路径),也就没有必要在二者之间插入第二类原始轨迹点了。例如,在图7中,轨迹点2和3之间可以通过直线路径连接,没有必要再选择轨迹点d作为二者之间的第二类原始轨迹点。
[0193]
进一步的,也存在其他选择第二类原始轨迹点的方式,比如采用贪婪算法。例如,对于轨迹点1和2,由于路径“轨迹点1-轨迹点g-轨迹点h-轨迹点2”中的轨迹点g距离轨迹点1更近(相较于轨迹点a),所以推断“轨迹点1-轨迹点g-轨迹点h-轨迹点2”是运动目标经过的真实路径,这样将会选择轨迹点g和h作为轨迹点1和2之间的第二类原始轨迹点。若轨迹点g和轨迹点a距离轨迹点1一样近,就比较两条路径中的下一个虚拟轨迹点与轨迹点g和轨迹点a之间的距离,并选择距离较近者对应的路径,以此类推。
[0194]
最后需要指出,事先在地图中标记虚拟轨迹点不是确定第二类原始轨迹点的必须操作,例如,对于gis地图,其路网信息可以获取,在确定出第一类原始轨迹点在地图上的位置之后,完全可以根据第一类原始轨迹点的位置,结合路网信息,得到第二类原始轨迹点在地图上的位置。
[0195]
图8示出了本技术实施例提供的轨迹回放装置300的功能模块图。参照图8,轨迹回放装置300包括:
[0196]
指令接收模块310,用于接收对目标轨迹进行回放的轨迹回放指令;
[0197]
轨迹回放模块320,用于根据所述轨迹回放指令,按照第一序列中的轨迹点的位置在地图上依次显示运动目标;其中,所述第一序列为多个轨迹点构成的序列,所述多个轨迹点包括所述目标轨迹的原始轨迹点,以及在所述第一序列中位于相邻的原始轨迹点之间的辅助轨迹点,所述辅助轨迹点在所述地图上的位置处于所述相邻的原始轨迹点之间的所述目标轨迹上。
[0198]
在轨迹回放装置300的一种实现方式中,所述装置还包括:轨迹点插入模块,用于:在轨迹回放模块320根据所述轨迹回放指令,按照第一序列中的轨迹点的位置在地图上依次显示运动目标之前,获取由原始轨迹点构成的第二序列;在所述第二序列中相邻的原始轨迹点之间插入辅助轨迹点,得到所述第一序列。
[0199]
在轨迹回放装置300的一种实现方式中,轨迹点插入模块在所述第二序列中相邻的原始轨迹点之间插入辅助轨迹点,包括:确定所述相邻的原始轨迹点之间待插入的辅助轨迹点的总数量n,n为正整数;根据所述相邻的原始轨迹点的位置计算n个待插入的辅助轨迹点的位置;在所第二序列中,将所述n个待插入的辅助轨迹点插入到所述相邻的原始轨迹点之间,得到所述第一序列。
[0200]
在轨迹回放装置300的一种实现方式中,轨迹点插入模块确定所述相邻的原始轨迹点之间待插入的辅助轨迹点的总数量n,包括:根据所述相邻的原始轨迹点在所述地图上的距离,确定待插入的辅助轨迹点的总数量n;和/或,根据所述相邻的原始轨迹点之间的时间间隔,确定待插入的辅助轨迹点的总数量n;其中,所述时间间隔为所述运动目标分别出现在所述相邻的原始轨迹点处的时间差。
[0201]
在轨迹回放装置300的一种实现方式中,所述相邻的原始轨迹点之间的轨迹为直线轨迹,轨迹点插入模块根据所述相邻的原始轨迹点的位置计算n个待插入的辅助轨迹点的位置,包括:根据后置原始轨迹点相对于前置原始轨迹点的位置偏移量、以及待插入的辅助轨迹点的总数量n,按照在所述直线轨迹上均匀插入的方式,计算所述n个待插入的辅助轨迹点相对于所述前置原始轨迹点的位置偏移量;其中,所述前置原始轨迹点为所述相邻的原始轨迹点中顺序靠前的原始轨迹点,所述后置原始轨迹点为所述相邻的原始轨迹点中顺序靠后的原始轨迹点;以所述前置原始轨迹点的位置为基础,在其上分别叠加所述n个待插入的辅助轨迹点对应的位置偏移量,得到所述n个待插入的辅助轨迹点的位置。
[0202]
在轨迹回放装置300的一种实现方式中,轨迹点插入模块还用于:根据后置原始轨迹点相对于前置原始轨迹点的位置偏移量,确定每个待插入的辅助轨迹点的朝向以及所述后置原始轨迹点的朝向;其中,所述前置原始轨迹点为所述相邻的原始轨迹点中顺序靠前的原始轨迹点,所述后置原始轨迹点为所述相邻的原始轨迹点中顺序靠后的原始轨迹点;轨迹回放模块330按照所述第一序列中的轨迹点的位置在地图上依次显示运动目标,包括:按照所述第一序列中的轨迹点的位置和朝向在所述地图上依次显示所述运动目标。
[0203]
在轨迹回放装置300的一种实现方式中,轨迹点插入模块在所述第二序列中相邻的原始轨迹点之间插入辅助轨迹点,得到所述第一序列,包括:在确定所述地图的显示比例大于第一阈值时,在所述第二序列中相邻的原始轨迹点之间插入辅助轨迹点,得到所述第一序列。
[0204]
在轨迹回放装置300的一种实现方式中,轨迹回放模块320按照所述第一序列中的轨迹点的位置在地图上依次显示运动目标,包括:获取播放倍速,根据所述播放倍速确定所述第一序列中相邻的轨迹点之间的播放时间间隔,并按照所述播放时间间隔以及所述第一序列中的轨迹点的位置在所述地图上依次所述显示运动目标。
[0205]
在轨迹回放装置300的一种实现方式中,轨迹回放模块320获取播放倍速,根据所述播放倍速确定所述第一序列中相邻的轨迹点之间的播放时间间隔,并按照所述播放时间间隔以及所述第一序列中的轨迹点的位置在所述地图上依次显示所述运动目标,包括:按照所述第一序列中的首个轨迹点的位置在所述地图上显示所述运动目标;针对所述第一序列中除首个以外的每个轨迹点,执行以下步骤:获取当前的播放倍速,并根据所述当前的播放倍速确定当前的播放时间间隔;当按照当前轨迹点的前一轨迹点的位置在所述地图上显示出所述运动目标后,先等待所述当前的播放时间间隔,再按照所述当前轨迹点的位置在
所述地图上显示所述运动目标。
[0206]
在轨迹回放装置300的一种实现方式中,所述第一序列有多个,每个第一序列对应一个不同的场景,指令接收模块310还用于:接收场景切换指令,所述场景切换指令指示从当前场景切换至目标场景;轨迹回放模块320还用于:根据所述场景切换指令,将所述当前场景的地图切换为所述目标场景的地图,并按照与所述目标场景对应的第一序列中的轨迹点的位置,在所述目标场景的地图上依次显示运动目标。
[0207]
在轨迹回放装置300的一种实现方式中,由所述第二序列中的原始轨迹点形成的所述目标轨迹在所述地图中存在对应的路径。
[0208]
在轨迹回放装置300的一种实现方式中,所述第二序列中的原始轨迹点包括第一类原始轨迹点,所述第一类原始轨迹点在所述地图中的位置对应于拍摄到所述运动目标的图像采集设备,所述第一类原始轨迹点在所述第二序列中的顺序根据所述图像采集设备拍摄到所述运动目标的时间先后顺序确定;若由所述第二序列中的第一类原始轨迹点形成的轨迹在所述地图中不存在对应的路径,则所述第二序列中的原始轨迹点还包括第二类原始轨迹点,所述第二类原始轨迹点处于所述地图中能够将各个第一类原始轨迹点连通为一条路径的位置上,所述第二类原始轨迹点在所述第二序列中位于所述第一类原始轨迹点之间。
[0209]
在轨迹回放装置300的一种实现方式中,所述第二序列中的原始轨迹点均为所述地图上的虚拟轨迹点,所述虚拟轨迹点为标记在所述地图中的路径上的轨迹点;按照以下规则选择所述地图中的虚拟轨迹点,作为所述第二序列中相邻的第一类原始轨迹点之间的第二类原始轨迹点:使得在所述地图中,连通所述相邻的第一类原始轨迹点且经过被选出的虚拟轨迹点的路径,为所述相邻的第一类原始轨迹点之间的最短路径。
[0210]
本技术实施例提供的轨迹回放装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
[0211]
图9示出了本技术实施例提供的电子设备400的一种可能的结构。参照图9,电子设备400包括:处理器410、存储器420以及通信接口430,这些组件通过通信总线440和/或其他形式的连接机构(未示出)互连并相互通讯。
[0212]
其中,处理器410包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器410可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、微控制单元(micro controller unit,简称mcu)、网络处理器(network processor,简称np)或者其他常规处理器;还可以是专用处理器,包括图形处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing unit,简称npu)、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuits,简称asic)、现场可编程门阵列(field programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器410为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
[0213]
存储器420包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(random access memory,简称ram),只读存储器(read only memory,简称rom),可编
程只读存储器(programmable read-only memory,简称prom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),电可擦除可编程只读存储器(electric erasable programmable read-only memory,简称eeprom)等。
[0214]
处理器410以及其他可能的组件可对存储器420进行访问,读和/或写其中的数据。特别地,在存储器420中可以存储一个或多个计算机程序指令,处理器410可以读取并运行这些计算机程序指令,以实现本技术实施例提供的轨迹回放方法。
[0215]
通信接口430包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口430可以包括进行有线和/或无线通信的接口。
[0216]
可以理解,图9所示的结构仅为示意,电子设备400还可以包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。图9中所示的各组件可以采用硬件、软件或其组合实现。电子设备400可能是实体设备,例如服务器、pc机、笔记本电脑、平板电脑、手机等,也可能是虚拟设备,例如虚拟机、容器等。并且,电子设备400也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
[0217]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,这些计算机程序指令被处理器读取并运行时,执行本技术实施例提供的轨迹回放方法。例如,计算机可读存储介质可以实现为图9中电子设备400中的存储器420。
[0218]
本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序指令,这些计算机程序指令被处理器读取并运行时,执行本技术实施例提供的轨迹回放方法。
[0219]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1