劉玉耀,張?zhí)t,古麗米拉·克孜爾別克
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830052)
阿爾泰金蓮花[1]主要分布在中國(guó)新疆北部(塔城、阿爾泰等地),是新疆典型的藥用植物之一,具有清熱解毒、止血止咳、降血壓等功效,在醫(yī)學(xué)上有很高的藥用研究?jī)r(jià)值。在研究過(guò)程中,研究人員無(wú)法全程觀察阿爾泰金蓮花的生長(zhǎng)變化過(guò)程,通過(guò)計(jì)算機(jī)的可視化模擬可較為真實(shí)地模擬動(dòng)態(tài)生長(zhǎng)過(guò)程,為阿爾泰金蓮花的深入研究提供借鑒。虛擬植物[2]始于20世紀(jì)60年代,國(guó)內(nèi)外研究人員先后對(duì)虛擬植物展開研究,取得了一定的研究成果。澳大利亞研究機(jī)構(gòu)基于L系統(tǒng)研發(fā)了Virtual Plants軟件,可以用來(lái)模擬花生、小麥、玉米等農(nóng)作物的生長(zhǎng);法國(guó)農(nóng)業(yè)發(fā)展研究中心(CIRAD)利用自動(dòng)機(jī)模型以及植物學(xué)長(zhǎng)發(fā)育規(guī)律研制了AMAP模型[3],并成功模擬了多個(gè)種類植物;國(guó)紅等[4]利用Greenlab模型模擬了1、3和5年生油松幼樹形態(tài);王美麗[5]基于L系統(tǒng)實(shí)現(xiàn)了小麥根系在外界因素中的動(dòng)態(tài)生長(zhǎng)模擬;周娟等[6]將分析方法和數(shù)學(xué)模型相結(jié)合,構(gòu)建棉花形態(tài)模型,以反映棉花器官形態(tài)特征參數(shù)和影響因子之間的關(guān)系。然而從總體上來(lái)看,虛擬植物的研究主要集中在重要的經(jīng)濟(jì)作物(小麥、玉米、棉花等)和自然景觀設(shè)計(jì)上[7-8],涉及藥用植物方面的研究還比較薄弱。對(duì)此,文中通過(guò)實(shí)驗(yàn)觀測(cè)提取阿爾泰金蓮花各器官特征參數(shù),建立各器官幾何模型,并結(jié)合參數(shù)L系統(tǒng)方法,實(shí)現(xiàn)阿爾泰金蓮花三維可視化模擬。
該系統(tǒng)基于參數(shù)L系統(tǒng)[9-10]、植物生理生態(tài)學(xué)以及計(jì)算機(jī)圖形學(xué)來(lái)實(shí)現(xiàn)阿爾泰金蓮花三維可視化模擬。其中利用參數(shù)L系統(tǒng)表現(xiàn)植株的拓?fù)浣Y(jié)構(gòu),基于植物生理生態(tài)學(xué)將各器官組合成完整植株,最后通過(guò)計(jì)算機(jī)展示阿爾泰金蓮花靜態(tài)及動(dòng)態(tài)的三維形態(tài)。功能上可分為5大模塊:器官可視化模塊、單株可視化模塊、模型操作模塊、數(shù)據(jù)存儲(chǔ)模塊、用戶交互模塊。圖1為阿爾泰金蓮花可視化模擬系統(tǒng)功能結(jié)構(gòu)圖。
圖1 系統(tǒng)功能結(jié)構(gòu)
(1)器官可視化模塊:主要包括莖、葉片、花的可視化。系統(tǒng)根據(jù)各器官的形態(tài)特征進(jìn)行歸類,分別采用不同的建模方法對(duì)莖、葉片以及花朵進(jìn)行建模,并載入紋理貼圖使各器官模擬效果更加逼真。此外,阿爾泰金蓮花在不同生長(zhǎng)階段各器官的形態(tài)結(jié)構(gòu)會(huì)有所不同,因此系統(tǒng)引入了不同的生長(zhǎng)參數(shù)以控制各器官的形態(tài)變化。
(2)單株的可視化模塊:包括靜態(tài)可視化和動(dòng)態(tài)生長(zhǎng)可視化。靜態(tài)可視化,應(yīng)用大量的測(cè)定數(shù)據(jù)建立植物或器官的幾何模型,以靜態(tài)的方式展示阿爾泰金蓮花的形態(tài)模型;動(dòng)態(tài)生長(zhǎng)可視化,系統(tǒng)通過(guò)提取阿爾泰金蓮花生長(zhǎng)規(guī)則建立模型,能夠動(dòng)態(tài)描述阿爾泰金蓮花形態(tài)結(jié)構(gòu)的生長(zhǎng)規(guī)律。
(3)模型操作模塊:包括模型載入和模型導(dǎo)出。系統(tǒng)能夠載入當(dāng)前大部分模型文件格式,同時(shí)也可以導(dǎo)出當(dāng)前選定模型,導(dǎo)出后的模型能夠很好地兼容其他建模軟件。
(4)數(shù)據(jù)存儲(chǔ)模塊:使用數(shù)據(jù)庫(kù)存儲(chǔ)各種數(shù)據(jù),包括阿爾泰金蓮花各器官形態(tài)參數(shù),初始化參數(shù),文法規(guī)則等。還可以對(duì)各器官模型進(jìn)行存儲(chǔ),每個(gè)模型都由頂點(diǎn)、三角形索引、法向量、紋理坐標(biāo)等信息組成,將這些信息導(dǎo)出到文本文件,然后存儲(chǔ)到數(shù)據(jù)庫(kù)中。
(5)用戶交互模塊:系統(tǒng)通過(guò)鍵盤輸入修改各種參數(shù),如文法規(guī)則、葉片大小、旋轉(zhuǎn)角度、植株高度等實(shí)現(xiàn)與用戶交互,同時(shí)還可以通過(guò)鼠標(biāo)移動(dòng)視角,達(dá)到全方位觀測(cè)植物的結(jié)構(gòu)形態(tài)。
阿爾泰金蓮花器官的可視化模擬,主要針對(duì)葉片、花朵、莖的建模。在自然界中,阿爾泰金蓮花由于受到內(nèi)外因素的影響,不同植株之間同一類器官的形態(tài)結(jié)構(gòu)會(huì)有所不同。通過(guò)對(duì)不同生長(zhǎng)階段的阿爾泰金蓮花各器官的外觀形態(tài)進(jìn)行觀測(cè)、歸納分析之后,提取各器官特征參數(shù),采用不同的建模方法再結(jié)合植物生理生態(tài)學(xué)建立各器官的幾何模型。
阿爾泰金蓮花的莖高為26~70 cm,形態(tài)結(jié)構(gòu)比較簡(jiǎn)單,無(wú)分支。節(jié)間形狀類似于圓柱體,因此可以利用柱體來(lái)模擬莖的生長(zhǎng),同時(shí)設(shè)置長(zhǎng)度變量和粗度變量分別控制莖的長(zhǎng)度以及莖的粗度。莖在生長(zhǎng)過(guò)程中并不是筆直生長(zhǎng),如光照引起植物向入射方向產(chǎn)生的彎曲等,引入彎曲變量可以較好地模擬莖在自然生長(zhǎng)過(guò)程中產(chǎn)生的彎曲效果。最后,使用材質(zhì)、紋理貼圖、燈光等讓模擬效果更加逼真。
葉片建模的方法主要包括基于幾何特征的方法、基于圖像的造型[11]、基于自由曲線和曲面的方法[12-13]。經(jīng)過(guò)研究對(duì)比分析,對(duì)于幾何特征的方法,阿爾泰金蓮花形態(tài)結(jié)構(gòu)較為復(fù)雜,葉片幾何特征較難提??;對(duì)于自由曲線和曲面的方法,阿爾泰金蓮花葉片中央全裂片菱形,邊緣有鋸齒狀,而該方法適用于構(gòu)建比較光滑的曲面,對(duì)于一些有棱角或者邊緣比較尖銳的曲面效果就不太理想;對(duì)于基于圖形的造型,圖片數(shù)據(jù)來(lái)源比較容易,建模直接對(duì)圖片進(jìn)行分析和處理,從中提取植物的特征信息,從而使得模擬效果更加具有真實(shí)感。故對(duì)阿爾泰金蓮花葉片的幾何建模采用基于圖像造型的方法來(lái)實(shí)現(xiàn)。
其中,邊緣提取是基于圖像的造型重要技術(shù)之一。常見的邊緣算法有Canny、Sobel、Roberts、Prewitt等算子,分別使用這些算子提取阿爾泰金蓮花葉片邊緣信息,分析提取結(jié)果,可以看出Canny算子邊緣更清晰,效果更好。因此采用Canny算子并加入人為干預(yù),提取阿爾泰金蓮花葉片的輪廓信息,將提取后的葉片輪廓進(jìn)行三角化剖分,經(jīng)過(guò)這一系列操作,完成葉片建模。
圖2為阿爾泰金蓮花葉片幾何建模過(guò)程。
圖2 阿爾泰金蓮花葉片建模過(guò)程
2.3.1 花的形態(tài)結(jié)構(gòu)
阿爾泰金蓮花的花朵由花萼、花瓣、雄蕊和雌蕊組成,萼片橙色或黃色,10~15枚,倒卵形或?qū)挼孤研?,頂端圓形;花瓣比雄蕊稍短或等長(zhǎng),線形,頂端漸變狹;雄蕊長(zhǎng)7~13 mm,花絲長(zhǎng)6~10 mm,花藥長(zhǎng)3~4 mm,心皮約16,花柱紫色。
2.3.2 花的幾何建模
將花朵各器官分類后,分別采取不同的方法建立模型,具體方法如下所示:
對(duì)于單個(gè)萼片和花瓣的模擬,采用比較常用的雙三次張量積Bezier曲面來(lái)構(gòu)造。m×n次張量積Bezier曲面公式如下:
(1)
Bezier曲面矩陣表達(dá)式為:
p(u,v)=[B0,n(u),B1,n(u),…,Bm,m(u)]
(2)
當(dāng)m=n=3時(shí),為雙三次張量積Bezier曲面,創(chuàng)建一個(gè)雙三次Bezier曲面需要4×4控制點(diǎn)和兩個(gè)變量t、v。計(jì)算在分量v上沿4條平行曲線的點(diǎn),然后利用這4個(gè)點(diǎn)計(jì)算在分量t上的點(diǎn),計(jì)算出這些點(diǎn)之后使用三角帶連接它們,畫出貝塞爾曲面。
根據(jù)提取的阿爾泰金蓮花花朵的單個(gè)萼片和花瓣的特征參數(shù),分別建立16個(gè)控制點(diǎn)的幾何矩陣P1[4][4][3]、P2[4][4][3]進(jìn)行描述,萼片曲面如圖3(a),花瓣曲面如圖3(b)。
圖3 花朵部分貝塞爾曲面
其中控制點(diǎn)矩陣P1、P2為:
(3)
(4)
對(duì)雄蕊和雌蕊的模擬,觀察其外形結(jié)構(gòu),花絲和花柱類似,多為細(xì)長(zhǎng)圓柱結(jié)構(gòu),花藥和柱頭類似,多為橢球型結(jié)構(gòu)。因此對(duì)該部分幾何建??煞譃閮深悾阂活愂怯芍w變形之后的花絲和花柱幾何模型,另一類是由橢球體變形之后的花藥和柱頭幾何模型。
最后,根據(jù)阿爾泰金蓮花花朵的拓?fù)浣Y(jié)構(gòu),定義一個(gè)繪制函數(shù)實(shí)現(xiàn)阿爾泰金蓮花花朵的幾何模型。為了使模擬效果更加逼真,可以加入材質(zhì)、紋理貼圖、光照等。
阿爾泰金蓮花單株的可視化模擬就是定量化測(cè)定植株的拓?fù)浣Y(jié)構(gòu)、幾何特征等,通過(guò)數(shù)學(xué)統(tǒng)計(jì)、模式識(shí)別等方法提取各器官形態(tài)結(jié)構(gòu)特征以建立器官模型,然后基于植物生理生態(tài)學(xué)對(duì)各器官進(jìn)行組合,在計(jì)算機(jī)上再現(xiàn)植株的三維模型。
單株的可視化模擬又分為靜態(tài)可視化模擬和動(dòng)態(tài)生長(zhǎng)可視化模擬[14-15]。
靜態(tài)可視化模擬主要側(cè)重于植物形態(tài)結(jié)構(gòu)的仿真,根據(jù)測(cè)定的植物的形態(tài)結(jié)構(gòu)特征數(shù)據(jù),建立植物或器官模型,再結(jié)合計(jì)算圖形學(xué)以靜態(tài)方式實(shí)現(xiàn)植物的三維可視化模擬。該類模型能夠精確地再現(xiàn)阿爾泰金蓮花各器官的形態(tài)結(jié)構(gòu),可用來(lái)分析與其結(jié)構(gòu)有關(guān)的生理生態(tài)、生物物理過(guò)程,如冠層光分布的分析、形態(tài)結(jié)構(gòu)對(duì)遙感檢測(cè)精度的影響等。
靜態(tài)可視化模擬的關(guān)鍵是可視化模擬效果的逼真性,因此在模型中加入顏色、光照、紋理映射、渲染等技術(shù)。雖然靜態(tài)可視化模擬在外部形態(tài)的逼真性上具有很大的優(yōu)勢(shì),但不適合反映阿爾泰金蓮花形態(tài)結(jié)構(gòu)的動(dòng)態(tài)規(guī)律。
動(dòng)態(tài)生長(zhǎng)可視化模擬主要側(cè)重于植物生長(zhǎng)發(fā)育的模擬,對(duì)植物生長(zhǎng)過(guò)程中拓?fù)浣Y(jié)構(gòu)演變以及幾何形態(tài)變化規(guī)律的研究,提取生長(zhǎng)規(guī)則建立相應(yīng)模型。因此文中采用比較著名的植物模型L系統(tǒng)以可視化的方式表現(xiàn)阿爾泰金蓮花拓?fù)浣Y(jié)構(gòu)。阿爾泰金蓮花屬于多年生草本植物,地上部分由莖、葉、花等器官組成,莖高70 cm,基生葉,花單獨(dú)頂生。在阿爾泰金蓮花生理發(fā)育階段,分別建立相應(yīng)文法規(guī)則,實(shí)現(xiàn)動(dòng)態(tài)生長(zhǎng)可視化模擬。其中,生理發(fā)育階段可分為種子萌發(fā)、營(yíng)養(yǎng)生長(zhǎng)、生殖生長(zhǎng)三個(gè)階段。
記種子萌發(fā)為t1,營(yíng)養(yǎng)生長(zhǎng)為t2,生殖生長(zhǎng)為t3,則參數(shù)L系統(tǒng)的文法規(guī)則如下所示:
ω:A(0)
P1:A(t):t<=t1→~(8)!(0.95)F(t*0.12)/(137.5)[&(30)J(t*1.05)]A(t+1)
P2:A(t):t<=t2→~(8)!(0.95)F(t*2.4)/(137.5)[&(60)J(t*1.5)]A(t+1)
P3:A(t):t=t3→~(8)!(0.95)F(t*0.005)[&(80)M]A(t+1)
公理中A(0)表示植株的生長(zhǎng)時(shí)間為0;產(chǎn)生式P1表示植株處于種子萌發(fā)階段,此時(shí)植株生長(zhǎng)出莖、葉形成幼芽;產(chǎn)生式P2表示植株處于營(yíng)養(yǎng)生長(zhǎng)階段,此時(shí)植株快速生長(zhǎng),莖逐漸增高、增粗,葉片也不斷伸長(zhǎng),增大,式中J表示葉片模型,通過(guò)改變括號(hào)內(nèi)的參數(shù)實(shí)現(xiàn)葉片逐漸生長(zhǎng)過(guò)程;產(chǎn)生式P3表示植株處于生殖生長(zhǎng)階段,此時(shí)植株開始分化形成花芽,花芽逐漸生長(zhǎng)形成花朵,式中M表示花朵模型。其中,~()表示隨機(jī)旋轉(zhuǎn)角度;!()表示莖粗度的縮放比例;/()表示莖和器官之間的夾角。
對(duì)于葉片和花朵的器官模型,采用前文介紹的方法進(jìn)行構(gòu)建,然后根據(jù)文法規(guī)則載入系統(tǒng),最終實(shí)現(xiàn)阿爾泰金蓮花的動(dòng)態(tài)可視化模擬。
系統(tǒng)以Qt4.8為平臺(tái),結(jié)合OpenGL[16],使用MYSQL為數(shù)據(jù)庫(kù)實(shí)現(xiàn)可交互式的阿爾泰金蓮花三維可視化模擬。系統(tǒng)主界面分為左右兩部分,左半側(cè)為三維展示區(qū)域,在該區(qū)域內(nèi)用戶可以通過(guò)鼠標(biāo)事件來(lái)任意操作視角,鼠標(biāo)左鍵移動(dòng)視角,中鍵和右鍵縮放視角,達(dá)到對(duì)阿爾泰金蓮花各器官的全方位觀測(cè);右半側(cè)為參數(shù)控制區(qū)域,在該區(qū)域內(nèi)用戶根據(jù)需求,調(diào)整控制參數(shù)值,改變阿爾泰金蓮花外部形態(tài)結(jié)構(gòu)。系統(tǒng)還使用第三方模型加載庫(kù)Assimp,實(shí)現(xiàn)了對(duì)植物各器官模型的導(dǎo)入導(dǎo)出功能。Assimp可以導(dǎo)入十幾種目前比較主流的模型格式文件,如FBX、OBJ、3ds等,同時(shí)還可以導(dǎo)出部分模型格式。該功能主要針對(duì)結(jié)構(gòu)比較精細(xì)復(fù)雜的模型,這些模型需要經(jīng)過(guò)3D建模工具的特殊處理,然后導(dǎo)入到系統(tǒng)中進(jìn)行使用。
使用該系統(tǒng)分別模擬阿爾泰金蓮花動(dòng)態(tài)生長(zhǎng)過(guò)程(見圖4)。其中花開過(guò)程主要是通過(guò)改變貝塞爾曲面的控制點(diǎn)、曲面旋轉(zhuǎn)角度、初始坐標(biāo)等實(shí)現(xiàn)。
圖4 阿爾泰金蓮花動(dòng)態(tài)生長(zhǎng)效果
通過(guò)對(duì)阿爾泰金蓮花各器官進(jìn)行分類,提取特征參數(shù)分別建立莖、葉片、花朵幾何模型,通過(guò)調(diào)整控制參數(shù)能夠較好地描述阿爾泰金蓮花各器官的形態(tài)建成過(guò)程。利用參數(shù)L系統(tǒng),再結(jié)合各器官幾何形態(tài)結(jié)構(gòu)模型,實(shí)現(xiàn)阿爾泰金蓮花動(dòng)態(tài)生長(zhǎng)可視化模擬,能夠較為真實(shí)地反映整個(gè)植物的生長(zhǎng)過(guò)程。目前,該研究尚有不足,阿爾泰金蓮花主要入藥部位是花朵,但系統(tǒng)只針對(duì)植株地上部分進(jìn)行了可視化模擬。眾所周知,根系在植物的整個(gè)生命周期中起著至關(guān)重要的作用,故在今后的研究中將加入地下部分的可視化模擬,以建立完整的植株模型,從而更加真實(shí)地模擬植物的動(dòng)態(tài)生長(zhǎng)過(guò)程。