一种同时检测建筑物屋顶、建筑物墙体及地面阴影的方法与流程

文档序号:19007608发布日期:2019-10-29 23:54阅读:657来源:国知局
一种同时检测建筑物屋顶、建筑物墙体及地面阴影的方法与流程

本发明涉及地理空间数据的三维数据处理领域,特别是涉及一种同时检测建筑物屋顶、建筑物墙体及地面阴影的方法。



背景技术:

随着城市建筑物的需求量及建筑物的利用率不断地增加,实时的真实感的建筑物阴影正引起越来越多的人关注。因此,如何高效、快速的对建筑物阴影进行可视化表达,在建筑设计、城市规划、城市建设、城市管理等方面具有重要意义。

现有的建筑物阴影的检测方法主要是根据场景的几何形状、太阳高度角、dsm或者传感器等参数建立三维模型来检测建筑物的阴影。如张珩等人改进了一种基于多波段光谱差异的阴影自动检测方法。其利用建筑物阴影长度与建筑物高度之间的几何关系,确定出阴影长度,进而求出建筑物的高度,使用编程实现了一体化较高精度的多栋建筑物高度计算,最终完成建筑物的阴影检测工作。又如李艳等人利用数字表面模型和太阳高度和方位来计算建筑物阴影的空间坐标,并由相机模型计算出每个阴影单元对应的扫描行和相机空间坐标。由高度场光线跟踪判断阴影的可见性,对可见阴影计算出它的坐标。以及专利申请号cn201410636705.2,名称为“用于近似绘制三维场景柔和阴影的方法”的专利提出的通过对平面面光源的随机采样来估计可视场景区域内的平面面光源可见性,并利用空间卷积平滑去噪滤波来减小随机采样引入的平面面光源可见性噪声,以此为依据计算绘制出阴影的三维场景画面。

以往的阴影检测方法,虽然可以很大程度上完善建筑物的阴影区检测,但多数方法只适用于地面上的阴影区检测,而对于建筑物屋顶上的阴影区以及三维空间层面的建筑物墙体上的阴影区仍未有较为明确的检测方法被提出。



技术实现要素:

本发明目的在于提供一种同时检测建筑物屋顶、建筑物墙体及地面阴影的方法。检测结果具有较高的精度及完整性。

为了达到上述目的,本发明的方法包括步骤如图1所示,具体步骤如下:

步骤1,收集实时的数据资料,根据数字建筑模型所处地的地理纬度、当日的太阳赤纬以及当时的太阳时角求算出所求时刻的太阳高度角及太阳方位角。

步骤2,当阴影的投射方向无障碍物阻碍时,建筑物的各个屋顶点所生成的对应的阴影点将直接被投射在地面上。根据步骤1确定的太阳高度角、太阳方位角,确定出该时刻建筑物被太阳光照射而投射在地面上的阴影区边界。

步骤3,考虑到建筑群相邻建筑物存在遮挡现象,因而建筑物阴影并非全部投射在地表面。根据太阳的位置分析影子的投射方向,发现:沿着阴影的投射方向,建筑物相对较高的楼体的阴影将不完全投射在地面,会有一部分被投射在相邻的建筑物的屋顶上。因而对于屋顶上的阴影区边界的确定方法,本发明通过引入矢量数据来求取位于建筑物屋顶上的阴影区边界。

首先在dbm中建立矢量坐标系,以建筑物的屋底点为矢量的出发点临近的建筑物屋底点为该矢量数据的终点,并以矢量数据与建筑物屋底边缘的夹角必须小于该屋底边缘与地面上阴影区边界之间的夹角为限制条件求取所有满足条件的矢量数据集合,最终确定出该栋建筑物满足条件的矢量集合ωbldg1。

紧接着在每一栋建筑物对应的集合中寻找同一终止点出现的频次大于等于2的矢量数据,并将满足条件的矢量数据存储到另一集合υ中。对集合υ中的矢量继续分析。其中矢量起点与终点对应的两个建筑物的高差向量被记为ha2',每一矢量终止点对应的屋顶点与矢量始点对应的建筑物墙体之间的距离矢量被记为hdistance。当向量ha2'与向量hdistance之间的夹角小于等于太阳高度角时,即可判断该屋顶点被相邻建筑物投射阴影。最终将判断出的被投射阴影的屋顶点与步骤2所确定的地面上的阴影区边界结合即可判断出屋顶阴影区边界。

