基于三维空间视口信息的球机联动方法与流程

文档序号:14717969发布日期:2018-06-16 02:00阅读:312来源:国知局
基于三维空间视口信息的球机联动方法与流程

本发明涉及一种基于三维空间视口信息的球机联动方法,属信息技术特别是视频监控技术领域。



背景技术:

利用三维技术对现实场景的模拟是目前世界范围内较为热门的研究方向之一,其中的主流模拟方式是针对真实场景数据进行虚拟的可视化仿真。主要步骤大体为:一、采集场景点云数据及纹理贴图数据;二、利用采集到的数据对真实场景进行三维建模;三、将模型数据导入相关的计算机图形处理引擎之中,构建三维场景;四、将真实中采集到的数据或相关传感器获取的实时数据在三维场景中进行可视化展示。

而在视频监控领域中,通过PTZ(Pan/Tilt/Zoom)的设定,实现用户对球机云台上下、左右的移动,以及对镜头变倍、变焦的控制,目前已经应用在各种各样的安防视频监控平台中。这种PTZ球机的使用弥补了固定摄像机监控视野窄的缺点。

单纯的采用虚拟现实的方式,利用相关传感器设备将数据在三维虚拟场景中进行可视化展示,归根到底使用者看到的场景只是“虚假的”模拟出来的场景。

但,依据传统的监控模式,利用PTZ球机大批量的部署在大面积的、复杂的监控区域时,需要使用人员硬记各个视频流的真实位置点,具有易混淆、易丢失目标、操作难度大、相机选择困难等不利因素,特别是在环境建筑复杂条件下,摄像头布置多,全部显示不利于使用者观看监控,逐一显示又不易于快速切换查找相机,严重制约这种监控方式在实际中的应用。因此,如果能够在大量部署的PTZ球机中,依据所查看的场景,自动选择适应的球机,自动调节所选球机姿态,以自动获取最适宜的拍摄效果,并可以依据具体显示方式进行显示和观看。



技术实现要素:

本发明针对传统的视频监控技术的上述缺陷,提供一种基于三维空间视口信息的球机联动方法,其能够利用三维空间视口信息,快速索引并获得相应场景的球机,并计算相应球机针对该场景的优化PTZ值,以便通过球机的选择和控制,为实时拍摄到优质的视频图像提供有利条件。

本发明的技术方案是:一种基于三维空间视口信息的球机联动方法,其特征在于包括下列步骤:

步骤1,标定相机(Camera)位置:进行三维建模,在相应的三维场景下,标定各相机的三维坐标;

步骤2,确定监控区域:将三维场景的视口设定在和/或移动到准备监看的场景区域,利用视口信息计算并获得相应姿态下能够观看到的场景区域,以此作为监控区域;

步骤3,筛选最佳相机:筛选出能够照射到监控区域对应的真实区域的相机,依据相机的位置,筛选出拍摄效果最佳的最佳相机。

步骤4,最佳相机调节:依据最佳相机相对于监控区域的位置,计算出最佳相机对监控区域的最佳拍摄设置,并依此对最佳相机进行设定和/或调节,由此实现最佳相机与监看区域的联动。

所述相机优选为PTZ(Pan/Tilt/Zoom)摄像机。

所述PTZ摄像机可以采用PTZ球机(球型摄像机),所述PTZ球机设有用于姿态调整的云台。

所述步骤1中,可以依据相机拍摄的真实场景进行三维建模。

所述步骤2中,可以依据视口信息构建视口相机视锥体,获取相应的视口照射范围,将构成三维模型的各子模型依次导入三维场景空间中,在子模型导入的过程中或导入后,计算该子模型是否落入视口照射范围,将落入视口照射范围的子模型列为监视区域,将未落入视口照射范围的子模型排除在监控区域外。

