• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      傾斜攝影測量與SketchUp二次開發(fā)技術相結合的建筑三維重建

      2017-06-19 18:47:24詹總謙李一揮桂鑫源
      測繪通報 2017年5期
      關鍵詞:二次開發(fā)紋理建模

      詹總謙,李一揮,桂鑫源

      (武漢大學測繪學院,湖北 武漢 430079)

      傾斜攝影測量與SketchUp二次開發(fā)技術相結合的建筑三維重建

      詹總謙,李一揮,桂鑫源

      (武漢大學測繪學院,湖北 武漢 430079)

      結合SketchUp建模靈活、簡單易學及攝影測量精度高的優(yōu)勢,利用SketchUp Ruby二次開發(fā)技術,對傾斜攝影測量單像建模、攝影測量模塊與SketchUp Ruby腳本插件的通信、建模效果等方面進行深入研究,解決了用C++和Ruby聯(lián)合開發(fā)SketchUp三維建模插件的關鍵技術問題。

      SketchUp Ruby二次開發(fā);傾斜攝影測量;建筑物重建;單像建模

      建筑物重建是構建數字城市的重要內容之一,在城市規(guī)劃、災害應急、通信設施建設等領域具有廣泛應用[1]。傳統(tǒng)建模方法主要利用3ds Max、Maya、SketchUp等三維建模軟件[2-4],通過現場拍照、手工建模、紋理貼圖等步驟進行重建,工作量大、精度不高;利用LiDAR技術可以高精度、高密度地獲取地物三維坐標,但設備成本高,建模算法尚不成熟[5];采用全自動實景三維建模技術的商用軟件有Street Factory和Smart3D等[6-7],該技術自動化程度高、宏觀效果好,但細節(jié)粗糙、模型非單體化,后期處理煩瑣,軟件價格也相當昂貴。

      文獻[8—9]闡述了利用傾斜攝影測量和3ds Max二次開發(fā)技術快速實現城市建筑物三維建模的方法,提高了建模的精度和效率。但3ds Max操作復雜,難以在短時間內熟練掌握。而SketchUp簡單易學、視角靈活,建模效率優(yōu)于3ds Max等軟件,已成為建筑設計、園林景觀等領域的主流軟件[10]。SketchUp采用Ruby作為二次開發(fā)語言,是一種簡單快捷、面向對象、自動垃圾回收(Garbage Collection)的腳本語言,開發(fā)效率優(yōu)于C++和Java[11]。

      本文在SketchUp軟件環(huán)境下,結合傾斜攝影測量技術[12-13],實現單像建模方法,開發(fā)了建筑物半自動三維重建插件。該插件可通過人機交互的測量方法,快速、高精度實現建筑物三維模型的幾何重建和紋理映射等過程。

      1 技術方法

      1.1 技術框架

      本方法首先以動態(tài)鏈接庫形式制作傾斜攝影測量量測模塊,然后建立Ruby腳本、SketchUp建模API函數、攝影測量量測模塊之間的通信,進而實現SketchUp中攝影測量插件的開發(fā)。整體技術框架如圖1所示。

      該技術以傾斜攝影測量空三加密成果和影像數據作為攝影測量模塊輸入,技術流程描述如下:首先通過雙像立體或單像建模方式獲取建筑物關鍵點坐標數據;然后將坐標數據傳遞給Ruby腳本,腳本調用API函數創(chuàng)建建筑物幾何模型;最后,使用Ruby腳本將幾何模型所有坐標信息傳遞給攝影測量模塊,獲取最佳紋理后由Ruby腳本讀取,調用API函數完成紋理映射。

      圖1 整體技術框架

      1.2 數據通信

      1.2.1 C++攝影測量模塊向Ruby傳遞數據

      攝影測量模塊與Ruby腳本需要分別獲取對方的函數指針,進而通過參數傳遞完成通信。Fiddle是Ruby用來包裝其他語言函數接口的一個擴展,可實現跨語言的調用[14]。本方法中利用Fiddle::Pointer類來處理C/C++類型的指針。由于C++數組內存空間是連續(xù)的,而Ruby數組中的各個元素則是隨機存儲在操作系統(tǒng)的堆內存(System Heap)中的(對象的引用保存在Ruby Heaps中,它獨立于操作系統(tǒng)的堆之外),兩種數組結構差異較大,因此Ruby無法直接讀取C++傳進的double或int型數組[11]。Ruby字符串是一個C語言的RString結構體,包含了一個char*類型的指針,指向字符串的值,該值存儲在連續(xù)內存空間中(如圖2所示),結構與C++數組相似。因此,可以將C++攝影測量模塊的坐標數據轉化為字符數組后傳入Ruby,再轉為相應的整型或浮點型即可。

      圖2 Ruby數組、字符串存儲方式

      1.2.2 Ruby向C++攝影測量模塊傳遞數據

      Ruby中的數組類型為Array,而Array的pack方法可以將數組的值壓縮為一個二進制序列[15],將所有元素的值存儲在一段連續(xù)的內存空間中。壓縮得到的二進制序列對象的引用與C++指針類型相同,作為參數傳入攝影測量模塊后可以直接根據下標訪問各元素。

      1.3 量測與建模

      1.3.1 單像量測

      除了文獻[9]介紹的雙像立體建模方法之外,本技術還采用了單像建模方法。流程描述如下:首先在雙像立體建模界面中量測基準平面,包括水平基準面、垂直基準面和任意空間基準面;然后切換到單像建模界面,通過量測建筑關鍵點像點坐標,并利用攝影測量知識確定該像點與投影中心的空間光線;最后,計算空間光線與基準平面的交點坐標,該點即為關鍵點的空間坐標。如圖3所示,用戶只需在單張影像上描繪建筑物輪廓線即可完成測量。

      圖3 單像量測

      1.3.2 模型構建

      SketchUp API中Entities類的add_face方法可以根據Point3d數組、Edge數組創(chuàng)建一個多邊形,add_edges方法用來創(chuàng)建多個線段,add_arc、add_circle和add_curve方法分別用于創(chuàng)建弧段、圓和曲線實體[16]。SketchUp中沒有“體”的概念,所有的三維立體模型都是由多個面構成的。對于Face對象,pushpull(推拉)方法可以沿法向擠出生成棱柱形的多面體。

      建筑分為平頂房屋和復雜房屋兩類進行創(chuàng)建。對于平頂房屋,先測得頂面,然后在單像視圖中推拉出整個建筑模型(如圖4(a)所示)。對于復雜房屋,則需要進一步測量屋脊線的位置(如圖4(b)所示),然后在SketchUp中構面即可。

      圖4 平頂、復雜房屋建模

      1.4 紋理自動映射

      [9]的方法進行最佳紋理搜索,具體映射流程如下:

      (1) 將模型點的三維坐標傳入攝影測量模塊,并根據共線方程和外方位元素選出模型面可見且完整的影像。然后,根據紋理面積最大原則選出最佳影像,按照最小外包矩形在影像上截取紋理。

      (2) 在Ruby腳本中讀取紋理(SketchUp環(huán)境中無需將紋理尺寸歸一化為2n大小),并計算模型點的紋理坐標,要求坐標原點定義在紋理圖片的左下角,大小在[0,1]區(qū)間內。

      (3) 調用Model類的materials方法獲取材質集合,向其中添加新的材質,材質的紋理(Texture)屬性設置為截取的紋理圖像。

      (4) 調用Face類中的position_material方法,將模型點的物方坐標和對應的紋理坐標對應,實現紋理的透視變換,其效果如圖5所示。

      圖5 紋理映射效果

      1.5 雙視圖協(xié)同建模

      為了提高建模效率及獲取最佳建模體驗,實現時需要保證攝影測量模塊與SketchUp的數據模型和建模方式一致,形成雙視圖協(xié)同建模、無縫切換。其中,攝影測量建模視圖可以利用矢量數據與影像的套合程度進行質量控制,使用戶體驗到所見即所得效果(如圖6所示);而SketchUp建模視圖則可以充分利用軟件的靈活視角及豐富的建模工具,對模型的細節(jié)加以完善。

      圖6 雙視圖協(xié)同建模

      2 建模效果

      為驗證本技術的有效性,采用德國某地區(qū)的傾斜影像,對幾種典型建筑和街區(qū)進行建模,影像與模型效果如圖7—圖9所示。

      圖7 人字形屋脊房屋建模效果

      圖8 尖塔房屋建模效果

      圖9 復雜房屋建模效果

      如圖10所示(測區(qū)一角),對于結構比較簡單的平頂和人字形屋脊房屋而言,在保證精度的情況下,建模效率約為每分鐘1~2個模型。由于目前的紋理映射方法需要遍歷較多的原始影像以獲取最佳紋理,并且SketchUp尚不支持多核運算,因此紋理映射的效率仍然有待進一步提高。

      圖10 整體建模效果

      3 結 語

      利用SketchUp Ruby二次開發(fā)技術與傾斜攝影測量原理,對城市建筑物半自動、快速三維重建進行了技術研究和實現,重點解決了C++開發(fā)的攝影測量模塊與Ruby腳本插件間的通信等關鍵技術問題,取得了較好的建模效果。

      參考文獻:

      [1] 楊建思, 杜志強, 彭正洪, 等. 數字城市三維景觀模型的建模技術[J]. 武漢大學學報(工學版), 2003,36(3):37-40.

      [2] 李俊超, 李樓. AutoCAD Civil 3D和3ds Max Design在道路建模中的應用[J]. 測繪通報, 2013(2):91-94.

      [3] 許捍衛(wèi), 房曉亮, 任家勇, 等. 基于SketchUp的城市三維建模技術[J]. 測繪科學, 2011,36(1):213-214.

      [4] 周曉風. 基于MAYA和VIRTOOLS的虛擬倉儲物流系統(tǒng)的研究與實現[D].上海:上海交通大學, 2011.

      [5] 李廣云, 李明磊, 王力, 等. 地面激光掃描點云數據預處理綜述[J]. 測繪通報, 2015(11):1-3.

      [6] 劉云峰, 張雪萍, 郭秋燕, 等. 基于Street Factory的城市三維模型構建方法研究[J]. 測繪與空間地理信息, 2014(12):67-70.

      [7] 張驥, 高釗, 陳容. 基于Leica RCD 30傾斜航攝儀和Smart 3D技術快速進行城市三維實景生產[J]. 測繪技術裝備, 2014(3):61-64.

      [8] 王慶棟. 新型傾斜航空攝影技術在城市建模中的應用研究[D]. 蘭州:蘭州交通大學, 2013.

      [9] 王慶棟, 艾海濱, 張力. 利用傾斜攝影和3ds Max技術快速實現城市建模[J]. 測繪科學, 2014,39(6):74-78.

      [10] 魯英燦, 康玉芳, 方旭,等. 設計大師SketchUp提高[M].北京: 清華大學出版社, 2006.

      [11] FLANAGAN D, 松本行弘. Ruby編程語言[M]. 北京: 電子工業(yè)出版社, 2009.

      [12] 李德仁, 肖雄武, 郭丙軒, 等. 傾斜影像自動空三及其在城市真三維模型重建中的應用[J]. 武漢大學學報(信息科學版), 2016,41(6):711-721.

      [13] 張春森, 張衛(wèi)龍, 郭丙軒, 等. 傾斜影像的三維紋理快速重建[J]. 測繪學報, 2015,44(7):782-790.

      [14] SEGAL L. Class Module: Fiddle [EB/OL].[2016-08-16]. http:∥www.rubydoc.info/stdlib/fiddle/Fiddle.

      [15] BRITT J, NEUROGAMI M. Array [EB/OL].[2015-12-23]. http:∥ruby-doc.org/core-1.9.3/Array.html#method-i-pack.

      [16] SCARPINO M. Automatic SketchUp Creating 3-D Models in Ruby[M]. Hanover: Eclipse Engineering LLC, 2010.

      Building Reconstruction Based on Oblique Photogrammetry and SketchUp Secondary Development

      ZHAN Zongqian,LI Yihui,GUI Xinyuan

      (School of Geodesy and Geomatics, Wuhan University, Wuhan 430079, China)

      Combining the advantages of SketchUp including flexible modeling, learnability and high precision of photogrammetry, with using the technology of SketchUp Ruby secondary development, this paper studied on single-image modeling, the communication between photogrammetry module and SketchUp Ruby scripts and the refinement of 3D model. Finally, it solved the key technical problem of hybrid programming of C++ and Ruby to develop SketchUp plug-in.

      SketchUp Ruby secondary development; oblique photogrammetry; building reconstruction; single-image modeling

      詹總謙,李一揮,桂鑫源.傾斜攝影測量與SketchUp二次開發(fā)技術相結合的建筑三維重建[J].測繪通報,2017(5):71-74.

      10.13474/j.cnki.11-2246.2017.0157.

      2016-10-28;

      2017-01-20

      國家重點研發(fā)計劃項目(2016YFB0501403)

      詹總謙(1978—),男,博士,副教授,研究方向為數字攝影測量與計算機視覺。E-mail:zqzhan@sgg.whu.edu.cn

      P23

      A

      0494-0911(2017)05-0071-04

      猜你喜歡
      二次開發(fā)紋理建模
      聯(lián)想等效,拓展建模——以“帶電小球在等效場中做圓周運動”為例
      基于BM3D的復雜紋理區(qū)域圖像去噪
      軟件(2020年3期)2020-04-20 01:45:18
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      使用紋理疊加添加藝術畫特效
      基于PSS/E的風電場建模與動態(tài)分析
      電子制作(2018年17期)2018-09-28 01:56:44
      不對稱半橋變換器的建模與仿真
      西門子Easy Screen對倒棱機床界面二次開發(fā)
      TEXTURE ON TEXTURE質地上的紋理
      Coco薇(2017年8期)2017-08-03 15:23:38
      消除凹凸紋理有妙招!
      Coco薇(2015年5期)2016-03-29 23:22:15
      定结县| 伊春市| 南昌县| 西吉县| 吴桥县| 彩票| 柘荣县| 印江| 平原县| 花莲市| 吉安市| 湖北省| 大田县| 四川省| 文成县| 宁波市| 永和县| 邢台县| 中宁县| 阿图什市| 子长县| 安塞县| 嵊州市| 集贤县| 咸丰县| 汝南县| 云南省| 马尔康县| 谷城县| 五河县| 保靖县| 湘潭市| 岱山县| 济宁市| 三穗县| 清水县| 龙州县| 扶绥县| 安新县| 安多县| 保靖县|