基于影像边缘特征的三维模型自动调整方法与流程

文档序号:11232045阅读:924来源:国知局
基于影像边缘特征的三维模型自动调整方法与流程

本发明属于倾斜摄影建模领域,特别是涉及模型基于倾斜影像边缘特征自动调整的方法。



背景技术:

建筑物的三维重建是一种获取建筑物三维结构详细信息的重要手段,在城市规划与管理、多规合一、房地一体、应急指挥等领域得到广泛的运用。迄今为止,它一直是摄影测量、遥感、计算机视觉、模式识别以及测绘等领域长期研究的重中之重。

目前,市场主流的建模方式主要有纯人工建模、全自动建模、半自动建模等。

纯人工建模方法需要外业人员到实地对各个建筑进行多角度的拍摄后,内业人员根据外业人员拍摄得到的相片以及规划图在三维建模软件中进行人工建模。在这种建模方式下,由于外业人员无法获得建筑的位置与尺寸,内业人员在进行建模时只能估算建筑的尺寸和位置,因此无法保证模型的精确性。建模完成后,还需要人工对模型进行纹理贴附:内业人员从外业人员采集的相片中抠取出建筑对应的纹理内容后对其进行修正和美化,这个过程需要耗费工作人员大量的时间和精力。

全自动建模方法基于倾斜摄影技术,可根据影像空三数据实现全自动建模,它可以有效地提高建模效率、保证模型的坐标精度。但是,全自动建模的模型成果为三角网模型,存在着数据量太大、建筑非单体化、建筑细节无法体现等问题。

半自动建模方法是在全自动建模技术的基础上,利用倾斜影像、倾斜影像空三数据、三角网数据模拟航拍倾斜影像时摄像机的位置与姿态,以此来进行半自动建模与全自动纹理映射。相对于纯手工建模,此方法可以大幅提高建模效率,省去外业实地拍摄、内业纹理贴附的工序;相对于全自动建模,此方法可以大幅减少数据量、使模型可以实现单体化,并体现模型的细节。但是由于半自动建模是基于单张倾斜影像进行建模,所以相对于全自动建模成果精度会有一定差距。



技术实现要素:

本发明针对半自动单体建模方法现有技术的不足,提供一种自动从多张影像中提取建筑边缘特征,并根据边缘特征信息自动调整模型来提高模型精度的方法,包括以下步骤:

步骤1,获取倾斜影像的摄影机投影矩阵,具体是通过空三文件中影像的内方位元素,即摄影中心s到像片的垂距f,和像主点在像框标坐标系中的坐标px,py。计算出摄像机标定矩阵k。

通过空三文件中的外方位元素,姿态用r矩阵表示,摄影中心的空间坐标值用表示,计算出摄像机坐标系与世界坐标系的转换矩阵。

结合摄像机定标矩阵,可得出通过物点坐标计算像点坐标的公式如下:

即获得了倾斜影像的投影矩阵

步骤2,获取待调整三维模型的某一条边线,得到该边线的端点坐标p1(x_1,y_1,z_1),p2(x_2,y_2,z_2)。结合倾斜影像的内外方元素,算出端点在所有倾斜影像中的像点坐标。然后根据判断像点坐标是否超出了影像范围来对倾斜影像进行筛选,具体是针对某一幅倾斜影像,通过公式x=px,计算出边线两端点p1、p2对应的像点坐标,如果像点坐标均在影像范围内,也就是像点坐标x、y大于0小于像平面长宽,则判定该条边线投影在影像内范围内,影像通过了筛选。

步骤3,计算各个倾斜影像在对应的视角下,边线是否被模型其他面遮挡,以此来对倾斜影像进行再次筛选。

步骤4,将模型边线映射到通过筛选的倾斜影像中,获得对应的像平面线段。将线段放大至一个矩形。对矩形区域内的影像进行二值化处理。

步骤5,在影像二值化的基础上进行霍夫变换直线检测,图像中,直线在极坐标中用(r,θ)表示,r=cos(θ)*x+sin(θ)*y。通过θ从0到180度旋转,可以用(r,θ)表示经过(x0,y0)点的所有直线。

步骤6,将检测到的所有线段投射到三角网模型上,根据投射获得到线段计算出修正后的模型边线的表达式。

步骤7,根据表达式,对边线进行修正。并依照以上步骤,对模型的每一条边线都进行修改。

