CN111813290A - 一种数据处理方法、装置以及电子设备 - Google Patents

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

Info

Publication number
CN111813290A
CN111813290A CN202010942202.3A CN202010942202A CN111813290A CN 111813290 A CN111813290 A CN 111813290A CN 202010942202 A CN202010942202 A CN 202010942202A CN 111813290 A CN111813290 A CN 111813290A
Authority
CN
China
Prior art keywords
image
angle
projection matrix
window
model
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
Application number
CN202010942202.3A
Other languages
English (en)
Other versions
CN111813290B (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 CN202010942202.3A priority Critical patent/CN111813290B/zh
Publication of CN111813290A publication Critical patent/CN111813290A/zh
Application granted granted Critical
Publication of CN111813290B publication Critical patent/CN111813290B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

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

Description

一种数据处理方法、装置以及电子设备
技术领域
本申请涉及智慧城市技术领域,具体涉及一种数据处理方法、装置以及电子设备。
背景技术
在传统的视频监控中,主要是2D平面图片的展示,但是随着计算机技术的崛起,鱼眼图像在监控行业中的优势越发明显。传统的平面摄像头中只能监控一个方位的场景,但鱼眼摄像头由于拥有更广的视角,能监控到视野更加广阔,这样原本需要多个平面摄像头监控的场地,现在只需要一个鱼眼摄像头就可以解决,大大节约了硬件成本。
由于鱼眼摄像头拥有更广的视角,所拍摄得到的鱼眼图像(图像数据)往往具有很大的畸变,且拍摄得到的鱼眼图像通常通过圆形来展示,不太好理解,需要专业技术人员才能看懂,导致鱼眼图像的应用不能很好的推广开来。
发明内容
本申请实施例提供一种数据处理方法、装置以及电子设备,可提高对图像数据内容的理解效率,且提高用户定位图像数据中所关注区域的速度。
本申请实施例提供了一种数据处理方法,包括:
获取在数据展示界面的第一窗口中展示的第一图像,该第一图像是根据第一投影矩阵和第一图像模型对鱼眼摄像头采集的图像数据进行处理后得到的大视角下的图像;
获取用户在数据展示界面的第二窗口上的控制操作;
确定控制操作所对应的操作距离;
将操作距离转换为对应的偏移角度,偏移角度包括第二图像模型的旋转偏移角度和第二投影矩阵对应的第二虚拟相机的俯仰偏移角度;
根据偏移角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同;
根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像,第一图像模型和第二图像模型相同;
根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域;
通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像,导航图像表示第二图像在第一图像中的位置。
本申请实施例还提供了一种数据处理装置,包括:
图像获取单元,用于获取在数据展示界面的第一窗口中展示的第一图像,该第一图像是根据第一投影矩阵和第一图像模型对鱼眼摄像头采集的图像数据进行处理后得到的大视角下的图像;
操作获取单元,用于获取用户在数据展示界面的第二窗口上的控制操作;
距离确定单元,用于确定控制操作所对应的操作距离;
角度转换单元,用于将操作距离转换为对应的偏移角度,偏移角度包括第二图像模型的旋转偏移角度和第二投影矩阵对应的第二虚拟相机的俯仰偏移角度;
矩阵生成单元,用于根据偏移角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同;
图像处理单元,用于根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像,第一图像模型和第二图像模型相同;
区域确定单元,用于根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域;
处理展示单元,用于通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
本申请实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述处理器和所述存储器相连接,所述一个或多个计算机程序被存储于所述存储器中,并配置为由所述处理器执行上述所述的数据处理方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一种数据处理方法中的步骤。
本申请实施例通过获取在数据展示界面上展示的第一图像,该第一图像是根据鱼眼摄像头采集的图像数据、第一投影矩阵和第一图像模型处理后得到的大视角下的第一图像,并在第一窗口中显示第一图像,根据用户在数据展示界面的第二窗口上的控制操作,确定控制操作所对应的操作距离,将操作距离转换为对应的偏移角度,该偏移角度包括第二图像模型的旋转偏移角度和所述第二投影矩阵对应的第二虚拟相机的俯仰偏移角度,根据偏移角度生成第二投影矩阵,如此,将用户在第二窗口上的控制操作转换为偏移角度,并根据偏移角度生成第二投影矩阵,以通过控制操作得到第二投影矩阵;根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口中显示第二图像,如此,一方面通过控制操作得到第二投影矩阵,实现通过控制操作来控制第二窗口内的第二图像的显示,另一方面,得到的第一图像和第二图像是图像数据在不同视角下的平面图像,可从不同视角来理解图像数据,便于用户对图像数据内容的理解,提高对图像数据内容的理解效率;再根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域,通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像,如此,根据导航图像使得用户可以很清晰的知道第二窗口内显示的第二图像,处于第一窗口内显示的第一图像中的哪个位置,以建立不同视角下的图像之间的关联关系,进一步提高对图像数据内容的理解效率,且便于用户调整所观看的区域,便于引导用户快速找到所关注区域,提高用户定位图像数据中所关注区域的速度,提升用户体验;通过第二窗口显示的第二图像,也实现了图像数据的细节展示。本申请实施例中的数据处理方法可应用于更多应用场景。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据处理方法的系统场景示意图;
图2是本申请实施例提供的数据处理方法流程示意图;
图3是本申请实施例提供的鱼眼摄像头采集的图像数据的示意图;
图4是本申请实施例提供的顶点坐标和纹理坐标的示意图;
图5是本申请实施例提供的透视投影的成像原理示意图;
图6是本申请实施例提供的数据展示界面的示意图;
图7是本申请实施例提供的确定第二虚拟相机朝向的示意图;
图8是本申请实施例提供的数据处理方法的流程示意图;
图9是本申请实施例提供的根据控制操作确定第二投影矩阵过程中的线程示意图;
图10a和图10b是本申请实施例提供的数据处理方法另一流程示意图;
图11是本申请实施例提供的数据处理装置的示意性框图;
图12是本申请实施例提供的数据处理装置的另一示意性框图;
图13是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种数据处理方法、装置、电子设备和存储介质。本申请实施例提供的任一种数据处理装置,可以集成在电子设备中。该电子设备包括但不限于智能手机、平板电脑、笔记本电脑、智能电视、智能机器人、个人计算机(PC,Personal Computer)、可穿戴设备、服务器计算机、车载终端,等等。
请参阅图1,是本申请实施例提供的数据处理系统的场景示意图。该数据处理系统包括鱼眼摄像头和电子设备。鱼眼摄像头的数量可以为一个或多个,电子设备也可以为一个或者多个,鱼眼摄像头与电子设备可以直接连接,也可以通过网络连接。鱼眼摄像头与电子设备可以通过有线的方式连接,也可以通过无线的方式连接等。如图1实施例中的鱼眼摄像头与电子设备通过网络连接,其中,网络中包括路由器、网关等网络实体。
鱼眼摄像头可进行拍摄,以得到鱼眼图像的初始图像数据,并将拍摄的初始图像数据发送至电子设备;电子设备接收鱼眼摄像头拍摄的初始图像数据,在一种情况下,将所接收的初始图像数据直接作为鱼眼摄像头采集的图像数据,在另一种情况下,将所接收的初始图像数据进行校正,以得到鱼眼摄像头采集的图像数据,接着对图像数据进行相应处理并进行数据展示。
图2是本申请实施例提供的数据处理方法的流程示意图。该数据处理方法运行于电子设备中,该数据处理方法包括如下步骤:
101,获取在数据展示界面的第一窗口中展示的第一图像,该第一图像是根据第一投影矩阵和第一图像模型对鱼眼摄像头采集的图像数据进行处理后得到的大视角下的图像。
具体地,步骤101,包括:获取鱼眼摄像头采集的图像数据;根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像;在数据展示界面的第一窗口展示第一图像。
由于鱼眼摄像头的视角更广,所以鱼眼摄像头拍摄得到的图像比平面摄像头拍摄得到的图像包括更多的信息。鱼眼摄像头拍摄角度为类似半球形,得到的图像通过类似圆形等来表示,如若鱼眼摄像头的视角为180度,则拍摄角度刚好为半球,得到的图像以圆形呈现在二维平面上。
图3为本申请实施例提供的鱼眼摄像头直接采集得到的初始图像数据的示意图,中间的圆形区域即为鱼眼摄像头拍摄得到的初始图像。图3中鱼眼摄像头朝向天空,所拍摄得到的图像包括天空以及鱼眼摄像头所处位置周围的建筑物、树木等。
鱼眼摄像头直接采集的初始图像数据可以预先保存在电子设备中,以直接从电子设备中获取鱼眼摄像头采集的初始图像数据;也可以保存在其他电子设备中,通过网络从其他电子设备中获取鱼眼摄像头采集的初始图像数据;还可以通过网络从鱼眼摄像头实时获取所拍摄的初始图像数据,如图1所示。如此,步骤101中的获取鱼眼摄像头采集的图像数据,可理解为获取鱼眼摄像头直接采集的初始图像数据,即图3所示的初始图像数据。
在一些情况下,为了达到更好的展示效果,需要对鱼眼摄像头直接采集的初始图像数据进行进一步的处理。具体地,获取鱼眼摄像头采集的图像数据的步骤,包括:对鱼眼摄像头进行数据标定;获取鱼眼摄像头拍摄得到的初始图像数据;根据数据标定的结果,对所获取的初始图像数据进行校正,将校正后的图像数据作为鱼眼摄像头采集的图像数据。
可以理解地,摄像头成像模型设计的时候会有理论参数,但不同的厂家经过点胶、烘烤等工艺之后,组装引入误差,会导致每个鱼眼镜头对应的参数都不一样。为了解决鱼眼摄像头硬件之间的差异性带来的影响,以及保证展示效果的精准性,对鱼眼摄像头进行数据标定。鱼眼摄像头厂家在鱼眼摄像头量产之前需要先对鱼眼摄像头进行标定,并提供标定接口,用户在购买鱼眼摄像头后,通过标定接口输入标定参数,以对鱼眼摄像头进行标定。数据标定的主要目的是为了得到鱼眼镜头对应的参数,以寻找图3所示的初始图像数据中的圆形区域。由于鱼眼摄像头硬件差异性,每个不同的鱼眼摄像头拍摄得到的初始图像数据中,圆形区域在图像中的位置是不同的。
对鱼眼摄像头进行数据标定后,根据数据标定的结果,对初始图像数据进行校正。如采用经纬法对初始图像数据进行校正,或者采用其他的方法对初始图像数据进行校正,将校正后的图像数据作为鱼眼摄像头采集的图像数据。校正的目的是为了降低或者消除初始图像数据中的畸变。如将图3所示的圆形区域的图像转换为一个2:1的长方形的图像,以降低或消除初始图像数据中的畸变。
进一步地,将校正后的图像数据转换为纹理单元,以便后续进行纹理映射。
获取鱼眼摄像头采集的图像数据后,根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像。
在虚拟场景中,通常需要构建物体坐标系,并在物体坐标系中建立模型(俗称建模)。本申请实施例中建立第一图像模型,该第一图像模型为球形;在其他情况下,可根据具体使用场景对应不同形状的图像模型。
以下将以第一图像模型为球形为例进行说明,可以简单理解为第一图像模型是按照经度分为n个圆,每个圆上分配m个点所形成的球形,如n=180,m=30等。需要注意的是,n越大,m越大,所形成的球形越圆。
通过OpenGL所建立的第一图像模型中包括多个点,每个点用 [ (x,y,z) (u,v) ]表示,其中(x,y,z) 表示顶点坐标,(u,v)表示纹理坐标。顶点坐标(x,y,z)是三维空间坐标,决定了物体的形状;(u,v)是二维坐标,确定去纹理单元的什么位置去提取纹理。需要注意的是,为了统一度量,顶点坐标和纹理坐标都采用了归一化的方法,如将顶点坐标统一映射到[-1,1]上,将纹理坐标统一映射到[0,1]上。同时需要注意的是,顶点坐标和纹理坐标所采用的坐标系是不同的。
如图4所示,为顶点坐标和纹理坐标的示意图。其中,A、B、C、D为模型上的四个点,该四个点的顶点坐标和纹理坐标分别为A [ (-1,-1,0) (0,0.5) ] ,B [ (1,-1,0) (0.5,0.5) ],C[ (-1,0,0) (0,1) ],D [ (1,0,0) (0.5,1) ]。
建立好模型后,可构建投影矩阵。在虚拟场景中,物体(或者模型,在模型上进行纹理贴图后即显示为物体)所在的坐标系称为物体坐标系,相机坐标系是以虚拟相机的聚焦中心为原点构建的坐标系,还对应有一个世界坐标系。虚拟相机、物体等都处于世界坐标系下。世界坐标系里面的虚拟相机、物体、模型,虚拟相机的广角、俯仰角、镜头到近平面和远平面的距离等的关系都体现在投影矩阵中。
第一投影矩阵可通过如下方式确定:获取设置的第一虚拟相机的初始参数,该初始参数包括第一虚拟相机的位置、欧拉角、第一虚拟相机的镜头到投影面(也可称为近平面)的距离、第一虚拟相机的镜头到远平面的距离等;根据第一虚拟相机的初始参数确定第一投影矩阵。如根据第一虚拟相机的初始参数,利用数学库来确定第一投影矩阵,如将第一虚拟相机的初始参数,输入至GLM数据库(openGL Mathematics,openGL数学库)的对应函数中,利用该函数计算第一投影矩阵。需要注意的是,根据所设置的第一虚拟相机的初始参数确定的第一投影矩阵,也可以理解为初始第一投影矩阵。在本申请实施例中,由于初始第一投影矩阵一直都没有改变,因此第一投影矩阵即为初始第一投影矩阵。
如图5所示,为本申请实施例提供的透视投影的成像原理图。其中,镜头到近平面11的距离,即点0和点1之间的距离,镜头到远平面12的距离,即点0和点2之间的距离。虚拟相机的位置包括0点在世界坐标系中的坐标、虚拟相机的镜头朝向等信息。
上述所述的第一图像模型和第一投影矩阵可预先进行确定。在执行根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像的步骤时,可直接利用中央处理器(central processing unit,CPU)获取第一图像模型和第一投影矩阵,并根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像。也可以是在执行根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像的步骤过程中,先利用CPU确定第一图像模型和第一投影矩阵,再根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像。
其中,根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像的步骤,包括:通过CPU将第一投影矩阵、图像数据和第一图像模型拷贝至图形处理器(Graphics Processing Unit,GPU)中,以根据第一投影矩阵、第一图像模型和图像数据,利用图形处理器将图像数据处理为大视角下的第一图像。具体地,通过CPU将第一图像模型中的顶点传输至顶点着色器中,将第一图像模型中的纹理坐标拷贝至片元着色器中,并根据图像数据确定纹理坐标所对应的纹理单元,利用GPU进行渲染,得到大视角下的第一图像。
其中,大视角本质上就是把第一图像模型放入至第一虚拟相机的视锥体内所对应的视角。如图5所示,视锥体即为近平面11和远平面12之间的梯形区域。可以理解地,在大视角下,第一图像模型整体都在第一虚拟相机的视锥体内。由于第一图像模型是个球形,视角内可以看到该球形的一半,将图像数据作为纹理单元,整个贴在该一半的球形上,即得到大视角下的第一图像。或者可以简单理解,大视角是将第一虚拟相机放置于第一图像模型外侧的较远处,从而视野内所看到的第一图像模型所对应的完整平面图像的视角。该步骤中得到大视角下的第一图像,以便于用户从整体上对图像数据的内容进行理解。
得到第一图像后,在数据展示界面的第一窗口展示第一图像。数据展示界面中包括至少一个第一窗口和至少一个第二窗口。请参看图6,图6为本申请实施例提供的数据展示界面的示意图。数据展示界面20上包括位于数据展示界面左侧的一个第一窗口21和位于第一窗口21右侧的两个第二窗口22。在第一窗口21中的底层展示的是第一图像。由图6可知,得到的第一图像与图像数据相对应/一致。其中,第一窗口和/或第二窗口可以是以显示控件的形式存在于数据展示界面20上,如第一窗口中包括至少一个显示控件,第二窗口包括一个显示控件;第一窗口和/或第二窗口还可以以其他的形成存在数据展示界面20上。
102,获取用户在数据展示界面的第二窗口上的控制操作。
用户可以在数据展示界面的第二窗口上进行控制操作。该控制操作可以通过用户在第二窗口上进行滑动触摸操作来实现;还可以通过语音方式来实现,如在数据展示界面上检测到语音,并对语音进行识别,得到“向左滑动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事件中,设置停止移动、停止触发加速度。
103,确定控制操作所对应的操作距离。
由于控制操作是在电子设备上进行,因此控制操作所对应的操作距离包括在第二窗口中水平方向上的第一操作距离和竖直方向上的第二操作距离,也即x轴上的第一操作距离和y轴上的第二操作距离。该第一操作距离和第二操作距离指的是在屏幕坐标系下的操作距离。控制操作所对应的当前坐标为(x,y),控制操作所对应的上次坐标为(last_down_x,last_down_y),则利用当前坐标和上次坐标计算得到第一操作距离和第二操作距离,计算出的第一操作距离和第二操作距离分别为x-last_down_x、y-last_down_y。
104,将操作距离转换为对应的偏移角度。
通过用户在第二窗口上的控制操作如何来确定第二投影矩阵呢,这是本申请实施例中确定投影矩阵的一个核心所在,即是把用户在电子设备屏幕上的手势滑动的操作距离转换为对应的偏移角度。其中,操作距离包括水平方向上的第一操作距离和竖直方向上的第二操作距离,对应地,偏移角度包括第二图像模型在第三基轴z轴上的旋转偏移角度和第二虚拟相机在第一基轴x轴上的俯仰偏移角度。
具体地,步骤104包括:确定第一操作距离所对应的第一角度和第二操作距离所对应的第二角度;获取加权系数和上次的旋转偏移角度;根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离对应于第二图像模型的旋转偏移角度;根据第二角度确定第二操作距离对应于第二虚拟相机的俯仰偏移角度。
其中,加权系数用来平滑对应的偏移角度。因为每次都是相对上次滑动的距离,来计算对应的偏移角度,比如滑动了50,但这个50是个具体数据;以现实情况中的例子来说,车子跑50米后肯定会滑动的,引入加权系数,就是产生类似的效果,用加权系数把这个滑动的距离给补起来,以平滑对应的偏移角度。
如何将手势滑动的第一操作距离和第二操作距离转换为对应的偏移角度呢,这是本申请实施例中转换的核心所在。每个窗口对应的显示控件都有对应宽度和高度,对于宽度来说,将显示控件的宽度滑完,相当于把第二图像模型(球体)旋转第一预设角度,如180度;对于高度来说,将显示控件的高度滑完,相当于把第二虚拟相机的俯仰角在一个方向上从最小值调整到最大值或者从最大值调整至最小值。其中,向上的俯仰角(把第二虚拟相机向上偏移,也称为仰角)的最大值为90度-欧拉角/2,最小值为0。其中,欧拉角一般预设为30度。向下的俯仰角(把第二虚拟相机往下偏移,也称为俯角)的最大值和最小值也是一致的,只是方向不同。即俯仰角的最大俯仰角度为90度-欧拉角/2,最小俯仰角度为0。
具体地,确定第一操作距离所对应的第一角度和第二操作距离所对应的第二角度的步骤,包括:获取第二窗口对应的显示控件的宽度和宽度所对应的第一预设角度,以及第二窗口对应的显示控件的高度和高度所对应的第二预设角度;根据宽度和第一预设角度,确定第一操作距离所对应的第一角度,并根据高度和第二预设角度,确定第二操作距离所对应的第二角度。
设第二窗口对应的显示控件的宽度为windows_width,第一预设角度为
Figure 12480DEST_PATH_IMAGE001
,第二窗口对应的显示控件的高度为windows_height,第二预设角度为
Figure 766679DEST_PATH_IMAGE002
。在第一操作距离所对应的第一角度为( x - last_down_x) / (float) windows_width *
Figure 330515DEST_PATH_IMAGE001
,第二操作距离所对应的第二角度为( y - last_down_y) / (float) windows_height *
Figure 671629DEST_PATH_IMAGE002
获取加权系数和上次的旋转偏移角度。其中,设加权系数为MOMENTUM_FACTOR,表示灵敏度系数,加权系数越大表示滑动越灵敏,加权系数越小越不灵敏,默认加权系数取值为0.8。设旋转偏移角度为xDragDelta,俯仰偏移角度为yDragDelta。
具体地,根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离所对应的旋转偏移角度的步骤,包括:将上次的旋转偏移角度与加权系数相乘,再加上第一角度,以得到第一操作距离所对应的旋转偏移角度。具体如公式(1)所示:
Figure 979113DEST_PATH_IMAGE003
其中,xDragDelta * MOMENTUM_FACTOR表示第三基轴z轴上的旋转角度的速度加权,滑动的范围越大,加权也就越大。其中,xDragDelta对应的是角度,计算出xDragDelta即已实现把相关的手势上滑动的第一操作距离转化为了旋转偏移角度。
具体地,根据第二角度确定第二操作距离所对应的俯仰偏移角度的步骤,包括:将第二角度作为第二操作距离所对应的俯仰偏移角度。具体如公式(2)所示:
Figure 72971DEST_PATH_IMAGE004
(2)
确定了第二操作距离所对应的俯仰偏移角度之后,还需要确定俯仰偏移角度的方向。可根据第二操作距离来确定第二虚拟相机的俯仰角的方向,若第二操作距离即y-last_down_y的值为负,则将第二虚拟相机向上偏移,即确定俯仰角的方向向上;若第二操作距离即y-last_down_y的值为正,则将第二虚拟相机向下偏移,即确定俯仰角的方向向下。其中,可以理解地,屏幕左上角的坐标为(0,0),若第二操作距离为负,则控制操作的手势向上,对应将第二虚拟相机向上偏移;若第二操作距离为正,则控制操作的手势向下,对应将第二虚拟相机向下偏移。如此,实现将手势的滑动触摸方向与第二虚拟相机偏移的方向一致,提升用户体验。
计算得出的(xDragDelta,yDragDelta)是一个相对的偏移角度。至此,实现了将操作距离转换为对应的偏移角度,即第一操作距离转换为旋转偏移角度xDragDelta,第二操作距离转换为俯仰偏移角度yDragDelta,且同时确定了俯仰偏移角度的方向。后面还需要将相对角度转换为绝对角度。
105,根据偏移角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不同。
需要注意的是,与初始第一投影矩阵一样,也存在初始第二投影矩阵。其中,初始第二投影矩阵和初始第一投影矩阵可理解为打开数据展示界面时,所对应的默认投影矩阵。利用该初始第二投影矩阵和第二图像模型、初始第一投影矩阵和第一图像模型可确定初始第二图像和初始第一图像,即打开数据展示界面后,未进行任何控制操作前所对应的初始第一图像和初始第二图像。初始第一图像和初始第二图像即为默认对应投影矩阵所对应的默认视角下的图像。
其中,初始第二投影矩阵可通过如下方式确定:获取设置的第二虚拟相机的初始参数,该初始参数包括第二虚拟相机的位置、欧拉角、第二虚拟相机的镜头到近平面的距离、第二虚拟相机的镜头到远平面的距离等;根据第二虚拟相机的初始参数确定初始第二投影矩阵。该初始第二投影矩阵可预先进行设定。需要注意的是,初始第一投影矩阵和初始第二投影矩阵不相同。
在打开数据展示界面,得到第一窗口内的初始第一图像和第二窗口内的初始第二图像之后,用户可在第二窗口内对当前所展示的第二图像进行控制操作,以便于用户查看所关注的区域,如检测到用户在图6的右侧上方的第二窗口22上的控制操作,根据该控制操作来确定(更新后的)第二投影矩阵。
其中,投影矩阵(包括第一投影矩阵和第二投影矩阵)对应为MVP矩阵,其中,MVP =prespective * view * model。model矩阵(也称为模型矩阵)对应的是第二图像模型的操作矩阵,主要操作第二图像模型在x、y、z轴上的旋转。view矩阵(也称为视角矩阵)主要对应的是第二虚拟相机的位置、朝向等,prespective矩阵(也称为透视矩阵)对应的是第二虚拟相机的欧拉角、近平面、远平面等信息。其中,需要注意的是,通过调整欧拉角来实现第二图像的放大缩小,欧拉角可调整的范围为[第一角度范围,第二角度范围],如第一角度范围为30度,第二角度范围为90度。
怎么将偏移角度对应到第二投影矩阵中呢,这也是本申请实施例中确定第二投影矩阵的核心所在:当用户在第二窗口的垂直方向上滑动时,实际上调整的是第二虚拟相机的俯仰角,对应调整的是view矩阵;当用户在第二窗口的水平方向上滑动时,不调整第二虚拟相机,直接将第二图像模型(球形)绕第三基轴z轴旋转,对应调整的model矩阵。
具体地,步骤105包括:根据旋转偏移角度xDragDelta更新model矩阵;根据俯仰偏移角度yDragDelta更新view矩阵;根据model矩阵、view矩阵和prespective矩阵生成第二投影矩阵。其中,prespective矩阵没有发生变化。
那么问题将转换为以下两个问题:(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)确定调整后的俯仰角:
Figure 322556DEST_PATH_IMAGE005
(3)
其中,在将上次的俯仰角加上俯仰偏移角度以得到调整后的俯仰角的步骤之后,还包括:检测调整后的俯仰角是否大于最大俯仰角度,或者调整后的俯仰角是否小于最小俯仰角度;若调整后的俯仰角大于最大俯仰角度,则将调整后的俯仰角设置为最大俯仰角度;若调整后的俯仰角小于最小俯仰角度,则将调整后的俯仰角设置为最小俯仰角度。以避免第二图像出现异常展示,可以理解地,由于图像数据进行纹理映射时只占图像模型对应的整个球体的一半,超过最大俯仰角度会导致视野进入到图像边界的区域为黑色。
如图7所示,为本申请实施例提供的确定第二虚拟相机朝向的示意图。其中,A点为第二虚拟相机的位置camera_pos,AB为第二虚拟相机的朝向camera_front,其中,B点的坐标为(x,y,z)。需要注意是,第二虚拟相机的朝向camera_front在AB这条射线上,AB的长度可以是任意值。为方便计算,假设AB长度为1,且已知偏航角pitch、俯仰角yaw。可按照公式(4)、公式(5)、公式(6)来计算B点的坐标,从而得到第二虚拟相机的朝向camera_front的值:
Figure 134654DEST_PATH_IMAGE006
(4)
Figure 262141DEST_PATH_IMAGE007
(5)
Figure 741664DEST_PATH_IMAGE008
(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)确定调整后的翻滚角:
Figure 912882DEST_PATH_IMAGE009
(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矩阵和prespective矩阵生成更新后的第二投影矩阵。如此,将用户在第二窗口上的控制操作转换为偏移角度,并根据偏移角度生成第二投影矩阵,以通过控制操作得到第二投影矩阵。
可以理解地,在根据用户在第二窗口上的控制操作(滑动触摸操作)来确定第二投影矩阵中,因为滑动触摸操作会变化,如手指滑动的位置一直在改变,导致控制操作也一直在变化,进而使得第二投影矩阵也在更新。
上述根据用户在第二窗口上的控制操作确定第二投影矩阵的过程中,分别对应有两个线程,一个线程是主线程ui线程,以用于捕捉手势,如捕捉BeginDrag、DragMove、EndDrag、DragCancle等滑动事件,并根据手势滑动确定操作距离,将操作距离转换为对应的偏移角度。另一个线程是gl线程,刷新频率为一秒60帧。gl线程根据偏移角度生成第二投影矩阵。
106,根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像,第二图像模型和第一图像模型相同。
其中,第二图像模型可预先进行确定。在本申请实施例中,第二图像模型和第一图像模型相同,则可直接获取第一图像模型。在步骤106中,可直接利用CPU获取预先计算出的第二投影矩阵和第二图像模型,并根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像。
其中,根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像的步骤,包括:通过CPU将第二投影矩阵、图像数据和第二图像模型拷贝至GPU中,以根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像。具体地,通过CPU将第二图像模型中的顶点传输至顶点着色器中,将第二图像模型中可投影至第二投影矩阵的顶点所对应的纹理坐标拷贝至片元着色器中,并根据图像数据确定纹理坐标所对应的纹理单元,利用GPU进行渲染,生成小视角下的第二图像。
其中,小视角指的是进行渲染后,视野内可以看到局部的图像数据的视角。可以简单理解,小视角是将第二虚拟相机放置于第二图像模型内部,从而视野内所看到的第二图像模型投影后所对应的局部平面图像的视角。该步骤中得到小视角下的第二图像,以便于用户从局部上(小视角上)对图像数据的内容进行理解,提高对图像数据内容的理解效率。
生成第二图像后,在第二窗口展示第二图像。可以理解地,由于第二投影矩阵一直在更新,使得根据第二投影矩阵和第二图像模型、第二图像数据生成的小视角下的第二图像也在更新,因此,第二窗口上展示的第二图像也同步更新。
若在数据展示界面上,第二窗口22只有一个,那么在该第二窗口内展示第二图像。若在数据展示界面上,第二窗口22有多个,则在控制操作所对应的第二窗口上展示第二图像。多个第二窗口中,每个第二窗口所对应的小视角可以不同,同一时刻所展示的第二图像也显示为不同的图像。
以上步骤中,实现在数据展示界面上的第一窗口展示大视角下的第一图像,在第二窗口展示小视角下的第二图像,如此以得到图像数据在不同视角下的平面图像,可从不同视角来理解图像数据,便于用户对图像数据内容的理解,提高对图像数据内容的理解效率。且可在第二窗口内进行控制操作,以根据控制操作控制所显示的第二图像,通过控制操作可以看到小视角下的所有可以看到的区域,方便用户从第二图像中快速定位出所关注区域。可以理解地,若对第二窗口进行控制操作,则第二窗口内显示的第二图像一直在不停的变化。
由于第一图像和第二图像是通过同一个图像模型(第一图像模型和第二图像模型相同)投影在大视角、小视角下,且使用相同的纹理(图像数据)贴图得到的。通过大视角下的第一图像从整体上理解图像数据,通过小视角下的第二图像从局部上理解图像数据,实现图像数据的细节展示。在对小视角下的第二窗口进行控制操作的过程中,小视角下的第二图像一直在不停的变化。且第二图像模型是球形,360度,没有边界,因此,在对第二窗口进行控制操作的过程中,所看到的第二图像很容易出现重复,即出现转圈圈的情况。因此,用户在对第二窗口进行控制时,不知道当前第二窗口上显示的第二图像对应于第一图像中的哪个部分,降低了用户定位所关注区域的速度,严重影响了用户体验。本申请实施例通过步骤107~108来解决该技术问题。
107,根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域。
以上所述的根据投影矩阵(分别为第一投影矩阵和第二投影矩阵)和图像模型(分别为第一图像模型和第二图像模型)来确定的第一图像或者第二图像,是通过透视投影的成像原理所得到的图像。如图5所示,图像模型中在近平面11和远平面12之间的点投影,可以在我们视野内被看到。
根据透视投影的成像原理,我们视野可以看到的部分,其实就是图像模型上的顶点乘以投影矩阵后,落在近平面上的顶点,经过归一化、裁剪、以及纹理贴图最终展现出来的效果。因此,若想确定第二图像对应第一图像模型内的三维导航区域,则可通过逆向思维将问题转换为:确定第一图像模型上的哪些顶点可投影至第二投影矩阵的近平面上,确定这些顶点后,将这些顶点所对应的区域作为三维导航区域,对三维导航区域对应的纹理坐标突出指定显示。进一步的,若想确定第一图像模型上的哪些顶点可投影至第二投影矩阵的近平面上,可通过第二投影矩阵和第一图像模型来确定。
具体地,步骤107,包括:根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。导航顶点所对应的区域理解为导航顶点所在的区域。
导航顶点理解为第一图像模型中的,可以投影至第二投影矩阵的近平面中的顶点。具体地,根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,可通过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专门用来处理浮点运算,效率高,如此大大提高了处理的准确度。
108,通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
从上述描述中可知,若用户在第二窗口上进行滑动触摸操作,使得控制操作在变化,根据控制操作确定的第二投影矩阵也同步更新,根据第二投影矩阵生成的第二图像也在更新,对应的三维导航区域也在更新,处理三维导航区域得到的导航图像也在更新;导航图像表示第二图像在第一图像中的位置信息,即第一窗口中显示的导航图像也一直在更新。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过CPU来执行,具体地,步骤108,包括:确定导航顶点所对应的纹理坐标;将纹理坐标拷贝至GPU中,以使GPU根据所述纹理坐标通过预设方式处理(即渲染)三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。导航图像,表示第二图像在第一图像内的位置。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过GPU来执行,具体地,步骤108,包括:GPU确定了导航顶点后,确定导航顶点所对应的纹理坐标;根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
需要注意的是,若采用CPU来处理,则CPU确定了导航顶点和导航顶点所对应的纹理坐标后,还需将纹理坐标拷贝至GPU中,以使GPU根据所述纹理坐标处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。而若采用GPU处理,GPU直接确定导航顶点和对应的纹理坐标,无需将纹理坐标进行拷贝,节约了CPU到GPU拷贝的大量时间,进一步提高了处理效率,进一步减少移动终端的耗电量。
其中,上述所述的根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:获取三维导航区域预设纹理和第一预设透明度,该三维导航区域预设纹理包括预设颜色或者预设图片;利用GPU根据三维导航区域预设纹理、第一预设透明度、纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。具体地,将纹理坐标所对应的纹理设置为三维导航区域预设纹理,并设置三维导航区域预设纹理的透明度为第一预设透明度;利用GPU根据所设置的纹理渲染三维导航区域。如此,将三维导航区域渲染为三维导航区域预设纹理,且显示的透明度为第一预设透明度,达到突出显示导航图像的目的。
进一步地,将三维导航区域之外的区域作为非三维导航区域,具体地,根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:
获取三维导航区域预设纹理、第一预设透明度,以及第二预设透明度,其中,第二预设透明度小于第一预设透明度,三维导航区域预设纹理为预设颜色或者预设图片;GPU根据三维导航区域预设纹理、第一预设透明度和纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像;利用GPU将非三维导航区域渲染为第二预设透明度。其中,利用GPU根据三维导航区域预设纹理、第一预设透明度和纹理坐标渲染三维导航区域,具体包括:将纹理坐标所对应的纹理设置为三维导航区域预设纹理,并设置三维导航区域预设纹理的透明度为第一预设透明度,利用GPU根据所设置的纹理渲染三维导航区域,以将三维导航区域渲染为三维导航区域预设纹理,且显示的透明度为第一预设透明度。
可以理解地,为了不遮挡第一图像中非三维导航区域所对应的区域,以提高显示效果,将第二预设透明度设置为0.8以下,如可设置第二预设透明度为0。为了突出显示导航图像,可将第一预设透明度设置为(0,1)之间,为了不会将第一图像中导航图像所对应的区域完全覆盖,以提高用户体验,可设置第一预设透明度为0.8。其中,预设颜色可以设置为红色,以突出显示导航图像。
如图6中的左图所示,导航图像23和渲染后的非三维导航区域位于第一图像之上,且当前第一预设透明度不为1,通过导航图像23还可以看到位于导航图像23之下的第一图像对应的部分区域,位于导航图像23之下的第一图像对应的部分区域,与第二图像一致。由于第二预设透明度为0,因此,渲染后的非三维导航区域是透明的,并不能被人眼看到。
在其他的一些情况下,将三维导航区域之外的区域作为非三维导航区域,具体地,根据所述纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:
获取三维导航区域预设纹理、第一预设透明度,以及非三维导航区域预设纹理、第二预设透明度,其中,第二预设透明度小于第一预设透明度,三维导航区域预设纹理为第一预设颜色或者第一预设图片,非三维导航区域预设纹理为第二预设颜色或者第二预设图片;利用GPU根据三维导航区域预设纹理、第一预设透明度、纹理坐标渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像;在第一窗口内利用GPU根据非三维导航区域预设纹理、第二预设透明度渲染非三维导航区域。
其中,利用GPU根据三维导航区域预设纹理、第一预设透明度、纹理坐标渲染三维导航区域,包括:将纹理坐标所对应的纹理设置为三维导航区域预设纹理,并设置三维导航区域预设纹理的透明度为第一预设透明度;根据所设置的纹理渲染三维导航区域,以将三维导航区域渲染为三维导航区域预设纹理,且显示的透明度为第一预设透明度。利用GPU根据非三维导航区域预设纹理、第二预设透明度渲染非三维导航区域,包括:将非三维导航区域所对应的纹理设置为非三维导航区域预设纹理,并设置非三维导航区域预设纹理的透明度为第二预设透明度;根据所设置的纹理渲染非三维导航区域,以将非三维导航区域渲染为非三维导航区域预设纹理,且显示的透明度为第二预设透明度。其中,第一预设透明度、第二预设透明度的设置可参看上文中的描述;三维导航区域预设纹理和非三维导航区域预设纹理可相同,也可不同。将三维导航区域突出显示,将非三维导航区域也利用非三维导航区域预设纹理进行渲染,并设置为第二预设透明度。
上述实施例中区分三维导航区域和非三维导航区域,进一步突出显示导航图像,提高用户体验。
需要注意的是,利用GPU根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤的实现场景可以有多个。
如一个实现场景为,在第一窗口中只存在一个显示控件,通过该显示控件既可以显示导航图像(和渲染后的非三维导航区域),也可以显示第一图像。如该显示控件中包括两个纹理单元:第一纹理单元和第二纹理单元。其中,第一纹理单元用来显示第一图像,第二纹理单元用来显示导航图像(和渲染后的非三维导航区域),第二纹理单元位于第一纹理单元之上。具体地,在数据展示界面的第一窗口展示第一图像的步骤之前,还包括:获取第一窗口的显示控件中的第一纹理单元和第二纹理单元;将第二纹理单元设置于第一纹理单元之上。如此,在数据展示界面第一窗口展示第一图像的步骤,包括:在第一窗口的显示控件中的第一纹理单元内展示第一图像。在第一窗口内突出显示导航图像的步骤,包括:在第一窗口的显示控件中的第二纹理单元内突出显示导航图像(和渲染后的非三维导航区域)。需要注意的是,在该种情况下,在执行通过预设方式处理所述三维导航区域,得到导航图像,并在第一窗口显示控件中的第二纹理单元内突出展示导航图像的步骤的同时,还会同步执行根据第一投影矩阵和第一图像模型将所述第一图像数据渲染为大视角下的第一图像,并在第一窗口显示控件中的第一纹理单元内展示第一图像的步骤。可以理解地,因为第一图像和导航图像是在一个显示控件中进行显示的,因此第一图像和导航图像(和非三维导航区域)会同时被渲染出来,如果仅仅渲染导航图像(和非三维导航区域),那么在第一窗口中将不会显示第一图像,如此达不到本申请的目的。如此,在通过预设方式处理三维导航区域时,既渲染第二纹理单元中的三维导航区域(和非三维导航区域),又渲染第一纹理单元对应的第一图像等。
如另一种实现场景为,在第一窗口中存在两个显示控件,第一显示控件用于显示第一图像,第二显示控件用于显示导航图像(和处理后的非三维导航区域)。具体地,在数据展示界面的第一窗口展示第一图像的步骤之前,还包括:获取第一窗口中的第一显示控件和第二显示控件;将第二显示控件设置于第一显示控件之上。如此,在数据展示界面第一窗口展示第一图像的步骤,包括:在数据展示界面第一窗口的第一显示控件中展示第一图像。在第一窗口内突出显示导航图像的步骤,包括:在第一窗口的第二显示控件中突出显示导航图像(和渲染后的非三维导航区域)。如此,通过两个显示控件分别来显示第一图像以及导航图像(和渲染后的非三维导航区域),分开处理,提高处理效率。如在处理三维导航区域时,只需要渲染第二显示控件上显示的内容即可,无需渲染第一显示控件上显示的内容,减少了电子设备的消耗,提高了处理效率和速度。
如此,通过上述方案将当前第二窗口上显示的第二图像对应于第一图像中的位置(导航图像)进行突出显示,根据导航图像使得用户可以很清晰的知道第二窗口内显示的第二图像,处于第一窗口内显示的第一图像中的哪个位置,以建立不同视角下的图像之间的关联关系,进一步提高对图像数据内容的理解效率,且便于用户调整所观看的区域,便于引导用户快速找到所关注区域,提高用户定位图像数据中所关注区域的速度,提升用户体验。此外,通过第二窗口显示的第二图像,也实现了图像数据的细节展示。本申请实施例中的数据处理方法可应用于更多应用场景。
图8是本申请实施例提供的数据处理方法的流程示意图。该数据处理方法应用于电子设备中,该数据处理方法包括如下步骤。
201,获取鱼眼摄像头采集的图像数据。
202,根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像。
203,在数据展示界面的第一窗口展示第一图像。
204,获取用户在数据展示界面的第二窗口上的控制操作。
205,检测控制操作是否结束。
检测是否触发了EndDrag事件,在该实施例中,EndDrag事件中设置停止移动,设置触发速度衰减,当速度衰减到一个预设阈值触发自动巡航。其中,在滑动过程中会触发速度加权,在EndDrag事件中会触发速度衰减。若检测到触发了EndDrag事件,则确定控制操作结束;若未触发EndDrag事件,则确定控制操作未结束。可以理解地,若控制操作未结束,不会触发自动巡航;若控制操作结束,触发速度衰减,速度衰减到一个预设阈值触发自动巡航。若没有触发速度衰减,则可以认为当前正在滑动触摸操作中,或者没有滑动触摸操作。可以理解地,若触发速度衰减,则对应第二图像模型从最高速度衰减至一个预设阈值后保持匀速运动。其中,衰减原理,简单理解为,在触发EndDrag事件时,xDragDelta达到了最大,之后每间隔一小段时间把xDragDelta进行衰减直至当前衰减值小于预设衰减值后保存匀速运动。
若控制操作未结束,则执行步骤206;若控制操作结束,执行步骤209。
206,确定控制操作所对应的操作距离。
207,将操作距离转换为对应的偏移角度,偏移角度包括第二图像模型的旋转偏移角度和第二投影矩阵对应的第二虚拟相机的俯仰偏移角度。
208,根据偏移角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同。
209,获取衰减系数。
衰减系数是预先设定的值,可用MOMENTUM_FACTOR_DECREASE来表示,衰减系数越大衰减越快,默认将衰减系数设置为0.8。
210,根据衰减系数确定旋转衰减角度,以及根据衰减系数确定当前衰减值。
具体地,步骤210,包括:检测当前时间与上次衰减的触发时间之差是否达到预设时间间隔;若是,根据上次的旋转衰减角度和衰减系数确定当前的旋转衰减角度,以及根据上次的衰减值和衰减系数确定当前衰减值。
其中,旋转衰减角度包括第二图像模型在第三基轴z轴上的旋转衰减角度,旋转衰减角度的初始值即为触发EndDrag事件时所对应的旋转偏移角度xDragDelta,旋转衰减角度用xDragDelta_来表示,理解为把xDragDelta进行衰减。
其中,根据上次的旋转衰减角度和衰减系数确定当前的旋转衰减角度的步骤,包括:将上次的旋转衰减角度和衰减系数相乘,以得到当前的旋转衰减角度,具体如公式(8)所示:
Figure 477856DEST_PATH_IMAGE010
(8)
其中,根据上次的衰减值和衰减系数确定当前衰减值的步骤,包括:将上次的衰减值和衰减系数相乘,以得到当前衰减值。
其中,衰减值可用另一个参数来表示,如用momentum_steps来表示,衰减值可用来确定衰减的次数。衰减值的初始值可为100%或者1。
具体地确定当前衰减值可如公式(9)所示:
Figure 641990DEST_PATH_IMAGE011
(9)
211,检测当前衰减值是否小于预设衰减值。
其中,预设衰减值为(0,1)之间的任何一个值,如10%或者0.1。若当前衰减值小于预设衰减值,则不再进行衰减,停止触发速度衰减。若当前衰减值不小于预设衰减值,则继续进行衰减。
若当前衰减值不小于预设衰减值,执行步骤212,若当前衰减值小于预设衰减值,执行步骤213,结束。
212,根据旋转衰减角度生成第二投影矩阵,第二投影矩阵和第一投影矩阵不相同。
具体地,根据旋转衰减角度生成第二投影矩阵的步骤,包括:根据当前旋转衰减角度更新model矩阵;根据更新后的model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。其中,view矩阵是yDragDelta达到最大值是所对应的view矩阵。在触发EndDrag事件时,yDragDelta达到了对应的最大值。
其中,根据当前旋转衰减角度更新model矩阵的步骤,包括:获取上次的翻滚角,将上次的翻滚角加上旋转衰减角度以得到调整后的翻滚角;将调整后的翻滚角作为第二图像模型在第三基轴上的旋转角度。具体地,可按照公式(7)确定调整后的翻滚角。
需要注意的是,由于俯仰范围太小,触发衰减的效果的展现意义不大,因此,在一些情况下,可只触发roll的加速效果,即将xDragDelta每隔预设时间间隔,根据衰减系数进行衰减,yDragDelta不进行衰减。
213,将旋转衰减角度置为预设旋转角度。
其中,预设旋转角度即为自动巡航匀速运动时所对应的旋转角度。如可以将旋转衰减角度直接设置为检测到当前衰减值小于预设衰减值时,所对应的旋转衰减角度。
该实施例中根据用户在第二窗口上的控制操作确定第二投影矩阵的过程中,同样分别对应有两个线程。如图9所示。一个线程是主线程,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线程用于根据获取的角度来生成第二投影矩阵。需要注意的是,在衰减的过程中,若再一次检测到用户的控制操作,会立刻停止衰减,且在停止衰减时的旋转衰减角度上继续结合操作距离做旋转偏移角度的计算。
214,根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像,第一图像模型和第二图像模型相同。
215,根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域。
216,通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
需要注意的是,上述实施例中,roll的角度,即第二图像模型在第三基轴z轴的旋转角度最大为360,达到360度后,从0开始重新计算,可通过roll=roll%360来完成。同时需要注意的是,gl线程中的处理流程也可以直接通过CPU来完成。
该实施例中与上述实施例中相同的步骤请参看上文中的对应描述,在此不再赘述。
该实施例中,不仅限定了当控制操作未结束时,直接确定控制操作所对应的操作距离,将操作距离转换为对应的偏移角度,根据偏移角度生成第二投影矩阵;还限定了当控制操作结束时,根据衰减系数确定旋转衰减角度,根据旋转衰减角度来生成第二投影矩阵。如此,当控制操作正在进行时,可得到相应的第二投影矩阵,以根据第二投影矩阵确定三维导航区域,并实时显示导航图像,即实时显示当前第二图像在第一图像中的位置;当控制操作结束后,并不立即停止,而是慢慢衰减直至速度衰减到一个预设阈值,并实时显示当前第二图像在第一图像中的位置,以提高用户体验。
图10a和图10b是本申请实施例提供的数据处理方法的流程示意图。请结合图10a和图10b参看本申请实施例的数据处理方法。
如图10a所示,在打开/刷新数据展示界面时,获取所设置的第一虚拟相机的初始参数和所设置的第二虚拟相机的初始参数、第一图像模型和第二图像模型,以及鱼眼摄像头采集的图像数据;根据第一虚拟相机的初始参数确定初始第一投影矩阵,根据第二虚拟相机的初始参数确定初始第二投影矩阵;根据初始第一投影矩阵、第一图像模型和所述图像数据确定大视角下的初始第一图像,并在数据展示界面的第一窗口内展示初始第一图像;根据初始第二投影矩阵、第二图像模型和图像数据生成小视角下的初始第二图像,并在数据展示界面的第二窗口内展示初始第二图像;根据初始第二投影矩阵以及第一图像模型确定初始第二图像对应第一图像模型内的三维导航区域,并通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示处理后的该三维导航区域。以上是在打开/刷新数据展示界面所对应的步骤。
之后,如图10b所示,当检测到用户在数据展示界面的第二窗口上的控制操作时,获取用户在数据展示界面的第二窗口上的控制操作,根据控制操作确定操作距离,将操作距离转换为对应的偏移角度,根据偏移角度生成第二投影矩阵。根据第二投影矩阵和第二图像模型以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像,该第二图像是更新后的图像。根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域,并通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。可以理解地,在数据展示界面打开后,后续当检测到控制操作,根据该控制操作确定第二投影矩阵,以更新第二窗口内展示的第二图像,并更新导航图像,即更新第二图像在第一图像中的位置。
需要注意的是,图10a和图10b一起展示的数据处理方法的整个流程。其中,每个步骤的详细内容,请参看上文中对应步骤的描述,在此不再赘述。
根据上述实施例所描述的方法,本实施例将从数据处理装置的角度进一步进行描述,该数据处理装置具体可以作为独立的实体来实现,也可以集成在电子设备中来实现。
如图11所示,是本申请实施例提供的数据处理装置的结构示意图。该装置可以包括图像获取单元301、操作获取单元302、距离确定单元303、角度转换单元304、矩阵生成单元305、图像处理单元306、区域确定单元307以及处理展示单元308。
图像获取单元301,获取在数据展示界面的第一窗口中展示的第一图像,该第一图像是根据第一投影矩阵和第一图像模型对鱼眼摄像头采集的图像数据进行处理后得到的大视角下的图像。
图像获取单元301,具体用于获取鱼眼摄像头采集的图像数据,根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像;在数据展示界面的第一窗口展示第一图像。
其中,图像获取单元301,在执行获取鱼眼摄像头采集的图像数据的步骤时,具体执行对鱼眼摄像头进行数据标定;获取鱼眼摄像头拍摄得到的初始图像数据;根据数据标定的结果,对初始图像数据进行校正,以得到鱼眼摄像头采集的图像数据。
图像获取单元301,在执行根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像的步骤时,具体执行利用中央处理器获取第一图像模型和第一投影矩阵,并根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像。
其中,根据第一投影矩阵和第一图像模型将图像数据处理为大视角下的第一图像的步骤,包括:通过CPU将第一投影矩阵、图像数据和第一图像模型拷贝至GPU中,以根据第一投影矩阵、第一图像模型和图像数据,利用图形处理器将图像数据处理为大视角下的第一图像。
操作获取单元302,用于获取用户在数据展示界面的第二窗口上的控制操作。
距离确定单元303,用于确定控制操作所对应的操作距离。控制操作所对应的操作距离包括在第二窗口中水平方向上的第一操作距离和竖直方向上的第二操作距离,也即x轴上的第一操作距离和y轴上的第二操作距离。
角度转换单元304,用于将所述操作距离转换为对应的偏移角度。
其中,操作距离包括水平方向上的第一操作距离和竖直方向上的第二操作距离,对应地,偏移角度包括第二图像模型第三基轴z轴上的旋转偏移角度和第二虚拟相机在第一基轴x轴上的俯仰偏移角度。角度转换单元304,具体用于确定第一操作距离所对应的第一角度和第二操作距离所对应的第二角度;获取加权系数和上次的旋转偏移角度;根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离对应于第二图像模型的旋转偏移角度;根据第二角度确定第二操作距离对应于第二虚拟相机的俯仰偏移角度。
其中,确定第一操作距离所对应的第一角度和第二操作距离所对应的第二角度的步骤,包括:获取第二窗口对应的显示控件的宽度和宽度所对应的第一预设角度,以及第二窗口对应的显示控件的高度和高度所对应的第二预设角度;根据宽度和第一预设角度,确定第一操作距离所对应的第一角度,并根据高度和第二预设角度,确定第二操作距离所对应的第二角度。
其中,根据上次的旋转偏移角度、加权系数和第一角度确定第一操作距离所对应的旋转偏移角度的步骤,包括:将上次的旋转偏移角度与加权系数相乘,再加上第一角度,以得到第一操作距离所对应的旋转偏移角度。根据第二角度确定第二操作距离所对应的俯仰偏移角度的步骤,包括:将第二角度作为第二操作距离对应于第二虚拟相机的俯仰偏移角度。
矩阵生成单元305,用于根据偏移角度生成第二投影矩阵。
其中,确定初始第二投影矩阵包括:获取设置的第二虚拟相机的初始参数,根据第二虚拟相机的初始参数确定初始第二投影矩阵。
其中,矩阵生成单元305,具体用于根据旋转偏移角度更新model矩阵;根据俯仰偏移角度更新view矩阵;根据model矩阵、view矩阵和prespective矩阵生成第二投影矩阵。其中,根据俯仰偏移角度更新view矩阵的步骤,包括:根据俯仰偏移角度调整第二虚拟相机在第一基轴上的俯仰角度;根据俯仰角度更新view矩阵。根据旋转偏移角度更新model矩阵的步骤,包括:根据旋转偏移角度调整第二图像模型在第三基轴上的旋转角度;根据旋转角度更新model矩阵。
图像处理单元306,用于根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在数据展示界面的第二窗口展示第二图像。
图像处理单元306,具体用于利用中央处理器获取第二图像模型和第二投影矩阵,根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像,并在第二窗口展示第二图像。
其中,图像处理单元306,在执行根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像的步骤时,具体执行:通过CPU将第二投影矩阵、图像数据和第二图像模型拷贝至GPU中,以根据第二投影矩阵和第二图像模型,以及图像数据生成小视角下的第二图像。
区域确定单元307,用于根据第二投影矩阵和第一图像模型确定第二图像对应第一图像模型内的三维导航区域。
区域确定单元307,具体用于根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。
具体地,根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,可通过CPU来执行,具体包括以下步骤:遍历第一图像模型中的每个顶点;从每个顶点(多个顶点)中确定投影至所述第二投影矩阵对应近平面中的导航顶点。
其中,从每个顶点中确定投影至所述第二投影矩阵对应近平面中的导航顶点的步骤,包括:根据第二投影矩阵,确定每个顶点投影后的坐标;检测坐标是否在第二投影矩阵对应近平面的范围内;若是,则将该顶点确定为导航顶点;若否,则将该顶点确定为非导航顶点。
具体地,根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,还可通过GPU来执行,具体包括以下步骤:CPU获取第一图像模型;将第一图像模型发送至GPU;GPU根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点;将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。导航顶点所对应的区域理解为导航顶点所在的区域。
确定了导航顶点后,将导航顶点所对应的区域作为第二图像对应第一图像模型内的三维导航区域。
处理展示单元308,用于通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过CPU来执行,处理展示单元308,具体用于确定导航顶点所对应的纹理坐标;将纹理坐标通过CPU拷贝至GPU中,以使GPU根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
若根据第二投影矩阵和第一图像模型,从第一图像模型的顶点中,确定投影至第二投影矩阵对应近平面中的导航顶点的步骤,通过GPU来执行,处理展示单元308,具体用于GPU确定了导航顶点后,确定导航顶点所对应的纹理坐标;根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
其中,上述的根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:获取三维导航区域预设纹理和第一预设透明度,该三维导航区域预设纹理包括预设颜色或者预设图片;利用GPU根据三维导航区域预设纹理、第一预设透明度渲染三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像。
进一步地,将三维导航区域之外的区域作为非三维导航区域,具体地,根据纹理坐标通过预设方式处理三维导航区域,得到导航图像,以在第一窗口内突出显示导航图像的步骤,包括:
获取三维导航区域预设纹理、第一预设透明度,以及第二预设透明度,其中,第二预设透明度小于第一预设透明度,三维导航区域预设纹理为预设颜色或者预设图片;利用GPU根据三维导航区域预设纹理渲染三维导航区域,并将三维导航区域设置为第一预设透明度,得到导航图像,以在第一窗口内突出显示导航图像;利用GPU将非三维导航区域设置为第二预设透明度。
图12是本申请实施例提供的数据处理装置的结构示意图。该数据处理装置可以包括图像获取单元301、操作获取单元302、距离确定单元303、角度转换单元304、矩阵生成单元305、图像处理单元306、区域确定单元307、处理展示单元308、操作检测单元309、系数获取单元310、衰减确定单元311、衰减检测单元312、设置单元313。其中,图像获取单元301、操作获取单元302、距离确定单元303、角度转换单元304、矩阵生成单元305、图像处理单元306、区域确定单元307、处理展示单元308请参看上文中对应的描述,在此不再赘述。本申请实施例仅描述与上述装置实施例中的不同之处。
操作检测单元309,用于在获取用户在数据展示界面的第二窗口上的控制操作之后,检测控制操作是否结束。
距离确定单元303,还用于若控制操作未结束,确定控制操作所对应的操作距离。
系数获取单元310,用于若控制操作结束,获取衰减系数。
衰减确定单元311,用于根据衰减系数确定旋转衰减角度,以及根据衰减系数确定当前衰减值。
衰减检测单元312,用于检测当前衰减值是否小于预设衰减值。
设置单元313,用于若当前衰减值小于预设衰减值,将旋转衰减角度置为预设旋转角度。
矩阵生成单元305,还用于若当前衰减值不小于预设衰减值,根据旋转衰减角度生成第二投影矩阵。矩阵生成单元305,具体用于根据当前旋转衰减角度更新model矩阵;根据更新后的model矩阵、view矩阵和perspective矩阵生成第二投影矩阵。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上装置和各单元的具体实现过程,以及所达到的有益效果,可以参考前述的方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
本申请实施例还提供一种电子设备,如图13所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器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.根据权利要求1所述的数据处理方法,其特征在于,所述操作距离包括在所述数据展示界面所述第二窗口水平方向上的第一操作距离和竖直方向上的第二操作距离,所述偏移角度包括所述第二图像模型在第三基轴上的旋转偏移角度和所述第二投影矩阵对应的第二虚拟相机在第一基轴上的俯仰偏移角度,所述将所述操作距离转换为对应的偏移角度,包括:
确定所述第一操作距离所对应的第一角度和所述第二操作距离所对应的第二角度;
获取加权系数和上次的旋转偏移角度;
根据上次的旋转偏移角度、所述加权系数和所述第一角度确定所述第一操作距离对应于第二图像模型的旋转偏移角度;
根据所述第二角度确定所述第二操作距离对应于所述第二虚拟相机的俯仰偏移角度。
4.根据权利要求3所述的数据处理方法,其特征在于,所述确定所述第一操作距离所对应的第一角度和所述第二操作距离所对应的第二角度的步骤,包括:
获取所述第二窗口的宽度和所述宽度所对应的第一预设角度,以及所述第二窗口的高度和所述高度所对应的第二预设角度;
根据所述宽度和所述第一预设角度,确定所述第一操作距离所对应的第一角度,并根据所述高度和所述第二预设角度,确定所述第二操作距离所对应的第二角度。
5.根据权利要求3所述的数据处理方法,其特征在于,所述根据所述偏移角度生成第二投影矩阵的步骤,包括:
根据所述旋转偏移角度更新模型矩阵;
根据所述俯仰偏移角度更新视角矩阵;
根据所述模型矩阵、所述视角矩阵和透视矩阵生成第二投影矩阵。
6.根据权利要求5所述的数据处理方法,其特征在于,
所述根据所述旋转偏移角度更新模型矩阵的步骤,包括:根据所述旋转偏移角度调整所述第二图像模型在第三基轴上的旋转角度;根据所述旋转角度更新模型矩阵;
所述根据所述俯仰偏移角度更新视角矩阵的步骤,包括:根据所述俯仰偏移角度调整所述第二虚拟相机在第一基轴上的俯仰角度;根据所述俯仰角度更新视角矩阵。
7.根据权利要求2所述的数据处理方法,其特征在于,在所述控制操作结束之后,还包括:
根据所述衰减系数确定当前衰减值;
检测所述当前衰减值是否小于预设衰减值;
若小于预设衰减值,将所述旋转衰减角度置为预设衰减角度。
8.根据权利要求2所述的数据处理方法,其特征在于,所述根据衰减系数确定旋转衰减角度的步骤,包括:
检测当前时间与上次衰减的触发时间之差是否达到预设时间间隔;
若是,根据上次的旋转衰减角度和所述衰减系数确定当前的旋转衰减角度。
9.一种数据处理装置,其特征在于,包括:
图像获取单元,用于获取在数据展示界面的第一窗口中展示的第一图像,所述第一图像是根据第一投影矩阵和第一图像模型对鱼眼摄像头采集的图像数据进行处理后得到的大视角下的图像;
操作获取单元,用于获取用户在数据展示界面的第二窗口上的控制操作;
距离确定单元,用于确定所述控制操作所对应的操作距离;
角度转换单元,用于将所述操作距离转换为对应的偏移角度,所述偏移角度包括所述第二图像模型的旋转偏移角度和所述第二投影矩阵对应的第二虚拟相机的俯仰偏移角度;
矩阵生成单元,用于根据所述偏移角度生成第二投影矩阵,所述第二投影矩阵和所述第一投影矩阵不相同;
图像处理单元,用于根据第二投影矩阵和第二图像模型,以及所述图像数据生成小视角下的第二图像,并在所述第二窗口展示所述第二图像,所述第一图像模型和所述第二图像模型相同;
区域确定单元,用于根据所述第二投影矩阵和所述第一图像模型确定所述第二图像对应所述第一图像模型内的三维导航区域;
处理展示单元,用于通过预设方式处理所述三维导航区域,得到导航图像,以在第一窗口内突出显示所述导航图像,所述导航图像表示所述第二图像在所述第一图像中的位置。
10.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述处理器和所述存储器相连接,所述一个或多个计算机程序被存储于所述存储器中,并配置为由所述处理器执行上述权利要求1至8任一项所述的数据处理方法。
CN202010942202.3A 2020-09-09 2020-09-09 一种数据处理方法、装置以及电子设备 Active CN111813290B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010942202.3A CN111813290B (zh) 2020-09-09 2020-09-09 一种数据处理方法、装置以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010942202.3A CN111813290B (zh) 2020-09-09 2020-09-09 一种数据处理方法、装置以及电子设备

Publications (2)

Publication Number Publication Date
CN111813290A true CN111813290A (zh) 2020-10-23
CN111813290B CN111813290B (zh) 2020-12-01

Family

ID=72860106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010942202.3A Active CN111813290B (zh) 2020-09-09 2020-09-09 一种数据处理方法、装置以及电子设备

Country Status (1)

Country Link
CN (1) CN111813290B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112446823A (zh) * 2021-02-01 2021-03-05 武汉中科通达高新技术股份有限公司 监控图像展示方法和装置
CN112465939A (zh) * 2020-11-25 2021-03-09 上海哔哩哔哩科技有限公司 全景视频渲染方法及系统
CN114397960A (zh) * 2021-12-28 2022-04-26 深圳潜行创新科技有限公司 一种基于智能移动设备的飞控方向可视化方法
CN115617178A (zh) * 2022-11-08 2023-01-17 润芯微科技(江苏)有限公司 一种手指与车机无接触即可完成按键和功能触发的方法
CN118351274A (zh) * 2024-04-29 2024-07-16 广州蓝昊广告有限公司 一种物体模型渲染方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251958A (zh) * 2007-07-06 2008-08-27 浙江大学 面向训练的汽车驾驶模拟机实现方法
CN101866482A (zh) * 2010-06-21 2010-10-20 清华大学 基于摄像设备自标定技术的全景图拼接方法和装置
US20150116451A1 (en) * 2013-10-29 2015-04-30 Cisco Technology, Inc. Panoramic Video Conference
CN107274439A (zh) * 2017-07-04 2017-10-20 西北工业大学 基于地基鱼眼相机阵列的无人机光学跟踪定位方法
CN108447095A (zh) * 2018-01-31 2018-08-24 潍坊歌尔电子有限公司 一种鱼眼相机标定方法和装置
CN109816587A (zh) * 2017-11-20 2019-05-28 杭州海康威视数字技术股份有限公司 一种鱼眼图像处理方法、装置及电子设备
CN111462172A (zh) * 2020-02-24 2020-07-28 西安电子科技大学 一种基于行驶场景估计的三维全景影像自适应生成方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251958A (zh) * 2007-07-06 2008-08-27 浙江大学 面向训练的汽车驾驶模拟机实现方法
CN101866482A (zh) * 2010-06-21 2010-10-20 清华大学 基于摄像设备自标定技术的全景图拼接方法和装置
US20150116451A1 (en) * 2013-10-29 2015-04-30 Cisco Technology, Inc. Panoramic Video Conference
CN107274439A (zh) * 2017-07-04 2017-10-20 西北工业大学 基于地基鱼眼相机阵列的无人机光学跟踪定位方法
CN109816587A (zh) * 2017-11-20 2019-05-28 杭州海康威视数字技术股份有限公司 一种鱼眼图像处理方法、装置及电子设备
CN108447095A (zh) * 2018-01-31 2018-08-24 潍坊歌尔电子有限公司 一种鱼眼相机标定方法和装置
CN111462172A (zh) * 2020-02-24 2020-07-28 西安电子科技大学 一种基于行驶场景估计的三维全景影像自适应生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TE CHEN 等: "Fisheye-lens-based space division multiplexing system for visible light communications", 《EURASIIP JOURNAL ON WIRELESS COMMUNICATIONS AND NETWORKING》 *
祝海江 等: "基于球面透视投影旋转矩阵的鱼眼图像匹配", 《光学学报》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112465939A (zh) * 2020-11-25 2021-03-09 上海哔哩哔哩科技有限公司 全景视频渲染方法及系统
CN112465939B (zh) * 2020-11-25 2023-01-24 上海哔哩哔哩科技有限公司 全景视频渲染方法及系统
CN112446823A (zh) * 2021-02-01 2021-03-05 武汉中科通达高新技术股份有限公司 监控图像展示方法和装置
CN114397960A (zh) * 2021-12-28 2022-04-26 深圳潜行创新科技有限公司 一种基于智能移动设备的飞控方向可视化方法
CN114397960B (zh) * 2021-12-28 2024-05-31 深圳潜行创新科技有限公司 一种基于智能移动设备的飞控方向可视化方法
CN115617178A (zh) * 2022-11-08 2023-01-17 润芯微科技(江苏)有限公司 一种手指与车机无接触即可完成按键和功能触发的方法
CN115617178B (zh) * 2022-11-08 2023-04-25 润芯微科技(江苏)有限公司 一种手指与车机无接触即可完成按键和功能触发的方法
CN118351274A (zh) * 2024-04-29 2024-07-16 广州蓝昊广告有限公司 一种物体模型渲染方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111813290B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN111813290B (zh) 一种数据处理方法、装置以及电子设备
US12056813B2 (en) Shadow rendering method and apparatus, computer device, and storage medium
US11498003B2 (en) Image rendering method, device, and storage medium
CN111833243B (zh) 一种数据展示方法、移动终端和存储介质
WO2021031781A1 (zh) 投影图像校准方法、装置及投影设备
EP3786895A1 (en) Method, device and apparatus for repositioning in camera orientation tracking process, and storage medium
US10963100B2 (en) Interactive object control method and apparatus, terminal, and computer-readable storage medium
CN112017133B (zh) 一种图像展示方法、装置及电子设备
CN105959675A (zh) 一种视频数据的处理方法和装置
CN112150560B (zh) 确定消失点的方法、装置及计算机存储介质
CN112308768B (zh) 一种数据处理方法、装置、电子设备以及存储介质
CN113280752A (zh) 一种凹槽深度测量方法、装置、系统及激光测量设备
CN111124227A (zh) 一种图像显示方法及电子设备
CN111982305A (zh) 温度测量方法、装置及计算机存储介质
CN108335259B (zh) 一种图像处理方法、图像处理设备及移动终端
CN112181230A (zh) 一种数据展示方法、装置以及电子设备
CN110555815B (zh) 一种图像处理方法和电子设备
CN109813300B (zh) 一种定位方法及终端设备
CN111445568A (zh) 人物表情编辑方法、装置、计算机存储介质和终端
CN110769162B (zh) 电子设备及对焦方法
CN112308767B (zh) 一种数据展示方法、装置、存储介质以及电子设备
CN109842722B (zh) 一种图像处理方法及终端设备
CN112308766B (zh) 一种图像数据展示方法、装置、电子设备及存储介质
CN115713616A (zh) 一种房源空间模型生成方法、装置、终端设备及存储介质
CN116091744A (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