專利名稱:基于深度檢索的樹木建模方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機圖形學(xué)和計算機視覺技術(shù)領(lǐng)域,涉及一種根據(jù)草圖進行樹木建 模的方法。
背景技術(shù):
計算機游戲設(shè)計、三維電影制作等應(yīng)用領(lǐng)域需要大量具有逼真視覺效果或者特殊 視覺效果的植物模型。植物建模系統(tǒng)在這些領(lǐng)域中的應(yīng)用要滿足建模速度和視覺效果兩個 方面的要求。因此研究使用方便、運行速度快、可以隨心所欲改變模型效果的植物建模方法 對實際應(yīng)用具有重要意義。目前的植物建模方法大致可分為四大類第一類是基于植物學(xué)知識對植物形態(tài)進行建模的方法。這類方法主要考慮植物生 長規(guī)律,如Lindenmayer提出的L系統(tǒng);第二類是基于圖像的植物建模方法。這類方法以植物圖片作為輸入信息,通過各 種視覺重建方法構(gòu)建植物模型,如2006年Quan提出的植物建模方法;第三類是基于三維掃描的植物建模方法。這類方法以三維掃描數(shù)據(jù)作為輸入構(gòu)建 植物模型,如2006年Xu提出的樹木建模方法;第四類是基于手工交互的植物建模方法。這類方法以用戶勾畫的二維草圖作為輸 入,或通過三維交互直接控制輸出的三維模型形狀,如2005年Okabe提出的植物建模方法?;谏L機理的方法適用于生長模擬、農(nóng)業(yè)分析等,但是一般需要調(diào)整參數(shù),不便 于控制輸出,因此不適用于真實植物建模;基于三維掃描的方法以樹的三維掃描數(shù)據(jù)作為 輸入,幾何信息豐富,精度高,適用于對模型精度要求較高的應(yīng)用,但三維掃描設(shè)備價錢昂 貴,掃描過程花費時間較長,三維數(shù)據(jù)量大,不適于快速建模;基于圖像的方法輸入信息獲 取方便,建模方法靈活,可適用于各種精度要求的應(yīng)用,但它比基于三維掃描的建模精度 低;基于手工交互的方法是一種更加靈活的方法,可用于樹模型的設(shè)計。
發(fā)明內(nèi)容
本發(fā)明的目的在于,針對現(xiàn)實世界中存在的樹木,提供一個基于圖像和草圖的、能 夠反映樹木主要形態(tài)的快速建模方法,并使該方法可用于各種樹木模型設(shè)計。為實現(xiàn)上述目的,本發(fā)明提供一種基于深度檢索的樹木建模方法,該樹木建模方 法的步驟包括步驟1 用戶在兩幅樹木圖片上用單像素畫筆或者畫刷手工勾畫出具有樹冠輪 廓、具有不同的主枝筆畫的樹木草圖,將具有不同的主枝筆畫的兩幅草圖輸入到圖像處理 設(shè)備;步驟2 圖像處理設(shè)備對草圖中每個主枝筆畫像素的近鄰像素進行分析,從而提 取二維骨架;步驟3 對兩個二維骨架進行深度檢索,構(gòu)建三維主枝骨架,使該三維骨架在兩個輸入方向的平行投影滿足二維骨架約束;步驟4 以構(gòu)建的三維主枝骨架為模版,在二維樹冠輪廓約束內(nèi),通過主枝的復(fù) 制、平移、旋轉(zhuǎn)操作構(gòu)建第一級細枝骨架,然后以第一級細枝骨架為模版按相同方法構(gòu)建第 二級細枝骨架,依此類推,得到指定級數(shù)的細枝骨架;步驟5 根據(jù)對骨架切向量、法向量和副法向量的估算創(chuàng)建廣義圓柱,通過圓柱擬 合得到樹枝的幾何模型;步驟6 在樹枝幾何模型上添加葉子或水果完成整個樹木模型,每個葉子或水果 由映射了一個四通道圖像紋理的四邊形來表示,將一個序列的葉子模型放置到細枝骨架點 上,然后在葉子位置、葉子朝向以及葉與枝的距離參數(shù)中引入隨機因素。其中,述樹木圖片是反映樹木側(cè)面形態(tài)的圖片。其中,針對單像素的筆畫采用局部分析和連接的方法提取二維骨架。其中,針對具有半徑信息的畫刷筆畫通過筆畫像素掃描、中心點判別、中心點簡化 以及骨架點連接提取二維骨架。其中,所述二維骨架具有子家族特征、父家族特征、最大擴展高度特征和父家族路 徑特征。其中,所述深度檢索方法是通過特征匹配查找兩個二維骨架的對應(yīng)枝,將每對對 應(yīng)枝的一枝作為深度信息,將另一枝擴展到三維空間。其中,從兩個對應(yīng)枝構(gòu)建一個三維枝前,需要對兩個對應(yīng)枝進行連通性判斷和枝 的延長。其中,兩個對應(yīng)枝的每對對應(yīng)點具有相同的縱坐標(biāo),從兩個對應(yīng)點構(gòu)建一個三維 點的過程是取其中一個點的X軸、Y軸坐標(biāo)作為三維點的X軸、Y軸坐標(biāo),取另一個點的X軸 坐標(biāo)作為三維點的Z軸坐標(biāo)。其中,通過復(fù)制部分父枝并在一定的夾角約束范圍內(nèi),將復(fù)制的部分父枝連接到 父枝節(jié)點上得到相應(yīng)子枝。本發(fā)明的有益效果是提出了一種基于圖像和草圖的快速建模新方法,該方法利用 圖像信息和智能交互構(gòu)建三維形態(tài)。本發(fā)明與前人方法的區(qū)別主要體現(xiàn)在二維信息的匹配 不是通過圖像配準(zhǔn)和相機標(biāo)定,而是通過枝的特征分析和特征匹配,因此,本發(fā)明的計算時 間和模型效果較以往方法優(yōu)越,實驗表明,構(gòu)造的樹木模型保留了二維輸入信息,并具有真 實感。該發(fā)明利用圖像信息和手工交互創(chuàng)建二維輸入,通過像素分析提取二維骨架,通 過特征分析和特征匹配查找兩個二維骨架的對應(yīng)枝,通過深度設(shè)置得到三維主枝,最后添 加細枝和葉子。本發(fā)明所獲得的建模結(jié)果能用于計算機圖形學(xué)各應(yīng)用領(lǐng)域,包括計算機游 戲、三維電影、網(wǎng)絡(luò)漫游、城市景觀設(shè)計等。利用本發(fā)明可快速創(chuàng)建各種具有真實感的樹木 模型。
圖1示出本發(fā)明方法流程圖。圖2 (a)至圖2 (f)示出由單像素筆畫構(gòu)建二維骨架。圖3(a)至圖3(f)示出筆畫像素點0處的局部分析和連接。
圖4(a)至圖4(d)示出由畫刷筆畫構(gòu)建二維骨架。圖5示出中心點判別。圖6 (a)至圖6 (c)示出點H處的像素簡化。圖7 (a)至圖7 (b)示出骨架連接。圖8示出兩幅圖像以及三維模型的參考坐標(biāo)系。圖9示出二維骨架中的結(jié)構(gòu)特征定義。圖10示出經(jīng)過高度V的枝。紅色的枝a、b和c為圖示二維骨架中經(jīng)過高度V的枝。圖11示出深度檢索方法流程圖。圖12示出由兩個二維對應(yīng)枝構(gòu)建三維枝。圖13(a)至圖13(f)示出對應(yīng)枝的反向延長過程。圖14(a)至圖14(c)示出構(gòu)建的三維主枝骨架及其骨架點在輸入圖片上的投影。圖15示出細枝生長過程。圖16示出細枝建模原理。圖17(a)至圖17(g)示出基于兩幅圖片、以不同的筆畫作為輸入得到的兩個桃樹 模型的對比。圖18(a)至圖18(h)示出基于一幅圖片的葡萄樹建模。圖19(a)至圖19(g)示出從畫刷勾畫的草圖構(gòu)建樹木模型。圖20(a)至圖20(c)示出本發(fā)明方法與Neubert方法的效果對比。圖21 (a)至圖21 (c)示出本發(fā)明方法與Tan方法的效果對比。圖22 (a)至圖22 (b)示出由兩個不同的桃樹模型和一個蘋果樹模型構(gòu)成的虛擬樹 林場景。該樹林包含100棵樹木,分布于60米X 60米區(qū)域內(nèi)。
具體實施例方式下面結(jié)合附圖詳細說明本發(fā)明技術(shù)方案中所涉及的各個細節(jié)問題。應(yīng)指出的是, 所描述的實施例僅旨在便于對本發(fā)明的理解,而對其不起任何限定作用。1、方法概述(overview of approach)圖1給出了整個方法的流程。本發(fā)明方法的主要步驟包括1)、草圖的創(chuàng)建;2)、二維骨架的提取,分兩種情況(a)基于單像素筆畫的二維骨架提取、(b)基于 畫刷筆畫的二維骨架提?。?)、三維主枝骨架的構(gòu)建,包括5個子步驟(a)建立三維坐標(biāo)系、(b)骨架的特征 定義、(c)深度檢索、(d)枝的反向延長、(e)缺失骨架的補充;4)、細枝建模;5)、樹枝幾何模型創(chuàng)建;6)、葉子建模;7)、樹木模型的繪制輸出。在本發(fā)明說明書中,“樹木”是由全部樹枝和葉子組成的完整植物;“樹枝”指樹木 中葉子以外的部分,樹枝分為主枝和細枝兩種;“主枝”是指樹木的主要樹枝,由較粗的樹枝組成;“細枝”指樹枝中主枝以外的部分;“樹干”指樹的主莖;“樹冠”指樹木中樹干的上部及其枝葉。2、草圖的創(chuàng)建圖2(a)至圖2(f)示出由單像素筆畫構(gòu)建二維骨架;圖2(a)和圖2(d)為一棵桃 樹的兩張照片;圖2(b)和圖2(e)為在照片上用單像素筆勾畫出主枝和樹冠輪廓的草圖; 圖2(c)和圖2(f)為構(gòu)建的二維骨架。該建模方法以兩幅相同像素大小的、勾畫有不同主 枝和樹冠輪廓的草圖作為輸入。一棵樹的反映其兩個側(cè)面(近似成直角)的兩張照片或者 反映其一個側(cè)面的一張照片可以用于創(chuàng)建草圖。以兩張照片的情況為例,用戶在每幅照片 上用單像素筆或者畫刷勾出樹的主枝和樹冠輪廓。在空白圖像上,也可以通過想象勾畫主 枝和樹冠輪廓作為草圖。草圖創(chuàng)建過程一般需要2 3分鐘。3、二維骨架的提取本發(fā)明采用兩種二維骨架提取方法,分別用于從草圖上的單像素筆畫和畫刷筆畫 中提取二維骨架。3. 1基于單像素筆畫的二維骨架提取從單像素筆畫提取二維骨架的方法適用于所有筆畫都是連通的情況。該方法主要 通過分析每個筆畫像素近鄰情況得到下一個連接點。圖2給出了一個構(gòu)建二維骨架的實 例。圖3 (a)至圖3 (f)示出筆畫像素點0處的局部分析和連接過程。已知G、D和0是 該區(qū)域已確定且已連接到當(dāng)前枝的骨架點,為了獲得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近鄰聚類。根據(jù)像素位置,相鄰的16近鄰像素聚類為一組,這樣所有 的16近鄰像素會聚類成一些不相鄰的像素組。如圖3(c)所示,所有的16近鄰像素聚類成 三個組,且每個組只有一個像素,即Ε、F、和G各成一組。4)、確定“外部有效組”和“內(nèi)部有效像素”。對于由16近鄰像素聚類成的任意一 個像素組,如果其中不包含已確定的骨架點,那么這一組稱為“外部有效組”;對于所有8近 鄰像素,如果它不是已確定的骨架點,那么它被稱為“內(nèi)部有效像素”。如圖3(d)所示,E和 F為兩個外部有效組,A、B和C為三個內(nèi)部有效像素。5)、確定新骨架點。對于每一個外部有效組,選取任意一個相鄰的內(nèi)部有效像素作 為新的骨架點,例如圖3(e)所示的A和C。這樣就得到了像素0后面的新骨架點。在像素點0處進行局部分析后,得到了新的骨架點Pi, i = 1,2...N0分以下幾種 情況進行連接處理1)、如果N= 1,將這一點P1作為一個新骨架點連接到當(dāng)前枝。然后在P1進行同 樣的局部分析找到后面的骨架點。
2)、如果N>l,在Pi,i = 1,2... N中選擇一點,例如Px,作為當(dāng)前枝新的骨架點, 然后在這一點進行同樣的局部分析。選取當(dāng)前枝新的骨架點的原則是盡量選取與當(dāng)前枝 切向夾角較小的點。其余的點作為其它新枝的第二節(jié)點(它們的芽節(jié)點為0)被保存下來, 等待后面的處理。如圖3(f)所示,A作為新的骨架點被連接到當(dāng)前枝,C作為一個新的第二 節(jié)點保留下來(芽節(jié)點和第二節(jié)點的定義在4. 2中)。3)、如果N = 0,當(dāng)前枝結(jié)束。如果存在新的第二節(jié)點,那么轉(zhuǎn)到這個節(jié)點進行局部 分析。如果不存在這樣的節(jié)點,連接過程結(jié)束。該方法從最低的筆畫像素點開始進行局部分析,直到所有的像素都經(jīng)過處理最后 連接成一個樹狀的骨架。3. 2基于畫刷筆畫的二維骨架提取圖4(a)至圖4(d)示出由畫刷筆畫構(gòu)建二維骨架。圖4(a)示出畫刷筆畫;圖4(b) 示出二維骨架;圖4(c)示出畫刷筆畫;圖4(d)示出二維骨架。在基于深度檢索的建模系統(tǒng) 中,用戶可以使用畫刷勾畫主枝,并且用粗細不同的筆畫代表不同的樹枝半徑。這種從畫刷 筆畫中快速提取二維骨架的方法主要通過橫向和縱向的掃描獲取筆畫像素中心點,然后將 中心點連接起來構(gòu)建骨架。該方法不要求所有筆畫都是連通的。它可用于從樹狀區(qū)域快速 提取帶有半徑信息的二維骨架。3. 2. 1中心點判別首先在每個圖像上搜索合格的筆畫像素中心點作為候選的骨架點。在每幅勾畫了 主枝的圖像上,從左到右橫向掃描每一行像素,查找所有筆畫像素點,并記錄每一筆畫的兩 個水平邊界點,求出它們的中心點和對應(yīng)直徑(即為兩個水平邊界點距離)。如圖5所示 的中心點判別過程為在一個水平掃描線上,點P為一筆畫的中心點,該點處的枝的直徑為 屯。在點P所在的豎直方向上,向上向下搜索P點所在筆畫的兩個豎直邊界點,其距離為d2。 如果屯< d2,則P是一個合格的中心像素點,否則P就被舍去。然后對同一幅圖像,本發(fā)明 縱向掃描每一列像素,以相似的方法得到一組中心像素點并進行判別,如果該點所在筆畫 的豎直邊界距離小于等于其水平邊界距離,則該點為合格的中心像素點,否則被舍去。這樣 可以得到兩組合格的中心點,將其合并為一組作為候選骨架點。3. 2. 2中心點簡化根據(jù)位置關(guān)系,得到的合格的中心像素點可聚類成一個個像素組。所有相連的像 素點聚類為一組。以H為例,在每個小組內(nèi)每個像素處的簡化過程如下1.讀入某小組的像素H ;2.在該組內(nèi)查詢H的8近鄰像素,如果8近鄰像素數(shù)大于2,轉(zhuǎn)到第3步,否則轉(zhuǎn) 到第1步;3.在該組內(nèi)查詢H的16近鄰像素。對于H的每一個16近鄰像素,任意選取一個 與之相連的8近鄰像素。所有選取的8近鄰像素組成像素組S。4.簡化。對于所有8近鄰像素,如果包含在像素組S中或者具有橫縱坐標(biāo)極值,那 么就被保留下來,其余8近鄰像素都作為冗余點被去除。這樣可以保證有最少的8近鄰像 素點與16近鄰像素相連。圖6(a)至圖6(c)示出點H處的像素簡化。如圖6(a)示出初始像素分布,像素點 A H、i、j是聚類得到的一個像素組的一部分;如圖6(b)示出簡化后分布(一種可能情
7況),在H點的簡化完成后,去除了五個像素,保留了兩個像素——A (或者G)和C (或者D、 E),因為這兩個像素分別將16近鄰點i和j與H相連;圖6(c)示出一個像素簡化實例。3. 2. 3骨架連接 每個像素點處的簡化完成后,剩余的像素都可以看作二維點。在每個像素組中,需 要找到一個起始點,從這一點開始將組內(nèi)的所有點連接成一個點序列,即樹枝的初始形態(tài)。為了確定一個組的起始點,根據(jù)組內(nèi)每個點的位置和近鄰情況為其打分,得分最 高的點作為該組的起始點。每個點的初始分數(shù)為0,分數(shù)計算過程如下第一步如果該點的橫坐標(biāo)值為該組所有點橫坐標(biāo)值的最大值或者最小值,則該點 分數(shù)值加3,否則不加分;第二步如果該點的縱坐標(biāo)值為該組所有點縱坐標(biāo)值的最大值或者最小值,則該點 分數(shù)值加3,否則不加分;第三步如果該點只有一個8近鄰點,則該點分數(shù)值加2,否則不加分。經(jīng)過上面三步判斷,得分最高的點就是起始點(如果有兩個或者更多的點得到相 同的最高分,那么就任選一個作為起始點)。從起始點開始,所有點依次連接成一個序列,在 這個過程中要保證每個點最多與兩個點相連。在每個序列中,所有點都是從起始點到末端點依次相連。我們?yōu)槊總€序列設(shè)置的 初始方向為從它的起始點到末端點方向。骨架的連接過程是從一個具有最低端點的序列 開始,沿著序列點不斷搜索并連接其余序列,最終形成一個完整骨架。“具有最低端點的序 列”的起始點或者末端點在所有序列端點中具有最小的縱坐標(biāo)。從最低端點開始,沿著該點所在序列向它的另一端點移動一個圓,這個圓以序列 點為圓心,以每一點的骨架半徑的2倍為半徑。在移動過程中,被包圍進這個圓的其它序列 的端點就被連接起來。如圖7(a)所示,三個不同顏色的序列尚未連接,A、B、C分別為三個 序列的起始點,從最低的端點A開始,沿著紅色的序列移動一個圓;在這個過程中黃色序列 和綠色序列都分別被連接進來,并且每個序列的方向得到了矯正,如圖7(b)所示。用這種 方式,所有的序列都可以被連接起來,組成樹狀的具有分級結(jié)構(gòu)的二維骨架。4、三維主枝骨架的構(gòu)建本發(fā)明采用深度檢索算法根據(jù)兩個圖像平面上的二維骨架A和B構(gòu)建三維主枝。 該算法的主要流程是對于二維骨架A的任意一個枝,例如λ 1,首先在二維骨架B中查找一 個對應(yīng)μ \然后入1人對應(yīng)枝μ ^獲得深度信息,轉(zhuǎn)化為一個三維枝。三維構(gòu)建過程在骨架 A中按照枝的連接級別依次進行,該過程中需要保證構(gòu)建的所有三維枝都是連通的。4. 1建立三維坐標(biāo)系圖8示出兩幅圖像以及三維模型的參考坐標(biāo)系。圖像A以ΧΑ、ΥΑ*坐標(biāo)軸;圖像B 以XB、Yb為坐標(biāo)軸;三維模型在ΧΑ、\、Za確定的坐標(biāo)系中。兩幅輸入草圖A和B可以看作 一棵樹的主枝的成直角的兩個側(cè)面。通過兩個草圖的位置關(guān)系可知草圖B是草圖A的深
度{曰息。4. 2骨架的的特征定義樹枝骨架是一個分支結(jié)構(gòu),每一個樹枝由一系列的骨架點(從芽節(jié)點到末端節(jié) 點)組成。一個二維骨架可以由下列符號描述A = Ui ;i = 1,2...ΙΑ},其中二維樹枝Xi由二維骨架點組成,艮P
,心和沁分別為骨架點的橫遷坐標(biāo),么為該點處樹枝的半徑。對于任意一個三維骨架C,有C= {nk;k = 1,2. ..KJ,其中
下面以樹枝
}為例介紹二維骨架中的結(jié)構(gòu)特征
定義,如圖9所示。 芽節(jié)AP1 樹枝λ的第一個骨架點,它與λ的父枝相連; 第二節(jié)點P2 樹枝λ的第二個骨架點,在芽節(jié)點之后; 末端節(jié)點Pm 樹枝λ的最后一個骨架點,即枝的末端; 起始高度b ( λ )樹枝λ的芽節(jié)點P1的縱坐標(biāo)值,即少 ; 結(jié)束高度eU)樹λ的末端節(jié)點Pm的縱坐標(biāo)值,S卩義; 最小高度hU)樹枝λ的所有骨架點的縱坐標(biāo)值中的最小值; 最大高度Η(λ)樹枝λ的所有骨架點的縱坐標(biāo)值中的最大值; 子家族uU)樹枝λ及其所有子代; 父家族(1(λ)樹枝λ及其所有父代; 最大擴展高度Μ( λ)樹枝λ的子家族ιι(λ)中骨架點的最大縱坐標(biāo)值; 父家族路徑ρ(λ)樹枝λ的父家族(1(λ)中從樹枝λ末端到樹的根點的整 個連通路徑。 樹的根點整個骨架的起始點,即樹的根部節(jié)點。定義一個樹枝的“子家族”包括該樹枝本身、它的所有子枝、子枝的子枝等所有子 代枝。一個樹枝的“父家族”包括該樹枝本身、它的父枝、父枝的父枝等等一直到樹的根點。 例如,對于一棵樹的樹干來說,它的子家族就是這棵樹的所有樹枝,而它的父家族只包含它 本身。一個樹枝的“最大擴展高度”可以通過在它的子家族中搜索縱坐標(biāo)最大的骨架點得 至IJ。另外,對于給定高度V,在一個二維骨架中“經(jīng)過高度V的枝”指的是那些包含一個或多 個縱坐標(biāo)為V的骨架點的枝,如圖10所示,a、b和c為該骨架中經(jīng)過高度V的枝。4. 3深度檢索深度檢索方法的流程圖如圖11所示。假設(shè)在二維骨架A中,三維構(gòu)建過程進行到 了枝Xi的芽節(jié)點,進行到的高度(即當(dāng)前高度V)為Xi的芽節(jié)點的縱坐標(biāo)(即枝Xi的 起始高度b ( λ 0,因此當(dāng)前高度V = b ( λ D。在二維骨架B中搜索所有“經(jīng)過當(dāng)前高度V’ 的枝,這些枝組成一個樹枝組&。由于骨架A和B都是連通的樹狀結(jié)構(gòu)并且高度相似,因此 在大多數(shù)情況下Gi至少包含一個樹枝。通過特征匹配,可以在樹枝組Gi中檢索到Xi的對 應(yīng)枝yj。然后由二維枝Xi和μj構(gòu)建一個新的三維枝nk。下面詳細介紹特征匹配和三 維枝構(gòu)建過程。任意樹枝χ的最大擴展高度M(X)是χ的一個結(jié)構(gòu)特征。對于從單像素筆畫提取 的二維骨架,在公式ι中,本發(fā)明定義了一個線性判別方程&00 ;對于從畫刷筆畫提取的 帶有半徑信息的二維骨架,公式ι改寫為2,其中增加了枝X和枝λ i在高度V處的半徑比 較(兩個枝在V處的半徑分別為r (x,V)和r ( λ i,V),k”k2都是常系數(shù))。在樹枝組Gi中, 能夠使Fi(X)取得最小值的枝,即公式3中的就是樹枝Xi的對應(yīng)枝。
Fi(x) = M(x)-M(Ai)(1)Fi(x) = kx |M(x)-M( A 0 |+k2 |r (x, V)-r ( A \ V)(2)uJ = arglminlF^x), x G Gj}(3)由二維枝入1和一構(gòu)造三維枝nk的過程可概括為在相同高度(縱坐標(biāo))處, 每個二維枝各取一點作為對應(yīng)點來構(gòu)造一個三維點,所有三維點構(gòu)成一個三維枝。兩個二 維枝高度重合的部分,即每個枝用于構(gòu)造三維枝的部分定義為該二維枝的“有效部分”。三 維構(gòu)造過程遵循以下規(guī)則1)、假設(shè)枝人1上的二維點Pj ( x[a,y[a,rla )和枝"上的二維點 QJP (xlP, y2LP, ☆)具有相同的縱坐標(biāo),S卩yl = ylP,則它們可以構(gòu)造nk的一個三維點 s; ( xl, yl, zlr,心),其坐標(biāo)滿足x\y = x\a(4)ylr = yla = ylP(5)zly = x2jp(6)rl7=(r (7)2)、如果枝^的最大高度小于等于一的最大高度,即彡H(V),那么A1 的所有二維骨架點都可以被轉(zhuǎn)化為三維點。接下來可以處理骨架A下一個枝Xi+1。3)、如果枝^的最大高度大!^的最大高度,即對^) >H(yj),那么三維構(gòu)建
過程會停在\ 1的一個中間點巧(< ,//仿々+ 1,么)。在當(dāng)前高度V = H(u j)+l處,通過特
征匹配為入1的剩余部分(由巧后面的骨架點組成的部分)找到一個對應(yīng)枝,然后再進行
三維構(gòu)建。圖12給出了一個由二維枝構(gòu)建三維枝的實例。圖中骨架A由枝a、b、c組成,骨架 B由枝d、e、f、g組成,其中枝a和d為對應(yīng)枝。由兩個對應(yīng)枝上任意相同高度處的兩個點, 例如 a 的二維點 PQ(X(1,y0, z0, r0)和 d 的二維點 P' Q(x' 0, y' 0, z' 0, r' 0)(這兩個點 滿足條件yQ = y' o)可以構(gòu)造三維枝的一個點P(x,y,z, r),點P滿足x = x0, y = y0 = y' o'Z = x' 0,r = (r0+r' J/2。由于枝a的最大高度大于枝d的最大高度,三維構(gòu)建過 程會停在枝a的Pi點。在骨架B中查找經(jīng)過Pi點高度的樹枝,得到兩個枝——e和f。顯 然Fa(f) ^ Fa(e),因此枝f為枝a剩余部分的對應(yīng)枝,可以繼續(xù)進行三維構(gòu)建。為了保證最后得到的三維骨架是連通的,當(dāng)?shù)玫揭粚?yīng)枝后,例如枝入1和P J, 需要首先判斷由它們直接構(gòu)造的三維枝是否和之前形成的三維骨架是相連的。如果不相 連,那么就需要先把它們的有效部分(可用于構(gòu)建三維枝的部分)沿著各自的父家族路徑 反向延長到一定的位置,然后再按前面的三維構(gòu)造方法構(gòu)建三維枝。下面就詳細討論枝的 反向延長的問題。4. 4枝的反向延長按照枝的連接級別順序,三維構(gòu)建過程會依次遍歷A的所有枝。然而在骨架B中, A的那些對應(yīng)枝可能是不連通的,這就會導(dǎo)致構(gòu)造的三維骨架是不連通的。為了得到一個 連通的三維骨架并且保證三維骨架在兩個方向的投影符合二維輸入的約束,當(dāng)通過特征匹 配得到一對對應(yīng)枝后,要進行連通性的判別,如果不滿足條件,就需要將兩個枝的有效部分(用于構(gòu)建三維枝的部分)沿著其各自的父家族路徑反向延長到一定的位置,然后再用這 兩個枝新的有效部分構(gòu)建三維枝。下面以圖13(a)至圖13(f)所示為例詳細介紹具體的判 別和延長處理過程。為了更具有普遍性,取三維創(chuàng)建過程中任意一個中間狀態(tài)進行說明。二維骨架A和B是由筆畫提取得到的一棵樹的兩個二維骨架(圖13(a))。如圖 13(b)所示為當(dāng)前狀態(tài)在骨架A中,假設(shè)當(dāng)前時刻三維構(gòu)建過程進行到了枝a的芽節(jié)點Pa, 那么枝a為“Α的當(dāng)前枝”,Pa為“a的當(dāng)前點”,a中Pa以上的部分為“a的有效部分”。通過 特征匹配,骨架B中的枝b被選為a的對應(yīng)枝,并且已知a的Pa點和b的Pb點具有相同的 縱坐標(biāo),那么Pb為“b的當(dāng)前點”,b中Pb點以上的部分為“b的有效部分”。骨架A和B中 的綠色枝為當(dāng)前時刻之前三維構(gòu)建過程中形成的對應(yīng)枝。假設(shè)這些綠色的對應(yīng)枝都進行了 連通性判別和延長處理,在每個骨架中都是連通的。對于剛剛得到的對應(yīng)枝a和b,連通性 判別和延長處理過程如下1)、確定枝a和b各自的父家族路徑,如圖13(c)所示的藍色路徑為父家族路徑。2)、確定枝a和b各自的“已使用路徑”。定義a的“已使用路徑”為a的父家族路 徑在當(dāng)前點Pa以下的部分。而b的“已使用路徑”被定義為a的“已使用路徑”在骨架B中 的所有對應(yīng)枝組成的路徑。如圖13(d)所示的黃色路徑為已使用路徑。3)、確定枝a和b各自的“有效父家族路徑”。定義a的“已使用路徑”即為其“有 效父家族路徑”。對于枝b,它的“父家族路徑”和其“已使用路徑”的共有部分即為b的“有 效父家族路徑”。如圖13(e)所示的藍色路徑為有效父家族路徑。4)、判別和延長。如果當(dāng)前點Pb在枝b的“有效父家族路徑”上,那么對應(yīng)枝a和 b不需要處理就可以直接用它們的有效部分來構(gòu)造一個三維枝。如果Pb點不在枝b的“有 效父家族路徑”上,那么就要延長枝a和b的有效部分(圖13(f),然后用新的有效部分來 構(gòu)建三維枝,步驟如下第一步,將枝b的當(dāng)前點從Pb沿著枝b的“父家族路徑”反方向移動,直到移動到 b的“有效父家族路徑”上為止,即P。點。點P。與枝b末端之間的路徑就是枝b新的有效部 分。第二步,將枝a的當(dāng)前點從Pa沿著枝a的“父家族路徑”反向移動到與P。相同的 高度處,即Pd點,新的當(dāng)前點Pd與枝a末端之間的路徑就是枝a新的有效部分。5)、在基于深度檢索的三維構(gòu)建過程中,每得到一對對應(yīng)枝,就進行上述判斷處 理,這樣就可以保證形成的三維骨架是連通的,并且滿足二維約束。4. 5缺失骨架的補充在骨架A的所有枝都經(jīng)過三維處理后,通常在骨架B中會剩余一些枝,它們的一部 分或者全部還沒有被用作A中枝的對應(yīng)枝。搜索得到這些剩余枝,在骨架A中為它們搜索 對應(yīng)枝,然后用相同方法構(gòu)造三維骨架。經(jīng)過上述步驟,最終可以得到一個完整的三維主 枝骨架,該骨架在兩個輸入圖片方向的二維投影滿足草圖中的筆畫約束。如圖14(a)至圖 14(c)示出構(gòu)建的三維主枝骨架及其骨架點在輸入圖片上的投影。圖14(a)是通過上述方 法得到的一個三維主枝骨架,將它分別投影到兩個輸入圖片,可以看到三維骨架點分布于 所有草圖筆畫上,如圖14(b)和圖14(c)所示。5、細枝建模 完成主枝骨架的構(gòu)建后,需要加上細枝和葉子完成整個樹模型。在這個過程中,要保證模型的樹冠形狀符合二維樹冠輪廓約束。基于自相似原理,從主枝形狀推導(dǎo)出細枝形 狀,并將它們合理地連接到主枝上,這樣新生細枝保留了主枝的結(jié)構(gòu)特征。完整的樹枝骨架是從主枝結(jié)構(gòu)開始,經(jīng)過幾級細枝生長形成的,如圖15所示。每 一級子枝都是通過復(fù)制其父枝的一部分,然后將這一部分平移、旋轉(zhuǎn)、連接到父枝骨架點得 到的。
(8)細枝的建模原理如圖16所示,nk代表一個三維主枝,由公式8表示。它的子枝 nk’i(i = 1,2...N)是通過下面步驟得到的1)、復(fù)制枝nk的一部分——從其芽節(jié)點片到一個中間骨架點<。復(fù)制的這部分 稱為子枝模版nk[o],由公式9表示,其中系數(shù)o< o
(9)2)、將nk
的芽節(jié)點連接到nk的骨架點Wl-xs/D,并旋轉(zhuǎn)一定的角度。K
被稱為新芽。
(10)公式10中,是枝nk與其子枝nk’i之間的夾角,該夾角需要滿足0 %2, 同時兩個子枝nk’lP nk’H之間的夾角需要滿足外內(nèi)。參數(shù)N、0、e” e2、 (Pi、以及父枝上長出子枝的新芽位置可根據(jù)不同植物種類進行調(diào)整。本發(fā)明可以通過控制父枝上的新芽分布來控制生成的細枝密度。具體操作過程是 在每一個新芽位置處計算樹枝的局部密度,如果該區(qū)域密度過大,則舍棄該新芽。模型的樹 冠形狀控制主要通過設(shè)置細枝總級數(shù),以及用輸入草圖中的樹冠輪廓筆畫約束細枝生長來 實現(xiàn)。在細枝生長過程中,將細枝骨架投影到兩個輸入草像平面進行判別,如果骨架點 在樹冠輪廓內(nèi)則保留,否則就舍去,這樣得到的三維樹枝模型就可以滿足兩個方向上的樹 冠約束。由于細枝形狀由主枝形狀決定,因此不同種類的植物建模對細枝生長中的參數(shù)信 息不敏感。為了普通用戶使用方便,本發(fā)明采用一組典型的細枝生長參數(shù)值創(chuàng)建多種類的 樹木模型,如藤狀枝的葡萄樹、塔狀樹冠的松樹等。這樣對于一般的應(yīng)用就不需要進行參數(shù) 調(diào)整了。本發(fā)明也給出了另外2 3組備用參數(shù)值,以適應(yīng)不同用戶對樹枝密度的調(diào)整需要。6、樹枝幾何模型的創(chuàng)建以單像素筆勾勒的主枝草圖作為輸入時,樹枝的半徑由Da Vinci發(fā)現(xiàn)的規(guī)則
來確定。該規(guī)則描述了父枝半徑r和其所有子枝半徑ri之間的關(guān)系。在以畫
刷勾勒的主枝草圖作為輸入的情況下,三維主枝的半徑可以由二維骨架的半徑得到,也可 以由規(guī)則計算出來。為了獲得樹枝的網(wǎng)格模型,我們根據(jù)對骨架切向量、法向量和副法向量 的估算,對每個選取的骨架點計算一個局部Frenet標(biāo)架,然后根據(jù)Frenet標(biāo)架和半徑信息 創(chuàng)建廣義圓柱。這些圓柱的連接形成了樹枝的幾何模型。
7、葉子建模每個葉子和水果是由映射了一個四通道圖像紋理(由紅、綠和藍色值和透明度 (alpha)通道組成)的四邊形來表示的。首先把一個序列的葉子模型放置到細枝骨架點上, 然后在葉子位置、葉子朝向以及葉與枝的距離等參數(shù)中引入隨機因素。葉與枝的平均夾角 可以根據(jù)先驗知識或者測量數(shù)據(jù)進行調(diào)整。最終可以得到一個帶紋理的樹木模型,該模型 在輸入草圖對應(yīng)方向上的投影滿足兩張圖片約束。8、樹木模型的繪制輸出對于建模的結(jié)果,本發(fā)明把樹木模型的網(wǎng)格信息以文件形式存儲,再由專業(yè)軟件 進行顯示。9、實驗結(jié)果與結(jié)論我們將本發(fā)明應(yīng)用于各種形態(tài)的樹木建模和樹木模型設(shè)計,與之前的兩種主要的 樹木建模方法進行了比較。通過實驗證明,本發(fā)明建模速度更快、構(gòu)建的樹木模型更好地保 留了二維輸入信息,魯棒性也更強。9. 1各種樹木建模結(jié)果用戶可基于拍攝角度近似成直角的一棵樹的兩個側(cè)面照片,通過勾畫主枝和樹冠 輪廓草圖作為輸入構(gòu)建出三維樹模型。圖17(a)至圖17(g)示出基于兩幅圖片、以不同的 筆畫作為輸入得到的兩個桃樹模型的對比。圖17(a) —棵桃樹的兩張照片;圖17(b)第一 組輸入兩張較少筆畫的草圖;圖17(c)第二組輸入兩張較多筆畫的草圖;圖17(d)由第 一組輸入構(gòu)建的樹枝模型在兩個輸入圖片方向的視圖;圖17(e)由第二組輸入構(gòu)建的樹枝 模型在兩個輸入圖片方向的視圖;圖17(f)由第一組輸入得到的樹木模型在兩個輸入圖片 方向的視圖;圖17(g)由第二組輸入得到的樹木模型在兩個輸入圖片方向的視圖。在這個 例子中,基于一棵桃樹的兩張照片,用戶以不同數(shù)量的筆畫作為輸入,可以得到兩個相似的 桃樹模型。該實例說明本發(fā)明的建模效果不受用戶勾畫的筆畫數(shù)量的影響。建模系統(tǒng)也可以利用一張圖片進行建模。基于任意一張互聯(lián)網(wǎng)上下載的圖片就可 以很方便地重建出一個逼真的三維樹模型,圖18(a)至圖18(h)所示為一個重建葡萄樹的 例子,圖18(a)所示為葡萄樹圖片(www.huaxia.com);圖18(b)所示為基于圖片的草圖A ; 圖18(c)所示為隨意勾畫的草圖B ;圖18(d)三維樹枝模型正視圖;圖18(e)三維樹枝模型 側(cè)視圖;圖18(f)所示為三維樹枝模型俯視圖;圖18(g)所示為重建的帶葉子和果實的葡 萄樹;圖18(h)所示為葡萄樹模型的部分放大圖。用戶具有想象力的簡單繪圖可以創(chuàng)造出多種有趣的樹模型。圖19(a)至圖19(g) 為從畫刷勾畫的草圖構(gòu)建樹模型的實例。圖19(a)示出用畫刷勾畫的輸入草圖A和B ;圖 19(b)示出三維枝的正視圖;圖19(c)示出三維枝的側(cè)視圖;圖19(d)示出三維枝的俯視 圖;圖19(e)示出樹木模型的正視圖;圖19(f)示出樹木模型的側(cè)視圖;圖19(g)示出樹木 模型的俯視圖。建模系統(tǒng)得到的這些樹木模型在輸入圖片對應(yīng)方向上的投影都滿足輸入筆畫約 束,具有真實感。該建模系統(tǒng)運行效率高。用戶以交互方式勾畫主枝和樹冠輪廓后,二維骨架提取 和三維主枝構(gòu)建過程需要幾秒鐘;細枝的生長效率為大約10秒鐘生長2000個細枝。在一 個雙核2G處理器的計算機上,樹枝建模過程的運行時間通常小于一分鐘。建模過程一般不需要參數(shù)調(diào)節(jié),本發(fā)明說明書中示出的建模實例都使用了相同的參數(shù)。包括用戶勾畫草圖 的過程,應(yīng)用該建模系統(tǒng)創(chuàng)建一個樹木模型的時間一般不超過5分鐘。9. 2樹木建模對比實驗如圖20(a)至圖20(c)所示,本發(fā)明采用與Neubert方法相同的輸入圖片構(gòu)建樹 模型,與Neubert方法的建模結(jié)果相比,本發(fā)明的方法得到的三維樹枝模型的主枝結(jié)構(gòu)與 輸入圖片更吻合。圖20(a)示出輸入圖片;圖20(b)示出Neubert方法構(gòu)建的樹枝模型在 輸入圖片方向的視圖;圖20(c)示出本發(fā)明方法得到的樹枝模型在輸入圖片方向的視圖。與Tan方法相比較,本方法適用的樹木種類更廣泛。對于圖21(a)至圖21(c)所 示的建模實例,圖21 (a)示出輸入圖片;圖21(b)示出Tan方法構(gòu)建的樹枝模型在輸入圖 片方向的視圖;圖21(c)示出本發(fā)明方法得到的模型在輸入圖片方向的視圖。本發(fā)明的方 法需要用筆畫勾出更多主枝,但系統(tǒng)建模速度更快——樹枝建模過程需要大約40秒鐘,而 Tan方法中樹枝建模需要20分鐘(2. 4G CPU),并且本發(fā)明的方法可以保證三維模型與圖片 中人眼可以識別的、隱藏在葉子中的主枝形狀相吻合。9. 3本發(fā)明在復(fù)雜場景繪制中的應(yīng)用本發(fā)明得到的樹木模型可用于構(gòu)建虛擬樹林場景。選取上面得到的一些模型,可 構(gòu)建樹林。圖22(a)至圖21(b)示出由兩個不同的桃樹模型和一個蘋果樹模型構(gòu)成的虛擬 樹林場景。該樹林包含10X10棵樹木,分布于60米X60米區(qū)域內(nèi),其中圖22(a)為樹林 近景,圖22(b)為樹林遠景。本發(fā)明提出的樹木建模方法的特征在于利用兩幅具有主枝形狀和樹冠輪廓的草 圖快速構(gòu)建具有真實感的樹木模型。上述實驗結(jié)果和基于深度檢索的樹木建模方法,可以用于計算機圖形學(xué)各應(yīng)用領(lǐng) 域,具有操作簡單、建模速度快、模型逼真、應(yīng)用前景廣的特點。以上所述,僅為本發(fā)明中的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任 何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可理解想到的變換或替換,都應(yīng)涵蓋在 本發(fā)明的包含范圍之內(nèi),因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求書的保護范圍為準(zhǔn)。
權(quán)利要求
一種基于深度檢索的樹木建模方法,其特征在于,該樹木建模方法的步驟包括步驟1用戶在兩幅樹木圖片上用單像素畫筆或者畫刷手工勾畫出具有樹冠輪廓、具有不同的主枝筆畫的樹木草圖,將具有不同的主枝筆畫的兩幅草圖輸入到圖像處理設(shè)備;步驟2圖像處理設(shè)備對草圖中每個主枝筆畫像素的近鄰像素進行分析,從而提取二維骨架;步驟3對兩個二維骨架進行深度檢索,構(gòu)建三維主枝骨架,使該三維骨架在兩個輸入方向的平行投影滿足二維骨架約束;步驟4以構(gòu)建的三維主枝骨架為模版,在二維樹冠輪廓約束內(nèi),通過主枝的復(fù)制、平移、旋轉(zhuǎn)操作構(gòu)建第一級細枝骨架,然后以第一級細枝骨架為模版按相同方法構(gòu)建第二級細枝骨架,依此類推,得到指定級數(shù)的細枝骨架;步驟5根據(jù)對骨架切向量、法向量和副法向量的估算創(chuàng)建廣義圓柱,通過圓柱擬合得到樹枝的幾何模型;步驟6在樹枝幾何模型上添加葉子或水果完成整個樹木模型,每個葉子或水果由映射了一個四通道圖像紋理的四邊形來表示,將一個序列的葉子模型放置到細枝骨架點上,然后在葉子位置、葉子朝向以及葉與枝的距離參數(shù)中引入隨機因素。
2.按權(quán)利要求1所述的方法,其特征在于,所述樹木圖片是反映樹木側(cè)面形態(tài)的圖片。
3.按權(quán)利要求1所述的方法,其特征在于,針對單像素的筆畫采用局部分析和連接的 方法提取二維骨架。
4.按權(quán)利要求1所述的方法,其特征在于,針對具有半徑信息的畫刷筆畫通過筆畫像 素掃描、中心點判別、中心點簡化以及骨架點連接提取二維骨架。
5.按權(quán)利要求1所述的方法,其特征在于,所述二維骨架具有子家族特征、父家族特 征、最大擴展高度特征和父家族路徑特征。
6.按權(quán)利要求1所述的方法,其特征在于,所述深度檢索方法是通過特征匹配查找兩 個二維骨架的對應(yīng)枝,將每對對應(yīng)枝的一枝作為深度信息,將另一枝擴展到三維空間。
7.按權(quán)利要求6所述的方法,其特征在于,從兩個對應(yīng)枝構(gòu)建一個三維枝前,需要對兩 個對應(yīng)枝進行連通性判斷和枝的延長。
8.按權(quán)利要求6所述的方法,其特征在于,兩個對應(yīng)枝的每對對應(yīng)點具有相同的縱坐 標(biāo),從兩個對應(yīng)點構(gòu)建一個三維點的過程是取其中一個點的X軸、Y軸坐標(biāo)作為三維點的X 軸、Y軸坐標(biāo),取另一個點的X軸坐標(biāo)作為三維點的Z軸坐標(biāo)。
9 按權(quán)利要求1所述的方法,其特征在于,通過復(fù)制部分父枝并在一定的夾角約束范 圍內(nèi),將復(fù)制的部分父枝連接到父枝節(jié)點上得到相應(yīng)子枝。
全文摘要
本發(fā)明涉及一種基于深度檢索的樹木建模方法,該方法以手工勾畫的樹木主枝和樹冠輪廓作為輸入自動創(chuàng)建樹木模型,其主要步驟包括通過像素分析從勾畫的筆畫中提取二維骨架、通過深度檢索將兩個二維骨架直接轉(zhuǎn)化為三維主枝骨架、基于樹冠輪廓約束創(chuàng)建細枝和葉子。本發(fā)明算法簡單、建模效率高,能夠創(chuàng)建出在兩個方向符合輸入約束的具有真實感的樹木模型。其建模結(jié)果在計算機游戲、三維電影、網(wǎng)絡(luò)漫游、城市景觀設(shè)計等領(lǐng)域具有重要的應(yīng)用價值。
文檔編號G06T17/00GK101847267SQ20101018828
公開日2010年9月29日 申請日期2010年6月1日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者劉佳, 張曉鵬, 李紅軍, 董未名 申請人:中國科學(xué)院自動化研究所