CN112308768B - 一种数据处理方法、装置、电子设备以及存储介质 - Google Patents

一种数据处理方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN112308768B
CN112308768B CN202011119962.0A CN202011119962A CN112308768B CN 112308768 B CN112308768 B CN 112308768B CN 202011119962 A CN202011119962 A CN 202011119962A CN 112308768 B CN112308768 B CN 112308768B
Authority
CN
China
Prior art keywords
image
window
angle
data
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.)
Active
Application number
CN202011119962.0A
Other languages
English (en)
Other versions
CN112308768A (zh
Inventor
张凯
罗伦文
谭军胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Zhongke Tongda High New Technology Co Ltd
Original Assignee
Wuhan Zhongke Tongda High New Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Zhongke Tongda High New Technology Co Ltd filed Critical Wuhan Zhongke Tongda High New Technology Co Ltd
Priority to CN202011119962.0A priority Critical patent/CN112308768B/zh
Publication of CN112308768A publication Critical patent/CN112308768A/zh
Application granted granted Critical
Publication of CN112308768B publication Critical patent/CN112308768B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map
    • G06T3/047Fisheye or wide-angle transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,涉及智慧城市技术领域。该方法包括:根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置,提高用户操作效率;在第一窗口中展示第一图像,在第二窗口展示第二图像;获取用户在第二窗口上的控制操作;确定控制操作所对应的偏移角度;根据偏移角度生成第二投影矩阵,以通过控制操作得到第二投影矩阵;根据第二投影矩阵生成小视角下的第二图像并展示,如此提高对图像数据内容的理解效率;再根据第二投影矩阵确定并显示第二图像在第一图像中的位置,提高用户定位图像数据中所关注区域的速度,提升用户体验。

Description

一种数据处理方法、装置、电子设备以及存储介质
技术领域
本申请涉及智慧城市技术领域,具体涉及一种数据处理方法、装置、电子设备以及存储介质。
背景技术
在传统的视频监控中,主要是2D平面图片的展示,但是随着计算机技术的崛起,鱼眼图像在监控行业中的优势越发明显。传统的平面摄像头中只能监控一个方位的场景,但鱼眼摄像头由于拥有更广的视角,能监控到视野更加广阔,这样原本需要多个平面摄像头监控的场地,现在只需要一个鱼眼摄像头就可以解决,大大节约了硬件成本。
由于鱼眼摄像头拥有更广的视角,所拍摄得到的鱼眼图像(图像数据)往往具有很大的畸变,且拍摄得到的鱼眼图像通常通过圆形来展示,不太好理解,需要专业技术人员才能看懂,导致鱼眼图像的应用不能很好的推广开来。
发明内容
本申请实施例提供一种数据处理方法、装置、电子设备以及存储介质,可提高用户操作效率,提高对图像数据内容的理解效率,且提高用户定位图像数据中所关注区域的速度。
本申请实施例提供了一种数据处理方法,包括:
根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置;
通过所述数据展示界面的第一窗口显示大视角下的第一图像,通过所述第二窗口显示小视角下的第二图像;
获取用户在数据展示界面的第二窗口上的控制操作;
确定所述控制操作所对应的偏移角度;
根据所述偏移角度生成第二投影矩阵;
根据第二投影矩阵更新小视角下的第二图像,并在所述第二窗口展示所述第二图像;
根据所述第二投影矩阵确定导航图像,并在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
本申请实施例还提供了一种数据处理装置,包括:
第一确定模块,用于根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置;
图像展示模块,用于通过所述数据展示界面的第一窗口显示大视角下的第一图像,通过所述第二窗口显示小视角下的第二图像;
操作获取模块,用于获取用户在数据展示界面的第二窗口上的控制操作;
第二确定模块,用于确定所述控制操作所对应的偏移角度;
生成模块,用于根据所述偏移角度生成第二投影矩阵;
更新处理模块,用于根据第二投影矩阵更新小视角下的第二图像,并在所述第二窗口展示所述第二图像;
位置处理模块,用于根据所述第二投影矩阵确定导航图像,并在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
本申请实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述处理器和所述存储器相连接,所述一个或多个计算机程序被存储于所述存储器中,并配置为由所述处理器执行上述所述的数据处理方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一种数据处理方法中的步骤。
本申请实施例根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置,即通过本申请实施例确定的第一窗口和第二窗口的大小和位置考虑了用户的历史操作数据,使得第一窗口和第二窗口的大小和位置的确定符合用户操作习惯,提高用户的操作效率;通过数据展示界面的第一窗口展示大视角下的第一图像,通过第二窗口显示小视角下的第二图像,根据用户在数据展示界面的第二窗口上的控制操作,确定控制操作所对应的偏移角度,根据偏移角度生成第二投影矩阵,如此,将用户在第二窗口上的控制操作转换为偏移角度,并根据偏移角度生成第二投影矩阵,以通过控制操作得到第二投影矩阵;根据第二投影矩阵更新小视角下的第二图像,并在第二窗口中显示第二图像,如此,一方面通过控制操作得到第二投影矩阵,实现通过控制操作来控制第二窗口内的第二图像的显示,另一方面,得到的第一图像和第二图像是图像数据在不同视角下的平面图像,可从不同视角来理解图像数据,便于用户对图像数据内容的理解,提高对图像数据内容的理解效率;再根据第二投影矩阵确定导航图像,以在第一窗口内突出显示导航图像,如此,根据导航图像使得用户可以很清晰的知道第二窗口内显示的第二图像,处于第一窗口内显示的第一图像中的哪个位置,以建立不同视角下的图像之间的关联关系,进一步提高对图像数据内容的理解效率,且便于用户调整所观看的区域,便于引导用户快速找到所关注区域,提高用户定位图像数据中所关注区域的速度,提升用户体验;通过第二窗口显示的第二图像,也实现了图像数据的细节展示。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据处理系统的场景示意图;
图2是本申请实施例提供的图像数据展示方法的流程示意图;
图3是本申请实施例提供的图像数据展示方法的子流程示意图;
图4a至图4b是本申请实施例提供的初始界面的示意图;
图5a是本申请实施例提供的初始界面的界面操作效果示意图;
图5b是本申请实施例提供的初始界面的划分效果示意图;
图6是本申请实施例提供的填充初始界面后得到的数据展示界面的示意图;
图7是本申请实施例提供的鱼眼摄像头直接采集的图像数据的示意图;
图8是本申请实施例提供的透视投影的成像原理示意图;
图9是本申请实施例提供的大视角的场景示意图;
图10是本申请实施例提供的小视角的场景示意图;
图11是本申请实施例提供的数据展示界面展示图像的示意图;
图12是本申请实施例提供的确定第二虚拟相机朝向的示意图;
图13是本申请实施例提供的数据处理方法的流程示意图;
图14是本申请实施例提供的确定第二投影矩阵过程中的线程示意图;
图15是本申请实施例提供的数据处理装置的示意性框图;
图16是本申请实施例提供的数据处理装置的另一示意性框图;
图17是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种数据处理方法、装置、电子设备和存储介质。本申请实施例提供的任一种数据处理装置,可以集成在电子设备中。该电子设备包括但不限于智能手机、平板电脑、笔记本电脑、智能电视、智能机器人、个人计算机(PC,Personal Computer)、可穿戴设备、服务器计算机、车载终端,等等。
本申请实施例中的第一图像和第二图像,可以是对普通摄像头(各种平面摄像头等)采集的图像数据进行处理后得到的不同视角下的图像,还可以是对鱼眼摄像头采集的图像数据进行处理后得到的不同视角下的图像。因为鱼眼摄像头采集的图像数据不容易理解,因此,本申请实施例中将以对鱼眼摄像头采集的图像数据进行处理为例进行说明;普通摄像头采集的图像数据的处理一致,将不再赘述。
请参阅图1,是本申请实施例提供的数据处理系统的场景示意图。该数据处理系统包括鱼眼摄像头和电子设备。鱼眼摄像头的数量可以为一个或多个,电子设备也可以为一个或者多个,鱼眼摄像头与电子设备可以直接连接,也可以通过网络连接。鱼眼摄像头与电子设备可以通过有线的方式连接,也可以通过无线的方式连接等。如图1实施例中的鱼眼摄像头与电子设备通过网络连接。
鱼眼摄像头可进行拍摄,以得到鱼眼图像的初始图像数据,并将拍摄的初始图像数据发送至电子设备;电子设备接收鱼眼摄像头拍摄的初始图像数据,在一种情况下,将所接收的初始图像数据直接作为鱼眼摄像头采集的图像数据,在另一种情况下,将所接收的初始图像数据进行校正,以得到鱼眼摄像头采集的图像数据,接着对图像数据进行相应处理并进行数据展示。其中,校正的目的是为了降低或者消除初始图像数据中的畸变。
图2是本申请实施例提供的数据处理方法的流程示意图。该数据处理方法运行于电子设备中,该数据处理方法包括如下步骤:
101,根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置。
其中,历史操作数据可以是用户在数据展示界面上的历史操作数据,还可以是用户在数据展示界面所对应的初始界面上的历史操作数据。为了更好的确定用户操作习惯,降低已确定的数据展示界面上的已有控件对用户操作习惯的影响,以数据展示界面所对应的初始界面上的历史操作数据为准,本申请实施例以初始界面上的历史操作数据为例进行说明。
可根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置,可以理解地,确定的第一窗口和第二窗口的大小和位置考虑了用户的历史操作数据,使得第一窗口和第二窗口的大小和位置的确定符合用户操作习惯,提高用户在数据展示界面上的操作效率。
在一实施例中,根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置的步骤,包括步骤201~205,如图3所示。
201,生成数据展示界面对应的初始界面。
初始界面是与数据展示界面相同尺寸的界面。
具体地,生成数据展示界面对应的初始界面的步骤,包括:获取数据展示界面的显示尺寸;根据数据展示界面的显示尺寸确定初始界面的显示尺寸;根据初始界面的显示尺寸生成数据展示界面的初始界面。
在一些情况下,当数据展示界面存在无效操作区域时,具体地,生成数据展示界面对应的初始界面的步骤,包括:获取数据展示界面中有效操作区域的尺寸和位置,以及数据显示界面的显示尺寸;根据数据展示界面的显示尺寸确定初始界面的显示尺寸;根据初始界面的显示尺寸生成数据展示界面的初始界面;根据有效操作区域的尺寸和位置,确定初始界面内用于采集历史操作数据的有效采集区域的尺寸和位置。其中,无效操作区域指的是数据展示界面上即使操作也不响应该操作的区域。
其中,所生成的初始界面可以为空白界面,如图4a所示;或者所生成的初始界面为包括均匀分布有相同操作单位区域的界面,如图4b所示。其中,单位区域是指初始界面(UI)中可以被操作的最小区域。
202,通过初始界面接收当前用户的历史操作数据。
用户可在初始界面上进行操作,通过初始界面接收当前用户的历史操作数据。其中,历史操作数据可以是预设时间内的操作数据。
203,根据初始界面中各单位区域内被触发的历史操作数据,将初始界面划分为至少两个操作热度不同的显示区域。
初始界面中各单位区域可通过用户手指来触发,也可通过鼠标或激光笔等具有指针的输入设备来触发。触发各单位区域的操作可以是点击操作、双击操作以及长按操作中的至少一种。用户在对初始界面中的各单位区域进行操作后,电子设备即可整合分析所有操作数据以得到历史操作数据。例如,电子设备屏幕上显示的初始界面为空白界面,用户使用鼠标在该空白界面中的任意区域进行点击操作后,电子设备可基于该点击操作分析得到对应的操作数据,如操作位置,若用户在预设时间内持续或间断对该空白界面进行操作,则电子设备可获取到该预设时间内初始界面被触发的历史操作数据,如包括操作次数、操作位置等数据。
得到历史操作数据后,将初始界面划分为至少两个操作热度不同的显示区域。其中,显示区域是指显示界面中相对独立的界面子区域;操作热度是指显示区域被操作的程度,不同显示区域的操作热度可按单位时间内被操作的操作次数计算,也可按操作次数占比计算,例如,20%、80%等。
根据历史操作数据中的操作位置和需独立显示的展示窗口的窗口数量来划分显示区域,根据历史操作数据中的操作次数来确定显示区域的操作热度。如图5a所示,初始界面被触发的操作位置体现为各个圆点的位置,该位置可以换算成初始界面上的坐标信息,如此,各个圆点的位置即为历史操作的操作坐标。假设需显示的展示窗口的窗口数量为三个,则将初始界面划分为3个显示区域,该3个显示区域的位置和大小由历史操作数据中的操作位置来确定。初始界面被触发的操作次数体现为圆点的总数量。如图5b所示,初始界面划分为3个独立显示的显示区域。其中,区域(1)中包括7个被触发的圆点,区域(2)包括3个被触发的圆点,区域(3)包括1个被触发的圆点,对应的操作热度大小关系为:区域(1)大于区域(2),区域(2)>区域(3)。
204,根据图像数据展示功能中的各展示窗口的历史操作频率数据,将各展示窗口标记为操作需求度不同的展示窗口,展示窗口包括第一窗口和第二窗口。
历史操作频率数据是指各展示窗口在预设时长内被操作的频率数,例如,过去24小时内使用次数为5。操作需求度是指各展示窗口需要被操作的程度,不同展示窗口的操作需求度可按单位时间内被操作的操作次数计算,也可按操作次数占比计算,例如20%、80%等。其中,展示窗口包括第一窗口和第二窗口。
电子设备获取图像数据展示中各展示窗口的历史操作频率数据,并根据该历史操作频率数据,将各展示窗口标记为操作需求度不同的展示窗口,确定操作需求度的依据为各展示窗口的历史操作频率数据,历史操作频率数据中的数值越大,表示操作需求度越高,历史操作频率数据中的数值越小,表示操作需求度越低。根据历史操作频率数据,对各展示窗口标记上其专属的操作需求度,便可根据该操作需求度确定各展示窗口在显示界面中所属的显示区域,进而将展示窗口填充至其所属的显示区域,得到对应的数据展示界面。
如独立显示的展示窗口的数量为两个:一个第一窗口和一个第二窗口,第一窗口的操作需求度高于第二窗口。如独立显示的展示窗口的数量为三个:一个第一窗口和两个第二窗口,两个第二窗口分别为第二窗口一和第二窗口二,第一窗口操作需求度高于第二窗口,第二窗口一的操作需求度高于第二窗口二等。需要注意的是,虽然有两个第二窗口,那该两个第二窗口是独立的,所以实质上独立显示的展示窗口的数量为三个。该两个第二窗口后文中都用于显示小视角下的第二图像。
205,根据操作热度和操作需求度的对应关系,在初始界面对应的不同操作热度的显示区域内显示对应操作需求度的展示窗口,得到数据展示界面。
预先设置操作热度和操作需求度的对应关系,并获取预先设置的对应关系。本申请实施例中操作热度和操作需求度的对应关系是高操作热度对高操作需求度、低操作热度对低操作需求度的对应关系。在初始界面对应的不同显示区域内填充对应操作需求度的展示窗口,并显示对应的展示窗口,得到数据展示界面。需要注意的是,该处的数据展示界面上并没有显示任何图像。
请参看图6,为本申请实施例提供的不同显示区域内填充不同展示窗口的界面示意图。该初始界面中显示区域的数量为三个,该三个显示区域的操作热度大小关系为:区域(1)大于区域(2),区域(2)>区域(3)。同时,若各展示窗口的操作需求度大小关系为:第一窗口大于第二窗口一,第二窗口一大于第二窗口二。根据操作热度和操作需求度的对应关系,将第一窗口填充至区域(1),将第二窗口一填充至区域(2),将第二窗口二填充至区域(3)。图6所示的界面,即为填充之后的展示界面。其中,本申请实施例中涉及的是在第二窗口上的控制操作,需要注意的是,在第一窗口上也可以进行控制操作。
根据操作热度和操作需求度的对应关系,在初始界面对应的不同操作热度的显示区域内显示对应操作需求度的展示窗口,展示窗口的确定考虑了操作热度和操作需求度,使得展示窗口符合用户操作习惯,提高界面操作效率。
102,通过数据展示界面的第一窗口显示大视角下的第一图像,通过第二窗口显示小视角下的第二图像。
第一图像是将摄像头采集的图像数据进行处理后得到的,具体地,根据第一投影矩阵和第一图像模型将摄像头采集的图像数据进行处理后得到的。其中,以图像数据为鱼眼摄像头采集的图像数据为例进行说明。
其中,鱼眼摄像头采集的图像数据比平面摄像头拍摄得到的图像包括更多的信息,如若鱼眼摄像头的视角为180度,则拍摄角度刚好为半球,得到的图像以圆形呈现在二维平面上。图7为本申请实施例提供的鱼眼摄像头直接采集得到的初始图像数据的示意图,中间的圆形区域即为鱼眼摄像头拍摄得到的初始图像。图7中鱼眼摄像头朝向天空,所拍摄得到的图像包括天空以及鱼眼摄像头所处位置周围的建筑物、树木等。
需要注意的是,本申请涉及的图像模型等都指的是在虚拟场景中的图像模型。在虚拟场景中,通常需要构建物体坐标系,并在物体坐标系中建立模型(俗称建模)。本申请实施例中建立的第一图像模型为球形;在其他情况下,可根据具体使用场景对应不同形状的图像模型,如长方体,第一图像可以是长方体某个面上对应的视角图像等。以第一图像模型为球形为例进行说明,可以简单理解为第一图像模型是按照经度分为n个圆,每个圆上分配m个点所形成的球形,如n=180,m=30等。需要注意的是,n越大,m越大,所形成的球形越圆。
建立好模型后,可构建投影矩阵。在虚拟场景中,物体(或者模型,在模型上进行纹理贴图后即显示为物体)所在的坐标系称为物体坐标系,相机坐标系是以相机的聚焦中心为原点建立的三维坐标系,还对应有一个世界坐标系。虚拟相机、物体等都处于世界坐标系下。世界坐标系里面的虚拟相机、物体、模型,虚拟相机的广角、仰角、镜头到近平面和远平面的距离等的关系都体现在投影矩阵中。
如图8所示,为本申请实施例提供的透视投影的成像原理图。其中,虚拟相机的镜头到近平面11的距离,即点0和点1之间的距离,虚拟相机的镜头到远平面12的距离,即点0和点2之间的距离。虚拟相机的位置点可简单理解为0点在世界坐标系中的坐标。
第一投影矩阵可通过如下方式确定:获取设置的第一虚拟相机的初始参数,该初始参数包括第一虚拟相机的位置、欧拉角、第一虚拟相机的镜头到投影面(也可称为近平面)的距离、第一虚拟相机的镜头到远平面的距离等;根据第一虚拟相机的初始参数确定第一投影矩阵。如根据第一虚拟相机的初始参数,利用数学库来确定第一投影矩阵,如将第一虚拟相机的初始参数,输入至GLM(OpenGL Mathematics)数据库的对应函数中,利用该函数计算第一投影矩阵。需要注意的是,根据所设置的第一虚拟相机的初始参数确定的第一投影矩阵,也可以理解为初始第一投影矩阵。在本申请实施例中,由于初始第一投影矩阵一直都没有改变,因此第一投影矩阵即为初始第一投影矩阵。
确定了第一图像模型和第一投影矩阵后,根据第一投影矩阵和第一图像模型将鱼眼摄像头采集的图像数据进行处理,得到大视角下的第一图像。具体地,通过CPU将第一投影矩阵、图像数据和第一图像模型拷贝至图形处理器(Graphics Processing Unit,GPU)中,以根据第一投影矩阵、第一图像模型和图像数据,利用图形处理器将图像数据处理为大视角下的第一图像。例如,通过CPU将第一图像模型中的顶点传输至顶点着色器中,将第一图像模型中的纹理坐标拷贝至片元着色器中,并根据图像数据确定纹理坐标所对应的纹理单元,利用GPU进行渲染,得到大视角下的第一图像。
其中,大视角指的是进行渲染后,视野内至少可以看到完整的图像数据的视角。可以简单理解,大视角是将第一虚拟相机放置于第一图像模型外侧的较远处,从而视野内所看到的第一图像模型所对应的完整平面图像的视角。大视角本质上就是把第一图像模型放入至第一虚拟相机的视锥体内所对应的视角。在大视角中,第一虚拟相机位于第一图像模型的外侧。
如图9所示,第一虚拟相机21位于第一图像模型20的外侧,视锥体即为近平面22和远平面23之间的梯形区域,第一图像模型20完全处于视锥体中。该步骤中得到大视角下的第一图像,以便于用户从整体上对图像数据的内容进行理解。
小视角下的第二图像是根据第二投影矩阵和图像数据生成的,具体地,是根据第二投影矩阵、第二图像模型和图像数据生成的。其中,第二图像模型与第一图像模型相同,第二投影矩阵与第一投影矩阵不同。
其中,与第一投影矩阵一样,第二投影矩阵也存在初始第二投影矩阵,即第二投影矩阵的初始值。初始第二投影矩阵可通过如下方式确定:获取设置的第二虚拟相机的初始参数,该初始参数包括第二虚拟相机的位置、欧拉角、第二虚拟相机的镜头到近平面的距离、第二虚拟相机的镜头到远平面的距离等;根据第二虚拟相机的初始参数确定初始第二投影矩阵。该初始第二投影矩阵也可预先进行设定。其中,初始第一投影矩阵和初始第二投影矩阵不相同。第二投影矩阵的值并不一定是初始值,因为会根据用户可在第二窗口上进行控制操作改变该第二投影矩阵的值。
根据第二投影矩阵、第二图像模型和图像数据生成小视角下的第二图像的步骤,包括:通过CPU将第二投影矩阵、图像数据和第二图像模型拷贝至GPU中,以根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像。具体地,通过CPU将第二图像模型中的顶点传输至顶点着色器中,将第二图像模型中的纹理坐标拷贝至片元着色器中,根据图像数据确定纹理坐标所对应的纹理单元,利用GPU进行渲染,生成小视角下的第二图像。
其中,小视角指的是进行渲染后,视野内可以看到局部的图像数据的视角。可以简单理解,小视角是将第二虚拟相机放置于第二图像模型内部,从而视野内所看到的第二图像模型投影后所对应的局部平面图像的视角。
如图10所示,第二虚拟相机31位于第二图像模型30的内部,视锥体即为近平面32和远平面33之间的梯形区域,第二图像模型30的部分处于视锥体中,处于视锥体的部分即为下文中的三维导航区域。第二图像模型30和第一图像模型20相同,在该图中,第一图像模型20和第二图像模型30只是示意而已。
得到大视角下的第一图像,以便于用户从整体上对图像数据的内容进行理解。得到小视角下的第二图像,便于用户从局部上(小视角上)对图像数据的内容进行理解,提高对图像数据内容的理解效率。
如图11所示,为本申请实施例提供的数据展示界面的示意图。数据展示界面40上包括位于数据展示界面左侧的一个第一窗口41和位于第一窗口41右侧的两个第二窗口42。在第一窗口41中的第一显示控件上展示的是第一图像。可参看图7,展示的第一图像与图像数据相对应/一致。若在数据展示界面上,仅有一个第二窗口42,那么在该第二窗口内展示一个小视角下的第二图像。若在数据展示界面上,包括多个第二窗口42,则在多个第二窗口上展示不同小视角下的第二图像。多个第二窗口中,每个第二窗口42所对应的小视角不同,所展示的第二图像也显示为不同的图像。
103,获取用户在数据展示界面的第二窗口上的控制操作。
用户可以在数据展示界面的第二窗口内当前所展示的第二图像进行控制操作,以便于用户查看所关注的区域。该控制操作可以通过用户在第二窗口上进行滑动触摸操作来实现;还可以通过语音方式来实现,如在数据展示界面上检测到语音,并对语音进行识别,得到“向左滑动2cm”等指令,并根据指令来完成控制操作;还可以通过检测用户在第二窗口上的手势,根据手势来实现控制操作等。控制操作的具体实现方式不做具体限定,本申请实施例中以通过滑动触摸操作为例进行说明。
其中,滑动触摸操作所对应的控制操作的事件包括放大缩小事件、单击事件、滑动事件等。放大缩小事件用于放大或者缩小第二窗口内看到的第二图像;单击事件用于在单击后停止自动巡航,或者立刻停止加速度,其中,自动巡航指的是在用户滑动结束后以一个很低速度保持匀速移动;滑动事件用于控制在手指滑动过程中的各种情况。
其中,滑动事件包括BeginDrag、DragMove、EndDrag、DragCancle。BeginDrag与touchesBegan对应,理解为手指按下事件;DragMove与touchesMoved对应,理解为手指移动事件;EndDrag与touchesEnded对应,理解为手指抬起事件;DragCancle与touchesCancelled对应,理解为意外中断事件,比如打电话引起的意外中断。
对于电子设备来说,屏幕对应有一个坐标轴,高度方向(竖直方向)对应y轴,宽度方向(水平方向)对应x轴。因此,在滑动触摸操作时所对应的位置坐标一般包括x轴坐标和y轴坐标,屏幕上的x轴坐标和y轴坐标是物理坐标。(0,0)一般在屏幕的左上角,电子设备屏幕的坐标轴中一般不包括z轴。
在图像模型中,因为openGL中模型的旋转只能绕基轴进行,基轴包括第一基轴、第二基轴、第三基轴,在本申请实施例中,分别对应三维坐标系中的x轴、y轴和z轴。即在openGL中引入z轴,(0,0,0)对应第一窗口(第一窗口中的第一图像)的正中央或者第二窗口的正中央。物体旋转是围绕物体坐标系的基轴旋转,在本申请实施例中,以物体坐标系为右手坐标系,物体坐标系的基轴和世界坐标系的基轴重合为例进行说明。
需要注意的是,在滑动事件中引入了加速器,以触发加速度。在BeginDrag事件中设置不触发加速度,设置开始移动,并记录开始移动时的坐标位置,包括x坐标和y坐标,开始移动时的x坐标和y坐标即为手势滑动时的上次坐标,(last_down_x,last_down_y)。需要注意的是,这里的x坐标和y坐标是屏幕坐标系下的二维坐标。在DragMove事件中获取当前坐标(x,y),在DragMove事件中同样也未触发加速度。在EndDrag时间中设置停止移动,触发加速度(加速衰减)。在DragCancle事件中,设置停止移动、停止触发加速度。
104,确定控制操作所对应的偏移角度。
在一种情况下,确定控制操作所对应的偏移角度,包括:确定控制操作对应的操作距离;将操作距离转换为对应的偏移角度。
由于控制操作是在电子设备上进行,因此控制操作所对应的操作距离包括在第二窗口中水平方向上的第一操作距离和竖直方向上的第二操作距离,也即x轴上的第一操作距离和y轴上的第二操作距离。该第一操作距离和第二操作距离指的是在屏幕坐标系下的操作距离。控制操作所对应的当前坐标为(x,y),控制操作所对应的上次坐标为(last_down_x,last_down_y),则利用当前坐标和上次坐标计算得到第一操作距离和第二操作距离,计算出的第一操作距离和第二操作距离分别为x-last_down_x、y-last_down_y。
确定操作距离后,将操作距离转换为对应的偏移角度。
通过用户在第二窗口上的控制操作来确定第二投影矩阵,这是本申请实施例中确定投影矩阵的核心所在,即是把用户在电子设备屏幕上的手势滑动的操作距离转换为对应的偏移角度。其中,操作距离可包括水平方向上的第一操作距离和竖直方向上的第二操作距离,对应地,偏移角度包括第二图像模型的旋转偏移角度和第二投影矩阵的第二虚拟相机的俯仰偏移角度。具体地,第二图像模型在第三基轴z轴上的旋转偏移角度和第二虚拟相机在第一基轴x轴上的俯仰偏移角度。
具体地,若操作距离包括水平方向上的第一操作距离,对应地,偏移角度包括第二图像模型的旋转偏移角度,将操作距离转换为对应的偏移角度的步骤,包括:确定第一操作距离所对应的第一角度;获取加权系数和上次的旋转偏移角度;根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离对应于第二图像模型的旋转偏移角度。
若操作距离包括竖直方向上的第二操作距离,对应地,偏移角度包括第二投影矩阵对应的第二虚拟相机的俯仰偏移角度,将操作距离转换为对应的偏移角度的步骤,包括:确定第二操作距离所对应的第二角度;根据第二角度确定第二操作距离对应于第二虚拟相机的俯仰偏移角度。
其中,加权系数用来平滑对应的偏移角度。因为每次都是相对上次滑动的距离,来计算对应的偏移角度,比如滑动了50,但这个50是个具体数据;以现实情况中的例子来说,车子跑50米后肯定会滑动的,引入加权系数,就是产生类似的效果,用加权系数把这个滑动的距离给补起来,以平滑对应的偏移角度。
如何将手势滑动的第一操作距离和第二操作距离转换为对应的偏移角度,这是本申请实施例中转换的核心所在。每个窗口对应的显示控件都有对应宽度和高度,对于宽度来说,将显示控件的宽度滑完,相当于把第二图像模型(球体)旋转第一预设角度,如180度;对于高度来说,将显示控件的高度滑完,相当于把第二虚拟相机的俯仰角在一个方向上从最小值调整到最大值或者从最大值调整至最小值。其中,向上的俯仰角(把第二虚拟相机向上偏移,也称为仰角)的最大值为90度-欧拉角/2,最小值为0。其中,欧拉角一般预设为30度。向下的俯仰角(把第二虚拟相机往下偏移,也称为俯角)的最大值和最小值也是一致的,只是方向不同。即俯仰角的最大俯仰角度为90度-欧拉角/2,最小俯仰角度为0。
具体地,确定第一操作距离所对应的第一角度的步骤,包括:获取第二窗口对应的显示控件的宽度和宽度所对应的第一预设角度;根据宽度和第一预设角度,确定第一操作距离所对应的第一角度。确定第二操作距离所对应的第二角度的步骤,包括:获取第二窗口对应的显示控件的高度和高度所对应的第二预设角度;根据高度和第二预设角度,确定第二操作距离所对应的第二角度。
设第二窗口对应的显示控件的宽度为windows_width,第一预设角度为θ1,第二窗口对应的显示控件的高度为windows_height,第二预设角度为θ2。在第一操作距离所对应的第一角度为(x-last_down_x)/(float)windows_width*θ1,第二操作距离所对应的第二角度为(y-last_down_y)/(float)windows_height*θ2
获取加权系数和上次的旋转偏移角度。其中,设加权系数为MOMENTUM_FACTOR,表示灵敏度系数,加权系数越大表示滑动越灵敏,加权系数越小越不灵敏,默认加权系数取值为0.8。设旋转偏移角度为xDragDelta,俯仰偏移角度为yDragDelta。
具体地,根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离所对应的旋转偏移角度的步骤,包括:将上次的旋转偏移角度与加权系数相乘,再加上第一角度,以得到第一操作距离所对应的旋转偏移角度。具体如公式(1)所示。
其中,xDragDelta*MOMENTUM_FACTOR表示第三基轴z轴上的旋转角度的速度加权,滑动的范围越大,加权也就越大。其中,xDragDelta对应的是角度,计算出xDragDelta即已实现把相关的手势上滑动的第一操作距离转化为了旋转偏移角度。
具体地,根据第二角度确定第二操作距离所对应的俯仰偏移角度的步骤,包括:将第二角度作为第二操作距离所对应的俯仰偏移角度。具体如公式(2)所示。
确定了第二操作距离所对应的俯仰偏移角度之后,还需要确定俯仰偏移角度的方向。可根据第二操作距离来确定第二虚拟相机的俯仰角的方向,若第二操作距离即y-last_down_y的值为负,则将第二虚拟相机向上偏移,即确定俯仰角的方向向上;若第二操作距离即y-last_down_y的值为正,则将第二虚拟相机向下偏移,即确定俯仰角的方向向下。其中,可以理解地,屏幕左上角的坐标为(0,0),若第二操作距离为负,则控制操作的手势向上,对应将第二虚拟相机向上偏移;若第二操作距离为正,则控制操作的手势向下,对应将第二虚拟相机向下偏移。如此,实现将手势的滑动触摸方向与第二虚拟相机偏移的方向一致,提升用户体验。
计算得出的(xDragDelta,yDragDelta)是一个相对的偏移角度。至此,实现了将操作距离转换为对应的偏移角度,即第一操作距离转换为旋转偏移角度xDragDelta,第二操作距离转换为俯仰偏移角度yDragDelta,且同时确定了俯仰偏移角度的方向。后面还需要将相对角度转换为绝对角度。
105,根据偏移角度生成第二投影矩阵,第二投影矩阵和第一图像对应的第一投影矩阵不同。
其中,根据偏移角度生成的第二投影矩阵是(更新后的)第二投影矩阵。
其中,投影矩阵(包括第一投影矩阵和第二投影矩阵)对应为MVP矩阵,其中,MVP=perspective*view*model。model矩阵(也称为模型矩阵)对应的是第二图像模型的操作矩阵,主要操作第二图像模型在x、y、z轴上的旋转。view矩阵(也称为视角矩阵)主要对应的是第二虚拟相机的位置、朝向等,perspective矩阵(也称为透视矩阵)对应的是第二虚拟相机的欧拉角、近平面、远平面等信息。其中,需要注意的是,通过调整欧拉角来实现第二图像的放大缩小,欧拉角可调整的范围为[第一角度范围,第二角度范围],如第一角度范围为30度,第二角度范围为90度。
怎么将偏移角度对应到第二投影矩阵中,这也是本申请实施例中确定第二投影矩阵的核心所在:当用户在第二窗口的垂直方向上滑动时,实际上调整的是第二虚拟相机的俯仰角,对应调整的是view矩阵;当用户在第二窗口的水平方向上滑动时,不调整第二虚拟相机,直接将第二图像模型(球形)绕第三基轴z轴旋转,对应调整的model矩阵。
具体地,根据偏移角度生成第二投影矩阵的步骤,包括:根据旋转偏移角度xDragDelta更新model矩阵;根据俯仰偏移角度yDragDelta更新view矩阵;根据model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。其中,perspective矩阵没有发生变化。
那么问题将转换为以下两个问题:(1)怎么改变第二虚拟相机的俯仰角,以根据俯仰角更新view矩阵;以及(2)怎么调整第二图像模型使得第二图像模型绕第三基轴z轴旋转,以更新model矩阵。下面将分别进行描述。
对于第二虚拟相机的俯仰角问题。
通常一个虚拟相机的位置由以下三个参数确定:camera_pos:虚拟相机的位置点;camera_front:虚拟相机的朝向;camera_up:垂直于虚拟相机的朝向。在数据展示界面上初始化后,未在第二窗口上进行控制操作之前,camera_pos、camera_front、camera_up都对应有一个初始值。其中,camera_pos保持初始值不改变,如将camera_pos设置于第二图像模型内部的正中心。现在控制操作触发后,对应有俯仰偏移角度,可以理解为将第二虚拟相机的朝向往上/往下抬了yDragDelta,如此,会导致camera_front发生改变,camera_front发生改变,camera_up也会改变,则view矩阵发生改变。
具体地,根据俯仰偏移角度yDragDelta更新view矩阵的步骤,包括:根据俯仰偏移角度yDragDelta调整第二虚拟相机在第一基轴上的俯仰角度;根据调整后的俯仰角度更新view矩阵。
其中,roll、yaw以及pitch都表示绝对角度。因此本申请实施例中采用roll、yaw以及pitch来表示对应的绝对角度。pitch表示围绕y轴旋转,也叫做偏航角;yaw表示围绕x轴旋转,也叫俯仰角;roll表示围绕z轴旋转,也叫翻滚角。用户在第二窗口上的控制操作本质上改变了翻滚角roll、俯仰角yaw,而偏航角pitch一直是固定的,没有变动,默认偏航角pitch为90度,保证第二虚拟相机一直面向z轴所指的方向。
具体地,根据俯仰偏移角度yDragDelta调整第二虚拟相机在第一基轴上的俯仰角度的步骤,包括:获取上次的俯仰角;将上次的俯仰角加上俯仰偏移角度以得到调整后的俯仰角;将调整后的俯仰角作为第二虚拟相机在第一基轴上的俯仰角度。可按照公式(3)确定调整后的俯仰角:
yaw+=yDragDelta (3)
其中,在将上次的俯仰角加上俯仰偏移角度以得到调整后的俯仰角的步骤之后,还包括:检测调整后的俯仰角是否大于最大俯仰角度,或者调整后的俯仰角是否小于最小俯仰角度;若调整后的俯仰角大于最大俯仰角度,则将调整后的俯仰角设置为最大俯仰角度;若调整后的俯仰角小于最小俯仰角度,则将调整后的俯仰角设置为最小俯仰角度。以避免第二图像出现异常展示,可以理解地,由于图像数据进行纹理映射时只占图像模型对应的整个球体的一半,超过最大俯仰角度会导致视野进入到图像边界的区域为黑色。
如图12所示,为本申请实施例提供的确定第二虚拟相机朝向的示意图。其中,A点为第二虚拟相机的位置camera_pos,AB为第二虚拟相机的朝向camera_front,其中,B点的坐标为(x,y,z)。需要注意是,第二虚拟相机的朝向camera_front在AB这条射线上,AB的长度可以是任意值。为方便计算,假设AB长度为1,且已知偏航角pitch、俯仰角yaw。可按照公式(4)、公式(5)、公式(6)来计算B点的坐标,从而得到第二虚拟相机的朝向camera_front的值。
x=AB×cos(yaw)×cos(pitch) (4)
y=AB×sin(yaw) (5)
z=AB×cos(yaw)×sin(pitch) (6)
计算出第二虚拟相机的朝向camera_front后,可进一步计算camera_up的值。
由于camera_front和camera_up可确定一个平面,而控制操作对应绕y轴上下仰,因此(0,1,0)的点一定在camera_front和camera_up确定的平面上。可设置一个过渡向量up_help以来帮助计算camera_up的值。设up_help为(0,1,0)。
利用过渡向量up_help和计算出的第二虚拟相机的朝向camera_front,以得到第二虚拟相机的右向量right,具体地,将过渡向量up_help和计算出的第二虚拟相机的朝向向量camera_front进行叉乘,再进行归一化,以得到右向量right,根据叉乘的原理,得到的右向量right垂直于第二虚拟相机的朝向camera_front。如glm::vec3 right=glm::normalize(glm::cross(up_help,camera_front)),其中,glm::cross表示叉乘。再利用右向量right和计算出的第二虚拟相机的朝向向量camera_front来得到camera_up的值,具体地,将第二虚拟相机的朝向向量camera_front和右向量right进行叉乘,再进行归一化,以得到camera_up的值。如camera_up=glm::normalize(glm::cross(camera_front,right))。根据叉乘的原理,得到的camera_up垂直于第二虚拟相机的朝向camera_front。
得到camera_pos、camera_front、camera_up之后,利用camera_pos、camera_front、camera_up来确定view矩阵。具体地,调用lookAt函数来实现,view=glm::lookAt(camera_pos,camera_front,camera_up),即可得到view矩阵。
对于第二图像模型如何绕z轴旋转以更新model矩阵的问题。
具体地,根据旋转偏移角度更新model矩阵的步骤,包括:根据旋转偏移角度调整第二图像模型在第三基轴上的旋转角度;根据旋转角度更新model矩阵。
具体地,根据旋转偏移角度xDragDelta调整第二图像模型在第三基轴上的旋转角度的步骤,包括:获取上次的翻滚角;将上次的翻滚角加上旋转偏移角度以得到调整后的翻滚角;将调整后的翻滚角作为第二图像模型在第三基轴上的旋转角度。可按照公式(7)确定调整后的翻滚角:
roll+=xDragDelta (7)
其中,roll表示绕第二图像模型绕z轴旋转的旋转角度。得到翻滚角后,将翻滚角转换为弧度,再调用rotate函数进行旋转,以得到model矩阵。如model=glm::rotate(glm::radians(roll),glm::vec3(0.0f,0.0f,1.0f))*model,其中,glm::radians表示弧度计算函数。
得到了更新后的view矩阵、更新后的model矩阵,根据更新后的view矩阵、更新后的model矩阵和perspective矩阵生成更新后的第二投影矩阵。如此,将用户在第二窗口上的控制操作转换为偏移角度,并根据偏移角度生成第二投影矩阵,以通过控制操作得到第二投影矩阵。
可以理解地,在根据用户在第二窗口上的控制操作(滑动触摸操作)来确定第二投影矩阵中,因为滑动触摸操作会变化,如手指滑动的位置一直在改变,导致控制操作也一直在变化,进而使得第二投影矩阵也在更新。
上述根据用户在第二窗口上的控制操作确定第二投影矩阵的过程中,分别对应有两个线程,一个线程是主线程ui线程,以用于捕捉手势,如捕捉BeginDrag、DragMove、EndDrag、DragCancle等滑动事件,并根据手势滑动确定操作距离,将操作距离转换为对应的偏移角度。另一个线程是gl线程,刷新频率为一秒60帧。gl线程根据偏移角度生成第二投影矩阵。
106,根据第二投影矩阵更新小视角下的第二图像,并在第二窗口展示第二图像。
具体地,根据第二投影矩阵更新小视角下的第二图像,并在第二窗口展示第二图像的步骤,包括:根据第二投影矩阵和第二图像模型,以及图像数据更新小视角下的第二图像,并在第二窗口展示第二图像,其中,第二图像模型和第一图像模型相同。
其中,根据第二投影矩阵和第二图像模型,以及图像数据更新小视角下的第二图像的步骤,包括:通过CPU将第二投影矩阵、图像数据和第二图像模型拷贝至GPU中,以根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像。具体地,通过CPU将第二图像模型中的顶点传输至顶点着色器中,将第二图像模型中可投影至第二投影矩阵的顶点所对应的纹理坐标拷贝至片元着色器中,并根据图像数据确定纹理坐标所对应的纹理单元,利用GPU进行渲染,生成小视角下的第二图像。
生成第二图像后,在第二窗口展示该第二图像。可以理解地,由于第二投影矩阵一直在更新,使得小视角下的第二图像也在更新。
以上步骤中,可在第二窗口内进行控制操作,以根据控制操作控制所显示的第二图像,通过控制操作可以看到小视角下的所有可以看到的区域,方便用户从第二图像中快速定位出所关注区域。可以理解地,若对第二窗口进行控制操作,则第二窗口内显示的第二图像一直在不停的变化。
由于第一图像和第二图像是通过同一个图像模型(第一图像模型和第二图像模型相同)投影在大视角、小视角下,且使用相同的纹理(图像数据)贴图得到的。通过大视角下的第一图像从整体上理解图像数据,通过小视角下的第二图像从局部上理解图像数据,实现图像数据的细节展示。在对小视角下的第二窗口进行控制操作的过程中,小视角下的第二图像一直在不停的变化。且第二图像模型是球形,360度,没有边界,因此,在对第二窗口进行控制操作的过程中,所看到的第二图像很容易出现重复,即出现转圈圈的情况。因此,用户在对第二窗口进行控制时,不知道当前第二窗口上显示的第二图像对应于第一图像中的哪个部分,降低了用户定位所关注区域的速度。本申请实施例通过步骤107来解决该技术问题。
107,根据第二投影矩阵确定导航图像,并在第一窗口内突出显示导航图像,导航图像表示第二图像在第一图像中的位置。
在一种情况下,根据第二投影矩阵确定导航图像,并在第一窗口内突出显示导航图像的步骤,包括:根据第二投影矩阵确定第二图像在第一图像对应的第一图像模型内的三维导航区域;处理三维导航区域,得到导航图像,并在第一窗口内突出显示导航图像。
可以理解地,以上所述的根据投影矩阵(分别为第一投影矩阵和第二投影矩阵)和图像模型(分别为第一图像模型和第二图像模型)来确定的第一图像或者第二图像,是通过透视投影的成像原理所得到的图像。如图8所示,图像模型中在近平面11和远平面12之间的点投影,可以在我们视野内被看到。
根据透视投影的成像原理,我们视野可以看到的部分,其实就是图像模型上的顶点乘以投影矩阵后,落在近平面上的顶点,经过归一化、裁剪、以及纹理贴图最终展现出来的效果。因此,若想确定第二图像对应第一图像模型内的三维导航区域,则可通过逆向思维将问题转换为:确定第一图像模型上的哪些顶点可投影至第二投影矩阵的近平面上,确定这些顶点后,将这些顶点所对应的区域作为三维导航区域,对三维导航区域对应的纹理坐标突出指定显示。进一步的,若想确定第一图像模型上的哪些顶点可投影至第二投影矩阵的近平面上,可通过第二投影矩阵和第一图像模型来确定。
在一种情况下,根据第二投影矩阵确定第二图像在第一图像对应的第一图像模型内的三维导航区域的步骤,包括:根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像在第一图像对应的第一图像模型内的三维导航区域。导航顶点所对应的区域理解为导航顶点所在的区域。
导航顶点理解为第一图像模型中的,可以投影至第二投影矩阵的近平面中的顶点。其中,根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,可通过CPU来执行,具体包括以下步骤:遍历第一图像模型中的每个顶点;从每个顶点(多个顶点)中确定投影至所述第二投影矩阵对应近平面中的导航顶点。
其中,从每个顶点中确定投影至所述第二投影矩阵对应近平面中的导航顶点的步骤,包括:根据第二投影矩阵,确定每个顶点投影后的坐标,如将第一图像模型中的顶点乘以第二投影矩阵后,得到每个顶点投影后的坐标;根据每个顶点投影后的坐标,确定投影至所述第二投影矩阵对应近平面中的导航顶点。其中,根据每个顶点投影后的坐标,确定投影至所述第二投影矩阵对应近平面中的导航顶点的步骤,包括:检测坐标是否在第二投影矩阵对应近平面的范围内;若是,则将该顶点确定为导航顶点;若否,则将该顶点确定为非导航顶点。其中,导航顶点投影到第二投影矩阵的近平面之后可被用户看到,而非导航顶点投用后不可被用户看到。
具体地,若第一图像模型按照经度分为180个圆,每个圆上分配30个点,则CPU遍历第一图像转换模型中的每个顶点,即遍历的顶点数量为180*30,每遍历一个顶点时,根据第二投影矩阵和该顶点,确定该顶点是否为导航顶点。具体地,利用第二投影矩阵和该顶点的顶点坐标进行相乘,以确定该顶点投影后的坐标,若投影后的坐标在第二投影矩阵对应的近平面的范围内,则确定为导航顶点,否则,确定该顶点为非导航顶点。可以理解地,第二投影矩阵确定后,第二投影矩阵所对应的近平面的范围也是确定的。若投影后坐标(x1,y1,z1)中的x1和y1的坐标在[-1,1]的范围内,即-1≦x1≦1,且-1≦y1≦1,则确定投影后的坐标在第二投影矩阵对应的近平面的范围内。确定了导航顶点后,将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。需要注意的是,这里不需要判断z1投影后的坐标,因此近平面是二维的,所有的z轴坐标是相等的。z1投影后的坐标后续会用来做景深,以实现近大远小的效果。
可以简单理解,在第一图像模型外侧,利用第一投影矩阵与第一图像模型的顶点相乘,经过裁剪渲染等后为第一图像;在第二图像模型内部,利用第二投影矩阵与第二图像模型的顶点相乘,经过裁剪渲染等后为第二图像;那么利用内部的第二投影矩阵和第一图像模型相乘之后,就可以得出第一图像模型中的哪些顶点可投影至第二投影矩阵的近平面上,将所得到的顶点作为导航顶点。
具体地,根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,还可通过GPU来执行,具体包括以下步骤:CPU获取第二投影矩阵和第一图像模型;将第二投影矩阵和第一图像模型发送至GPU;GPU根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。
需要注意的是,若根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域是通过GPU来实现的。GPU使用矩阵的方式计算第一图像模型的顶点投影后的坐标,大大提高了处理速度,且减少移动终端的耗电量。可以理解地,若使用CPU来计算,则需要CPU遍历第一图像转换模型中的每个顶点,即遍历的顶点数量为180*30,每遍历一个顶点时,根据第二投影矩阵和该顶点,计算顶点投影后的坐标,因此采用GPU处理提高处理速度,降低移动终端耗电量。另一方面,计算第一图像模型的顶点投影后的坐标,若采用CPU计算,则CPU浮点运算效率不高,导致误差较大;而GPU专门用来处理浮点运算,效率高,如此大大提高了处理的准确度。
确定三维导航区域后,处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。导航图像,表示第二图像在第一图像内的位置。
从上述描述中可知,若用户在第二窗口上进行滑动触摸操作,使得控制操作在变化,根据控制操作确定的第二投影矩阵也同步更新,根据第二投影矩阵生成的第二图像也在更新,对应的三维导航区域也在更新;导航图像表示第二图像在第一图像中的位置信息,即第一窗口中显示的导航图像也一直在更新。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过CPU来执行,具体地,处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:确定导航顶点所对应的纹理坐标;将纹理坐标拷贝至GPU中,以使GPU根据所述纹理坐标通过预设方式处理(即渲染)三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过GPU来执行,具体地,处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:GPU确定了导航顶点后,确定导航顶点所对应的纹理坐标;根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
需要注意的是,若采用CPU来处理,则CPU确定了导航顶点和导航顶点所对应的纹理坐标后,还需将纹理坐标拷贝至GPU中,以使GPU根据所述纹理坐标处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。而若采用GPU处理,GPU直接确定导航顶点和对应的纹理坐标,无需将纹理坐标进行拷贝,节约了CPU到GPU拷贝的大量时间,进一步提高了处理效率,进一步减少移动终端的耗电量。
其中,上述所述的根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:获取三维导航区域预设纹理和第一预设透明度,该三维导航区域预设纹理包括预设颜色或者预设图片;利用GPU根据三维导航区域预设纹理、第一预设透明度、纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。具体地,将纹理坐标所对应的纹理设置为三维导航区域预设纹理,并设置三维导航区域预设纹理的透明度为第一预设透明度;利用GPU根据所设置的纹理渲染三维导航区域。如此,将三维导航区域渲染为三维导航区域预设纹理,且显示的透明度为第一预设透明度,达到突出显示导航图像的目的。
进一步地,将三维导航区域之外的区域作为非三维导航区域,具体地,根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:
获取三维导航区域预设纹理、第一预设透明度,以及第二预设透明度,其中,第二预设透明度小于第一预设透明度,三维导航区域预设纹理为预设颜色或者预设图片;GPU根据三维导航区域预设纹理、第一预设透明度和纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像;利用GPU将非三维导航区域渲染为第二预设透明度。其中,利用GPU根据三维导航区域预设纹理、第一预设透明度和纹理坐标渲染三维导航区域,具体包括:将纹理坐标所对应的纹理设置为三维导航区域预设纹理,并设置三维导航区域预设纹理的透明度为第一预设透明度,利用GPU根据所设置的纹理渲染三维导航区域,以将三维导航区域渲染为三维导航区域预设纹理,且显示的透明度为第一预设透明度。
可以理解地,为了不遮挡第一图像中非三维导航区域所对应的区域,以提高显示效果,将第二预设透明度设置为0.8以下,如可设置第二预设透明度为0。为了突出显示导航图像,可将第一预设透明度设置为(0,1)之间,为了不会将第一图像中导航图像所对应的区域完全覆盖,以提高用户体验,可设置第一预设透明度为0.8。其中,预设颜色可以设置为红色,以突出显示导航图像。
如图11中的左图所示,导航图像43和渲染后的非三维导航区域位于第一图像之上,且当前第一预设透明度不为1,通过导航图像43还可以看到位于导航图像43之下的第一图像对应的部分区域,位于导航图像43之下的第一图像对应的部分区域,与第二图像一致。由于第二预设透明度为0,因此,渲染后的非三维导航区域是透明的,并不能被人眼看到。
在其他的一些情况下,将三维导航区域之外的区域作为非三维导航区域,具体地,根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:
获取三维导航区域预设纹理、第一预设透明度,以及非三维导航区域预设纹理、第二预设透明度,其中,第二预设透明度小于第一预设透明度,三维导航区域预设纹理为第一预设颜色或者第一预设图片,非三维导航区域预设纹理为第二预设颜色或者第二预设图片;利用GPU根据三维导航区域预设纹理、第一预设透明度、纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像;在第一窗口内利用GPU根据非三维导航区域预设纹理、第二预设透明度渲染非三维导航区域。
其中,第一预设透明度、第二预设透明度的设置可参看上文中的描述;三维导航区域预设纹理和非三维导航区域预设纹理可相同,也可不同。将三维导航区域突出显示,将非三维导航区域也利用非三维导航区域预设纹理进行渲染,并设置为第二预设透明度。
上述实施例中区分三维导航区域和非三维导航区域,进一步突出显示导航图像,提高用户体验。
需要注意的是,利用GPU根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤的实现场景可以有多个。
如一个实现场景为,在第一窗口中只存在一个显示控件,通过该显示控件既可以显示导航图像(和渲染后的非三维导航区域),也可以显示第一图像。如该显示控件中包括两个纹理单元:第一纹理单元和第二纹理单元。其中,第一纹理单元用来显示第一图像,第二纹理单元用来显示导航图像(和渲染后的非三维导航区域),第二纹理单元位于第一纹理单元之上。具体地,在数据展示界面的第一窗口展示第一图像的步骤之前,还包括:获取第一窗口的显示控件中的第一纹理单元和第二纹理单元;将第二纹理单元设置于第一纹理单元之上。如此,在数据展示界面第一窗口展示第一图像的步骤,包括:在第一窗口的显示控件中的第一纹理单元内展示第一图像。在第一窗口内突出显示导航图像的步骤,包括:在第一窗口的显示控件中的第二纹理单元内突出显示导航图像(和渲染后的非三维导航区域)。需要注意的是,在该种情况下,在执行通过预设方式处理所述三维导航区域,得到导航图像,并在第一窗口显示控件中的第二纹理单元内突出展示导航图像的步骤的同时,还会同步执行根据第一投影矩阵和第一图像模型将所述第一图像数据渲染为大视角下的第一图像,并在第一窗口显示控件中的第一纹理单元内展示第一图像的步骤。可以理解地,因为第一图像和导航图像是在一个显示控件中进行显示的,因此第一图像和导航图像(和非三维导航区域)会同时被渲染出来,如果仅仅渲染导航图像(和非三维导航区域),那么在第一窗口中将不会显示第一图像,如此达不到本申请的目的。如此,在通过预设方式处理三维导航区域时,既渲染第二纹理单元中的三维导航区域(和非三维导航区域),又渲染第一纹理单元对应的第一图像等。
如另一种实现场景为,在第一窗口中存在两个显示控件,第一显示控件用于显示第一图像,第二显示控件用于显示导航图像(和处理后的非三维导航区域)。具体地,在数据展示界面的第一窗口展示第一图像的步骤之前,还包括:获取第一窗口中的第一显示控件和第二显示控件;将第二显示控件设置于第一显示控件之上。如此,在数据展示界面第一窗口展示第一图像的步骤,包括:在数据展示界面第一窗口的第一显示控件中展示第一图像。在第一窗口内突出显示导航图像的步骤,包括:在第一窗口的第二显示控件中突出显示导航图像(和渲染后的非三维导航区域)。如此,通过两个显示控件分别来显示第一图像以及导航图像(和渲染后的非三维导航区域),分开处理,提高处理效率。如在处理三维导航区域时,只需要渲染第二显示控件上显示的内容即可,无需渲染第一显示控件上显示的内容,减少了电子设备的消耗,提高了处理效率和速度。
如此,通过上述方案将当前第二窗口上显示的第二图像对应于第一图像中的位置(导航图像)进行突出显示,根据导航图像使得用户可以很清晰的知道第二窗口内显示的第二图像,处于第一窗口内显示的第一图像中的哪个位置,以建立不同视角下的图像之间的关联关系,进一步提高对图像数据内容的理解效率,且便于用户调整所观看的区域,便于引导用户快速找到所关注区域,提高用户定位图像数据中所关注区域的速度,提升用户体验。此外,通过第二窗口显示的第二图像,也实现了图像数据的细节展示。本申请实施例中的数据处理方法可应用于更多应用场景。
图13是本申请实施例提供的数据处理方法的流程示意图。该数据处理方法应用于电子设备中,该数据处理方法包括如下步骤。
301,根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置。
302,通过数据展示界面的第一窗口显示大视角下的第一图像,通过第二窗口显示小视角下的第二图像。
303,获取用户在数据展示界面的第二窗口上的控制操作。
304,检测控制操作是否结束。
检测是否触发了EndDrag事件,在该实施例中,EndDrag事件中设置停止移动,设置触发速度衰减,当速度衰减到一个预设阈值触发自动巡航。其中,在滑动过程中会触发速度加权,在EndDrag事件中会触发速度衰减。若检测到触发了EndDrag事件,则确定控制操作结束;若未触发EndDrag事件,则确定控制操作未结束。可以理解地,若控制操作未结束,不会触发自动巡航;若控制操作结束,触发速度衰减,速度衰减到一个预设阈值触发自动巡航。若没有触发速度衰减,则可以认为当前正在滑动触摸操作中,或者没有滑动触摸操作。可以理解地,若触发速度衰减,则对应第二图像模型从最高速度衰减至一个预设阈值后保持匀速运动。其中,衰减原理,简单理解为,在触发EndDrag事件时,xDragDelta达到了最大,之后每间隔一小段时间把xDragDelta进行衰减直至当前衰减值小于预设衰减值后保存匀速运动。
若控制操作未结束,则执行步骤305;若控制操作结束,执行步骤307。
305,确定控制操作所对应的偏移角度。其中,偏移角度包括第二图像模型的旋转偏移角度和第二投影矩阵对应的第二虚拟相机的俯仰偏移角度。
306,根据偏移角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同。
307,获取衰减系数。
衰减系数是预先设定的值,可用MOMENTUM_FACTOR_DECREASE来表示,衰减系数越大衰减越快,默认将衰减系数设置为0.8。
获取衰减系数后,可根据衰减系数生成第二投影矩阵。其中,根据衰减系数生成第二投影矩阵的步骤,包括:根据衰减系数确定旋转衰减角度;根据旋转衰减角度生成第二投影矩阵。下面步骤中将详细描述。
308,根据衰减系数确定旋转衰减角度,以及根据衰减系数确定当前衰减值。
具体地,步骤308,包括:检测当前时间与上次衰减的触发时间之差是否达到预设时间间隔;若是,根据上次的旋转衰减角度和衰减系数确定当前的旋转衰减角度,以及根据上次的衰减值和衰减系数确定当前衰减值。
其中,旋转衰减角度包括第二图像模型的旋转衰减角度,具体为第二图像模型在第三基轴z轴上的旋转衰减角度,旋转衰减角度的初始值即为触发EndDrag事件时所对应的旋转偏移角度xDragDelta,旋转衰减角度用xDragDelta_来表示,理解为把xDragDelta进行衰减。
其中,根据上次的旋转衰减角度和衰减系数确定当前的旋转衰减角度的步骤,包括:将上次的旋转衰减角度和衰减系数相乘,以得到当前的旋转衰减角度,具体如公式(8)所示。
xDragDelta_=xDragDelta_*MOMENTUM_FACTOR_DECREASE (8)
其中,根据上次的衰减值和衰减系数确定当前衰减值的步骤,包括:将上次的衰减值和衰减系数相乘,以得到当前衰减值。
其中,衰减值可用另一个参数来表示,如用momentum_steps来表示,衰减值可用来确定衰减的次数。衰减值的初始值可为100%或者1。
具体地确定当前衰减值可如公式(9)所示。
momentum_steps=momentum_steps*MOMENTUM_FACTOR_DECREASE (9)
309,检测当前衰减值是否小于预设衰减值。
其中,预设衰减值为(0,1)之间的任何一个值,如10%或者0.1。若当前衰减值小于预设衰减值,则不再进行衰减,停止触发速度衰减。若当前衰减值不小于预设衰减值,则继续进行衰减。
若当前衰减值不小于预设衰减值,执行步骤310,若当前衰减值小于预设衰减值,执行步骤311,结束。
310,根据旋转衰减角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同。
具体地,根据旋转衰减角度生成第二投影矩阵的步骤,包括:根据当前旋转衰减角度更新model矩阵;根据更新后的model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。其中,view矩阵是yDragDelta达到最大值是所对应的view矩阵。在触发EndDrag事件时,yDragDelta达到了对应的最大值。
其中,根据当前旋转衰减角度更新model矩阵的步骤,包括:获取上次的翻滚角,将上次的翻滚角加上旋转衰减角度以得到调整后的翻滚角;将调整后的翻滚角作为第二图像模型在第三基轴上的旋转角度。具体地,可按照公式(7)确定调整后的翻滚角。
需要注意的是,由于俯仰范围太小,触发衰减的效果的展现意义不大,因此,在一些情况下,可只触发roll的加速效果,即将xDragDelta每隔预设时间间隔,根据衰减系数进行衰减,yDragDelta不进行衰减。
311,将旋转衰减角度置为预设旋转角度。
其中,预设旋转角度即为自动巡航匀速运动时所对应的旋转角度。如可以将旋转衰减角度直接设置为检测到当前衰减值小于预设衰减值时,所对应的旋转衰减角度。
该实施例中根据用户在第二窗口上的控制操作确定第二投影矩阵的过程中,同样分别对应有两个线程。如图14所示。一个线程是主线程,ui线程,以用于捕捉手势,如捕捉手势的BeginDrag、DragMove、EndDrag、DragCancle等滑动事件,并确定滑动事件所对应的控制操作的操作距离,将操作距离转换为对应的偏移角度。即ui线程用于把屏幕上的控制操作转换为对应的偏移角度。另一个线程是gl线程,刷新频率为一秒60帧。gl线程检测控制操作是否结束(或者是否触发加速度),若控制操作未结束(或者未触发加速度),根据手势滑动确定操作距离,将操作距离转换为对应的操作偏移角度,通过第二图像模型在第三基轴z上的旋转偏移角度,来调整z轴旋转的roll,以调整model矩阵,通过第二虚拟相机在第一基轴上的俯仰偏移角度,来调整yaw角度,以调整view矩阵,根据调整后的model矩阵、调整后的view矩阵和透视矩阵来生成第二投影矩阵,通过第二投影矩阵调整openGL观看视角,以处理为第二图像。gl线程还用于若控制操作结束,获取衰减系数,根据衰减系数确定旋转衰减角度以及当前衰减值,并检测当前衰减值是否小于预设衰减值,若当前衰减值不小于预设衰减值,根据旋转衰减角度生成第二投影矩阵,若当前衰减值小于预设衰减值,则进入自动巡航模式。自动巡航理解为在EndDrag后xDragDelta得到最大值,这个值首先衰减,乘以衰减系数永远也没有办法到0,所以引入了衰减值模拟了从100%衰减到预设衰减值(如10%)的过程,当衰减到预设衰减值后,就以极低的速度保持匀速,这个匀速的过程就是所说的自动巡航。可以理解地,gl线程用于根据获取的角度来生成第二投影矩阵。需要注意的是,在衰减的过程中,若再一次检测到用户的控制操作,会立刻停止衰减,且在停止衰减时的旋转衰减角度上继续结合操作距离做旋转偏移角度的计算。
312,根据第二投影矩阵生成小视角下的第二图像,并在第二窗口展示第二图像。
313,根据第二投影矩阵确定导航图像,并在第一窗口内突出显示导航图像。
需要注意的是,上述实施例中,roll的角度,即第二图像模型在第三基轴z轴的旋转角度最大为360,达到360度后,从0开始重新计算,可通过roll=roll%360来完成。同时需要注意的是,gl线程中的处理流程也可以直接通过CPU来完成。
该实施例中与上述实施例中相同的步骤请参看上文中的对应描述,在此不再赘述。
该实施例中,不仅限定了当控制操作未结束时,直接确定控制操作所对应的操作距离,将操作距离转换为对应的偏移角度,根据偏移角度生成第二投影矩阵;还限定了当控制操作结束时,根据衰减系数确定旋转衰减角度,根据旋转衰减角度来生成第二投影矩阵。如此,当控制操作正在进行时,可得到相应的第二投影矩阵,以根据第二投影矩阵确定三维导航区域,并实时显示导航图像,即实时显示当前第二图像在第一图像中的位置;当控制操作结束后,并不立即停止,而是慢慢衰减直至速度衰减到一个预设阈值,并实时显示当前第二图像在第一图像中的位置,以提高用户体验。
根据上述实施例所描述的方法,本实施例将从数据处理装置的角度进一步进行描述,该数据处理装置具体可以作为独立的实体来实现,也可以集成在电子设备中来实现。
如图15所示,是本申请实施例提供的数据处理装置的结构示意图。该装置可以包括第一确定模块401、图像展示模块402、操作获取模块403、第二确定模块404、生成模块405、更新处理模块406以及位置处理模块407。
第一确定模块401,用于根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置。
在一种情况下,第一确定模块401,具体包括:生成单元、接收单元、界面划分单元、标记单元以及窗口展示单元。
生成单元,用于生成数据展示界面对应的初始界面。在一实施例中,生成单元,具体用于:获取数据展示界面的显示尺寸;根据数据展示界面的显示尺寸确定初始界面的显示尺寸;根据初始界面的显示尺寸生成数据展示界面的初始界面。或者生成单元,具体用于获取数据展示界面中有效操作区域的尺寸和位置,以及数据显示界面的显示尺寸;根据数据展示界面的显示尺寸确定初始界面的显示尺寸;根据初始界面的显示尺寸生成数据展示界面的初始界面;根据有效操作区域的尺寸和位置,确定初始界面内用于采集历史操作数据的有效采集区域的尺寸和位置。
接收单元,用于通过所述初始界面接收所述当前用户的历史操作数据。
界面划分单元,用于根据所述初始界面那种各单位区域内被触发的历史操作数据,将所述数据展示界面划分为至少两个操作热度不同的显示区域;
标记单元,用于根据图像数据展示中的各展示窗口的历史操作频率数据,将各展示窗口标记为操作需求度不同的展示窗口,所述展示窗口包括第一窗口和第二窗口。
窗口展示单元,用于根据操作热度和所述操作需求度的对应关系,在所述数据展示界面的不同操作热度的显示区域内显示对应操作需求度的展示窗口,得到数据展示界面。
图像展示模块402,用于通过数据展示界面的第一窗口显示大视角下的第一图像,通过第二窗口显示小视角下的第二图像。
在一些情况下,数据处理装置还包括第一处理模块、第二处理模块。其中,第一处理模块,用于将摄像头采集的图像数据处理为大视角下的第一图像,具体地,根据第一投影矩阵和第一图像模型将摄像头采集的图像数据处理为大视角下的第一图像。第二处理模块,用于根据第二投影矩阵和图像数据生成小视角下的第二图像,具体地,根据第二投影矩阵、第二图像模型和图像数据生成小视角下的第二图像。
操作获取模块403,用于获取用户在数据展示界面的第二窗口上的控制操作。
第二确定模块404,用于确定控制操作所对应的偏移角度。其中,第二确定模块404,包括:距离确定单元、角度确定单元。其中,距离确定单元,用于确定控制操作对应的操作距离。角度确定单元,用于将操作距离转换为对应的偏移角度。
其中,操作距离包括水平方向上的第一操作距离,对应地,偏移角度包括第二图像模型的旋转偏移角度,角度确定单元,具体用于:确定第一操作距离所对应的第一角度;获取加权系数和上次的旋转偏移角度;根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离对应于第二图像模型的旋转偏移角度。其中,确定第一操作距离所对应的第一角度的步骤,包括:获取第二窗口对应的显示控件的宽度和宽度所对应的第一预设角度;根据宽度和第一预设角度,确定第一操作距离所对应的第一角度。根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离所对应的旋转偏移角度的步骤,包括:将上次的旋转偏移角度与加权系数相乘,再加上第一角度,以得到第一操作距离所对应的旋转偏移角度。
其中,操作距离包括竖直方向上的第二操作距离,对应地,偏移角度包括第二投影矩阵对应的第二虚拟相机的俯仰偏移角度;角度确定单元,具体用于:确定第二操作距离所对应的第二角度;根据第二角度确定第二操作距离对应于第二虚拟相机的俯仰偏移角度。其中,确定第二操作距离所对应的第二角度的步骤,包括:获取第二窗口对应的显示控件的高度和高度所对应的第二预设角度;根据高度和第二预设角度,确定第二操作距离所对应的第二角度。
生成模块405,用于根据偏移角度生成第二投影矩阵,其中,第二投影矩阵和第一图像对应的第一投影矩阵不同。
在一种情况下,生成模块405,包括:模型矩阵更新单元、视角矩阵更新单元、投影矩阵生成单元。其中,模型矩阵更新单元,用于根据旋转偏移角度xDragDelta更新model矩阵。视角矩阵更新单元,用于根据俯仰偏移角度yDragDelta更新view矩阵。投影矩阵生成单元,用于根据model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。
其中,模型矩阵更新单元,具体用于根据旋转偏移角度调整第二图像模型在第三基轴上的旋转角度;根据旋转角度更新model矩阵。视角矩阵更新单元,具体用于根据俯仰偏移角度yDragDelta调整第二虚拟相机在第一基轴上的俯仰角度;根据调整后的俯仰角度更新view矩阵。
更新处理模块406,用于根据第二投影矩阵更新小视角下的第二图像,并在第二窗口展示第二图像。
位置处理模块407,用于根据第二投影矩阵确定导航图像,并在第一窗口内突出显示导航图像,导航图像表示第二图像在第一图像中的位置。
位置处理模块407,包括:区域确定单元、位置处理单元。其中,区域确定单元,用于根据第二投影矩阵确定第二图像在第一图像对应的第一图像模型内的三维导航区域。位置处理单元,用于处理三维导航区域,得到导航图像,并在第一窗口内突出显示导航图像。
其中,区域确定单元,具体用于根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像在第一图像对应的第一图像模型内的三维导航区域。
图16是本申请实施例提供的数据处理装置的结构示意图。该数据处理装置可以包括第一确定模块401、图像展示模块402、操作获取模块403、第二确定模块404、生成模块405、更新处理模块406、位置处理模块407、检测模块408、系数获取模块409、衰减确定模块410以及设置模块411。其中,第一确定模块401、图像展示模块402、操作获取模块403、第二确定模块404、生成模块405、更新处理模块406、位置处理模块407请参看上文中对应的描述,在此不再赘述。本申请实施例仅描述与上述装置实施例中的不同之处。
检测模块408,用于在获取用户在数据展示界面的第二窗口上的控制操作之后,检测控制操作是否结束。
第二确定模块404,还用于若控制操作未结束,确定控制操作所对应的偏移角度。
系数获取模块409,用于若控制操作结束,获取衰减系数。
衰减确定模块410,用于根据衰减系数确定旋转衰减角度,以及根据衰减系数确定当前衰减值。
检测模块408,还用于检测当前衰减值是否小于预设衰减值。
设置模块411,用于若当前衰减值小于预设衰减值,将旋转衰减角度置为预设旋转角度。
生成模块405,还用于若当前衰减值不小于预设衰减值,根据旋转衰减角度生成第二投影矩阵。具体地,根据当前旋转衰减角度更新model矩阵;根据更新后的model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。
具体实施时,以上各个单元/模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上装置和各单元/模块的具体实现过程,以及所达到的有益效果,可以参考前述的方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
本申请实施例还提供一种电子设备,如图17所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、射频(Radio Frequency,RF)电路903、电源904、输入单元905、以及显示单元906等部件。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该电子设备的控制中心,包括中央处理器和图形处理器,中央处理器和图形处理器相连。其中,中央处理器利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,中央处理器可包括一个或多个处理核心;优选的,中央处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解地是,上述调制解调处理器也可以不集成到中央处理器中。图形处理器,主要实现对中央处理器传递过来的数据进行处理,如渲染等。
存储器902可用于存储软件程序(计算机程序)以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
RF电路903可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器901处理;另外,将涉及上行的数据发送给基站。通常,RF电路903包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路903还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
电子设备还包括给各个部件供电的电源904(比如电池),优选的,电源904可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源904还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元905,该输入单元905可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体地实施例中,输入单元905可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器901,并能接收处理器901发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元905还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
该电子设备还可包括显示单元906,该显示单元906可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元906可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器901以确定触摸事件的类型,随后处理器901根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
尽管未示出,电子设备还可以包括摄像头(需要注意的是,该处的摄像头与上述所述的虚拟相机不同,该处的摄像头指的是硬件)、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能,如下:
根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置;通过所述数据展示界面的第一窗口显示大视角下的第一图像,通过所述第二窗口显示小视角下的第二图像;获取用户在数据展示界面的第二窗口上的控制操作;确定所述控制操作所对应的偏移角度;根据所述偏移角度生成第二投影矩阵;根据第二投影矩阵更新小视角下的第二图像,并在所述第二窗口展示所述第二图像;根据所述第二投影矩阵确定导航图像,并在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
该电子设备可以实现本申请实施例所提供的数据处理方法任一实施例中的步骤,因此,可以实现本申请实施例所提供的任一数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令(计算机程序)来完成,或通过指令(计算机程序)控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的数据处理方法中任一实施例的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一数据处理方法实施例中的步骤,因此,可以实现本申请实施例所提供的任一数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种数据处理方法、装置、电子设备以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置;
通过所述数据展示界面的第一窗口显示大视角下的第一图像,通过所述第二窗口显示小视角下的第二图像;
获取用户在数据展示界面的第二窗口上的控制操作;
确定所述控制操作所对应的偏移角度;
根据所述偏移角度生成第二投影矩阵;
根据第二投影矩阵更新小视角下的第二图像,并在所述第二窗口展示所述第二图像;
根据所述第二投影矩阵确定导航图像,并在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
2.根据权利要求1所述的数据处理方法,其特征在于,在所述获取用户在数据展示界面的第二窗口上的控制操作的步骤之后,还包括:
检测所述控制操作是否结束;
若所述控制操作未结束,执行所述确定所述控制操作所对应的偏移角度的步骤;
若所述控制操作结束,获取衰减系数;
根据所述衰减系数生成第二投影矩阵。
3.根据权利要求2所述的数据处理方法,其特征在于,所述根据所述衰减系数生成第二投影矩阵的步骤,包括:
根据所述衰减系数确定旋转衰减角度;
根据所述旋转衰减角度生成第二投影矩阵。
4.根据权利要求1或者2所述的数据处理方法,其特征在于,所述确定所述控制操作所对应的偏移角度的步骤,包括:
确定所述控制操作对应的操作距离;
将所述操作距离转换为对应的偏移角度。
5.根据权利要求4所述的数据处理方法,其特征在于,所述操作距离包括在所述数据展示界面所述第二窗口水平方向上的第一操作距离,所述偏移角度包括所述第二图像对应的第二图像模型的旋转偏移角度;所述将所述操作距离转换为对应的偏移角度的步骤,包括:
确定所述第一操作距离所对应的第一角度;
获取加权系数和上次的旋转偏移角度;
根据上次的旋转偏移角度、所述加权系数和所述第一角度确定所述第一操作距离对应于第二图像模型的旋转偏移角度。
6.根据权利要求4所述的数据处理方法,其特征在于,所述操作距离包括竖直方向上的第二操作距离,所述偏移角度包括所述第二图像对应的第二投影矩阵的第二虚拟相机的俯仰偏移角度,所述将所述操作距离转换为对应的偏移角度的步骤,包括:
确定所述第二操作距离所对应的第二角度;
根据所述第二角度确定所述第二操作距离对应于所述第二虚拟相机的俯仰偏移角度。
7.根据权利要求1所述的数据处理方法,其特征在于,所述根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置的步骤,包括:
生成所述数据展示界面对应的初始界面;
通过所述初始界面接收当前用户的历史操作数据;
根据所述初始界面中各单位区域内被触发的历史操作数据,将所述初始界面划分为至少两个操作热度不同的显示区域;
根据图像数据展示中的各展示窗口的历史操作频率数据,将各展示窗口标记为操作需求度不同的展示窗口,所述展示窗口包括第一窗口和第二窗口;
根据操作热度和所述操作需求度的对应关系,在所述初始界面对应的不同操作热度的显示区域内显示对应操作需求度的展示窗口,得到数据展示界面。
8.一种数据处理装置,其特征在于,包括:
第一确定模块,用于根据历史操作数据确定数据展示界面中的第一窗口和第二窗口的大小和位置;
图像展示模块,用于通过所述数据展示界面的第一窗口显示大视角下的第一图像,通过所述第二窗口显示小视角下的第二图像;
操作获取模块,用于获取用户在数据展示界面的第二窗口上的控制操作;
第二确定模块,用于确定所述控制操作所对应的偏移角度;
生成模块,用于根据所述偏移角度生成第二投影矩阵;
更新处理模块,用于根据第二投影矩阵更新小视角下的第二图像,并在所述第二窗口展示所述第二图像;
位置处理模块,用于根据所述第二投影矩阵确定导航图像,并在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述权利要求1至7任一种数据处理方法中的步骤。
10.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述处理器和所述存储器相连接,所述一个或多个计算机程序被存储于所述存储器中,并配置为由所述处理器执行上述权利要求1至7任一项所述的数据处理方法。
CN202011119962.0A 2020-10-19 2020-10-19 一种数据处理方法、装置、电子设备以及存储介质 Active CN112308768B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011119962.0A CN112308768B (zh) 2020-10-19 2020-10-19 一种数据处理方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011119962.0A CN112308768B (zh) 2020-10-19 2020-10-19 一种数据处理方法、装置、电子设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112308768A CN112308768A (zh) 2021-02-02
CN112308768B true CN112308768B (zh) 2023-09-08

Family

ID=74328271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011119962.0A Active CN112308768B (zh) 2020-10-19 2020-10-19 一种数据处理方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112308768B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116014901B (zh) * 2023-03-24 2023-06-06 四川航洋电力工程设计有限公司 基于数字孪生技术实现输变电设备工作状态监控方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107564089A (zh) * 2017-08-10 2018-01-09 腾讯科技(深圳)有限公司 三维图像处理方法、装置、存储介质和计算机设备
JP2018206205A (ja) * 2017-06-07 2018-12-27 村田機械株式会社 魚眼画像補正方法、魚眼画像補正プログラム及び魚眼画像補正装置。
CN109242769A (zh) * 2018-12-13 2019-01-18 腾讯科技(深圳)有限公司 一种图像处理方法和装置
CN109640070A (zh) * 2018-12-29 2019-04-16 上海曼恒数字技术股份有限公司 一种立体显示方法、装置、设备及存储介质
CN110944164A (zh) * 2018-09-24 2020-03-31 英特尔公司 使用相机的平面阵列的沉浸式观看

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201101152A (en) * 2009-06-30 2011-01-01 Avisonic Technology Corp Light pointing touch panel display device and related touch panel detecting method
US9007432B2 (en) * 2010-12-16 2015-04-14 The Massachusetts Institute Of Technology Imaging systems and methods for immersive surveillance
WO2017122552A1 (ja) * 2016-01-15 2017-07-20 ソニー株式会社 画像処理装置および方法、プログラム、並びに画像処理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018206205A (ja) * 2017-06-07 2018-12-27 村田機械株式会社 魚眼画像補正方法、魚眼画像補正プログラム及び魚眼画像補正装置。
CN107564089A (zh) * 2017-08-10 2018-01-09 腾讯科技(深圳)有限公司 三维图像处理方法、装置、存储介质和计算机设备
CN110944164A (zh) * 2018-09-24 2020-03-31 英特尔公司 使用相机的平面阵列的沉浸式观看
CN109242769A (zh) * 2018-12-13 2019-01-18 腾讯科技(深圳)有限公司 一种图像处理方法和装置
CN109640070A (zh) * 2018-12-29 2019-04-16 上海曼恒数字技术股份有限公司 一种立体显示方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112308768A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
EP3955212A1 (en) Shadow rendering method and apparatus, computer device and storage medium
EP3779883A1 (en) Method and device for repositioning in camera orientation tracking process, and storage medium
US20200302670A1 (en) Image processing method, electronic device, and storage medium
EP4006844A1 (en) Image rendering method and related device
CN111813290B (zh) 一种数据处理方法、装置以及电子设备
US9311565B2 (en) 3D scanning with depth cameras using mesh sculpting
CN111833243B (zh) 一种数据展示方法、移动终端和存储介质
CN112017133B (zh) 一种图像展示方法、装置及电子设备
EP3832605B1 (en) Method and device for determining potentially visible set, apparatus, and storage medium
CN111760288A (zh) 虚拟三维场景中方位显示方法、装置、终端和存储介质
CN112150560B (zh) 确定消失点的方法、装置及计算机存储介质
CN111445563B (zh) 一种图像生成的方法以及相关装置
CN112308768B (zh) 一种数据处理方法、装置、电子设备以及存储介质
CN109146775B (zh) 二维图片转换方法、装置、设备及存储介质
CN112884873B (zh) 虚拟环境中虚拟物体的渲染方法、装置、设备及介质
CN112308767B (zh) 一种数据展示方法、装置、存储介质以及电子设备
CN112308766B (zh) 一种图像数据展示方法、装置、电子设备及存储介质
CN112181230A (zh) 一种数据展示方法、装置以及电子设备
CN112306344B (zh) 一种数据处理方法及移动终端
CN112308757B (zh) 一种数据展示方法和移动终端
CN112184543B (zh) 一种用于鱼眼摄像头的数据展示方法和装置
CN112184801A (zh) 一种用于鱼眼摄像头的数据展示方法和移动终端
CN111083377A (zh) 拍摄方法及电子设备
CN112465692A (zh) 图像处理方法、装置、设备及存储介质
JP7465976B2 (ja) 衝突範囲決定方法並びにその、装置、機器、及びコンピュータプログラム

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