本發明屬于傾斜攝影建模領域,特別是涉及模型基于傾斜影像邊緣特征自動調整的方法。
背景技術:
建筑物的三維重建是一種獲取建筑物三維結構詳細信息的重要手段,在城市規劃與管理、多規合一、房地一體、應急指揮等領域得到廣泛的運用。迄今為止,它一直是攝影測量、遙感、計算機視覺、模式識別以及測繪等領域長期研究的重中之重。
目前,市場主流的建模方式主要有純人工建模、全自動建模、半自動建模等。
純人工建模方法需要外業人員到實地對各個建筑進行多角度的拍攝后,內業人員根據外業人員拍攝得到的相片以及規劃圖在三維建模軟件中進行人工建模。在這種建模方式下,由于外業人員無法獲得建筑的位置與尺寸,內業人員在進行建模時只能估算建筑的尺寸和位置,因此無法保證模型的精確性。建模完成后,還需要人工對模型進行紋理貼附:內業人員從外業人員采集的相片中摳取出建筑對應的紋理內容后對其進行修正和美化,這個過程需要耗費工作人員大量的時間和精力。
全自動建模方法基于傾斜攝影技術,可根據影像空三數據實現全自動建模,它可以有效地提高建模效率、保證模型的坐標精度。但是,全自動建模的模型成果為三角網模型,存在著數據量太大、建筑非單體化、建筑細節無法體現等問題。
半自動建模方法是在全自動建模技術的基礎上,利用傾斜影像、傾斜影像空三數據、三角網數據模擬航拍傾斜影像時攝像機的位置與姿態,以此來進行半自動建模與全自動紋理映射。相對于純手工建模,此方法可以大幅提高建模效率,省去外業實地拍攝、內業紋理貼附的工序;相對于全自動建模,此方法可以大幅減少數據量、使模型可以實現單體化,并體現模型的細節。但是由于半自動建模是基于單張傾斜影像進行建模,所以相對于全自動建模成果精度會有一定差距。
技術實現要素:
本發明針對半自動單體建模方法現有技術的不足,提供一種自動從多張影像中提取建筑邊緣特征,并根據邊緣特征信息自動調整模型來提高模型精度的方法,包括以下步驟:
步驟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中,具體方法是通過空三文件,獲取到傾斜影像攝影中心的空間坐標值
選擇模型的某一個面,將該面豎直投影到三角形平面上,即不改變面上各個頂點的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中,定義直線方程為
以上求得的坐標,即為邊線兩頂點,修正后的坐標值。最后,依照以上步驟,對模型的每一條邊線都進行修改。
在上述的基于影像邊緣特征的三維模型自動調整方法的方法,所述步驟8中,修正基于以下約束條件:
約束條件一、模型原來各個面的頂點在同一個平面上;
約束條件二、模型各個面的姿態與原始姿態相同;
具體方法是:根據原來面上的各個頂點的修正值,擬合出新的平面。平面方程一般表達式為:
ax+by+cz+d=0
方程推導為:
對于一系列的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,計算各個傾斜影像在對應的視角下,邊線是否被模型其他面遮擋,以此來對傾斜影像進行再次篩選。
通過空三文件,獲取到傾斜影像攝影中心的空間坐標值
選擇模型的某一個面,將該面豎直投影到三角形平面上,即不改變面上各個頂點的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,根據表達式,對邊線進行修正。并依照以上步驟,對模型的每一條邊線都進行修改。
通過上一步驟得到的直線方程,依據直線方程對邊線頂點進行修正。
假設直線方程為
以上求得的坐標,即為邊線兩頂點,修正后的坐標值。最后,依照以上步驟,對模型的每一條邊線都進行修改。
步驟8,修正后的模型邊線破壞了模型的各個面結構。根據模型之前各個面的位置與姿態,再對模型各邊線進行共面擬合。
調整了模型的所有邊線后,導致了模型原有面結構被破壞(由于一個平面由三個頂點確定,而模型中一個面中總會有大于等于三個頂點存在,通過修正后,這些頂點會不在一個平面上)。所以需要對模型的面再進行一次修正,修正的原則為:
1.保證模型原來各個面的頂點在仍然在同一個平面上
2.不改變模型各個面的姿態(水平面依舊為水平面,垂直面依舊為垂直面)
根據原來面上的各個頂點的修正值,擬合出新的平面。平面方程一般表達式為:
ax+by+cz+d=0
方程可推導為:
記:
對于一系列的n個離散點(n≥3)擬合計算平面方程時,則使:
最小。
要使s最小,應滿足:
獲得平面方程后,將各個頂點垂直投影至修正后的平面上。
將平面方程以ax+by+cz+d=0形式表達,各個頂點坐標值為(xi,yi,zi)。那么投影到平面上的坐標為:
即得到了平面內各個頂點最終的修正值。
在具體實施中,本發明提供的方法可基于軟件技術實現自動運行流程,也可采用模塊化方式實現相應系統。
本文中所描述的具體實施僅僅是對本發明精神作舉例說明。本發明所屬技術領域的技術人員可以對所描述的具體實施案例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發明的精神或者超越所附權利要求書所定義的范圍。