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