基于密集点云的城市三维模型快速构建方法
技术领域
本发明属于城市三维模型的构建技术领域,尤其涉及一种基于密集点云的城市三维模型快速构建方法。
背景技术
密集点云是倾斜摄影测量生产城市三维模型过程中的中间产物,是通过航空影像匹配、区域增长、粗差剔除等步骤提取出来的包含物体三维几何信息的一系列大规模点数据。点云是一个空间数据的集合,其特点是数据量大、数据间距离较小,通常具备上万个甚至更多的点,存储量巨大。目前,在城市三维模型的构建过程中,提取出的点云数据往往分布不均匀,在每一次寻找最佳匹配点的过程中,运算量巨大,同时需要匹配多张高质量的纹理图片,影响构建效率。为了解决现有技术存在的问题,人们进行了长期的探索,提出了各式各样的解决方案。
例如,中国专利文献公开了一种基于Microstation v8i的城市快速建模方法[申请号:201010548693.X],包括以下步骤:步骤一、采用航空摄影测量系统且按照常规航空摄影测量方法对被测区域进行航空测量;步骤二、处理器在Microstation v8i软件环境下对航空测量数据进行分析处理对航空测量数据进行分析处理, 过程如下:建立航空摄影测量立体模型、地物分类及标记并相应建立地物类型层色对应表、矢量数据采集与分别建立房屋类、散树类和其它类地物的模型,对被测区域内的所有地物分别进行处理, 并获得被测区域内所有地物的三维几何模型。
上述的方案在一定程度上改进了现有技术的部分问题,但是,该方案还至少存在以下缺陷:步骤繁琐,构建效率低,纹理质量差的技术问题。
发明内容
本发明的目的是针对上述问题,提供一种构建效率更高,纹理质量高,效果逼真的基于密集点云的城市三维模型快速构建方法。
为达到上述目的,本发明采用了下列技术方案:本基于密集点云的城市三维模型快速构建方法,其特征在于,本方法包括以下步骤:
步骤A、点云自适应分块:将点云数据进行自适应分块,根据确定的阈值范围,保证每一块内的点数目都在确定的阈值范围内,且每一块根据点的分布进行动态的调整,每一块的宽度动态地随着点的密度变化;
步骤B、分块进行TIN的构建:在已经分好的块内,分别进行三维TIN模型的构建;
步骤C、纹理选择:为三维TIN模型的每个面从多视倾斜影像中选出质量最好的影像作为纹理数据源;
步骤D、纹理提取:选出质量最好的纹理数据源之后,进行纹理的提取;
步骤E、漏洞修补:根据纹理特征对纹理影像进行检索,对纹理影像进行检索后与质量最好的纹理数据进行比对选出最优的纹理影像,对于被遮挡的部分,通过检索查找纹理特征与被遮挡的部分相同或者近似的纹理影像,对被遮挡的部分的纹理加以替代,完成纹理的漏洞修补;
步骤F、纹理贴图:将优选出来的纹理自动贴于三维TIN模型的表面,生成效果逼真的三维模型。
在上述的基于密集点云的城市三维模型快速构建方法中,所述的点云数据自带均匀格网,上述的步骤A包括以下步骤:
①通过交互为每块的平均点数设定动态可调的阈值,所述的阀值为20-100;对于给定的点集P,根据点集P数据量确定一个阈值,使得每个块内的点数尽量接近所述动态可调的阈值;
②在读取点云数据时记录下离散点的总数,再根据选定的阀值,计算出来共分多少行多少列的矩形区域;
③以横坐标为主纵坐标为辅对每一块内的所有点云数据排序,根据每块动态可调的阀值和计算出来的行列数计算出每行内共有多少个离散数据即每行的阀值,按照行的阀值将每一块内的所有的点云数据划分成一行行的数据条;
④再在每个数据条内以纵坐标为主横坐标为辅进行排序,按设定好每一块的动态可调的阀值,将每行的数据具体划分并存储到每块的边链表内。
在上述的基于密集点云的城市三维模型快速构建方法中,,上述的步骤B包括以下步骤:
①在块内找到任意一点A和与之距离最近的一点B,将两点连起来作为第一个三角形的一条基边,将其加入到边链表中,并以此为基边进行扩展;
②利用构建正方体的方法限定最佳匹配点的搜索范围;
a)计算出第一条基边的中点坐标,对于初始点A、B通过遍历记录下两个点的坐标,并根据A、B两点的坐标计算出线段AB 的中点O坐标;
b)以O点为中心在块内构建一个正方体,正方体大小根据参与构网的点数及密度动态确定,使得落在这个正方体内的点数在 45-55个,将第三点的搜索范围定位在该正方体内;
③在正方体内进行第一个三角形的构建,根据最大最小角原则和空外接圆特性寻找最佳匹配点,若在正方体内没有搜索到最佳匹配点,则将搜索范围动态的扩大一倍,直到搜索到最佳匹配点为止;
④在构建完第一个三角形之后,将新构建完的第一个三角形和新构建完的第一个三角形的边加入相应的结构体中进行存储;
⑤以构建完第一个三角形的边为基边按照步骤②、③向外进行扩展,并读取该基边的使用次数,如果使用次数为2或者该基边的右边没有点,则该基边不进行扩展,同时对按照步骤②、③新构建完的三角形和按照步骤②、③新构建完的三角形的边进行存储;
⑥重复步骤⑤,直至边链表中的所有边都进行了扩展,结束构网;
⑦进行块间三角网归并,根据分成的块,提取出边界面上的点,对相邻的块的边界面上的点,进行三维TIN模型构建处理,从而缝合块间的三角网;
⑧结果输出和预览,对得到的三维TIN模型进行效果预览,判断是否满足要求,若不能满足要求,则对三维TIN模型构建算法中的参数和步骤进行调整,直至得到满意结果;
依据上述步骤得到三维TIN模型。
在上述的基于密集点云的城市三维模型快速构建方法中,在上述的步骤C中,为每个面从多视倾斜影像中选出质量最好的影像作为纹理数据源的优选准则如下:
①同一面在两幅或两幅以上备选影像中均完全可视时,则选择成像角度最好的影像;
②同一面仅有一幅影像可视时,则以该影像进行纹理采集;
③同一面在所有备选影像中都存在遮挡时,则以纹理区域遮挡面积最小的影像优先。
在上述的基于密集点云的城市三维模型快速构建方法中,成像角度最好的影像选择采用视角法进行选择:成像角度最好的影像的面的单位法向量A与视点方向的夹角最小即视点最优,比较每幅纹理影像所求出的夹角,将夹角较小的2-3张纹理影像记录下来;在利用视角法选出来视角最佳的2-3张影像之后,采用深度缓存算法优选出遮挡程度最小的纹理,该算法基于透视成像时离透视中心最近的地面点遮挡从地表发出的到镜头透视中心的光线上其他点,若视角最佳影像被遮挡程度最大,则要选择视角效果次之的影像;首先对深度缓存器和颜色缓存器进行初始化,把深度缓存器中所有单元置成一个最大可能的深度值,把颜色缓存器中各单元置成背景颜色;然后将场景中的物体不分次序地投影到象平面上去;对于每个投影点,把投影物体在该点处的深度与深度缓存器中相应位置上的深度值进行比较,若前者小于后者,则把当前被投影物体的颜色写到颜色缓存器中去,同时用当前投影物体的深度更新深度缓存器中相应投影点的深度,否则不做任何操作,按照上述步骤提取出遮挡程度最小的影像。
在上述的基于密集点云的城市三维模型快速构建方法中,在上述的步骤D中,先确定纹理的裁切范围,主要分两个步骤:确定纹理区域凸包、计算最小外接矩形,利用Gramham算法确定纹理区域的凸包,得到纹理区域的凸包之后,通过遍历凸包的每条边然后对剩余的点进行扫描,找到其他三边上落的点;再通过计算出此矩形的面积,最终选出面积最小的矩形即为最小面积矩形;然后对纹理区域的尺寸进行调整,通过纹理裁切范围的确定和尺寸的调整,对纹理进行裁切,以生成贴图文件在进行裁切前,先根据经过上一步尺寸调整过的纹理区域创建具有相同大小的缓存图像,然后利用缓存图像与纹理区域的空间几何变换关系,获得缓存图像中每个像素在相应的纹理区域中的像素值,然后进行纹理区域进行裁切,提取出纹理。
在上述的基于密集点云的城市三维模型快速构建方法中,在上述的步骤E中,先提取出被遮挡区域的边界,首先对于选出来的影像进行视差估计,利用基于块的MAD算法求出视差矢量,通过交叉对应来判断求出的视差矢量是否可信,由于遮挡区、大片的均匀单一背景区域及重复纹理区的视差是不可信的,故利用可信图,并结合边界信息检测出遮挡边界。
在上述的基于密集点云的城市三维模型快速构建方法中,在上述的步骤E中,为保证纹理贴图后的效果,三角面片上其他点投影后尽量落在边界点投影后围成的多边形中,选取合适的投影平面;然后计算三角面片上的各顶点坐标,将三维三角面片平面参数化;在投影面建立二维平面坐标系包括X轴、Y轴以及坐标的单位量度,在此坐标系中通过计算得到各投影点的相对坐标;归一化处理上一步得到的各投影点的相对坐标得到纹理坐标,确定景物空间中的坐标对应的纹理坐标之后,利用openGL实现纹理贴图;经过纹理贴图得到纹理映射效果图。
与现有的技术相比,本基于密集点云的城市三维模型快速构建方法的优点在于:1、构建效率更高,实现了对点云数据的高效管理,提高了点云数据检索、查询的速度。2、利用在块内构建立方体的方法来限定最佳匹配点的搜索范围,避免了原来构TIN方法中寻找最佳匹配点是每一次都要对所有的点进行遍历,降低了计算量,提高构TIN的效率。3、纹理质量高,效果更真实。
附图说明
图1是本发明提供的流程图。
图2是本发明提供的自适应分块的示意图。
图3是本发明提供的视角法原理图。
图中的建筑物侧面1,A向为法向量n,B向为纹理面与相机摄影中心连接的矢量,C为矢量B与平面的法向量之间的夹角。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步详细的说明。
如图1-3所示,本基于密集点云的城市三维模型快速构建方法,本方法包括以下步骤:
步骤A、点云自适应分块:将点云数据进行自适应分块,根据确定的阈值范围,保证每一块内的点数目都在确定的阈值范围内,且每一块根据点的分布进行动态的调整,每一块的宽度动态地随着点的密度变化;
步骤B、分块进行TIN的构建:在已经分好的块内,分别进行三维TIN模型的构建;
步骤C、纹理选择:为三维TIN模型的每个面从多视倾斜影像中选出质量最好的影像作为纹理数据源;
步骤D、纹理提取:选出质量最好的纹理数据源之后,进行纹理的提取;
步骤E、漏洞修补:根据纹理特征对纹理影像进行检索,对纹理影像进行检索后与质量最好的纹理数据进行比对选出最优的纹理影像,对于被遮挡的部分,通过检索查找纹理特征与被遮挡的部分相同或者近似的纹理影像,对被遮挡的部分的纹理加以替代,完成纹理的漏洞修补;
步骤F、纹理贴图:将优选出来的纹理自动贴于三维TIN模型的表面,生成效果逼真的三维模型。
具体的,所述的点云数据自带均匀格网,上述的步骤A包括以下步骤:
①通过交互为每块的平均点数设定动态可调的阈值,所述的阀值为20-100;对于给定的点集P,根据点集P数据量确定一个阈值,使得每个块内的点数尽量接近所述动态可调的阈值;
②在读取点云数据时记录下离散点的总数,再根据选定的阀值,计算出来共分多少行多少列的矩形区域;
③以横坐标为主纵坐标为辅对每一块内的所有点云数据排序,根据每块动态可调的阀值和计算出来的行列数计算出每行内共有多少个离散数据即每行的阀值,按照行的阀值将每一块内的所有的点云数据划分成一行行的数据条;
④再在每个数据条内以纵坐标为主横坐标为辅进行排序,按设定好每一块的动态可调的阀值,将每行的数据具体划分并存储到每块的边链表内。
上述的步骤B包括以下步骤:
①在块内找到任意一点A和与之距离最近的一点B,将两点连起来作为第一个三角形的一条基边,将其加入到边链表中,并以此为基边进行扩展;
②利用构建正方体的方法限定最佳匹配点的搜索范围;
a)计算出第一条基边的中点坐标,对于初始点A、B通过遍历记录下两个点的坐标,并根据A、B两点的坐标计算出线段AB 的中点O坐标;
b)以O点为中心在块内构建一个正方体,正方体大小根据参与构网的点数及密度动态确定,使得落在这个正方体内的点数在 45-55个,将第三点的搜索范围定位在该正方体内;
③在正方体内进行第一个三角形的构建,根据最大最小角原则和空外接圆特性寻找最佳匹配点,若在正方体内没有搜索到最佳匹配点,则将搜索范围动态的扩大一倍,直到搜索到最佳匹配点为止;
④在构建完第一个三角形之后,将新构建完的第一个三角形和新构建完的第一个三角形的边加入相应的结构体中进行存储;
⑤以构建完第一个三角形的边为基边按照步骤②、③向外进行扩展,并读取该基边的使用次数,如果使用次数为2或者该基边的右边没有点,则该基边不进行扩展,同时对按照步骤②、③新构建完的三角形和按照步骤②、③新构建完的三角形的边进行存储;
⑥重复步骤⑤,直至边链表中的所有边都进行了扩展,结束构网;
⑦进行块间三角网归并,根据分成的块,提取出边界面上的点,对相邻的块的边界面上的点,进行三维TIN模型构建处理,从而缝合块间的三角网;
⑧结果输出和预览,对得到的三维TIN模型进行效果预览,判断是否满足要求,若不能满足要求,则对三维TIN模型构建算法中的参数和步骤进行调整,直至得到满意结果;
依据上述步骤得到三维TIN模型。
在上述的步骤C中,为每个面从多视倾斜影像中选出质量最好的影像作为纹理数据源的优选准则如下:
①同一面在两幅或两幅以上备选影像中均完全可视时,则选择成像角度最好的影像;
②同一面仅有一幅影像可视时,则以该影像进行纹理采集;
③同一面在所有备选影像中都存在遮挡时,则以纹理区域遮挡面积最小的影像优先。
成像角度最好的影像选择采用视角法进行选择:该面的单位法向量A与视点方向的夹角最小即视点最优,具体步骤如下:
a)对于某建筑物侧面1,先计算该侧面的法向量A;
b)对于统一建筑物的同一侧面的每一幅图像i(0<i≦N,共有N幅影像),计算其纹理面与相机摄影中心连接的矢量B,然后计算该矢量B与平面的法向量之间的夹角C;
c)比较N幅影像的夹角C,优选出夹角较小的2-3张纹理。
在利用视角法选出来视角最佳的2-3张影像之后,采用深度缓存算法优选出遮挡程度最小的纹理,该算法基于透视成像时离透视中心最近的地面点遮挡从地表发出的到镜头透视中心的光线上其他点,若视角最佳影像被遮挡程度最大,则要选择视角效果次之的影像;首先对深度缓存器和颜色缓存器进行初始化,把深度缓存器中所有单元置成一个最大可能的深度值,把颜色缓存器中各单元置成背景颜色;然后将场景中的物体不分次序地投影到象平面上去;对于每个投影点,把投影物体在该点处的深度与深度缓存器中相应位置上的深度值进行比较,若前者小于后者,则把当前被投影物体的颜色写到颜色缓存器中去,同时用当前投影物体的深度更新深度缓存器中相应投影点的深度,否则不做任何操作,按照上述步骤提取出遮挡程度最小的影像。
在上述的步骤D中,先确定纹理的裁切范围,主要分两个步骤:确定纹理区域凸包、计算最小外接矩形,利用Gramham算法确定纹理区域的凸包,得到纹理区域的凸包之后,通过遍历凸包的每条边然后对剩余的点进行扫描,找到其他三边上落的点;再通过计算出此矩形的面积,最终选出面积最小的矩形即为最小面积矩形;然后对纹理区域的尺寸进行调整,通过纹理裁切范围的确定和尺寸的调整,对纹理进行裁切,以生成贴图文件在进行裁切前,先根据经过上一步尺寸调整过的纹理区域创建具有相同大小的缓存图像,然后利用缓存图像与纹理区域的空间几何变换关系,获得缓存图像中每个像素在相应的纹理区域中的像素值,然后进行纹理区域进行裁切,提取出纹理。
在上述的步骤E中,先提取出被遮挡区域的边界,首先对于选出来的影像进行视差估计,利用基于块的MAD算法求出视差矢量,通过交叉对应来判断求出的视差矢量是否可信,由于遮挡区、大片的均匀单一背景区域及重复纹理区的视差是不可信的,故利用可信图,并结合边界信息检测出遮挡边界。根据纹理特征对纹理影像进行检索,对比优选出来的纹理影像,对于被遮挡的部分,通过检索查找纹理特征与之相同或者近似的纹理影像,对被遮挡的部分的纹理加以替代,完成纹理的漏洞修补。
在上述的步骤E中,为保证纹理贴图后的效果,三角面片上其他点投影后尽量落在边界点投影后围成的多边形中,选取合适的投影平面;然后计算三角面片上的各顶点坐标,将三维三角面片平面参数化;在投影面建立二维平面坐标系包括X轴、Y轴以及坐标的单位量度,在此坐标系中通过计算得到各投影点的相对坐标;归一化处理上一步得到的各投影点的相对坐标得到纹理坐标,确定景物空间中的坐标对应的纹理坐标之后,利用openGL实现纹理贴图;经过纹理贴图得到纹理映射效果图。
如图1所示,基于密集点云的城市三维模型快速构建方法的流程如下:提取出点云数据;对提取出的点云数据进行点云的自适应分块;然后在每个块内找到任意一点和与之距离最近的一点作为第一条基边;构建一个正方体(缩小第三点的搜索范围);在正方体内寻找最佳匹配点,构建三角形;然后判断是否满足最大最小角原则、空外接圆特性;若不满足,则返回至上一步继续在正方体内寻找最佳匹配点,构建三角形;若满足,则以新构成的三角形的边为基边向外扩展,直至所有的块内三角形构成完毕;进行块内三角网的归并;结果输出和预览;判断是否满足需求,若不满足则对参数和算法进行调整然后再次在每个块内找到任意一点和与之距离最近的一点作为第一条基边;若满足则利用视角法寻找最佳视角的航空影像;利用深度缓存法寻找遮挡程度最小的影像;分块检索影像,对于被遮挡的部分进行近似纹理填充;纹理贴图,生成三维模型。在上述流程中,点云的自适应分块过程如下:根据数据量的大小确定阈值;根据阈值计算出矩形区域分为多少行多少列;计算出每行的阈值划分出数据条;按照每块的阈值将数据条划分为数据块。在上述的流程中,构建一个正方体(缩小第三点的搜索范围)过程如下:计算所选的基边的两个端点的坐标;根据端点的坐标计算中点坐标;以中心坐标为中心构造正方体使得落在正方体内的点为50个。在上述的流程中,利用视角法寻找最佳视角的航空影像过程如下:计算墙面法向量;计算摄影机中心与纹理墙面的矢量并计算与法向量的夹角θ;在同一墙面的所有影像中选出θ最小的2-3幅。
在本实施例中,本发明构建的城市三维模型效率大大的提高,一般情况下利用倾斜摄影测量技术构建一个中小城市的三维模型需要3-5个月的时间,其中构TIN时间占据了其中大概1/3的时间,而本方法通过对数据的有效组织进而提高了TIN的构建效率和纹理选择的效率,所以使得一个中小城市三维模型的构建效率得到了提高。同时本方法优选出来的纹理影像质量高,对于同一建筑物的同一墙面,通过视角法选择最优视角,通过深度缓存法选择遮挡程度最小的影像,最后综合考虑两种因素,选出最佳影像,通过自动纹理映射生产处三维模型,所以三维模型的真实感得到了提高。该发明所生产的三维模型在城市规划、资源管理等领域有着重要的作用。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
尽管本文较多地使用了建筑物侧面1、法向量A、矢量B、夹角C等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。