專利名稱:基于骨架點云的樹木建模方法
技術領域:
本發(fā)明屬于計算機圖形學和計算機視覺技術領域,涉及一種根據草圖進行樹木建 模的方法。
背景技術:
計算機游戲設計、三維電影制作等應用領域需要大量具有逼真視覺效果的植物模 型。植物建模系統(tǒng)在這些領域中的應用要滿足建模速度和視覺效果兩個方面的要求。因此 研究使用方便、運行速度快的植物建模方法對實際應用具有重要意義。目前的植物建模方法大致可分為四大類第一類是基于植物學知識對植物形態(tài)進行建模的方法。這類方法主要考慮植物生 長規(guī)律,如Lindenmayer提出的L系統(tǒng);第二類是基于圖像的植物建模方法。這類方法以植物圖片作為輸入信息,通過各 種視覺重建方法構建植物模型,如2006年Quan提出的植物建模方法;第三類是基于三維掃描的植物建模方法。這類方法以三維掃描數據作為輸入構建 植物模型,如2006年Xu提出的樹木建模方法;第四類是基于手工交互的植物建模方法。這類方法以用戶勾畫的二維草圖作為輸 入,或通過三維交互直接控制輸出的三維模型形狀,如2005年Okabe提出的植物建模方法?;谏L機理的方法適用于生長模擬,農業(yè)分析等,但是一般需要調整參數,不便 于控制輸出,因此不適用于真實植物建模;基于三維掃描的方法以樹的三維掃描數據作為 輸入,幾何信息豐富,精度高,適用于對模型精度要求較高的應用,但三維掃描設備價錢昂 貴,掃描過程花費時間較長,三維數據量大,不適于快速建模;基于圖像的方法輸入信息獲 取方便,建模方法靈活,可適用于各種精度要求的應用,但它比基于三維掃描的建模方法精 度低;基于手工交互的方法是一種更加靈活的方法,可用于樹模型的設計。
發(fā)明內容
本發(fā)明的目的在于,針對現實世界中存在的樹木,提供一個基于圖像和草圖的、能 夠反映樹木主要形態(tài)的快速建模方法,并使該方法可用于各種樹木模型設計。為實現上述目的,本發(fā)明提供一種基于骨架點云的樹木建模方法,該樹木建模方 法的步驟包括步驟1 用戶在兩幅樹木圖片上用單像素畫筆或者畫刷手工勾畫出具有樹冠輪 廓、具有不同的主枝筆畫的樹木草圖,將具有不同的主枝筆畫的兩幅草圖輸入到圖像處理 設備;步驟2 圖像處理設備對草圖中每個主枝筆畫像素的近鄰像素進行分析,從而提 取二維骨架;步驟3 基于等高同位置對應原則從兩個二維骨架構建三維骨架點云,使該三維 點云在兩個輸入方向的平行投影滿足二維骨架約束;
步驟4 基于三維骨架點云,將一個二維骨架擴展為三維主枝骨架;步驟5 以構建的三維主枝骨架為模版,在二維樹冠輪廓約束內,通過主枝的復制、平移、旋轉操作構建第一級細枝骨架,然后以第一級細枝骨架為模版按相同方法構建第 二級細枝骨架,依此類推,得到指定級數的細枝骨架;步驟6 根據對骨架切向量、法向量和副法向量的估算創(chuàng)建廣義圓柱,通過圓柱擬 合得到樹枝的幾何模型;步驟7 在樹枝幾何模型上添加葉子或水果完成整個樹木模型,每個葉子或水果 由映射了一個四通道圖像紋理的四邊形來表示,將一個序列的葉子模型放置到細枝骨架點 上,然后在葉子位置、葉子朝向以及葉與枝的距離參數中引入隨機因素。其中,所述等高同位置對應原則是指對于兩個二維骨架,相同高度上處于相同位 置的骨架點為對應點。其中,所述二維骨架擴展為三維主枝骨架是通過在三維骨架點云中搜索該二維骨 架的三維匹配點實現。其中,所述由二維骨架擴展得到的三維主枝骨架的任意兩個骨架點的歐式距離不 超過閾值。本發(fā)明的有益效果是提出了一種基于圖像和草圖的快速建模新方法,該方法利用 圖像信息和智能交互構建三維形態(tài)。本發(fā)明與前人方法的區(qū)別主要體現在三維信息的構 建不是通過圖像配準和視覺重建,而是首先基于規(guī)則構建近似的三維骨架點云,然后通過 點云信息構建三維主枝結構,因此,本發(fā)明的計算時間和模型效果較以往方法優(yōu)越,實驗表 明,構造的樹木模型保留了二維輸入信息,并具有真實感。該發(fā)明利用圖像信息和手工交互創(chuàng)建二維輸入,通過像素分析提取二維骨架,基 于規(guī)則構建近似的三維骨架點云,通過匹配點搜索從一個二維骨架構建三維主枝,最后添 加細枝和葉子。本發(fā)明所獲得的建模結果能用于計算機圖形學各應用領域,包括計算機游 戲、三維電影、網絡漫游、城市景觀設計等。利用本發(fā)明可快速創(chuàng)建各種具有真實感的樹木 模型。
圖1示出本發(fā)明方法流程圖。圖2 (a)至圖2 (f)示出由單像素筆畫構建二維骨架。圖3(a)至圖3(f)示出筆畫像素點0處的局部分析和連接。圖4(a)至圖4(d)示出由畫刷筆畫構建二維骨架。圖5示出中心點判別。圖6 (a)至圖6 (c)示出點H處的像素簡化。圖7 (a)至圖7 (b)示出骨架連接。圖8 (a)至8(e)示出由兩幅草圖直接構建三維骨架點云。圖9示出兩幅草圖以及三維模型的參考坐標系。圖10示出兩個草圖中的對應點。圖11示出從草圖提取二維骨架再構建骨架點云。圖12示出二維骨架A到三維骨架A*的轉化。
圖13示出由二維骨架A、B得到的三維骨架k*。圖14示出細枝生長過程。圖15示出細枝建模原理。
圖16 (a)至16 (c)示出從草圖創(chuàng)建獼猴桃樹模型。圖17 (a)至17 (c)示出從草圖創(chuàng)建桃樹樹枝模型。圖18 (a)至18 (b)示出從草圖創(chuàng)建新穎的樹木模型。圖19(a)至19(c)示出本發(fā)明方法與Neubert方法的效果對比。圖20 (a)至20 (c)示出本發(fā)明方法與Tan方法的效果對比。圖21 (a)至21(b)示出由桔子樹模型構建的虛擬果園。該果園由40米X 40米區(qū) 域內的12X12棵桔子樹構成。
具體實施例方式下面結合附圖詳細說明本發(fā)明技術方案中所涉及的各個細節(jié)問題。應指出的是, 所描述的實施例僅旨在便于對本發(fā)明的理解,而對其不起任何限定作用。1、方法概述(overview of approach)圖1給出了整個方法的流程。本發(fā)明方法的主要步驟包括1)、草圖的創(chuàng)建;2)、二維骨架的提取,分兩種情況(a)基于單像素筆畫的二維骨架提取、(b)基于 畫刷筆畫的二維骨架提??;3)、三維骨架點云的構建,分兩種情況(a)從草圖筆畫直接構建三維骨架點云、 (b)從二維骨架構建三維骨架點云;4)、基于骨架點云構建三維主枝骨架;5)、細枝建模;6)、樹枝幾何模型創(chuàng)建;7)、葉子建模;8)、樹木模型的繪制輸出。在本發(fā)明說明書中,“樹木”是由全部樹枝和葉子組成的完整植物;“樹枝”指樹木 中葉子以外的部分,樹枝分為主枝和細枝兩種;“主枝”是指樹木的主要樹枝,由較粗的樹枝 組成;“細枝”指樹枝中主枝以外的部分;“樹干”指樹的主莖;“樹冠”指樹木中樹干的上部 及其枝葉。2、草圖的創(chuàng)建圖2(a)至圖2(f)示出由單像素筆畫構建二維骨架;圖2(a)和圖2(d)為一棵桃 樹的兩張照片;圖2(b)和圖2(e)為在照片上用單像素筆勾畫出主枝和樹冠輪廓的草圖; 圖2(c)和圖2(f)為構建的二維骨架。該建模方法以兩幅相同像素大小的、勾畫有不同主 枝和樹冠輪廓的草圖作為輸入。一棵樹的反映其兩個側面(近似成直角)的兩張照片或者 反映其一個側面的一張照片可以用于創(chuàng)建草圖。以兩張照片的情況為例,用戶在每幅照片 上用單像素筆或者畫刷勾出樹的主枝和樹冠輪廓。在空白圖像上,也可以通過想象勾畫主 枝和樹冠輪廓作為草圖。草圖創(chuàng)建過程一般需要2 3分鐘。3、二維骨架的提取
本發(fā)明采用兩種二維骨架提取方法,分別用于從草圖上的單像素筆畫和畫刷筆畫 中提取二維骨架。3. 1基于單像素筆畫的二維骨架提取從單像素筆畫提取二維骨架的方法適用于所有筆畫都是連通的情況。該方法主要 通過分析每個筆畫像素近鄰情況得到下一個連接點。圖2給出了一個構建二維骨架的實 例。圖3 (a)至圖3 (f)示出筆畫 像素點0處的局部分析和連接過程。已知G、D和0是 該區(qū)域已確定且已連接到當前枝的骨架點,為了獲得0后面的新的骨架點,在0處進行如下 局部分析1)、讀入筆畫像素點0。2)、搜索0的8近鄰像素和16近鄰像素,以及該區(qū)域已確定的骨架點。對于任意一 個筆畫像素點0,本發(fā)明稱處于緊鄰它的第一層8個位置的筆畫像素為0的“8近鄰像素”, 而處于其第二層16個相連位置的筆畫像素點為0的“16近鄰像素”,如圖3(b)所示,A、B、C 和D是0的8近鄰,Ε、F和G是0的16近鄰。由已知條件知G、D和0是已確定的骨架點, 如圖3(a)所示。3)、0的16近鄰聚類。根據像素位置,相鄰的16近鄰像素聚類為一組,這樣所有 的16近鄰像素會聚類成一些不相鄰的像素組。如圖3(c)所示,所有的16近鄰像素聚類成 三個組,且每個組只有一個像素,即Ε、F、和G各成一組。4)、確定“外部有效組”和“內部有效像素”。對于由16近鄰像素聚類成的任意一 個像素組,如果其中不包含已確定的骨架點,那么這一組稱為“外部有效組”;對于所有8近 鄰像素,如果它不是已確定的骨架點,那么它被稱為“內部有效像素”。如圖3(d)所示,E和 F為兩個外部有效組,A、B和C為三個內部有效像素。5)、確定新骨架點。對于每一個外部有效組,選取任意一個相鄰的內部有效像素作 為新的骨架點,例如圖3(e)所示的A和C。這樣就得到了像素0后面的新骨架點。在像素點0處進行局部分析后,得到了新的骨架點Pi, i = 1,2...N0分以下幾種 情況進行連接處理1)、如果N= 1,將這一點P1作為一個新骨架點連接到當前枝。然后在P1進行同 樣的局部分析找到后面的骨架點。2)、如果N > 1,在Pi, i = 1,2... N中選擇一點,例如Px,作為當前枝新的骨架點, 然后在這一點進行同樣的局部分析。選取當前枝新的骨架點的原則是盡量選取與當前枝 切向夾角較小的點。其余的點作為其它新枝的第二個骨架點(這些新枝的第一個骨架點為 0)被保存下來,等待后面的處理。如圖3(f)所示,A作為新的骨架點被連接到當前枝,C作 為一個新的第二骨架點保留下來。3)、如果N = 0,當前枝結束。如果存在新的第二骨架點,那么轉到這個骨架點進行 局部分析。如果不存在這樣的骨架點,連接過程結束。該方法從最低的筆畫像素點開始進行局部分析,直到所有的像素都經過處理最后 連接成一個樹狀的骨架。3. 2基于畫刷筆畫的二維骨架提取圖4(a)至圖4(d)示出由畫刷筆畫構建二維骨架。圖4(a)示出畫刷筆畫;圖4(b)示出二維骨架;圖4(c)示出畫刷筆畫;圖4(d)示出二維骨架。在基于深度檢索的建模系統(tǒng) 中,用戶可以使用畫刷勾畫主枝,并且用粗細不同的筆畫代表不同的樹枝半徑。這種從畫刷 筆畫中快速提取二維骨架的方法主要通過橫向和縱向的掃描獲取筆畫像素中心點,然后將 中心點連接起來構建骨架。該方法不要求所有筆畫都是連通的。它可用于從樹狀區(qū)域快速 提取帶有半徑信息的二維骨架。3. 2. 1中心點判別
首先在每個圖像上搜索合格的筆畫像素中心點作為候選的骨架點。在每幅勾畫了 主枝的圖像上,從左到右橫向掃描每一行像素,查找所有筆畫像素點,并記錄每一筆畫的兩 個水平邊界點,求出它們的中心點和對應直徑(即為兩個水平邊界點距離)。如圖5所示 的中心點判別過程為在一個水平掃描線上,點P為一筆畫的中心點,該點處的枝的直徑為 Cl1。在點P所在的豎直方向上,向上向下搜索P點所在筆畫的兩個豎直邊界點,其距離為d2。 如果Cl1 < d2,則P是一個合格的中心像素點,否則P就被舍去。然后對同一幅圖像,本發(fā)明 縱向掃描每一列像素,以相似的方法得到一組中心像素點并進行判別,如果該點所在筆畫 的豎直邊界距離小于等于其水平邊界距離,則該點為合格的中心像素點,否則被舍去。這樣 可以得到兩組合格的中心點,將其合并為一組作為候選骨架點。3. 2. 2中心點簡化根據位置關系,得到的合格的中心像素點可聚類成一個個像素組。所有相連的像 素點聚類為一組。以H為例,在每個小組內每個像素處的簡化過程如下a.讀入某小組的像素H ;b.在該組內查詢H的8近鄰像素,如果8近鄰像素數大于2,轉到第3步,否則轉 到第1步;c.在該組內查詢H的16近鄰像素。對于H的每一個16近鄰像素,任意選取一個 與之相連的8近鄰像素。所有選取的8近鄰像素組成像素組S。d.簡化。對于所有8近鄰像素,如果包含在像素組S中或者具有橫縱坐標極值,那 么就被保留下來,其余8近鄰像素都作為冗余點被去除。這樣可以保證有最少的8近鄰像 素點與16近鄰像素相連。圖6(a)至圖6(c)示出點H處的像素簡化。如圖6(a)示出初始像素分布,像素點 A H、i、j是聚類得到的一個像素組的一部分;如圖6(b)示出簡化后分布(一種可能情 況),在H點的簡化完成后,去除了五個像素,保留了兩個像素——A (或者G)和C (或者D、 E),因為這兩個像素分別將16近鄰點i和j與H相連;圖6(c)示出一個像素簡化實例。3. 2. 3骨架連接每個像素點處的簡化完成后,剩余的像素都可以看作二維點。在每個像素組中,需 要找到一個起始點,從這一點開始將組內的所有點連接成一個點序列,即樹枝的初始形態(tài)。為了確定一個組的起始點,根據組內每個點的位置和近鄰情況為其打分,得分最 高的點作為該組的起始點。每個點的初始分數為0,分數計算過程如下第一步如果該點的橫坐標值為該組所有點橫坐標值的最大值或者最小值,則該點 分數值加3,否則不加分;第二步如果該點的縱坐標值為該組所有點縱坐標值的最大值或者最小值,則該點 分數值加3,否則不加分;
第三步如果該點只有一個8近鄰點,則該點分數值加2,否則不加分。經過上面三步判斷,得分最高的點就是起始點(如果有兩個或者更多的點得到相 同的最高分,那么就任選一個作為起始點)。從起始點開始,所有點依次連接成一個序列,在 這個過程中要保證每個點最多與兩個點相連。在每個序列中,所有點都是從起始點到末端點依次相連。我們?yōu)槊總€序列設置的 初始方向為從它的起始點到末端點方向。骨架的連接過程是從一個具有最低端點的序列 開始,沿著序列點不斷搜索并連接其余序列,最終形成一個完整骨架?!熬哂凶畹投它c的序 列”的起始點或者末端點在所有序列端點中具有最小的縱坐標。從最低端點開始,沿著該點所在序列向它的另一端點移動一個圓,這個圓以序列 點為圓心,以每一點的骨架半徑的2倍為半徑。在移動過程中,被包圍進這個圓的其它序列 的端點就被連接起來。如圖7(a)所示,三個不同顏色的序列尚未連接,A、B、C分別為三個 序列的起始點,從最低的端點A開始,沿著紅色的序列移動一個圓;在這個過程中黃色序列 和綠色序列都分別被連接進來,并且每個序列的方向得到了矯正,如圖7(b)所示。用這種 方式,所有的序列都可以被連接起來,組成樹狀的具有分級結構的二維骨架。4、三維骨架點云的構建4. 1從草圖筆畫直接構建三維骨架點云如圖8(a)和8(b)所示,A和B為兩幅輸入草圖,它們可以看作一棵樹的主枝的成 直角的兩個側面。圖9示出兩幅草圖以及三維模型的參考坐標系。草圖A以XA、Ya為坐標 軸;草圖B以XB、Yb為坐標軸;三維點云及三維樹木模型在XA、\、Za確定的坐標系中。通 過兩個草圖的位置關系可知草圖B是草圖A的深度信息。本發(fā)明用簡單方法構建一個三 維點云,使該點云的兩個側面(成直角的側面)分別符合兩個輸入草圖形狀。從圖8(a)和 8(b)兩幅草圖構建的三維點云如圖8(c)至8(e)所示,圖8(c)為骨架點云正視圖-對應 A ;圖8(d)為骨架點云側視圖-對應B;圖8(e)為骨架點云的新方向視圖?;诘雀咄?置的對應規(guī)則,以圖B的中心像素空間位置為深度,把草圖A的中心像素點轉化為三維空間 中的離散點即骨架點云的步驟如下1)、由于草圖A和B具有相同的像素大小,首先掃描草圖A的每一行像素。在每一 行中,按照從左到右的順序檢查所有筆畫像素,找到每個筆畫像素的中點,例如圖10中的Pa 點,該點為其掃描行中筆畫寬度Ia的中點。對于每一行中的所有中心點,按照從左到右的 位置順序編號為1號、2號、3號…m號。2)、以相同方式掃描草圖B的每一行,并對每一行的筆畫像素中心點從左到右編 號為1號、2號、3號...η號。3)、草圖A的每一個筆畫像素中心點都可以獲得同一高度掃描行上草圖B的一個 筆畫像素中心點作為其對應點。在同一高度掃描行上,如果m Sn,那么這一掃描行上A和 B中具有相同編號的兩個中心點為一組對應點;如果m > n,A中第χ號(χ > η)中心點與 B中第χ-η或者第η號中心點為對應點。4)、從兩個二維對應點,可以構建一個三維點。例如在圖10中,高度為y的掃描行 上,草圖A中的Pa(Xl,y)點與草圖B中的Pb(x2,y)點為對應點,用Pa0q,y)與Pb(x2,y)構 建一個三維 點P(Xl,y,x2),該三維點的XA、Ya軸坐標值與點Pa相同,其24軸坐標值為點Pb 的Xb軸坐標值。這個過程也可以看作草圖A中的Pa(Xl,y)點從其對應點Pb獲得了一個Za軸坐標值,從而擴展到了三維空間,變成了三維點P(Xl,y,X2) O按這種方式,可以得到一個 由三維點組成的集合,即點云。從草圖筆畫直接構建的三維骨架點云可用作樹木形狀估計。4. 2從二維骨架構建三維骨架點云如果首先從草圖筆畫提取二維骨架,然后根據二維骨架點構造三維骨架點云,那 么在上述步驟中就不需要計算筆畫中心點了,而是將所有二維骨架點作為中心點,以相似 方式為每行中心點編號、查找對應點、構造點云。圖11為從草圖提取二維骨架再構建骨架 點云的實例,其中獼猴桃樹圖片出自news, eastday. com。用這種方式構建的三維骨架點云 可用作樹木模型的構建。 5、三維主枝骨架的構建樹木模型的三維骨架由各級樹枝組成,每個樹枝又由一系列的骨架點組成。三維 骨架X可表示為X= {λ ; = 1,2...Ιχ}(1)其中,樹枝λ i由三維點組成,表示為Ai = (Pija(XijajyijajZija) ; a = 1,2. ..mj(2)\,。,71。,&,。,&,。為骨架點?1。的坐標。根據圖9給出的坐標系關系,二維骨 架A中的骨架點也可以表示為三維點的形式,如Pi, a Ui, a,yi, a,0),其中Za軸坐標值為0, 因此骨架A中的一個二維枝可以由公式3表示。Ai = (Pija(XijajyijaiO) ; a = 1,2. ..mj(3)在4節(jié)中,由草圖A和B通過骨架提取得到二維骨架A和B,再由骨架A和B構建 骨架點云M。這里本算法通過在三維骨架點云M中進行匹配點搜索把二維骨架A轉化為一 個三維骨架A*。其主要過程為在點云M中搜索A的骨架點的匹配點(即M中與A的骨架 點的橫縱坐標最相似的三維點),用匹配點為骨架A的所有點設置Za軸坐標值,同時保證得 到的任意兩個相鄰三維骨架點的歐式距離小于閾值L(L為一個常數,取L = 5)(歐氏距離 (Euclidean distance)是一個通常采用的距離定義,它是在m維空間中兩個點之間的真實 距離。在三維空間中的歐式距離的就是兩點之間的距離d= [(xl-x2)2+(yl-y2)2+(zl-z2 )2]1/2)。算法的具體操作步驟為1)、讀取二維骨架A中的枝Ai,如公式3所示。2)、按連接順序處理λ i的每一個骨架點。對于λ i的任意一個骨架點Pi, α (xi; α, yi,a,0),采用步驟(2. 1)或者(2. 2)將其轉化為圖12所示的具有Za軸坐標值Zi, α的三維
點 Pi, α (Xi, α,Yi, α,^i, α ) 02. 1)、當Pi, α為枝Xi的第一個骨架點,即Pi, α中α = 1、i彡1時,分下面兩種 情況討論2. 1. 1)、當枝Xi為骨架A的第一個樹枝(樹干)時,SPPi, α中α = 1、i = 1時 (這時Pi,a為整個骨架的根點),在點云M中搜索Pi, a的三維匹配點,例如Q(x,y,z),使該 點滿足 χ = Xi, a 和 y = Yi, a。Pi, a Ui, a,yija,0)就被轉化為一個三維點 Pi^Ui, a,yija,
ζ) O2. 1.2)、當枝λ if是骨架A的第一個樹枝(樹干)時,g卩Pi, a中a = 1、i > 1 時,首先在骨架A中查找枝XiW父枝及其父枝上長出Xi的節(jié)點(即入^勺父節(jié)點丨,假設 其父節(jié)點為Pj,χ (Χ ,α,Υ ,α,Ο).,化成的三維點Pj,/ Uua^uajZiJ的坐標值就是Pi,/的坐標值,即 Pi,/(Xi, α,Yi, α,Zj,x)。
2. 2)、當Pi, α不是枝Ai的第一個骨架點,即Pi, α中α > 1、i彡1時,已知在 枝、上,Pi, a-! (Xi, H,Yi, α-1 0)為Pi, α的前一個骨架點,并且Pi, 轉化成的三維點為
Ka-\(X,,a-\'兄>1,Zi,a~l ) ° 在點云 M 中搜索一個三維 Q (X,y, Z),使其滿足 X = Xi, a、y =
Yi, a,并且巧!《-,和Q之間的距離小于閾值L。2.2. 1)、如果 Q(x,y,Z)存在,得到 Pi,/(Xi, a,Yi, a,ζ)。2. 2. 2)、如果Q(x,y,ζ)不存在,通過來得到Pi, α*的坐標值2. 2. 2. 1)、當 1 < α <叫時,已知在枝 λ i 上,Pi, a+1(Xi, a+1,Yij a+1,0)為 Pi, a 的 后一個骨架點。在點云M中搜索點S(x',y',ζ'),使其滿足χ' =Xi,a+1、y' =yija+1o 如果S(x' , y' , ζ')存在,我們得到?1,/0^。,7^,2^_1+1)(2'彡 ,^的情況下) 或者 Pi,/(Xi^yiia ,ZiH-IMz'〈Zi,^ 的情況下);如果 S(x',y',ζ')不存在,得 到 Pi, a α,Yi, α,a -l) 02·2·2·2)』1<α = Hii 時,我們得到 Pi,/(Xi, α,yi, α,Zi, ^1)。3)、如果骨架A中的所有枝都獲得了 Za軸坐標值,三維構建過程結束,得到三維骨 架k*,圖13所示為由二維骨架A、B得到的三維骨架k* ;否則轉到步驟1。6、細枝建模完成主枝骨架的構建后,需要加上細枝和葉子完成整個樹木模型。在這個過程中, 要保證模型的樹冠形狀符合二維樹冠輪廓約束?;谧韵嗨圃?,從主枝形狀推導出細枝 形狀,并將它們合理地連接到主枝上,這樣新生細枝保留了主枝的結構特征。完整的樹枝骨架是從主枝結構開始,經過幾級細枝生長形成的,如圖14所示。每 一級子枝都是通過復制其父枝的一部分,然后將這一部分平移、旋轉、連接到父枝骨架點得 到的。= 2.(4)細枝的建模原理如圖15所示,nk代表一個三維主枝,由公式4表示。它的子枝 n15·^! = 1,2...N)是通過下面步驟得到的1)、復制枝Jlk的一部分——從其芽節(jié)點片到一個中間骨架點紀。復制的這部分稱 為子枝模版nk[。],由公式5表示,其中系數ο< σ77A[(r]={^;r = l,2...,m}, m^a-lk(5)2)、將ilk
的第一個骨架點連接到nk的骨架點WlSxSO,并旋轉一定的
角度。紀被稱為新芽。
Ik-- F(VHAWw)(6)公式6中,0,是枝Iik與其子枝η"之間的夾角,該夾角需要滿足^仝 仏:, 同時兩個子枝Ci和nk’H之間的夾角需要滿足外$<_<%。參數N、σ、Θ” Θ2、 φι、以及父枝上長出子枝的新芽位置可根據不同植物種類進行調整。本發(fā)明可以通過控制父枝上的新芽分布來控制生成的細枝密度。具體操作過程是在每一個新芽位置處計算樹枝的局部密度,如果該區(qū)域密度過大,則舍棄該新芽。模型的樹冠形狀控制主要通過設置細枝總級數,以及用輸入草圖中的樹冠輪廓筆畫約束細枝生長來 實現。在細枝生長過程中,將細枝骨架投影到兩個輸入草像平面進行判別,如果骨架點 在樹冠輪廓內則保留,否則就舍去,這樣得到的三維樹枝模型就可以滿足兩個方向上的樹 冠約束。由于細枝形狀由主枝形狀決定,因此不同種類的植物建模對細枝生長中的參數信 息不敏感。為了普通用戶使用方便,本發(fā)明采用一組典型的細枝生長參數值創(chuàng)建多種類的 樹木模型。這樣對于一般的應用就不需要進行參數調整了。本發(fā)明也給出了另外2 3組 備用參數值,以適應不同用戶對樹枝密度的調整需要。7、樹枝幾何模型的創(chuàng)建以單像素筆勾勒的主枝草圖作為輸入時,樹枝的半徑由Da Vinci發(fā)現的規(guī)則
確定。該規(guī)則描述了父枝半徑r和其所有子枝半徑A之間的關系。在以畫刷
勾勒的主枝草圖作為輸入的情況下,三維主枝的半徑可以由二維骨架的半徑得到,也可以 由規(guī)則計算出來。為了獲得樹枝的網格模型,本發(fā)明根據對骨架切向量、法向量和副法向量 的估算,對每個選取的骨架點計算一個局部Frenet標架,然后根據Frenet標架和半徑信息 創(chuàng)建廣義圓柱。這些圓柱的連接形成了樹枝的幾何模型。8、葉子建模每個葉子和水果是由映射了一個四通道圖像紋理(由紅、綠和藍色值和透明度 (alpha)通道組成)的四邊形來表示的。首先把一個序列的葉子模型放置到細枝骨架點上, 然后在葉子位置、葉子朝向以及葉與枝的距離參數中引入隨機因素。葉與枝的平均夾角可 以根據先驗知識或者測量數據進行調整。最終可以得到一個帶紋理的樹木模型,該模型在 輸入草圖對應方向上的投影滿足兩張圖片約束。9、樹木模型的繪制輸出對于建模的結果,本發(fā)明把樹木模型的網格信息以文件形式存儲,再由專業(yè)軟件 進行顯示。10、實驗結果與結論我們將本發(fā)明應用于各種形態(tài)的樹木建模和樹木模型設計,與之前的兩種主要的 樹木建模方法進行了比較。通過實驗證明,本發(fā)明建模速度更快、構建的樹木模型更好地保 留了二維輸入信息,魯棒性也更強。10. 1各種樹木建模結果圖16 (a)至16 (c)示出基于互聯網上下載的一張圖片構建獼猴桃樹模型,圖16 (a) 為獼猴桃樹枝模型的正視圖;圖16(b)為獼猴桃樹枝模型的俯視圖;圖16(c)為加上葉子 和果實的獼猴桃樹模型。圖17(a)至圖17(c)為基于一棵桃樹的兩張照片構建桃樹樹枝模 型,圖17(a)為草圖A ;圖17(b)為草圖B;圖17(c)為樹枝模型的三個方向。如果輸入具 有想象力的草圖,系統(tǒng)就可以得到有趣的樹木模型,如圖18所示為從草圖創(chuàng)建新穎的樹模 型,圖18(a)為輸入草圖A、B ;圖18(b)為樹枝模型的三個不同側面。所有這些建模實例都 不需要參數調節(jié)。該建模系統(tǒng)運行效率高,輸入勾畫的草圖后,樹枝的建模時間一般不超過 30秒(雙核2. OG CPU),例如圖17(c)中的桃樹建模需要7秒鐘。10. 2樹木建模對比實驗
如圖19(a)至圖19(c)所示,本發(fā)明采用與Neubert方法相同的輸入圖片構建樹 模型,與該方法相比,本方法能夠保證模型主枝結構的投影與輸入圖片吻合。圖19(a)示出 輸入圖片;圖19(b)示出Neubert方法構建的樹枝模型在輸入圖片方向的視圖;圖19(c)示 出本發(fā)明方法得到的樹枝模型在輸入圖片方向的視圖。如圖20(a)至圖20(c)所示,與Tan方法相比較,本發(fā)明的方法建模速度更快并且 可以控制隱藏在葉子中的主枝形狀(本發(fā)明的方法樹枝建模時間不超過一分鐘(1. 14GHz CPU),而Tan方法中樹枝建模需要20分鐘(2. 4GHzCPU))。
10. 3本發(fā)明在復雜場景繪制中的應用本發(fā)明得到的樹木模型可用于構建虛擬樹林場景。選取上面得到的一些模型,可 構建果園,如圖21(a)至圖20(b)所示,該果園由40米X40米區(qū)域內的12X12棵桔子樹 構成,圖21 (a)為果園遠景;圖21(b)為果園近景。本發(fā)明提出的樹木建模方法的特征在于利用兩幅具有主枝形狀和樹冠輪廓的草 圖快速構建具有真實感的樹木模型。上述實驗結果和基于骨架點云的樹木建模方法,可以用于計算機圖形學各應用領 域,具有操作簡單、建模速度快、模型逼真、應用前景廣的特點。以上所述,僅為本發(fā)明中的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任 何熟悉該技術的人在本發(fā)明所揭露的技術范圍內,可理解想到的變換或替換,都應涵蓋在 本發(fā)明的包含范圍之內,因此,本發(fā)明的保護范圍應該以權利要求書的保護范圍為準。
權利要求
一種基于骨架點云的樹木建模方法,其特征在于,該樹木建模方法的步驟包括步驟1用戶在兩幅樹木圖片上用單像素畫筆或者畫刷手工勾畫出具有樹冠輪廓、具有不同的主枝筆畫的樹木草圖,將具有不同的主枝筆畫的兩幅草圖輸入到圖像處理設備;步驟2圖像處理設備對草圖中每個主枝筆畫像素的近鄰像素進行分析,從而提取二維骨架;步驟3基于等高同位置對應原則從兩個二維骨架構建三維骨架點云,使該三維點云在兩個輸入方向的平行投影滿足二維骨架約束;步驟4基于三維骨架點云,將一個二維骨架擴展為三維主枝骨架;步驟5以構建的三維主枝骨架為模版,在二維樹冠輪廓約束內,通過主枝的復制、平移、旋轉操作構建第一級細枝骨架,然后以第一級細枝骨架為模版按相同方法構建第二級細枝骨架,依此類推,得到指定級數的細枝骨架;步驟6根據對骨架切向量、法向量和副法向量的估算創(chuàng)建廣義圓柱,通過圓柱擬合得到樹枝的幾何模型;步驟7在樹枝幾何模型上添加葉子或水果完成整個樹木模型,每個葉子或水果由映射了一個四通道圖像紋理的四邊形來表示,將一個序列的葉子模型放置到細枝骨架點上,然后在葉子位置、葉子朝向以及葉與枝的距離參數中引入隨機因素。
2.按權利要求1所述的方法,其特征在于,所述等高同位置對應原則是指對于兩個二 維骨架,相同高度上處于相同位置的骨架點為對應點。
3.按權利要求1所述的方法,其特征在于,所述二維骨架擴展為三維主枝骨架是通過 在三維骨架點云中搜索該二維骨架的三維匹配點實現。
4.按權利要求1所述的方法,其特征在于,所述由二維骨架擴展得到的三維主枝骨架 的任意兩個骨架點的歐式距離不超過閾值。
全文摘要
本發(fā)明涉及一種基于骨架點云的樹木建模方法。該方法以手工勾畫的樹木主枝和樹冠輪廓作為輸入自動創(chuàng)建樹木模型,其主要步驟包括通過像素分析從勾畫的筆畫中提取二維骨架、由兩個二維骨架構建三維骨架點云、在三維點云信息指導下將一個二維骨架擴展為三維主枝骨架、基于樹冠輪廓約束創(chuàng)建細枝和葉子。本發(fā)明易于使用、算法簡單、建模效率高,能夠創(chuàng)建出具有真實感的樹木模型。其建模結果在計算機游戲、三維電影、網絡漫游、城市景觀設計等領域具有重要的應用價值。
文檔編號G06T17/00GK101866495SQ20101018828
公開日2010年10月20日 申請日期2010年6月1日 優(yōu)先權日2010年6月1日
發(fā)明者劉佳, 張曉鵬, 李紅軍 申請人:中國科學院自動化研究所