可以采用下列方式计算子模型是否落入视口照射范围:以分别对应于远视点和近视点的远裁剪面和近裁剪面在视锥体上截取构成视口照射范围的锥台,计算出所导入的子模型的包围盒,依据所述锥台的各顶点的坐标,计算出锥台各面的方向向外的法线向量,以各所述法线向量与各子模型的包围盒进行求交运算,依据求交运算结果判断相应模型是否落入视口照射范围,若包围盒位于所述法线向量的上方,则相应子模型未落入视口照射范围,反之落入视口照射范围。

所述步骤2中,可以依据视口位置坐标和视口朝向构建与视锥体轴线重叠的视口照射轴射线,以视口照射轴射线与落入视口照射范围的子模型进行求交运算,获得相交点,以此相交点作为监看中心点。

步骤3中,可以以监控区域和/或监看中心点为拍摄区域对相机进行筛选,可以根据需要采用下列任意一种或多种剔除,优选采用全部剔除方式:剔除拍摄被遮挡的相机,剔除距离超过限度的相机,剔除角度超过限度的相机,从适于拍摄监控区域的相机中挑选出拍摄效果最佳的相机作为所述的最佳相机。

可以构建从相机坐标点至监看中心点的相机照射轴线段(直线段)。

基于上述相机照射轴线段的构建,所述剔除被遮挡的相机的方式可以为:计算出所述相机照射轴线段与监控区域外的模型(子模型)是否存在相交点,若存在相交点,则认为该相机的拍摄被遮挡,若不存在相交点,则认为未被遮挡。

所述剔除距离超过限度的相机的方式可以为:计算所述相机照射轴线段的长度,若该长度超过设定的最大拍摄距离,则认为距离超过限度,若该长度未超过设定的最大拍摄距离,则认为距离未超过限度。

所述剔除角度超过限度的相机的方式可以为:计算所述相机照射轴线段与所述视口照射轴射线间夹角的角度,若该角度超过设定的最大拍摄角度,则认为角度超过限度,若该角度未超过设定的最大拍摄角度,则认为角度未超过限度。

所述步骤4中,可以以初始状态下最佳相机的正上方向为X方向,正朝向为-Z方向,依据右手定则确定的右方向为Y方向,计算最佳相机到监看中心点的矢量方向到XY平面的旋转夹角y,计算该矢量在XY平面的投影与Pan=0的三维空间位置与最佳相机坐标点的连线矢量在XY平面的投影的夹角x,所述夹角x、y的角度值与最佳相机初始状态下偏移的PT值成单调递增函数,该函数通过标定相机PT极限值及其所处角度的方式获取,由此得到用于最佳相机调节的Pan、Tilt两个参数。

可以利用视口到监看中心点的距离以及最佳相机到监看中心点的距离的比计算确定最佳相机的Zoom数值。

本发明的有益效果是:能够针对所查看的具体场景,在大量部署的球机中,自动选择最适宜的球机,且自动将所选球机调节到针对该场景的最适宜姿态,由此无需人工操作,就可以观看到球机拍摄到的效果良好的真实场景。

附图说明

图1是本发明的流程示意图;

图2是本发明涉及的视口信息及视锥体相关性及相关参数的示意图;

图3是本发明涉及的视锥体的构造示意图;

图4是本发明涉及的点与平面的空间关系示意图;

图5是本发明涉及的三角形与内部坐标关系的示意图;

图6是本发明涉及的最佳相机筛选流程的示意图。

具体实施方式

下面结合附图对本发明做进一步说明。

如图1-图6所示,本发明涉及一种基于三维空间视口信息的球机联动方法,包括标定相机数据、获取监控区域、筛选最佳相机、控制球机PTZ值进行联动四个步骤。