步骤4,结合步骤2,步骤3确定出被投射在建筑物墙体上的阴影区边界。

对于建筑物墙体上的阴影区边界,其阴影区边界可通过邻近的建筑物屋顶上的阴影区边界以及地面上的阴影区边界直接分析确定。

附图说明

图1是本发明方法的流程图。

图2是阴影的形成原理图。

图3是本发明方法的阴影检测原理图。

图4是本发明方法检测到的地面上的阴影。

图5是本发明方法检测到的建筑物屋顶上的阴影。

图6是本发明方法的最终检测结果图。

具体实施方式

下面结合本发明中的附图详细说明本发明的具体实施方式。显然,所描述的实施案例仅仅是本发明中的一部分实施案例,而不是全部的实施案例。基于本发明中的实施案例,本领域的普通技术人员在没有做出创造性劳动前提的条件下所进行的其他所有实施案例,都属于本发明的保护范围。

实施案例:

本实施例中,我们选取美国科罗拉多州丹弗市的数字建筑模型进行实验处理。

步骤1,收集实时的数据资料,根据数字建筑模型所处地的地理纬度、当日的太阳赤纬以及太阳时角求算出所求时刻的太阳高度角α及太阳方位角ρ。

任意时刻的太阳高度角α、太阳方位角ρ与当地的地理纬度m1,当日的太阳赤纬m2,当地的太阳时角t满足如下关系:

sin(a)=sin(m1)sin(m2)+cos(m1)cos(m2)cos(t)(1)

由式(1)、(2)即可求取太阳高度角α、太阳方位角ρ。

步骤2,根据步骤1确定的太阳高度角、太阳方位角,结合图2的原理图可确定出该时刻建筑物被太阳光照射而投射在地面上的阴影区边界。

图2,表示某一时刻位于地理坐标系中的建筑物经过太阳的平行光照射,在地面及遮挡物上形成对应时刻的阴影区边界,其中地底点被标记为nadir。点m、o、s分别表示框标系xyz的原点、像主点及摄影中心。图(a)中有两栋建筑物分别表示为bldg1、bldg2。建筑bldg1用8个角点a1′、b1′、c1′、d1′、a1、b1、c1、d1表示,形成的地面上的阴影区表示为a1b1c1l1a2′a2g1f1e1,形成的屋顶上的阴影区为l1i1h1a2,形成位于墙体上的阴影区为a2′h1g1a2。bldg2同样被用8个角点a2′、b2′、c2′、d2′、a2、b2、c2、d2表示,其形成的阴影被全部投射在地面,被表示为a2b2c2g2f2e2。

以图2模型中的点i1为例。由于同一建筑物上的同一高度上的四个屋顶点投射在同一水平地面上形成的阴影的长度是相同的。因而屋顶点a2’对应的投射的阴影的长度是与a1′点对应的阴影区边界长度是等同的,都可视为hshadow。若被投射的阴影点位于不同高度的屋顶或不同高度的水平面,则阴影的长度会发生改变,需重新通过太阳高度角α求取如式(3)所示。

hshadow(i)=hb1d(i)/tan(α)(3)

式(3)中,i为建筑物编号。则f1点的地理坐标(xf1,yf1)可根据b1点的地理坐标表示为:

上式中,△xb、△yb表示点f1与点b1的横纵坐标之差,△xb=hshadow×cos(β)、△yb=hshadow×sin(β),由于点a1、b1是同一建筑物上的同一高度投射出的阴影点,因而此处的△xb与△x,△yb与△y大小相同,即可将△xb替换为△x,△yb替换为△y,都可达到同等的效果。最终可结合程序语言依照式(4)计算确定出每一栋建筑物投射在地面上的阴影区边界。检测结果如图4所示。

步骤3,依据步骤1所确定的地面上的阴影区边界,通过空间数据分析确定出被投射在建筑物屋顶上的阴影区边界。

