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