步骤8,修正后的边线破坏了模型的各个面结构。根据模型之前各个面的位置与姿态,再对模型各边线进行共面拟合。

在上述的基于影像边缘特征的三维模型自动调整方法的方法,所述步骤3中,具体方法是通过空三文件,获取到倾斜影像摄影中心的空间坐标值进而获取到一个由摄影中心、边线两端点组成的空间三角形。假设由摄影中心、边线组成的三角形的平面表达式为a1x+b1y+c1z+d1=0。

选择模型的某一个面,将该面竖直投影到三角形平面上,即不改变面上各个顶点的x、y坐标值,根据三角形平面坐标方程式,计算出对应的z坐标值。如果通过投影后,面上各个顶点的z坐标值都变大,说明模型面在三角形平面的下方,该面不会对边线有遮挡。如果面上某些顶点的z坐标值变小,则判断该面是否对边线有遮挡,具体包括:

步骤3.1、选择投影面的某一条边线。

步骤3.2、判断边线是否有顶点在三角形内,如果有顶点落在三角形,说明面对边线有遮挡。

步骤3.3、如果边线的顶点都在三角形外,则需要判断三角形的三条线段是否与边线有交点。如果有交点说明面对边线有遮挡。

步骤3.4、遍历投影面上的每一条边线重复以上步骤,如果投影面上所有边线的顶点都在三角形外,并且所有边线与三角形的三条线段之间均无交点,说面模型的这个面没有遮挡边线。

在上述的基于影像边缘特征的三维模型自动调整方法的方法,所述步骤4中,通过筛选获得符合条件的倾斜影像后,利用倾斜影像对应的投影矩阵p计算出模型边线在像平面上的投影。将投影得到的线段向垂直方向各向外扩充5像素,在像平面上得到一个矩形框。

对于矩形内的图像i(x,y),前景(即目标)和背景的分割阈值记作t,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。

定义图像的背景较暗,并且图像的大小为m×n,如图1所示,图像中像素的灰度值小于阈值t的像素个数记作n0,像素灰度大于阈值t的像素个数记作n1,则有:

n0+n1=m×n(3)

ω0+ω1=1(4)

μ=ω0×μ0+ω1×μ1(5)

g=ω0×(μ0-μ)2+ω1×(μ1-μ)2(6)

根据上述方程式,采用遍历的方法得到使类间方差最大的阈值t,即为所求。最后通过阈值为依据,将影像二值化。

在上述的基于影像边缘特征的三维模型自动调整方法的方法,所述步骤6中,由筛选后的某一条线段的其中一个端点与摄影中心组成一条直线,然后求得直线与三角网模型的交点,同此方法获得线段另一个端点对应的交点。

以此类推,获得所有通过筛选的倾斜影像中所有通过筛选的线段投射到三角网上的点集。通过空间中离散点进行线性拟合,获得拟合线段的表达式。

空间直线方程可以简化为:

用矩阵形式表达为:

当有n个点时第i个点的方程为:

并联n个方程得到:

最小二乘拟合:

化简为:

求矩阵即可得到m,n,x0,y0,修正后的直线方程即为所得。

在上述的基于影像边缘特征的三维模型自动调整方法的方法,所述步骤7中,定义直线方程为边线的顶点坐标分别为(xa,ya,za)、(xb,yb,zb)。通过顶点做直线的垂面,则两个顶点对应的垂面方程为两个垂面与直线的交点分别为:

以上求得的坐标,即为边线两顶点,修正后的坐标值。最后,依照以上步骤,对模型的每一条边线都进行修改。

在上述的基于影像边缘特征的三维模型自动调整方法的方法,所述步骤8中,修正基于以下约束条件:

约束条件一、模型原来各个面的顶点在同一个平面上;

约束条件二、模型各个面的姿态与原始姿态相同;

具体方法是:根据原来面上的各个顶点的修正值,拟合出新的平面。平面方程一般表达式为:

ax+by+cz+d=0

方程推导为:

则:z=a0x+a1y+a2。由于平面的姿态是不变的,所以a0,a1为确定值,只有a2为未知值。

对于一系列的n个离散点(n≥3)拟合计算平面方程时,则使:

最小。

要使s最小,应满足:即:

通过解上述线性方程,得到a2的值。即获得了修正后的平面方程。

获得平面方程后,将各个顶点垂直投影至修正后的平面上。