整体流程如附图1所示,首先对相机的位置在三维场景进行标定;之后当使用者通过交互式的操作,更改三维视口相机或称相机视口)的位置及姿态信息时,获取这些信息构建视锥体获取视口照射范围(或称视口范围区域或视口区域);大体粗略的筛选出视口照射范围内的模型,利用视口朝向及视口位置点构建视口照射轴射线Rcenter与范围内的模型表面进行求交运算,计算相交点,也就是视口中心正对的模型表面空间坐标;构建从相机位置坐标到相交点的相机照射轴线段(准确)(一条几何线段),计算该线段是否与其他模型相交,若相交则抛弃该相机,最终筛选出所有未遮挡的相机;再计算该线段的长度获取距离是否在预设的最大范围内,抛弃不符合条件的相机;之后计算相交点分别到视口位置及相机位置的矢量朝向的夹角,是否在预设的最大角范围内,抛弃不符合条件的相机;接下来将所有符合条件的相机中,角度距离最优的那组相机作为筛选出的最佳相机;最后利用该相机通过算法计算PTZ值并将该值设定给球机即可完成最终的利用三维空间视口信息对球机进行联动的目的。

各步骤详细介绍如下:

步骤1,标定相机位置(标定相机数据)。

该步骤为预标定过程,通常在系统正式使用运行前,提前做好相应数据的采集及准备。

首先对要监控的区域周围环境进行等比例的高还原度三维建模,降低因模型长宽高的比例不同引起的数据误差;

接下来利用三维可视化工具,将球机在三维场景中的位置标记出来,获取标记点位置坐标O(xcam,ycam,zcam),再打开球机转动球机使球机Pan值为0,观察此时图像正水平中线上的任意图元在三维场景中的位置利用鼠标点击交互,获取点中的模型表面坐标,鼠标点击所需要的射线方程计算方法如下:

首先利用屏幕坐标(x,y)及远近裁剪系数进行补齐,将二维的屏幕坐标补齐为三维空间坐标,所用近裁剪面系数为0,将视口相机在低于该系数距离的场景的图像裁剪掉,所用远裁剪系数为1,将视口相机在超过该系数距离的场景的图像裁剪掉,并得到形成近剪裁面Pw0(x,y,0)和远剪裁面Pw1(x,y,1)。

将Pw0(x,y,0)和Pw1(x,y,1)分别与主视口(视口相机)的WindowsMatrix(窗口矩阵),ProjectiveMatrix(投影矩阵)和ModleViewMatrix(模型视口矩阵)这三个矩阵的逆矩阵的乘积相乘,得到焦点三维坐标PO,远视点三维坐标Pf。

再利用Pn=PO+Forward(主视口相机前方向向量)×f(主视口焦距)得到近视点三维坐标Pn;

通过Pf,Pn两点坐标可以得到穿过Pf,Pn射线R的几何方程,获取射线与模型的交点计算方法将在后面结合式8予以详细说明。

由此,最终获取Pan值为0时(PTZ三值中的P值)标记点的三维空间坐标Oo。

最后,将所有的球机信息(球机三维坐标O及P值复位坐标OO)存入文件进行保存,优选采用相机(或PTZ球机)数据列表的形式。

步骤2,确定监控区域,获取监控区域信息。

首先通过在三维展示程序中移动视口到准备监看的区域模型所对应的场景处,获取该视口位置相机信息(指三维视口相机的详细参数信息),其中包括位置坐标Op(Xp,Yp,Zp)、上方向矢量前方向矢量近裁剪面距离Znear、远裁剪面距离Zfar、视口宽度w、视口高度h、焦距f,如图2所示。

以下皆以OpenGL右手坐标系为例,已知前方向矢量上方向矢量可利用式1的公式计算获取右方向矢量矢量

再利用w、h、f、Znear可以计算出近裁剪面上的四个顶点Plt、Prt、Prb、Plb构成的近裁剪面的平面宽度Wn和平面高度Hn,如式2:

利用空间坐标间的关系,计算出裁剪得到的锥台形在近裁剪面上的四个顶点的坐标,如式3:

同理,利用式2、3亦可以求出锥台形在远裁剪面上的四个顶点的坐标,由此,可得到视锥体构建的所有6个平面所需要的顶点坐标。