如图3所示,依据式(4)可分别确定出建筑物bldg1、bldg2、投射在地面上的阴影区边界。阴影点e1、f1、g1、e2、f2、g2的位置信息通过式(4)求算确定后,我们需要借助地面上的阴影区边界确定建筑物屋顶上的阴影区边界。如图3中,在dbm的三维空间,我们通过引入向量来确定屋顶上的阴影区边界:

以建筑物bldg1为例求取该建筑物投射在周围建筑物屋顶上的阴影区边界。阴影边缘向量为屋顶点经太阳光照射投射在地面上所形成的投射在地面上的阴影区边界,向量与向量之间的夹角可以表示为:

以a1点为向量的起点在阴影边缘向量与建筑物边缘之间寻找满足以下条件的建筑物拐点为向量的终止点,并将满足该条件的集合定义为

向量与向量之间的夹角可以表示为:

以b1点为向量的起点在阴影边缘向量与建筑物边缘之间寻找满足以下条件的建筑物拐点为向量的终止点,并将满足该条件的集合定义为

向量与向量之间的夹角可以表示为:

以c1点为向量的起点在阴影边缘向量与建筑物边缘之间寻找满足以下条件的建筑物拐点为向量的终止点,并将满足该条件的集合定义为

向量与向量之间的夹角可以表示为:

由于夹角因而屋底点d1不予考虑。

最终获得满足相关条件并以建筑物bldg1的屋底拐点a1、b1、c1为出发点,临近各建筑物屋底拐点为终止点的向量的集合

在集合ωbldg1中,查找并记录同一终止点出现的频次,当同一终止点的出现频次≥2时,将该点存储到集合υ中。然后对集合υ内的拐点进行分析,此处以集合υ内的拐点c3为例:

寻找屋底点a2对应的屋顶点a2’,确定点a2’到平面a1b1b1'a1'的距离。平面a1b1b1'a1'的表达式方程式为:

a11x+b11y+c11z+d11=0(13)

其中系数a11、b11、c11、d11可根据建筑物bldg1的各个拐点坐标向量确定出,是垂直于平面b1c1c1’b1’的一条法向量。向量可通过a2’点与b1’点的坐标表示为:

则点a2'到平面b1c1c1’b1’的距离hdistance可表示为:

其中,

可判断出屋顶点d3′被建筑物bldg1投射阴影。

当相邻建筑物屋顶被投射阴影时,且屋顶阴影边界的求取方式主分以下两种情况:

情况一:当集合υ内的所有拐点都被建筑物bldg1投射阴影时,即如图3,依据式(18)可确定出建筑物bldg2的屋顶点a2′被建筑物bldg1投射阴影。此时可判断出建筑物bldg1的其他屋顶拐点将全部被投射在地面上,我们只需参照地面上的阴影区边界即可确定屋顶上的阴影区边界。

情况2:当集合§内的所有拐点只有部分被建筑物bldg1投射阴影时,即如图3,此处以图3模型中的点i1为例。依照式(11)点f1的求取方式求取i1,将bldg2的屋顶做为bldg1屋顶点的投射地面(此时,屋顶点相对投射平面的高程为两楼的楼高之差),由于同一建筑物上的同一高度上的四个屋顶点投射在不同水平地面上形成的阴影的长度是不相同的。因而屋顶点f对应的投射的阴影的长度是不同的,记为hshadow1′:

hshadow1′=(hb1dg1-hb1dg2)/tan(α)(19)

屋顶上的阴影点i1的坐标最终可表示为:

式(20)中:

△xi1、△yi1表示点a2与点i1的横纵坐标之差。对于屋顶边界阴影点n的确定。我们依照求取i1的方式,来确定bldg1的屋顶点c1′投落在bldg2屋顶所在平面上的阴影点,便可确定交点n,即所求的屋顶边界上的阴影点。

当确定出屋顶上的特征阴影点后,依次连接屋顶上以及地面上所确定出的阴影点,确定出建筑物投落在屋顶上以及地面上的相对完整的阴影区。检测结果如图5所示。

步骤4,结合步骤2,步骤3确定出被投射在建筑物墙体上的阴影区。

对于建筑物墙体上的阴影区,其阴影区边界可通过邻近的建筑物屋顶上的阴影区边界以及地面上的阴影区边界直接分析确定。检测结果如图6所示。

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