專利名稱:一種雙向紋理函數(shù)的壓縮和合成方法
技術(shù)領(lǐng)域:
本發(fā)明一種紋理函數(shù)的壓縮和合成方法,特別是一種雙向紋理函數(shù)的壓縮和合成方法, 主要用于真實感虛擬環(huán)境的構(gòu)造和繪制,屬于計算機虛擬現(xiàn)實技術(shù)領(lǐng)域, 背景技術(shù)物體表面的反射屬性一直是當(dāng)今計算機圖形學(xué)和計算機視覺的研究熱點。物體的反射屬 性主要集中在光線與物體表面的相互作用上。光線與物體的相互作用由入射光的位置、方向、 波長,光線在物體內(nèi)部的傳輸時間,以及出射光的位置、方向、波長等因素決定。因此可以 用一個12維的函數(shù)來描述。在實際應(yīng)用中,對于這么一個高維函數(shù)的獲取是不現(xiàn)實的,為了 簡化該函數(shù),假設(shè)傳播時間和波長也是保持不變的,就得到了一個8維函數(shù)雙向表面散射反 射分布函數(shù)BSSRDF(bidirectional surface scattering distribution function)。 BSSRDF函數(shù)描述了 任何入射和出射方向上的光線在表面上任意點之間的傳播過程。近年來人們?yōu)榱诉m合各種需 求,再加上受到數(shù)據(jù)獲取設(shè)備及環(huán)境的限制,對BSSRDF進行了進一步的化簡,固定了某些 參數(shù),提出了各種反射函數(shù),來適應(yīng)不同的應(yīng)用領(lǐng)域。Dana等引入雙向紋理函數(shù)(Bidirectional Texture Function, BTF)描述物體表面在不同光照 和視點方向下的反射現(xiàn)象。BTF由BSSRDF忽略了表面散射系數(shù)得到,是一個六維函數(shù), 可以表示為TX",v,其中(",v)表示像素位置,(《,《)、分別表示光照、視線方向。BTF可以用圖像序列進行表示,每幅圖像都具有不同的光照方向和觀察方向。對這些 圖像進行BTF建模能夠很好地重建出材質(zhì)表面自遮擋、自陰影、相互反射等光照效果。BTF 的采集需要在光照和視線方向上進行密集采樣,因此如何能夠快速的采集BTF顯得尤為重要。 由于需要大量的圖像才能完整地表達一個BTF, 一般需要幾千幅圖像和幾百MB甚至GB 級的存儲空間,因此需要對采集得到的樣本BTF數(shù)據(jù)進行壓縮。同時由于采集設(shè)備和數(shù)據(jù) 量的限制,被處理后的BTF樣本紋理一般為平面小樣本,為了擴大BTF的應(yīng)用范圍,需 要研究BTF的合成算法,將較小平面樣本BTF應(yīng)用到任意三維物體表面。 目前的合成方法主要有在種第一禾中文獻1- J. Stem. Aperiodic Texture Mapping. Technical Report R046, European Research Consortium for Informatics and Math., 1997,使用把帶顏色的紋理塊應(yīng)用到紋理創(chuàng)建, 他將帶顏色的紋理塊用作紋理類型的載體,但他并沒有實現(xiàn)紋理的合成,即從小紋理構(gòu)造任 意大紋理。第二種文獻2- EFROS, A., AND FREEMAN, W. Image quilting for texture synthesis. In Proceedings of SIGGRAPH 2001, 341-346從原始紋理中一個一個地隨機提取紋理塊,每一個 都需要計算與之前紋理塊的邊緣誤差,誤差足夠小的用來拼接在一起來合成大紋理,但是這 種方法不夠精確而且耗時很長。第三禾中文獻3- MR Cohen, J. Shade, S. Hiller, and O. Deussen. Wang Tiles for Image and Texture Generation [J]. ACM Trans. Graphics, 2003, 22(3): 287-294提出了一種基于帶顏色紋理 塊的二維紋理合成方法,但他并沒有考慮多維紋理的合成一直性問題。上述各種方法中,文獻1存在無法進行紋理合成的問題,文獻2存在合成過程中的速度 和精確度不夠的問題,文獻3沒有考慮多維紋理的合成一致性問題。 發(fā)明內(nèi)容本發(fā)明的技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供一種雙向紋理函數(shù)的壓縮和合成方 法,該方法可以壓縮大規(guī)模的雙向紋理函數(shù)數(shù)據(jù)并根據(jù)已有紋理圖像合成新的多維紋理圖像, 合成過程快速、效果精確,并解決了多維紋理合成的一致性問題,擴大紋多維理來源的途徑, 滿足虛擬環(huán)境中真實感繪制的需求。本發(fā)明的技術(shù)解決方案 一種雙向紋理函數(shù)的壓縮和合成方法,本發(fā)明采用主元分析和 帶顏色的方形紋理塊實現(xiàn)雙向紋理函數(shù)數(shù)據(jù)的壓縮和合成,具體做法是首先,對雙向紋理 函數(shù)數(shù)據(jù)根據(jù)視點不同分組進行采用主元分析算法壓縮;然后,從壓縮后的雙向紋理函數(shù)數(shù) 據(jù)中使用一種誤差計算方法隨即提取數(shù)據(jù)塊,每四個數(shù)據(jù)塊構(gòu)造成一個帶顏色的方形紋理塊, 使用顏色的方形紋理塊進行多維紋理合成;最后,將壓縮并合成后雙向紋理函數(shù)數(shù)據(jù)繪制到 三維模型表面上。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是-(1) 本發(fā)明根據(jù)已有的壓縮雙向紋理函數(shù)紋理能夠生成新的雙向紋理函數(shù)紋理,合成過 程采用帶顏色的紋理塊,只需要考慮紋理塊間的顏色匹配問題,相對與其它的合成方法,具 有速度快,效果好的特點;(2) 以前的紋理合成方法大多是基于二維紋理樣圖進行的。本發(fā)明針對多維紋理合成, 構(gòu)造方形紋理塊用作多維紋理合成的基礎(chǔ),并使用一種誤差計算方法保證合成多維紋理間的 一致性。
圖l為本發(fā)明方法的流程圖;圖2為本發(fā)明采用的帶顏色的方形紋理塊構(gòu)造方法圖3為本發(fā)明的實施效果圖;其中圖(a)為小尺寸的雙向紋理函數(shù)數(shù)據(jù)的毛衣樣本,圖 (b)和圖(c)為合成后的大尺寸雙向紋理函數(shù)數(shù)據(jù)在兔子模型上的表現(xiàn)及模型轉(zhuǎn)動后的不同光照效果。
具體實施方式
如果把雙向紋理函數(shù)紋理看作大量二維紋理的集合并單獨對每一個紋理進行二維紋理合 成,各紋理中像素點由于光照和視線的不同得到的顏色值不同,無法得到統(tǒng)一的合成效果。 本發(fā)明使用把壓縮后的雙向紋理函數(shù)紋理作為一個統(tǒng)一多維紋理,對其構(gòu)造方形紋理塊做多 維紋理合成。本發(fā)明的主要流程圖如圖1所示,具體步驟如下 本發(fā)明的主要流程圖如圖l所示,具體步驟如下(1) 用主元分析方法實現(xiàn)紋理壓縮第一步,選取視線方向7',對其所有光源方向的數(shù)據(jù)構(gòu)造矩陣 ;;第二步,求矩陣^每一行均值5并與其相減值得到校正矩陣7;;第三步,計算7;的特征值^ Jn和對應(yīng)的特征向量五,..式(n為光源方向個數(shù));第四步,從大到小選取c個特征值并選取它們所對應(yīng)的特征向量,使用這C個特征向量 做為原數(shù)據(jù)的壓縮數(shù)據(jù),壓縮比例為c/n;第五步,換另外一個視點方向重復(fù)第一步直到所有視點方向的數(shù)據(jù)都完成壓縮。 本方法的思想是保存原數(shù)據(jù)較為重要的特征信息,而把不重要的信息丟棄,達到壓縮的目的。經(jīng)驗證,本壓縮方法能夠?qū)?shù)據(jù)大小壓縮為原來的1/16,而產(chǎn)生的誤差僅僅為2.2%。(2) 構(gòu)造帶顏色方形紋理塊的方法實現(xiàn)多維紋理合成如圖2所示,第一步隨機選擇四個正方形雙向紋理函數(shù)數(shù)據(jù)塊,計算兩兩間重疊區(qū)域的 顏色誤差值與閾值進行比較,顏色誤差和閾值的計算方法見下式。d為顏色誤差計算方法, dmax為閾值計算方法。公式中N為重疊區(qū)域的像素個數(shù),e為主元分析壓縮算法中選取的主元個數(shù),Pm為 PCA算法在光照方向索引m指向的系數(shù),V為視線方向的個數(shù),av為視線方向索引v指 向的權(quán)重值,和為重疊區(qū)域中第k個像素在兩塊中的顏色值,s為誤差極限系數(shù)。
如果誤差d大于閾值dmax則重新選擇,直到滿足誤差小于閾值為止。m^二步,將四個數(shù)據(jù)塊旋轉(zhuǎn)45°,給不同的塊賦予不同的顏色,相同的賦予同一顏色第三步,將這四個數(shù)據(jù)塊兩兩拼接在一起并計算一條剪切路徑。相鄰塊間的剪切路徑通 過計算重疊區(qū)域內(nèi)像素點之間顏色值誤差的最小值或得。第四步,沿剪切路徑端點剪切得到的正方形即為帶顏色的方形紋理塊,因為原來的雙向 紋理函數(shù)數(shù)據(jù)塊是被賦予顏色的,因此方形紋理塊的邊緣帶有了顏色。第五步,使用這些帶有顏色的方形紋理塊進行多維紋理合成。由于相同顏色的方形紋理 塊邊緣對應(yīng)了雙向紋理函數(shù)數(shù)據(jù)中相同的一部分,因此在合成的過程中保證具有相同顏色邊 緣拼接在一起即可達到高質(zhì)量的合成效果。拼接方法首先選取一個帶顏色的方形紋理塊放在左上角,其次選擇另一個方形紋理塊 擺放在它的右邊,選取的規(guī)則是后放的紋理塊的左邊顏色和之前己經(jīng)放好的紋理塊的右邊緣 顏色相同。這樣依次進行擺放,直到擺滿所需要的大小,這樣就完成了多維紋理的合成。(3)雙向紋理函數(shù)的繪制第一步,構(gòu)造一個虛擬半球,將所有采樣光照和視點方向分布在這個半球上。 第二步,使用Delaunay Triangulation算法對這個半球上的采樣點進行三角化分割。 第三步,三角化后,按照間隔1。計算所有這個半球上所有角度所在的投影三角形, 一共為360*90組,并計算其到三角形三個頂點的權(quán)重值。權(quán)重值算法見如下公式。f,/7為分別此點的仰角和平面角,(xi,yi) (i=l,2,3)表示三角形的一個頂點坐標。<formula>formula see original document page 7</formula>第四步,使用顯卡單元進行實時繪制。利用顯卡單元對紋理運算的支持,把合成后的雙向紋理函數(shù)數(shù)據(jù)分解為c(c為壓縮步驟時所選取)個二維紋理。在顯卡單元的頂點著色器中計算每一個頂點的法向量、切向量、副法線所構(gòu)成的局部坐標系,并將光照、視線方向投影 到這個局部坐標系中。第五步,在顯卡單元的片元著色器中查找投影后的光照、視線方向所在的投影三角形和 其權(quán)重值(由第三步計算獲得),通過此三個頂點做三線性插值得到此點顏色值,見如下公式。<formula>formula see original document page 8</formula>vw,., /^.為權(quán)重值,7;為此光照視線方向采樣值。c為步驟l中所選取的特征向量的個數(shù),£t 為第k個特征向量(l<k<c), ^為步驟1中所計算的均值,系數(shù)A由向量7;.和A二者內(nèi)積求得,見下式。<formula>formula see original document page 8</formula>圖3是本發(fā)明的效果圖,(a)為小尺寸的雙向紋理函數(shù)數(shù)據(jù)(毛衣樣本),將其合成后的 大尺寸雙向紋理函數(shù)數(shù)據(jù)在兔子模型上的表現(xiàn)如(b), (c)所示。由圖像可以看出本發(fā)明保證 了小尺寸數(shù)據(jù)合成大尺寸數(shù)據(jù)的過程中沒有走樣,并保證了很好的完整性和連續(xù)性。圖(b), (c)分別表現(xiàn)了模型轉(zhuǎn)動后的不同光照效果,物體表面隨著光線和視線的變化產(chǎn)生了陰影的不 同,毛衣紋路也隨著光線和視線的變化而產(chǎn)生了變化。從圖中可以看出本發(fā)明能夠有效的增 加虛擬環(huán)境中不同光照和視點交互情況下的物體表面變化的真實感。
權(quán)利要求
1、一種雙向紋理函數(shù)的壓縮和合成方法,其特征在于它包括以下步驟步驟1根據(jù)數(shù)據(jù)視點不同分組,采用主元分析算法對原雙向紋理函數(shù)數(shù)據(jù)進行壓縮;步驟2從壓縮后的雙向紋理函數(shù)數(shù)據(jù)中使用誤差計算方法隨即提取數(shù)據(jù)塊,每四個數(shù)據(jù)塊構(gòu)造成一個帶顏色的方形紋理塊,使用顏色的方形紋理塊進行多維紋理合成;步驟3將壓縮并合成后雙向紋理函數(shù)數(shù)據(jù)繪制到三維模型表面上。
2、 根據(jù)權(quán)利要求1所述的雙向紋理函數(shù)的壓縮和合成方法,其特征在于所述的步驟1 根據(jù)數(shù)據(jù)視點不同分組,采用主元分析算法對原雙向紋理函數(shù)數(shù)據(jù)進行壓縮的方法如下-第一步,選取視線方向》對其所有光源方向的數(shù)據(jù)構(gòu)造矩陣3;;第二步,求矩陣^;每一行均值5并與其相減值得到校正矩陣7;;第三步,計算 ;的特征值;^入和對應(yīng)的特征向量五,...^, n為光源方向個數(shù);第四步,從大到小選取c個特征值并選取它們所對應(yīng)的特征向量,使用這c個特征向量 做為原數(shù)據(jù)的壓縮數(shù)據(jù);第五步,換另外一個視點方向直到所有視點方向的數(shù)據(jù)都完成壓縮。
3、 根據(jù)權(quán)利要求1所述的雙向紋理函數(shù)的壓縮和合成方法,其特征在于所述步驟2的 實現(xiàn)為第一步,隨機選擇四個正方形雙向紋理函數(shù)數(shù)據(jù)塊,計算兩兩間重疊區(qū)域的顏色誤差值 與閾值進行比較,如果誤差大于閾值則重新選擇,直到滿足誤差小于閾值為止;第二步,將四個數(shù)據(jù)塊旋轉(zhuǎn)45°,給不同的塊賦予不同的顏色,相同的賦予同一顏色; 第三步,將這四個數(shù)據(jù)塊兩兩拼接在一起并計算一條剪切路徑; 第四步,沿剪切路徑端點剪切生成帶顏色的方形紋理塊; 第五步,使用這些帶有顏色的方形紋理塊進行多維紋理合成。
4、 根據(jù)權(quán)利要求1所述的雙向紋理函數(shù)的壓縮和合成方法,其特征在于所述步驟3的 實現(xiàn)為.-第一步,構(gòu)造一個虛擬半球,將所有采樣光照和視點方向分布在這個半球上; 第二步,對這個半球上的采樣點進行三角化分割;第三步,三角化后,按照間隔1。計算所有這個半球上所有角度所在的投影三角形, 一共 為360*90組,并計算其到三角形三個頂點的權(quán)重值; 第四步,使用顯卡單元進行實時繪制。
5、根據(jù)權(quán)利要求3所述的雙向紋理函數(shù)的壓縮和合成方法,其特征在于所述第一步中 的顏色誤差和閾值的計算方法見下式,d為顏色誤差計算方法,dmax為閾值計算方法-<formula>formula see original document page 3</formula>公式中N為重疊區(qū)域的像素個數(shù),c為主元分析壓縮算法中選取的主元個數(shù),pm為 PCA算法在光照方向索引m指向的系數(shù),V為視線方向的個數(shù),av為視線方向索引v指 向的權(quán)重值,和為重疊區(qū)域中第k個像素在兩塊中的顏色值,s為誤差極限系數(shù)。
全文摘要
一種雙向紋理函數(shù)的壓縮和合成方法,采用主元分析和帶顏色的方形紋理塊實現(xiàn)雙向紋理函數(shù)數(shù)據(jù)的壓縮和合成,具體做法是首先,對雙向紋理函數(shù)數(shù)據(jù)根據(jù)視點不同分組進行采用主元分析算法壓縮;然后,從壓縮后的雙向紋理函數(shù)數(shù)據(jù)中使用誤差計算方法隨即提取數(shù)據(jù)塊,每四個數(shù)據(jù)塊構(gòu)造成一個帶顏色的方形紋理塊,使用顏色的方形紋理塊進行多維紋理合成;最后,將壓縮并合成后雙向紋理函數(shù)數(shù)據(jù)繪制到三維模型表面上。本發(fā)明可以壓縮大規(guī)模的雙向紋理函數(shù)數(shù)據(jù)并根據(jù)已有紋理圖像合成新的多維紋理圖像,合成過程快速、效果精確,并解決了多維紋理合成的一致性問題,擴大多維紋理來源的途徑,滿足虛擬環(huán)境中真實感繪制的需求。
文檔編號G06T9/00GK101398936SQ20081022621
公開日2009年4月1日 申請日期2008年11月7日 優(yōu)先權(quán)日2008年11月7日
發(fā)明者展 張, 沈旭昆, 勇 胡, 越 齊 申請人:北京航空航天大學(xué)