胡杰 劉娟 鄧林強(qiáng) 李富忠
摘要:基于樹木實(shí)測(cè)數(shù)據(jù),轉(zhuǎn)化為迭代函數(shù)系統(tǒng)的IFS碼,用Matlab軟件分別實(shí)現(xiàn)合軸分枝樹木和單軸分枝樹木三維靜動(dòng)態(tài)可視化模擬系統(tǒng),用于城市和園林等的規(guī)劃與設(shè)計(jì)。以槐樹和松樹分別作為合軸分枝樹木和單軸分枝樹木的代表,提取樹高、分枝數(shù)、分枝仰角、方位角、枝長等重要信息進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析;將父枝(一級(jí)枝)和子枝(二級(jí)枝)的枝長粗細(xì)比、方位角、仰角等參數(shù)進(jìn)行分析推導(dǎo),得到迭代函數(shù)系統(tǒng)的IFS碼,并計(jì)算出每個(gè)仿射變換相應(yīng)的概率;最后再用Matlab軟件進(jìn)行編程,對(duì)其形態(tài)進(jìn)行三維可視化靜動(dòng)態(tài)模擬。試驗(yàn)過程中,通過調(diào)整并改變樹木的IFS碼及相應(yīng)的概率,可以對(duì)樹木進(jìn)行旋轉(zhuǎn)、平移和縮放變換,并且呈現(xiàn)樹木的多種形態(tài)(枯萎、修剪等)。研究的函數(shù)迭代系統(tǒng)方法在虛擬自然景觀(山川、植物、云等)方面具有很廣的應(yīng)用,并且程序簡(jiǎn)單,僅通過對(duì)應(yīng)的IFS碼和對(duì)應(yīng)的概率,即可在三維空間中再現(xiàn)不同自然景觀的靜動(dòng)態(tài)。
關(guān)鍵詞:靜動(dòng)態(tài)可視化;迭代函數(shù)系統(tǒng);三維樹木;IFS碼;合軸分枝樹木;單軸分枝樹木
中圖分類號(hào):S126 文獻(xiàn)標(biāo)志碼: A文章編號(hào):1002-1302(2021)19-0205-04
樹木形態(tài)各異,種類繁多。按照分枝模式分為如下兩大類:(1)單軸分枝樹木,有明顯粗壯而直立的主干,頂芽一直向上生長,樹形挺拔,形態(tài)簡(jiǎn)單,如楊樹、松樹、銀杏等[1-2]。(2)合軸分枝樹木,無明顯主干,樹冠呈開展?fàn)?,頂芽發(fā)育一段時(shí)間后停滯或死亡,被下面的側(cè)芽取代,有多個(gè)彎曲的主軸,形態(tài)相對(duì)復(fù)雜,如楓樹、桃樹、柳樹、槐樹等[3-8]。
綜上,樹木的形態(tài)結(jié)構(gòu)很難用傳統(tǒng)的幾何法來模擬。但是考慮到樹木整體和局部的自相似性,故引入分形幾何學(xué)[9]。常見的分形方法有L系統(tǒng)法、粒子系統(tǒng)法、迭代系統(tǒng)法[1-13]。L系統(tǒng)法的生成規(guī)則是由字符串體現(xiàn)的,對(duì)于復(fù)雜的樹木形態(tài),字符串難以獲得和使用;粒子系統(tǒng)法缺乏真實(shí)感,有明顯的人工痕跡,無法細(xì)致地刻畫光照和樹木紋理;迭代函數(shù)系統(tǒng)法克服了上述2種方法的缺陷,程序簡(jiǎn)單,僅需幾組仿射變換的系數(shù)(IFS碼)和相應(yīng)的概率,便可細(xì)致刻畫樹木的紋理結(jié)構(gòu),描繪出形態(tài)逼真的不同樹木。
近年來,樹木可視化研究的課題引起了大量學(xué)者的關(guān)注。 Sievanen等利用Matlab軟件,基于分形L系統(tǒng),對(duì)白楊樹進(jìn)行二維可視化研究[1]。吳欠等利用C語言,基于迭代函數(shù)系統(tǒng)實(shí)現(xiàn)了杉木三維靜態(tài)可視化研究[2]。趙慶丹等利用C語言,基于迭代函數(shù)系統(tǒng)實(shí)現(xiàn)了紅松三維靜態(tài)可視化研究[8]。但是上述文獻(xiàn)都沒有引入隨機(jī)因子,描述出的樹木形態(tài)比較呆板,不自然。Prusinkiewicz引入隨機(jī)因子,利用Matlab軟件,分別基于L系統(tǒng)和迭代系統(tǒng),形象地模擬不同樹木的形態(tài)[6]。朱華等基于迭代函數(shù)系統(tǒng),利用C語言模擬動(dòng)態(tài)樹木[10]。相關(guān)研究均為二維圖形,只是從某一側(cè)面反映樹木的平面圖形,無法真實(shí)地刻畫樹木的整個(gè)圖形,故亟需將樹木的二維圖形推廣為三維圖形[1,6,10]。
Matlab軟件程序簡(jiǎn)明,語言簡(jiǎn)單,在處理圖形圖像方面很有優(yōu)勢(shì)。但是對(duì)于樹木可視化研究而言,用Matlab編程的比較少。在此基礎(chǔ)上,本研究將利用Matlab軟件,基于迭代函數(shù)系統(tǒng),分別以槐樹、松樹作為合軸分枝樹木、單軸分枝樹木的代表,通過對(duì)樹木數(shù)據(jù)進(jìn)行分析統(tǒng)計(jì),得到IFS碼和相應(yīng)的概率,分別實(shí)現(xiàn)合軸和單軸分枝樹木的三維靜動(dòng)態(tài)可視化研究。
1合軸分枝樹木數(shù)學(xué)建模
1.1數(shù)據(jù)統(tǒng)計(jì)分析
合軸分枝樹木形態(tài)相對(duì)復(fù)雜,故先對(duì)其進(jìn)行研究,以槐樹為例?;睒錇槲覈爬系臉浞N,分布廣泛,有著悠久的歷史,受人們喜愛和崇拜;尤其是山西洪洞大槐樹,已經(jīng)成為著名的旅游景點(diǎn)。
本研究選取3株冠形比較好的槐樹樣木進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,分別提取樹高、分枝數(shù)、父枝(一級(jí)枝)和子枝(二級(jí)枝)的仰角、主干長、胸徑、冠幅等重要信息(表1)。
統(tǒng)計(jì)選定的槐樹的一級(jí)枝和二級(jí)枝的方位角、仰角、枝長和枝徑的分布范圍,并求其平均值、標(biāo)準(zhǔn)差、最大值、最小值。如表2所示,一級(jí)枝(父枝)枝徑的平均值大于二級(jí)枝(子枝)枝徑,一級(jí)枝枝長和仰角的平均值小于二級(jí)枝枝長和仰角。
1.2提取槐樹的IFS碼
基于迭代函數(shù)系統(tǒng)模擬槐樹三維圖形,借助Matlab編程,程序簡(jiǎn)單,僅需確定仿射變換的系數(shù)(IFS碼)。仿射變換種類很多,為了確保樹木圖形不失真必須為壓縮變換。描繪三維樹木圖形一般需要12個(gè)系數(shù),可以通過3個(gè)方程組求解得到。具體方法如下:在原圖中找4個(gè)點(diǎn)A(x1,y1,z1)、B(x2,y2,z2)、C(x3,y3,z3)、D(x4,y4,z4),在仿射變換后的子圖中找到對(duì)應(yīng)的4個(gè)點(diǎn)A′(x1′,y1′,z1′)、B′(x2′,y2′,z2′)、C′(x3′,y3′,z3′)、D′(x4′,y4′,z4′)即可建立下列3個(gè)方程組:
ax1+by1+cz1+u=x1′
ax2+by2+cz2+u=x2′
ax3+by3+cz3+u=x3′
ax4+by4+cz4+u=x4′;(1)
dx1+ey1+fz1+v=y1′
dx2+ey2+fz2+v=y2′
dx3+ey3+fz3+v=y3′
dx4+ey4+fz4+v=y4′;(2)
gx1+hy1+kz1+r=z1′
gx2+hy2+kz2+r=z2′
gx3+hy3+kz3+r=z3′
gx4+hy4+kz4+r=z4′。(3)
但是這樣得到的IFS碼不準(zhǔn)確,所繪圖形比較失真,并且在三維中點(diǎn)的尋找比較困難。故三維中描繪圖形一般不采用上述方法。仔細(xì)分析上述3個(gè)方程進(jìn)行對(duì)應(yīng)的仿射變換,可以將其進(jìn)行簡(jiǎn)化:
式中,矩陣C為枝長比,即一級(jí)枝與二級(jí)枝的長度粗細(xì)比例;α為二級(jí)枝的方位角,即繞y軸旋轉(zhuǎn)α角;β為二級(jí)枝的仰角,即繞z軸旋轉(zhuǎn)β角;B矩陣為平移變換,代表枝長。
根據(jù)調(diào)查統(tǒng)計(jì)的槐樹基本數(shù)據(jù)(表1、表2),找到相應(yīng)的參數(shù),帶入公式(6)中,得到迭代函數(shù)系統(tǒng)中槐樹的IFS碼(表3),即參數(shù)a、b、c、d、e、f、g、h、k、u、v、r。當(dāng)i=1,2時(shí),對(duì)應(yīng)的仿射變換描繪的就是槐樹的主干,當(dāng)i=3,4,5時(shí),仿射變換描繪的是槐樹的枝干;槐樹分枝的個(gè)數(shù)用迭代次數(shù)來確定,槐樹分枝的位置和大小分別用父枝和子枝各自的仰角、方位角和枝長比來確定。
然后計(jì)算每個(gè)仿射變換對(duì)應(yīng)的概率(Pi)。概率表示的是子圖的體積或面積在原圖中所占的比例,利用向量的混合積可以表示體積,轉(zhuǎn)化為矩陣[6],所有的概率之和必須為1:
式中:N表示描述圖形所需的IFS碼的組數(shù);ai,bi,…,ki表示第i組IFS碼。
把表3中每組參數(shù)依次分別帶入式(7)中,經(jīng)過簡(jiǎn)單的計(jì)算,得到仿射變換的概率依次為0.25、0.15、 0.13、0.12、0.35。利用Matlab軟件編程,得到槐樹的圖形,如圖1所示。
1.3呈現(xiàn)槐樹的不同狀態(tài)
通過以下2種方式可呈現(xiàn)槐樹的不同狀態(tài):(1)改變槐樹仿射變換的概率,調(diào)節(jié)各仿射變換的強(qiáng)弱,如將對(duì)應(yīng)的概率依次改為0.36、0.34、0.09、011、0.10,此時(shí)描繪的是冬天無葉枯萎的槐樹(圖2);同理將概率依次改為0.06、0.14、0.37、0、043,即去掉i=4時(shí)的仿射變換,此時(shí)描繪的是樹枝被截?cái)嗟幕睒洌▓D3)。還可以通過提高相應(yīng)的概率使樹木枝葉向陽的地方變得更加稠密,調(diào)整相應(yīng)的概率改變主枝干的粗細(xì)等。(2)通過將系數(shù)矩陣A乘以特殊矩陣,改變槐樹的IFS碼。如乘以縮放矩陣
2單軸分枝樹木數(shù)學(xué)建模單軸分枝樹木形態(tài)相對(duì)簡(jiǎn)單,以松樹為例。松樹在我國北方隨處可見,樹型特別筆直,四季常青。筆者用同樣的方法,選取3株冠形比較好的松樹樣木進(jìn)行數(shù)據(jù)統(tǒng)計(jì),提取樹高、分枝數(shù)、分枝仰角、方位角、枝長等重要信息以及相應(yīng)的范圍,得到一級(jí)枝枝徑和仰角的平均值大于二級(jí)枝枝徑和仰角,一級(jí)枝枝長的平均值小于二級(jí)枝枝長。用同樣的方法得到迭代函數(shù)系統(tǒng)中松樹的IFS碼(表4)并計(jì)算
出相對(duì)應(yīng)的概率,依次為0.01、 0.70、0.09、0.04、006、0.03、0.07。利用Matlab軟件編程,得到松樹的圖形(圖6)。同樣地,可以通過調(diào)整松樹仿射變換對(duì)應(yīng)的概率和對(duì)仿射變換的系數(shù)A乘以一些特殊矩陣改變相應(yīng)的IFS碼,從而呈現(xiàn)松樹的不同靜動(dòng)態(tài)。
本研究分別以槐樹、松樹作為合軸分枝樹木、單軸分枝樹木的代表,提取樹高、分枝數(shù)、分枝仰角、方位角、枝長等重要信息,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析。將一級(jí)枝和二級(jí)枝的枝長粗細(xì)比sx、 sy、 sz,方位角α和仰角β參數(shù),代入公式(6)中,得到迭代函數(shù)系統(tǒng)的IFS碼,用Matlab軟件進(jìn)行編程。通過調(diào)整仿射變換對(duì)應(yīng)的概率和對(duì)仿射變換的系數(shù)A乘以一些特殊矩陣改變相應(yīng)的IFS碼,呈現(xiàn)樹木的不同狀態(tài)效果,從而實(shí)現(xiàn)三維樹木的靜動(dòng)態(tài)可視化研究。
此方法通過具體的例子給出如何通過樹木的實(shí)測(cè)數(shù)據(jù)得到相應(yīng)的IFS碼,有著廣泛的應(yīng)用前景。實(shí)際操作中只需要調(diào)整Matlab程序中IFS碼就可以模擬不同樹木、植物、山川、云等自然景觀的靜動(dòng)態(tài),程序簡(jiǎn)單,易于操作。此虛擬樹木技術(shù)可以應(yīng)用于很多地方,其中包括數(shù)字電影、動(dòng)畫、城市和園林等的規(guī)劃和設(shè)計(jì)以及具有場(chǎng)景模擬的類似領(lǐng)域。
參考文獻(xiàn):
[1]Sievanen R,Nikinmaa E,Nygren P,et al. Components of functional structural tree models[J]. Annals of Forest Science,2000,57(5/6):399-412.
[2]吳欠,張懷清,陳永富,等. 杉木形態(tài)三維可視化模擬技術(shù)研究[J]. 林業(yè)科學(xué),2010,23(1):59-64.
[3]劉娟,胡杰,張權(quán)義,等. 基于隨機(jī)分形的樹木(楓樹)可視化研究[J]. 山東農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,51(3):495-499.
[4]胡秀珍,張建,李淼,等. 基于參數(shù)L系統(tǒng)的梨樹枝干模型三維可視化[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(8):86-90.
[5]Allen M T,Prusinkiewicz P,Dejong T M. Using L-systems for modeling source-sink interactions,architecture and physiology of growing trees:the L-PEACH model[J]. New Phytologist,2005,166(3):869-880.
[6]Prusinkiewicz P. Modeling plant growth and development[J]. Current Opinion in Plant Biology,2004,7(1):79-83.
[7]吳翔,高曉陽,邵世祿,等. 基于參數(shù)L系統(tǒng)的葡萄果枝生長可視化研究[J]. 中國農(nóng)機(jī)化學(xué)報(bào),2017,38(5):63-68.
[8]趙慶丹,羅傳文,孫海洪,等. 基于OpenGL和VC的樹木三維可視化模擬實(shí)現(xiàn)[J]. 東北林業(yè)大學(xué)學(xué)報(bào),2010,38(11):54-57.
[9]高揚(yáng),黎展榮,魏為,等. 基于參數(shù)L系統(tǒng)的小葉榕樹建模方法研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(7):156-159.
[10]朱華,姬翠翠. 分形理論及其應(yīng)用[M]. 北京:科學(xué)出版社,2011:54-79.
[11]鄒運(yùn)蘭,楊志紅,王仁芳. 基于迭代函數(shù)系統(tǒng)IFS的動(dòng)態(tài)樹木模擬[J]. 計(jì)算機(jī)應(yīng)用與軟件,2012,29(3):118-121.
[12]李佳祺. 基于中性景觀模型的虛擬森林場(chǎng)景的構(gòu)建方法研究[D]. 南京:南京大學(xué),2018:11-20.
[13]Pradal C,Boudon F,Nouguier C,et al. PlantGL:a Python-based geometric library for 3D plant modelling at different scales[J]. Graphical Models,2009,71:1-21.
基金項(xiàng)目:山西農(nóng)業(yè)大學(xué)科技創(chuàng)新基金 (編號(hào):2017005、2017019)。
作者簡(jiǎn)介:胡杰(1986—),男,山西呂梁人,碩士,講師,主要從事圖像處理和大數(shù)據(jù)相關(guān)研究。 E-mail:17835425155@163.com。
通信作者:劉娟,碩士,講師,主要從事應(yīng)用數(shù)學(xué)和生物數(shù)學(xué)研究。 E-mail:liujuannk@163.com。