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