将平面方程以ax+by+cz+d=0形式表达,各个顶点坐标值为(xi,yi,zi)。那么投影到平面上的坐标为:

即得到了平面内各个顶点最终的修正值。

本发明与现有半自动建模方式相比,具有以下显著效果:1、本发明可以使模型根据倾斜影像边缘特征进行自动调节,减少人工干预,提高了建模效率;2、相对于人工参照单张倾斜影像调节模型的方式,本发明可以使模型同时参照多张倾斜影像进行调整,进而提升模型精度。

附图说明

图1为本发明实施例中影像二值化处理示意图

图2为本发明实施例中霍夫变换直线检测用极坐标表示直线示意图。

图3为本发明实施例中基于影像边缘特征的三维模型自动调整方法方法流程图。

具体实施方式

本发明是基于自动提取多张倾斜影像边缘特征对模型进行自动调整的方法。首先通过模型边线与倾斜影像之间的空间关系,对倾斜影像进行筛选,获得包含有线条信息的影像。然后对模型边线在倾斜影像中映射得到的线条根据影像大小进行外扩,得到对应矩形。接着在矩形区域内进行直线检测获取多个线条,并利用线条与三角网数据的映射关系对模型边线进行拟合,以修正模型各边线的位置。最后在遍历并调整了模型所有边线后,根据模型原有结构对边线进行二次拟合,获得最终的模型成果。

下面结合附图和实施例对本发明的技术方案作进一步说明。

如图3所示,本发明实施例的流程包包括有以下步骤。

步骤1,获取倾斜影像的摄影机投影矩阵。

通过空三文件中影像的内方位元素,即摄影中心s到像片的垂距(主距)f,和像主点在像框标坐标系中的坐标px,py。计算出摄像机标定矩阵k。

通过空三文件中的外方位元素(用于描述摄影中心的空间坐标值和姿态的参数),姿态用r矩阵表示,摄影中心的空间坐标值用表示,计算出摄像机坐标系与世界坐标系的转换矩阵。

结合摄像机定标矩阵,可得出通过物点坐标计算像点坐标的公式如下:

即获得了倾斜影像的投影矩阵

步骤2,获取模型的某一条边线,得到该边线的端点坐标p1(x1,y1,z1),p2(x2,y2,z2)。结合倾斜影像的内外方元素,算出端点在所有倾斜影像中的像点坐标。然后根据判断像点坐标是否超出了影像范围来对倾斜影像进行筛选。

针对某一幅倾斜影像,通过公式x=px,可以计算出边线两端点p1、p2对应的像点坐标,如果像点坐标均在影像范围内(像点坐标x、y大于0小于像平面长宽),则说明该条边线投影在影像内范围内,影像通过了筛选。

步骤3,计算各个倾斜影像在对应的视角下,边线是否被模型其他面遮挡,以此来对倾斜影像进行再次筛选。

通过空三文件,获取到倾斜影像摄影中心的空间坐标值进而获取到一个由摄影中心、边线两端点组成的空间三角形。假设由摄影中心、边线组成的三角形的平面表达式为a1x+b1y+c1z+d1=0。

选择模型的某一个面,将该面竖直投影到三角形平面上,即不改变面上各个顶点的x、y坐标值,根据三角形平面坐标方程式,计算出对应的z坐标值。如果通过投影后,面上各个顶点的z坐标值都变大,说明模型面在三角形平面的下方,该面不会对边线有遮挡。如果面上某些顶点的z坐标值变小,则需要进行下面的步骤来判断该面是否对边线有遮挡:

1.选择投影面的某一条边线。

2.判断边线是否有顶点在三角形内,如果有顶点落在三角形,说明面对边线有遮挡。

3.如果边线的顶点都在三角形外,则需要判断三角形的三条线段是否与边线有交点。如果有交点说明面对边线有遮挡。

4.遍历投影面上的每一条边线重复以上步骤,如果投影面上所有边线的顶点都在三角形外,并且所有边线与三角形的三条线段之间均无交点,说面模型的这个面没有遮挡边线。

遍历模型中不包含边线的每一个面,判断其是否对边线有遮挡。如果每一个面都不会对边线有遮挡时,说明对应的倾斜影像符合条件,通过筛选。

步骤4,将模型边线映射到通过筛选的倾斜影像中,获得对应的像平面线段。将线段放大至一个矩形。对矩形区域内的影像进行二值化处理。

