專利名稱:基于單元結(jié)構(gòu)的體紋理合成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字圖像處理技術(shù)領(lǐng)域,特別涉及一種基于單元結(jié)構(gòu)的體紋理合成方法。
背景技術(shù):
在計(jì)算機(jī)圖形學(xué)領(lǐng)域中,為了更好地展現(xiàn)三維模型的視覺(jué)效果,紋理映射被廣泛應(yīng)用于將二維紋理圖像映射到三維模型表面,自然界中的真實(shí)物體不僅具有豐富的表面紋理特征,同時(shí)還具有內(nèi)部的三維結(jié)構(gòu),例如大理石內(nèi)部的結(jié)構(gòu)、樹(shù)木的花紋等等。使用三維體紋理可以很好地描述物體的內(nèi)部結(jié)構(gòu),同時(shí)三維紋理映射不需要進(jìn)行參數(shù)化的步驟,因而就避免了傳統(tǒng)的二維紋理映射中由于使用曲面參數(shù)化而導(dǎo)致的紋理扭曲問(wèn)題。和二維紋理相比,直接獲取三維紋理非常復(fù)雜而且很難獲取豐富的顏色信息,因此從二維圖像紋理合成三維體紋理是當(dāng)前獲得三維紋理的常用方法。已有一些傳統(tǒng)方法從二維紋理圖像合成三維體紋理,其中比較經(jīng)典的是2005年Johannes Kopf等提出的方法, 但這類(lèi)方法沒(méi)有考慮三維紋理中的單元結(jié)構(gòu),不能保證體紋理的幾何結(jié)構(gòu)的合理性。對(duì)于由單元結(jié)構(gòu)構(gòu)成的體紋理,這種現(xiàn)象就尤為明顯,例如由許多小塊堆成的幾何體,傳統(tǒng)方法很難合成內(nèi)部的小塊的幾何結(jié)構(gòu)。體紋理的內(nèi)部結(jié)構(gòu)是體紋理的一種自然屬性,高質(zhì)量的體紋理應(yīng)具有合理的、接近于真實(shí)情況的內(nèi)部幾何結(jié)構(gòu),因此當(dāng)從二維紋理合成三維體紋理時(shí),應(yīng)當(dāng)充分利用紋理中的幾何信息,從二維幾何信息重構(gòu)三維結(jié)構(gòu),進(jìn)而能夠獲得更高質(zhì)量的合成結(jié)果。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題本發(fā)明所要解決的技術(shù)問(wèn)題是如何提供一種能夠保證合成的體紋理中單元結(jié)構(gòu)的合理性,并且很好的保留單元結(jié)構(gòu)排布的規(guī)律和相鄰關(guān)系的體紋理合成方法。( 二 )技術(shù)方案為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于單元結(jié)構(gòu)的體紋理合成方法,包括以下步驟Si、分析二維紋理圖像,得到三維單元結(jié)構(gòu)的二維截面,使用空間中三個(gè)垂直方向的二維截面來(lái)構(gòu)造多個(gè)三維單元結(jié)構(gòu);S2、分析所述二維紋理圖像,計(jì)算所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,所述相鄰關(guān)系由所述多個(gè)三維單元結(jié)構(gòu)的三個(gè)垂直方向的二維截面在所述二維紋理圖像上的相鄰關(guān)系推導(dǎo)得到;S3、根據(jù)所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,在空間中依次放置所述多個(gè)三維單元結(jié)構(gòu),當(dāng)所有三維單元結(jié)構(gòu)放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整并對(duì)其形狀進(jìn)行放縮;S4、合成各三維單元結(jié)構(gòu)之間的介質(zhì),得到最終的體紋理。
優(yōu)選地,步驟Sl具體為分析二維紋理圖像,提取出二維紋理圖像中的一個(gè)單元結(jié)構(gòu),此單元結(jié)構(gòu)被視為所要構(gòu)造的一個(gè)三維單元結(jié)構(gòu)的二維截面,將空間中三個(gè)垂直方向的二維截面之一視為基礎(chǔ)面,另兩個(gè)二維截面同時(shí)圍繞此基礎(chǔ)面的垂線進(jìn)行旋轉(zhuǎn),在空間中掃過(guò)的區(qū)域被視為三維單元結(jié)構(gòu)的內(nèi)部,從而構(gòu)造出一個(gè)三維單元結(jié)構(gòu)。
優(yōu)選地,步驟S2具體為對(duì)于其中一個(gè)三維單元結(jié)構(gòu)A,根據(jù)二維紋理圖像,計(jì)算構(gòu)成該三維單元結(jié)構(gòu)A的三個(gè)二維截面之間的相鄰關(guān)系,包含這些相鄰的二維截面的三維單元結(jié)構(gòu)作為該三維單元結(jié)構(gòu)A的一個(gè)鄰居,該三維單元結(jié)構(gòu)A與作為其鄰居的三維單元結(jié)構(gòu)之間的位移關(guān)系由所對(duì)應(yīng)的二維截面之間的位移所決定,由此計(jì)算所構(gòu)造的所有三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系。優(yōu)選地,步驟S3中,使用貪心的方法在空間中依次放置所述多個(gè)三維單元結(jié)構(gòu)。優(yōu)選地,步驟S3中,首先在空間中的任意位置放置任意一個(gè)三維單元結(jié)構(gòu),然后從該三維單元結(jié)構(gòu)的相鄰關(guān)系中選取一個(gè)和該三維單元結(jié)構(gòu)在空間中不重疊的結(jié)構(gòu)放置在空間中,重復(fù)此貪心的步驟,直到空間中無(wú)法再放置更多的三維單元結(jié)構(gòu)為止,放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整,最后在保證所有三維單元結(jié)構(gòu)不重疊的情況下, 對(duì)一些三維單元結(jié)構(gòu)進(jìn)行形狀放大,以填補(bǔ)空間中剩余的空隙。優(yōu)選地,步驟S4中,使用并行的方法合成各三維單元結(jié)構(gòu)之間的介質(zhì),合成時(shí)只考慮所述二維紋理圖像中的非單元結(jié)構(gòu)截面部分。(三)有益效果按照本發(fā)明的步驟實(shí)現(xiàn)體紋理合成,能夠保證合成的體紋理中單元結(jié)構(gòu)的合理性,并且能夠很好地保留單元結(jié)構(gòu)排布的規(guī)律和相鄰關(guān)系,提高體紋理合成的質(zhì)量。
圖1為本發(fā)明的方法流程圖;圖2為根據(jù)輸入的二維紋理圖像構(gòu)造三維單元結(jié)構(gòu)的示例圖;圖3為所構(gòu)造的維單元結(jié)構(gòu)的示例圖;圖4為本發(fā)明中放置三維單元結(jié)構(gòu)步驟的詳細(xì)流程圖;圖5為本發(fā)明所合成的體紋理示意。
具體實(shí)施例方式下面對(duì)于本發(fā)明所提出的一種基于單元結(jié)構(gòu)的體紋理合成方法,結(jié)合附圖和實(shí)施例詳細(xì)說(shuō)明。參照附圖1,為本發(fā)明的方法流程圖。輸入數(shù)據(jù)為由二維單元結(jié)構(gòu)構(gòu)成的二維紋理圖像,輸出為保證內(nèi)部結(jié)合結(jié)構(gòu)的三維體紋理。圖中所表示的步驟為Si.構(gòu)造三維單元結(jié)構(gòu)通過(guò)分析輸入的二維紋理圖像,提取出二維紋理圖像中的單元結(jié)構(gòu),此單元結(jié)構(gòu)被視為三維單元結(jié)構(gòu)的二維截面,根據(jù)空間中三個(gè)垂直方向的二維截面,來(lái)構(gòu)造三維單元結(jié)構(gòu)的幾何形狀和內(nèi)部特征(即構(gòu)造出了三維單元結(jié)構(gòu)),具體方法如圖2所示將一個(gè)二維截面視為基礎(chǔ)面,另兩個(gè)二維截面圍繞此基礎(chǔ)面的垂線進(jìn)行旋轉(zhuǎn),其在空間中掃過(guò)的區(qū)域被視為三維單元結(jié)構(gòu)的內(nèi)部。構(gòu)造的三維單元結(jié)構(gòu)的示例圖如圖3所示,是根據(jù)兩個(gè)不同的二維紋理圖像(第一列的兩個(gè)圖像)分別構(gòu)造的兩個(gè)三維單元結(jié) 構(gòu)。S2.計(jì)算三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系二維紋理圖像中的單元結(jié)構(gòu)具有二維的相鄰關(guān)系,對(duì)于一個(gè)構(gòu)造好的三維單元結(jié)構(gòu),本步驟計(jì)算該三維單元結(jié)構(gòu)的相鄰關(guān)系, 即可能與其相鄰的其他三維單元結(jié)構(gòu)。具體方法為對(duì)于其中一個(gè)三維單元結(jié)構(gòu)A,根據(jù)二維紋理圖像,計(jì)算構(gòu)成該三維單元結(jié)構(gòu)A的三個(gè)二維截面之間的相鄰關(guān)系,包含這些相鄰的二維截面的三維單元結(jié)構(gòu)作為該三維單元結(jié)構(gòu)A的一個(gè)鄰居,該三維單元結(jié)構(gòu)A與作為其鄰居的三維單元結(jié)構(gòu)之間的位移關(guān)系由所對(duì)應(yīng)的二維截面之間的位移所決定,由此計(jì)算所構(gòu)造的所有三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系。S3.在空間中放置三維單元結(jié)構(gòu)并進(jìn)行位置形狀調(diào)整本步驟根據(jù)構(gòu)造的三維單元結(jié)構(gòu)和其相鄰關(guān)系合成體紋理,具體步驟如圖4所示首先在空間中的任意位置放置任意一個(gè)三維單元結(jié)構(gòu),然后從該三維單元結(jié)構(gòu)的相鄰關(guān)系中選取一個(gè)和現(xiàn)有三維單元結(jié)構(gòu)在空間中不重疊的結(jié)構(gòu)放置在空間中,重復(fù)此貪心的步驟,直到空間中無(wú)法再放置更多的三維單元結(jié)構(gòu)為止。放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整(調(diào)整方法為假定在所有三維單元結(jié)構(gòu)之間存在與距離的平方成反比的斥力關(guān)系,使用迭代的方法根據(jù)斥力的大小和方向,移動(dòng)三維單元結(jié)構(gòu)以減小每個(gè)三維單元結(jié)構(gòu)所受斥力的大小,達(dá)到近似平衡,理想的平衡是每個(gè)三維單元結(jié)構(gòu)所受的斥力的和為零,也就是所受周?chē)噜彽膯卧Y(jié)構(gòu)的斥力正好相抵消。在這里只迭代幾步,每個(gè)單元結(jié)構(gòu)向其所受到的斥力方向移動(dòng),減小所受斥力,達(dá)到近似平衡狀態(tài)),最后在保證不重疊的基礎(chǔ)下,對(duì)三維單元結(jié)構(gòu)進(jìn)行形狀放大,以填補(bǔ)空間(此空間指的是三維的體紋理塊,默認(rèn)是單位長(zhǎng)度為1的立方體)中剩余的空隙,從而可提高體紋理合成質(zhì)量。S4.合成三維單元結(jié)構(gòu)之間的介質(zhì)本步驟合成三維單元結(jié)構(gòu)之間的空隙的紋理,具體方法為對(duì)二維紋理圖像中的單元結(jié)構(gòu)之間的空隙的紋理進(jìn)行分析,使用與Lazy Solid Texture Synthesis (2008),Yue Dong etc.中所公開(kāi)的方法相似的并行的辦法計(jì)算三維單元結(jié)構(gòu)之間空隙的紋理,和 Lazy Solid Texture Synthesis (2008),Yue Dong etc. 的方法不同的是本發(fā)明在合成時(shí)只考慮二維紋理圖像中的非單元結(jié)構(gòu)截面部分(在輸入的二維紋理圖像中,有些像素(即單元結(jié)構(gòu))作為三維單元結(jié)構(gòu)的二維截面,該二維紋理圖像中非單元結(jié)構(gòu)(即不作為三維單元結(jié)構(gòu)的二維截面的部分)就是所述非單元結(jié)構(gòu)截面部分。例如輸入一張墻壁的圖像,三維單元結(jié)構(gòu)的二維截面就是圖像中磚塊的截面,而磚塊之間的空隙則被視為圖像中的非單元結(jié)構(gòu)截面部分),也只合成三維單元結(jié)構(gòu)之間空隙的體紋理。圖5給出了三個(gè)使用本方法所合成的體紋理的結(jié)果示意,其中左邊一列的圖片是輸入的二維紋理圖像,右邊一列的體紋理是對(duì)應(yīng)的輸出結(jié)果。由圖5可以看出,輸出結(jié)構(gòu)能夠保證合成的體紋理中單元結(jié)構(gòu)的合理性,并且很好地保留單元結(jié)構(gòu)排布的規(guī)律和相鄰關(guān)系。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種基于單元結(jié)構(gòu)的體紋理合成方法,其特征在于,包括以下步驟51、分析二維紋理圖像,得到三維單元結(jié)構(gòu)的二維截面,使用空間中三個(gè)垂直方向的二維截面來(lái)構(gòu)造多個(gè)三維單元結(jié)構(gòu);52、分析所述二維紋理圖像,計(jì)算所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,所述相鄰關(guān)系由所述多個(gè)三維單元結(jié)構(gòu)的三個(gè)垂直方向的二維截面在所述二維紋理圖像上的相鄰關(guān)系推導(dǎo)得到;53、根據(jù)所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,在空間中依次放置所述多個(gè)三維單元結(jié)構(gòu),當(dāng)所有三維單元結(jié)構(gòu)放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整并對(duì)其形狀進(jìn)行放縮;54、合成各三維單元結(jié)構(gòu)之間的介質(zhì),得到最終的體紋理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟Sl具體為分析二維紋理圖像,提取出二維紋理圖像中的一個(gè)單元結(jié)構(gòu),此單元結(jié)構(gòu)被視為所要構(gòu)造的一個(gè)三維單元結(jié)構(gòu)的二維截面,將空間中三個(gè)垂直方向的二維截面之一視為基礎(chǔ)面,另兩個(gè)二維截面同時(shí)圍繞此基礎(chǔ)面的垂線進(jìn)行旋轉(zhuǎn),在空間中掃過(guò)的區(qū)域被視為三維單元結(jié)構(gòu)的內(nèi)部,從而構(gòu)造出一個(gè)三維單元結(jié)構(gòu)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟S2具體為對(duì)于其中一個(gè)三維單元結(jié)構(gòu)A,根據(jù)二維紋理圖像,計(jì)算構(gòu)成該三維單元結(jié)構(gòu)A的三個(gè)二維截面之間的相鄰關(guān)系, 包含這些相鄰的二維截面的三維單元結(jié)構(gòu)作為該三維單元結(jié)構(gòu)A的一個(gè)鄰居,該三維單元結(jié)構(gòu)A與作為其鄰居的三維單元結(jié)構(gòu)之間的位移關(guān)系由所對(duì)應(yīng)的二維截面之間的位移所決定,由此計(jì)算所構(gòu)造的所有三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟S3中,使用貪心的方法在空間中依次放置所述多個(gè)三維單元結(jié)構(gòu)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟S3中,首先在空間中的任意位置放置任意一個(gè)三維單元結(jié)構(gòu),然后從該三維單元結(jié)構(gòu)的相鄰關(guān)系中選取一個(gè)和該三維單元結(jié)構(gòu)在空間中不重疊的結(jié)構(gòu)放置在空間中,重復(fù)此貪心的步驟,直到空間中無(wú)法再放置更多的三維單元結(jié)構(gòu)為止,放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整,最后在保證所有三維單元結(jié)構(gòu)不重疊的情況下,對(duì)一些三維單元結(jié)構(gòu)進(jìn)行形狀放大,以填補(bǔ)空間中剩余的空隙。
6.根據(jù)權(quán)利要求1 5中任一項(xiàng)所述的方法,其特征在于,步驟S4中,使用并行的方法合成各三維單元結(jié)構(gòu)之間的介質(zhì),合成時(shí)只考慮所述二維紋理圖像中的非單元結(jié)構(gòu)截面部分。
全文摘要
本發(fā)明涉及數(shù)字圖像處理技術(shù)領(lǐng)域。公開(kāi)了一種基于單元結(jié)構(gòu)的體紋理合成方法,包括以下步驟S1、分析二維紋理圖像,得到三維單元結(jié)構(gòu)的二維截面,使用空間中三個(gè)垂直方向的二維截面來(lái)構(gòu)造多個(gè)三維單元結(jié)構(gòu);S2、分析所述二維紋理圖像,計(jì)算所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,所述相鄰關(guān)系由所述多個(gè)三維單元結(jié)構(gòu)的三個(gè)垂直方向的二維截面在所述二維紋理圖像上的相鄰關(guān)系推導(dǎo)得到;S3、根據(jù)所述多個(gè)三維單元結(jié)構(gòu)在空間中的相鄰關(guān)系,在空間中依次放置所述多個(gè)三維單元結(jié)構(gòu),當(dāng)所有三維單元結(jié)構(gòu)放置完畢后,對(duì)所有三維單元結(jié)構(gòu)的位置進(jìn)行調(diào)整并對(duì)其形狀進(jìn)行放縮;S4、合成各三維單元結(jié)構(gòu)之間的介質(zhì),得到最終的體紋理。
文檔編號(hào)G06T15/04GK102298790SQ20111026436
公開(kāi)日2011年12月28日 申請(qǐng)日期2011年9月7日 優(yōu)先權(quán)日2011年9月7日
發(fā)明者杜松沛, 胡事民 申請(qǐng)人:清華大學(xué)