为筛选出视口可以看到的模型有哪些,在将每一个子模型导入场景中的时候,通过对其顶点信息进行遍历,可以获取到每一个子模型的包围盒BoundingBox(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)(例如,可以采用AABB博外盒模型),通过包围盒可以计算出包围盒的中心坐标VertexCenter和8个顶点坐标Vertex[8]。

利用模型的世界变换矩阵(WorldMatrix)可以计算出包围盒各个顶点新的位置,如式5:

Vertex`=Vertex×WorldMatrix (5)

对新的8个顶点取最大最小值,获取新的包围盒信息BoundingBox`。

在之前的式3过程中,可以计算出构建视锥体所需的8个顶点,通过连接这些顶点,可以获取视锥体的6个面Planenear、Planefar、Planeleft、Planetop及Planebottom。

如图4所示:

平面Planenear由Vnlt、Vnrt、Vnrb、Vnlb构成平面组成;

平面Planefar由Vnlt、Vnrt、Vnrb、Vnlb构成平面组成;

平面Planeleft由Vnlt、Vnlb、Vflb、Vflt构成平面组成;

平面由Vnrt、Vnrb、Vfrb、Vfrt构成平面组成;

平面Planetop由Vnrt、Vnlt、Vflt、Vfrt构成平面组成;

平面Planebottom由Vnrb、Vnlb、Vflb、Vfrb构成平面组成;

通过现有几何知识,可以知道对任意两个非平行矢量的进行叉乘,可以得到与这两个矢量都垂直的法向量。

因此可以通过该定理计算得到视锥体6个面方向朝外的法向量:

Normalnear=(Vnlt-Vnrt)×(Vnrb-Vnrt)

Normalfar=(Vflb-Vfrb)×(Vfrt-Vfrb)

Normalleft=(Vflt-Vnlt)×(Vnlb-Vnlt)

Normalright=(Vfrb-Vnrb)×(Vnrt-Vnrb)

Normaltop=(Vfrt-Vnrt)×(Vnlt-Vnrt)

Normalbottom=(Vnlb-Vnrb)×(Vfrb-Vnrb)

利用法线Normal三个分量(x,y,z)的正负,可以快速判断出距离平面最近的包围盒的顶点。

定义Normal的任一坐标方向上的分量为Nt,最近的包围盒顶点Vertex的分量为Vt,该分量的最小值为Vmin,最大值为Vmax,可得下面的式子,计算获取距离平面最近的包围盒的点Vertex的坐标

由此,可以得到距离6个视锥体平面“最近”的包围盒上的点的坐标Vertex[6]。

空间中的任意一点坐标A与平面(Plane)上任意一点B构成的矢量向量当与平面的法向量的夹角为锐角时,则该点A位于平面的正上方。

如图4所示,已知A,B,C,D四个点坐标,且B,C,D位于同一平面上,可以通过以下的方法计算A点是否位于平面的上方:

∵0°<θ<180°

∴当cosθ>0时θ为为锐角,A位于Plane的正上方

当cosθ=0时θ=0°,A位于Plane表面

当cosθ<0时θ为为钝角,A位于Plane的正下方

(7)依据前面得到的视锥体某平面的法向量,将任意两点以及该向量对应的包围盒上的点坐标(距离平面最近的包围盒的点Vertex)带入式7中,可以确定该点是否在视锥体外部,若在平面的正上方,则认为其在外部,只要任意一点确定在外部,就可以快速的判断出该包围盒不在视锥体范围之内,即可快速的将绝大部分的子模型排除。

可以通过获取视口朝向及视口相机中心位置,构建射线R与剩余模型的包围盒进行求交获取相交的模型,再与该模型的网格三角面求交,计算获取相交点。

射线与空间三角形(任一三角形)求交的计算方法如下:

定义射线Ray起点坐标(也就是视口位置)为Oray,射线方向(也就是视口朝向)为Dray,射线距离三角形所在的平面距离为Sdis,射线与三角形所在平面的交点坐标为Pintersect,这样我们就可以将射线的参数方程表示如下:

(Pintersect=Oray+Dray*Sdis)

同样,三角形内的三个点坐标V0,V1,V2,则三角形内的一点我们可以理解为由V0出发沿着V0→V1的方向行进u倍的V0→V1的距离再向V0→V2的方向行进v倍的V0→V2的距离,且满足u+v≤1,u≥0,v≥0。

如图5所示,最终的三角形内部参数方程为:

Pintersect=(1-u-v)V0+uV1+vV2

这样根据射线参数方程及三角形内部参数可以得到:

Oray+Dray*Sdis=(1-u-v)V0+uV1+vV2

在这个方程中s,u,v是未知数,其他均已知。那么我们将这三个数提取,可以得到下面的线性方程式:

令E1=V1-V0,E2=V2-V0,T=O-V0,则上式可改写为

根据克莱姆法则求解可得:

三个式子联合,即

利用混合积公式

令Q=D×E2,R=T×E1则

式(8)同样也适应于其他任意射线(例如Ray)与任意平面(例如任一网络三角面)的求交。

利用该公式计算得到s,u,v判断射线与三角面是否相交(满足uv条件:满足uv条件:u+v≤1,u≥0,v≥0)及若相交时的获取相交点Pintersect(Pintersect=Oray+Dray*Sdis或Pintersect=(1u-v)V0+uV1+vV2)。

得到的相交点即后面用来调用PTZ球机进行监看的中心坐标Pintersect。

步骤3,筛选最佳相机。

首先利用之前计算得到的监看中心坐标Pintersect,与PTZ球机数据列表中的位置信息坐标Op(标定相机数据的坐标可以称为Op),求PintersectOp之间的距离,将所有的距离大于一定范围的首先进行排除。

利用获得球机到监看中心的矢量若中z<0则进入下一步的筛选,若z>0则需要计算与XY平面的夹角θ,XY平面的法向量则

若则该相机亦排除(说明该相机拍摄不到监看中心这个位置)。

剩余的相机,利用PO两点间的线段与模型(子模型)进行求交(求交方法同式8),若判断为相交,则说明该相机照射选择的监看位置时会被遮挡,该相机排除,若所有的模型均不相交,则说明无遮挡,该相机符合条件放入下一步的最终筛选。

剩下所有符合的相机均为可以观看的相机,需要获取其中效果最好的,主要考虑两方面因素:一是相机到监看中心的距离与视口到监看中心的距离接近(计算方法同式9),二是相机到监看中心的朝向,与视口到监看中心的朝向的角度差(计算方法为求两向量的模的内积求反余弦)。通过将这两个条件的值进行评分并加权求得分数最高的(距离越接近评分越高、角度越小评分越高),作为最终的筛选出来的相机,整体流程如图6。

步骤4,最佳相机调节,计算球机PTZ值并联动。

假设相机初始位置正上方向为X方向,初始位置正朝向为-Z方向,右方向为Y方向,符合右手定则。

首先,计算相机到相交中心点的矢量方向到XY平面的旋转夹角y(计算方法同式10),之后计算该矢量在XY平面的投影与Pan=0的三维空间位置与相机中心点坐标的连线矢量在XY平面的投影的夹角x,这两个角度x、y与相机初始位置下偏移的PT值成单调递增函数,该函数可以通过标定相机PT极限值及其所处角度的方式获取,这样即可得到最终的Pan、Tilt两个参数;

之后利用视口到相交点的距离以及相机到相交点的距离的比求Zoom;

最后利用PTZ三值调用球机生产厂商发布的控制球机的SDK的相关接口,去驱动球机照射目标位置。

为表述上的便利,本说明书所称视频图像指视频图像数据和/或视频图像显示,或其他源自球机拍摄的视频图像形式。

本发明公开的各优选和可选的技术手段,除特别说明外及一个优选或可选技术手段为另一技术手段的进一步限定外,均可以任意组合,形成若干不同的技术方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1