通过筛选获得符合条件的倾斜影像后,利用倾斜影像对应的投影矩阵p计算出模型边线在像平面上的投影。将投影得到的线段向垂直方向各向外扩充5像素,在像平面上得到一个矩形框。

对于矩形内的图像i(x,y),前景(即目标)和背景的分割阈值记作t,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。

假设图像的背景较暗,并且图像的大小为m×n,如图1所示,图像中像素的灰度值小于阈值t的像素个数记作n0,像素灰度大于阈值t的像素个数记作n1,则有:

n0+ni=m×n(3)

ω0+ω1=1(4)

μ=ω0×μ0+ω1×μ1(5)

g=ω0×(μ0-μ)2+ω1×(μ1-μ)2(6)

根据上述方程式,采用遍历的方法得到使类间方差最大的阈值t,即为所求。最后通过阈值为依据,将影像二值化。

步骤5,在影像二值化的基础上进行霍夫变换直线检测。

图像中,直线在极坐标中用(r,θ)表示,r=cos(θ)*x+sin(θ)*y。通过θ从0到180度旋转,可以用(r,θ)表示经过(x0,y0)点的所有直线。

如图2所示,对二值化影像内的每一个点,进行如上操作,如果两个不同的点进行上述操作后得到的曲线在平面相交,这就意味着它们通过同一条直线。而越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成。在程序中我们设置5作为直线上点的阈值来筛选影像中的直线。

通过以上算法获得影像中所有检测到的线段后,利用线条与模型边线映射到像平面线段的夹角进行筛选,只有夹角小于10度的线段才可以通过筛选。

步骤6,将检测到的所有线段投射到三角网模型上,根据投射获得到线段计算出修正后的模型边线的表达式。

由筛选后的某一条线段的其中一个端点与摄影中心组成一条直线,然后求得直线与三角网模型的交点,同此方法获得线段另一个端点对应的交点。

以此类推,获得所有通过筛选的倾斜影像中所有通过筛选的线段投射到三角网上的点集。通过空间中离散点进行线性拟合,获得拟合线段的表达式。

空间直线方程可以简化为:

用矩阵形式表达为:

当有n个点时第i个点的方程为:

并联n个方程得到:

最小二乘拟合:

化简为:

求矩阵即可得到m,n,x0,y0,修正后的直线方程即为所得。

步骤7,根据表达式,对边线进行修正。并依照以上步骤,对模型的每一条边线都进行修改。

通过上一步骤得到的直线方程,依据直线方程对边线顶点进行修正。

假设直线方程为边线的顶点坐标分别为(xa,ya,za)、(xb,yb,zb)。通过顶点做直线的垂面,则两个顶点对应的垂面方程为两个垂面与直线的交点分别为:

以上求得的坐标,即为边线两顶点,修正后的坐标值。最后,依照以上步骤,对模型的每一条边线都进行修改。

步骤8,修正后的模型边线破坏了模型的各个面结构。根据模型之前各个面的位置与姿态,再对模型各边线进行共面拟合。

调整了模型的所有边线后,导致了模型原有面结构被破坏(由于一个平面由三个顶点确定,而模型中一个面中总会有大于等于三个顶点存在,通过修正后,这些顶点会不在一个平面上)。所以需要对模型的面再进行一次修正,修正的原则为:

1.保证模型原来各个面的顶点在仍然在同一个平面上

2.不改变模型各个面的姿态(水平面依旧为水平面,垂直面依旧为垂直面)

根据原来面上的各个顶点的修正值,拟合出新的平面。平面方程一般表达式为:

ax+by+cz+d=0

方程可推导为:

记:则:z=a0x+a1y+a2。由于平面的姿态是不变的,所以a0,a1为确定值,只有a2为未知值。

对于一系列的n个离散点(n≥3)拟合计算平面方程时,则使:

最小。

要使s最小,应满足:即:

通过解上述线性方程,得到a2的值。即获得了修正后的平面方程。

获得平面方程后,将各个顶点垂直投影至修正后的平面上。

将平面方程以ax+by+cz+d=0形式表达,各个顶点坐标值为(xi,yi,zi)。那么投影到平面上的坐标为:

即得到了平面内各个顶点最终的修正值。

在具体实施中,本发明提供的方法可基于软件技术实现自动运行流程,也可采用模块化方式实现相应系统。

本文中所描述的具体实施仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施案例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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