史麗敏, 李玉紅, 張 麗
(沈陽化工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,遼寧沈陽110142)
自然景物的模擬繪制是計(jì)算機(jī)圖形學(xué)的一個(gè)重要研究領(lǐng)域.利用分形幾何學(xué)由計(jì)算機(jī)繪制自然景物,如植物、云彩等,效果逼真、形象.迭代函數(shù)系統(tǒng)(IFS)是分形幾何中模擬自然景物的重要方法和手段[1],其關(guān)鍵之處是構(gòu)造IFS碼.目前,大多獲取 IFS碼的方法基于拼貼理論[2-4],用原始圖形的有限個(gè)仿射變換子圖去拼貼,因此對(duì)拼貼精度的要求很高.本文通過建立計(jì)算機(jī)交互式獲取自然景物IFS碼的系統(tǒng)環(huán)境,討論獲取IFS碼的新方法.該方法克服了拼貼精度對(duì)圖像效果的影響,所生成的圖形更接近真實(shí)景物.
二維仿射變換包括對(duì)圖形作繞原點(diǎn)的旋轉(zhuǎn),比例放大以及平移等.
定義二維歐式空間中的仿射變換為ω:R2→R2,(X,Y)為二維空間中的一點(diǎn),其仿射變換映像為(X',Y'),寫成矩陣形式即為:
其中a,b,c,d,e,f 6個(gè)參數(shù)為實(shí)系數(shù),它們完全確定一個(gè)仿射變換.仿射變換的另一種表達(dá)形式為:
其中:r,q分別為x方向和y方向的壓縮比例因子;θ為x軸旋轉(zhuǎn)角度;φ為y軸旋轉(zhuǎn)角度;e為x方向平移量;f為y方向平移量.
另外,對(duì)于一個(gè)仿射變換,總可以找到一個(gè)非負(fù)的數(shù)s使Rn中任意的2個(gè)空間點(diǎn)z1,z2都滿足:
這里的非負(fù)數(shù)s稱為映射ω的Lipshitz常數(shù).s可看作映射ω的壓縮比,若s<1,則稱仿射變換ω為一壓縮映射.
圖1的分形樹是根據(jù)表1的IFS碼,運(yùn)用隨機(jī)迭代算法,在VC++6.0下繪制而成.其算法為:
step4:根據(jù)仿射變換ωk計(jì)算點(diǎn).
由以上迭代函數(shù)系統(tǒng)(IFS)對(duì)自然景物繪制算法的討論可以得出:使用幾個(gè)IFS碼就可以獲得復(fù)雜的自然景物,問題的關(guān)鍵在于找到植物合適的IFS碼.這里討論采用計(jì)算機(jī)交互式獲取自然景物IFS碼的方法.
圖1 分形樹Fig.1 Fractal tree
表1 分形樹的IFS碼Table 1 Fractal tree’s IFS
基于拼貼原理,把原始圖形分成若干部分,每一部分都是原圖不同仿射變換下的子圖,所有部分拼貼在一起,要求與原始圖形的輪廓盡量能夠重合[5].如圖2所示,把原始圖形分成4部分: ω1,ω2,ω3,ω4.在原始圖形上按照逆時(shí)針方向選取3個(gè)特征性點(diǎn)Z1(X1,Y1),Z2(X2,Y2),Z3(X3,Y3).在子圖上按相同的方向選取與原始圖形對(duì)應(yīng)的3個(gè)特征性點(diǎn)Z'1(X'1,Y'1),Z'2(X'2,Y'2),Z'3(X'3,Y'3).根據(jù)公式
解線性方程組,即可求出其仿射變換ω的6個(gè)系數(shù)a、b、c、d、e、f.同理,可求出其他3組仿射變換系數(shù),進(jìn)而求得仿射變換集{ω1,ω2,ω3,ω4}.
圖2 拼貼圖Fig.2 Collage graph
由于選取的對(duì)應(yīng)的3組特征點(diǎn)有一定的隨意性,每次選取的對(duì)應(yīng)位置點(diǎn)不一定是合適的.同時(shí),筆者認(rèn)為3點(diǎn)并不能反映圖形的全貌.解決的辦法是:通過計(jì)算機(jī)交互式系統(tǒng)環(huán)境,適當(dāng)?shù)卣叶鄠€(gè)點(diǎn),設(shè)為n個(gè),求解方程時(shí)只利用其中的3組點(diǎn)計(jì)算ωi(i=0,1,2,3),共有取法,可計(jì)算出個(gè)ωi(i=0,1,…),與其他ωj(j=0,1,…,j≠i)組合,分別得到不同但相似的景物,選取其中最好的1個(gè)結(jié)果.例如圖3中,在每一個(gè)子圖上選取4對(duì)點(diǎn),求解方程組時(shí)用其中任意3對(duì)點(diǎn),共有種取法,每種取法可計(jì)算出一個(gè)ωi,總計(jì)可計(jì)算出個(gè)ωi,與其他ωj(j=0,1,2,3)組合,即得到不同的結(jié)果.
圖3 拼貼圖的改進(jìn)Fig.3 Collage graph’s improvement
這樣,IFS碼全部求得.表2為根據(jù)改進(jìn)后的拼貼圖(圖3)和公式(4)、(5)求解的IFS碼.
表2 圖3的IFS碼Table 2 Codes of IFS in Fig.3
根據(jù)表2所得到的IFS碼,采用隨機(jī)迭代算法重構(gòu)分形圖形,在VC++6.0環(huán)境中編程得到圖4的結(jié)果.
圖4 重構(gòu)的分形圖形Fig.4 New fratal graphs
在拼貼定理的基礎(chǔ)上,提出交互式獲取IFS碼的方法,并在VC++6.0環(huán)境下實(shí)現(xiàn).實(shí)驗(yàn)結(jié)果表明:用此方法獲取IFS碼,操作簡(jiǎn)單,重構(gòu)圖形的準(zhǔn)確度較高.但此方法仍有不足,如對(duì)特征點(diǎn)的選擇,如何判定拾取的點(diǎn)更為精準(zhǔn),需要建立一個(gè)較為客觀的標(biāo)準(zhǔn),這將是一個(gè)具有廣泛前景的課題.
[1] 胡瑞安,胡紀(jì)陽,徐樹公.分形的計(jì)算機(jī)圖形及其應(yīng)用[M].北京:中國鐵道出版社,1995:145-155.
[2] 李富平,蔡秀云.迭代函數(shù)系統(tǒng)中IFS碼的變換及應(yīng)用[J].工程圖學(xué)學(xué)報(bào),1998(2):48-52.
[3] 周運(yùn)紅.自然景物建模及圖像壓縮分形反問題的研究[D].大連:大連理工大學(xué)工程圖學(xué)系,2000: 21-30.
[4] 何謹(jǐn),張國鋒,戴樹嶺.迭代函數(shù)系統(tǒng)IFS碼的獲取方法及實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2010,27(8):222-225.
[5] 魏小鵬,周運(yùn)紅,張建明.自然景物IFS建模技術(shù)研究[J].工程圖學(xué)學(xué)報(bào),2003(4):103-109.