王蘭花楊紅云何火嬌趙應(yīng)丁李新煥
(1江西農(nóng)業(yè)大學(xué)江西省高等學(xué)校農(nóng)業(yè)信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,南昌330045;2江西農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院,南昌330045;3江西農(nóng)業(yè)大學(xué)軟件學(xué)院,南昌330045;*通訊作者:nc_yhy@163.com)
隨著時(shí)代的發(fā)展,計(jì)算機(jī)技術(shù)和計(jì)算機(jī)圖形學(xué)技術(shù)漸漸走入了大家的視線,計(jì)算機(jī)圖形學(xué)技術(shù)和農(nóng)業(yè)知識(shí)結(jié)合的研究也應(yīng)運(yùn)而生,其主要研究內(nèi)容是對虛擬植株的可視化研究。在計(jì)算機(jī)上,將收集的數(shù)據(jù)通過可視化的技術(shù)轉(zhuǎn)化成圖形信息,幫助研究人員更有效地觀察與分析植物的生長規(guī)律,挖掘出隱藏在數(shù)據(jù)中的科學(xué)規(guī)律[1]。虛擬植株的研究是目前作物模擬研究的前沿,具有廣泛的應(yīng)用前景,并且在農(nóng)業(yè)科學(xué)、生態(tài)學(xué)、數(shù)字和計(jì)算機(jī)圖形學(xué)等中交叉運(yùn)用實(shí)現(xiàn)[2-4]。水稻作為我國最重要的糧食作物之一,其產(chǎn)量的提高對我國糧食安全具有重要意義。虛擬水稻是虛擬植株研究的一個(gè)方向,主要研究內(nèi)容是結(jié)合農(nóng)業(yè)科學(xué)和計(jì)算機(jī)圖形學(xué)對水稻外在的生理形狀進(jìn)行一種可視化[5]。在水稻可視化建模上前人已做過許多研究,如楊紅云等[5]應(yīng)用Bezier曲線描述了水稻葉片的邊緣信息,并用一元二次曲線方程描述了葉脈曲線;石春林等[6]對水稻形態(tài)建成模型及其虛擬生長進(jìn)行了研究;劉宏偉等[1]借助拋物線方程模擬了水稻葉曲線的動(dòng)態(tài)變化過程;常麗英等[7]對水稻葉傾角的動(dòng)態(tài)變化過程進(jìn)行了模擬;張永會(huì)等[8]對不同品種和氮素條件下的水稻莖鞘夾角進(jìn)行動(dòng)態(tài)模擬;劉曉東等[9]基于NURBS曲面的水稻葉形態(tài)建模等?,F(xiàn)有的研究關(guān)于水稻葉片可視化建模的方法有很多種,使用Bezier曲線的方法建模的研究少有報(bào)道。在前人研究的基礎(chǔ)上,本研究對水稻葉片可視化建模的研究方法加以創(chuàng)新,運(yùn)用Bezier曲線描述水稻葉片邊緣信息和葉脈曲線,同時(shí),結(jié)合運(yùn)用簡單的數(shù)學(xué)方法建立一種符合水稻自然生長的可視化三維形態(tài)模型。
貝塞爾曲線(Bezier curve),又稱貝茲曲線或貝濟(jì)埃曲線,是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線。Bezier曲線[10-12]可以用簡單的數(shù)學(xué)公式來表達(dá),它的次數(shù)與該段曲線的控制點(diǎn)有著直接的關(guān)系,一般Bezier曲線的次數(shù)(n)為控制點(diǎn)數(shù)量(m)減1,即:n=m-1。曲線上各個(gè)點(diǎn)的參數(shù)方程式為:
Pk構(gòu)成該曲線的特征多邊形,Bk,n(u)是Bernstein基函數(shù),也是曲線上各點(diǎn)位置矢量的調(diào)和函數(shù)。其中,Pk為Bezier曲線上第k個(gè)點(diǎn)的坐標(biāo)值(xk,yk,zk),而Bk,n(u)的值則為:
Bk,n(u)中參數(shù)意義分別為:n為多項(xiàng)式的次數(shù);k為曲線上的第K個(gè)點(diǎn);u的取值范圍為:0≤u≤1。
以3個(gè)控制點(diǎn)P0、P1、P2為例,3個(gè)控制點(diǎn)的Bezier曲線方程為一個(gè)二次方公式:
從式(1)(2)(3)可知,計(jì)算Bezier曲線上的點(diǎn),可用Bezier曲線方程。已知控制點(diǎn)的坐標(biāo),只要t取[0,1]之間不同的值,就可以求出Bezier曲線上的很多點(diǎn),然后將這些點(diǎn)用小直線段、折線相連,Bezier曲線也就繪制出來了[13-14]。為了得到好的顯示效果,要把間距控制在視覺能接受的范圍內(nèi)。在visual studio 2010中運(yùn)行結(jié)果如圖1所示。
圖1 3個(gè)控制點(diǎn)的Bezier曲線
圖2 繪制的Bezier曲線上的點(diǎn)及其三角網(wǎng)格化
Bezier曲線具有易控性,改變1個(gè)控制點(diǎn)就改變了這條Bezier曲線;不同控制點(diǎn)得到各種不同規(guī)則的曲線及其方程,適合描述水稻葉片一側(cè)的邊緣。由于可控性的需求,在繪制水稻葉片邊緣曲線時(shí)選擇用2條2次Bezier曲線,分別用2個(gè)控制點(diǎn)對該Bezier曲線進(jìn)行插值,以此來對水稻葉片進(jìn)行邊緣曲線的模擬。
在繪制Bezier曲線時(shí),兩條Bezier曲線上點(diǎn)的個(gè)數(shù)相同,即:函數(shù)Bezier中的precision取值相同,取相同t值,將得到的Bezier曲線上葉片邊緣的坐標(biāo)信息分為左右兩個(gè)部分。左側(cè)葉片坐標(biāo)信息存為(LXi,LYi)數(shù)組,右側(cè)葉片坐標(biāo)信息存為(RXi,RYi)數(shù)組。在二維平面xoy上,葉片的中間葉脈坐標(biāo)(MXi,MYi)信息可以近似看成對應(yīng)左右葉片坐標(biāo)的中點(diǎn),葉片的左右兩邊是關(guān)于中間葉脈對稱的,所以葉片對應(yīng)點(diǎn)的寬度值記入WMi數(shù)組。根據(jù)上述所說,可以得到如下關(guān)系:
其中,i的取值范圍為(0,precision),precision為繪制Bezier曲線時(shí)的精確度,也是這條Bezier曲線上點(diǎn)的個(gè)數(shù),即葉片邊緣上的點(diǎn)的個(gè)數(shù)。
當(dāng)葉片葉脈曲線在Y軸上時(shí),在二維平面xoy上,水稻葉片關(guān)于y軸對稱,假設(shè)水稻葉片的葉長為LL,最大葉寬為LW,則關(guān)于水稻左葉邊緣的Bezier曲線的3個(gè)控制點(diǎn)的坐標(biāo)分別為(0,0)、(-LW,LL/2)、(0,LL);關(guān)于水稻對應(yīng)的右葉邊緣的Bezier曲線的3個(gè)控制點(diǎn)的坐標(biāo)分別為(0,0)、(LW,LL/2)、(0,LL)。
在visual studio 2010環(huán)境下,根據(jù)上述條件,取lw=1 cm,ll=16 cm;編寫程序運(yùn)行結(jié)果如圖2所示。
相較于上述所說的二維水稻葉片模型,三維模型是以二維空間為基礎(chǔ);由于在自然環(huán)境下的水稻葉片基本上都是三維立體的,所以三維模型能夠較真實(shí)的還原出現(xiàn)實(shí)中水稻葉片的狀態(tài)。將葉片的葉中脈曲線旋轉(zhuǎn)至(yoz)平面上,在葉片不發(fā)生折斷和扭曲的情況下,實(shí)現(xiàn)葉片的彎曲模型;將葉脈曲線也看成是一條Bezier曲線,且葉片的左右邊緣Bezier曲線關(guān)于葉脈曲線對稱,葉脈Bezier曲線的精確度precision值與葉片邊緣Bezier曲線的precision值相同。葉脈曲線的起始控制點(diǎn)和終止控制點(diǎn)與葉片左右邊緣曲線的起始控制點(diǎn)和終止控制點(diǎn)坐標(biāo)信息一致。
水稻葉片的三維模型從簡單的來說,三維空間中,水稻葉片在不發(fā)生彎曲、扭曲和折斷的情況下,我們可以認(rèn)為葉片的葉脈曲線在空間中是一條直線,水稻葉片的最大葉寬設(shè)為lw,葉片的最大葉長為葉脈曲線的長度設(shè)為ll,葉片起始點(diǎn)和終止點(diǎn)兩端在Z軸方向上的差設(shè)為w。當(dāng)Bezier曲線的中間控制點(diǎn)的Z軸坐標(biāo)W的值的范圍為[0,w/2)時(shí),葉片將向Y軸靠近,向下彎曲,值越小,彎曲的程度越大;當(dāng)W的值為w/2時(shí),葉脈曲線為一條直線,水稻葉片將不發(fā)生彎曲;當(dāng)W的取值范圍為(w/2,w]時(shí),葉片將向Z軸靠近,向上彎曲,值越大,彎曲程度越大。當(dāng)控制點(diǎn)W=w/2時(shí),其水稻葉片的三維空間示意圖如圖3所示。
其中,繪制Bezier曲線的函數(shù)代碼如下:
void CMFCLeafTestView::Bezier(pointArray&ctrlPts,int precision){intArray C;
C.length=ctrlPts.length;
圖3 W=w/2時(shí)葉片三維空間示意圖
圖4 水稻葉片彎曲模型
C.arr=new int[C.length];
binomialCoefficient(C);//計(jì)算二項(xiàng)式系數(shù)
pointArray bezPts;//保存計(jì)算點(diǎn)的參數(shù)
bezPts.length=precision+1;
bezPts.arr=new point3D[bezPts.length];
float u;//規(guī)律參數(shù)
for(int k=0;k<=precision;k++){u=float(k)/float(precision);
computeBezPt(u,bezPts.arr[k],ctrlPts,C);//計(jì)算在規(guī)律u處點(diǎn)的坐標(biāo)位置}
drawTriangles(bezPts);//繪制三角形函數(shù)drawLine(bezPts);//繪制曲線的函數(shù)delete[]bezPts.arr;delete[]C.arr;}
Bezier函數(shù)中precision的值越大,葉片邊緣的曲線將無限趨近光滑曲線。
在visual studio 2010中,假設(shè)中間控制點(diǎn)的W的值=w/4時(shí),運(yùn)行該程序并且對運(yùn)行結(jié)果進(jìn)行旋轉(zhuǎn)控制,得到結(jié)果如圖4所示。
本次實(shí)驗(yàn)實(shí)現(xiàn)了水稻葉片的可視化建模。在計(jì)算機(jī)設(shè)備上最終實(shí)現(xiàn)水稻葉片在三維空間上的彎曲模型;運(yùn)用三條Bezier曲線來實(shí)現(xiàn)對水稻葉片邊緣曲線及葉中脈曲線的可視化;在實(shí)驗(yàn)中,對水稻葉片進(jìn)行了三角網(wǎng)格化和點(diǎn)化處理,該實(shí)驗(yàn)?zāi)軌蜉^清晰的反應(yīng)水稻葉片可視化上點(diǎn)、線之間的關(guān)系,有效的找出它們的規(guī)律,有利于實(shí)驗(yàn)研究。在水稻彎曲模型實(shí)驗(yàn)中,通過設(shè)置W值的不同來改變水稻葉片的彎曲程度,設(shè)置W=w/4時(shí)的葉片,對其進(jìn)行三角網(wǎng)格化、旋轉(zhuǎn)、添色處理,得到水稻葉片的1個(gè)彎曲模型。實(shí)驗(yàn)結(jié)果表明,水稻的彎曲程度確實(shí)與W值有關(guān),通過改變W值可改變水稻葉片的彎曲程度。這個(gè)方法比較容易理解和掌握,通過drawLeaf函數(shù)來描述葉片的基本空間特征(葉脈曲線和葉邊緣曲線),且在這個(gè)函數(shù)中,與葉片的實(shí)際測量參數(shù)(葉長、葉寬),還有葉片在空間中的位置(葉片的起始點(diǎn)坐標(biāo)信息等),建立了一種比較直觀的聯(lián)系,實(shí)現(xiàn)了對水稻葉片的三維形態(tài)建模和可視化表達(dá)。
實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),函數(shù)參數(shù)W值的范圍為[0,w/2)時(shí),葉片向Y軸靠近,向下彎曲,值越小,彎曲的程度越大;當(dāng)W值為w/2時(shí),葉脈曲線為一條直線,水稻葉片不發(fā)生彎曲;當(dāng)W的取值范圍為(w/2,w]時(shí),葉片向Z軸靠近,向上彎曲,值越大,彎曲程度越大。
根據(jù)水稻葉片觀測數(shù)據(jù)的分析,用Bezier曲線描述水稻葉片的邊緣信息,能較好地反應(yīng)絕大多數(shù)葉子的邊緣特征,使得葉片的三維可視化僅與水稻葉脈曲線、葉片的長度和寬度等信息有關(guān)。本文所使用方法的可控性不是很高,隨著實(shí)驗(yàn)數(shù)據(jù)的增多,對于數(shù)據(jù)的輸入的工作量比較大,對葉片的其他如扭曲模型的實(shí)現(xiàn),需要對其進(jìn)一步改進(jìn),實(shí)現(xiàn)更好的可控性。在以后的工作中,將會(huì)進(jìn)一步研究水稻各種形態(tài)的變化與環(huán)境因素相結(jié)合的生理生態(tài)模型。
[1]劉宏偉,吳斌,張紅英,等.水稻葉片幾何模型及其可視化研究[J].計(jì)算機(jī)工程,2009,35(23):263-264.
[2]金席卷,敬松,方逵.虛擬植物果實(shí)的可視化建模技術(shù)研究[J].農(nóng)機(jī)化研究,2012(10):176-179.
[3]姜麗萍,陳樹人.虛擬植物的研究進(jìn)展[J].農(nóng)機(jī)化研究,2006(4):4-6.
[4]管鶴卿,廖桂平,李錦衛(wèi).虛擬植物的研究內(nèi)容及實(shí)現(xiàn)技術(shù)綜述[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2006(12):42-46.
[5]楊紅云,羅威,何火嬌,等.水稻葉片形態(tài)三維建模與計(jì)算機(jī)模擬[J].農(nóng)機(jī)化研究,2008(12):33-35.
[6]石春林.水稻形態(tài)建成模型及虛擬生長研究[D].南京:南京農(nóng)業(yè)大學(xué),2006.
[7]常麗英.水稻植株形態(tài)建成的模擬模型研究[D].南京:南京農(nóng)業(yè)大學(xué),2007.
[8]張永會(huì),湯亮,劉小軍,等.不同品種和氮素條件下水稻莖鞘夾角動(dòng)態(tài)模擬[J].中國農(nóng)業(yè)科學(xué),2012,45(21):4 361-4 368.
[9]劉曉東,曹云飛,劉國榮,等.基于NURBS曲面的水稻葉形態(tài)建模[J].微電子學(xué)與計(jì)算機(jī),2004,21(9):117-119.
[10]雷曉俊,湯亮,張永會(huì),等.小麥麥穗幾何模型構(gòu)建與可視化[J].農(nóng)業(yè)工程學(xué)報(bào),2011,27(3):179-184.
[11]劉曉東,蔣立華,趙軍軍,等.基于Bezier曲線的植物形態(tài)建模和顯示[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(13):97-98.
[12]徐旭東,王菁.基于OpenGL的虛擬吊蘭建模與可視化研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(12):4 304-4 309.
[13]張文靜,加云崗,王偉.基于Bezier曲線的移動(dòng)模型研究[J].計(jì)算機(jī)應(yīng)用研究,2015,32(6):1 830-1 834.
[14]高晶.Bezier曲線的算法研究[J].遼寧師專學(xué)報(bào):自然科學(xué)版,2008,10(2):25-26.
[15]丁維龍,謝濤,徐利鋒,等.基于虛擬模型的水稻冠層葉面積計(jì)算方法[J].農(nóng)業(yè)工程學(xué)報(bào),2017,33(2):192-198.
[16]劉丹,諸葉平,劉海龍,等.植物三維可視化研究進(jìn)展[J].中國農(nóng)業(yè)科技導(dǎo)報(bào),2015,17(1):23-31.
[17]胡少軍,何建東.基于圖像處理的小麥葉片形態(tài)的三維重建[J].農(nóng)業(yè)工程學(xué)報(bào),2007,23(1):150-154.