本發(fā)明屬于計算機圖形學領域,尤其涉及是一種面向旋轉(zhuǎn)對稱瓷器的紋飾展開圖的自動生成方法。
背景技術(shù):
網(wǎng)格曲面的參數(shù)化:網(wǎng)格曲面的參數(shù)化是指建立一個映射關系,使得網(wǎng)格曲面上的頂點通過此映射關系映射到參數(shù)區(qū)域中。根據(jù)參數(shù)化目標的不同,參數(shù)化方法可以分為兩大類:(1)直接利用坐標變換;(2)使用一個輔助表面或者幾何體作為中介來實現(xiàn)參數(shù)化。但是將一個不可展的三維網(wǎng)格曲面映射成到平面將不可避免地產(chǎn)生長度、面積、角度上的扭曲變形。許多方法在保持幾何度量的前提下著力于減少參數(shù)化造成的扭曲,比如通過使映射的dirichlet能量最小來構(gòu)造對非線性調(diào)和映射的線性逼近;通過一個參數(shù)來平衡保面積和保角度兩者線性混合對最終扭曲產(chǎn)生的影響,然后最小化線性混合的扭曲能量函數(shù)。在我們的方法中,我們使用圓臺作為中介進行參數(shù)化。
圓臺的擬合:對點云數(shù)據(jù)進行幾何擬合,就是用簡單的幾何形體包圍點云數(shù)據(jù)中所有的點,并使這些幾何形體的體積最小。許多研究者采用圓柱體擬合點云數(shù)據(jù)取得了很大的進展。但在實踐過程中,單純的采用圓柱體擬合三維物體不能很好的解決所有的問題,對于我們要處理的器物,采用圓錐體進行擬合是一種更為有效的方法。準最小二乘的方法是擬合圓柱面和圓錐面等二次曲面的常用方法。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種面向旋轉(zhuǎn)對稱瓷器的紋飾展開圖的自動生成方法,本發(fā)明是基于表面參數(shù)化方法把瓷器表面的紋飾從三維器物表面展開到二維平面上的新型技術(shù),本發(fā)明可輔助用于考古繪圖以實現(xiàn)具有旋轉(zhuǎn)對稱性的瓷器表面紋飾的分段平面展開。
為了解決現(xiàn)有技術(shù)存在的問題,本發(fā)明提供技術(shù)方案:
1、一種面向旋轉(zhuǎn)對稱瓷器的紋飾展開圖的自動生成方法,包括如下步驟:
步驟一,輸入具有二維紋理的模型的數(shù)據(jù)信息;
步驟二,基于對稱軸旋轉(zhuǎn)模型獲得正立的模型,進而獲得其前后左右四個方向的正視圖;
步驟三,利用梯度算子對獲得的四個正視圖進行分析生成模型的累積梯度圖;
步驟四,在獲得的累積梯度圖基礎上計算模型切割平面完成對模型本身的分段處理;
步驟五,對獲得的每個分段模型進行圓臺擬合;
步驟六,判斷圓臺擬合中是否存在無紋理的特殊區(qū)域,如果存在無紋理區(qū)域則與生成圓臺合并;否則進行圓臺表面紋理展開生成平面紋飾展開圖。
所述步驟三中所述梯度圖是通過正投影方式獲得模型前后左右四個方向的正視圖,利用梯度算子分別計算四個正視圖的垂直梯度分布,并沿水平方向累加正視圖的絕對值之和,獲得一維的梯度絕對值之和的分布。
所述切割線平面為梯度絕對值之和發(fā)生劇烈改變的位置,利用公式(1)尋找切割線的位置:
其中,li表示第i行,
其中,
其中,(x,y,z)表示三維空間中的點,(x,y)表示與其相對應的二維平面上的點,h和r分別表示過點(x,y,z)并且與原圓臺底面平行的圓臺的高和半徑,h和r分別表示原圓臺的高和半徑,ya表示a的y坐標值,θ表示圓臺展開后的扇形的圓心角。
通過如下公式(3)對展開平面中交疊區(qū)域進行消除;
其中,
所述步驟六中無紋理區(qū)域與生成圓臺合并包括如下步驟:
第一,確定無紋理區(qū)域的梯度值是否小于給定的閾值的區(qū)域;
第二,通過公式(4)將無紋理區(qū)域與其半徑接近的鄰居區(qū)域進行合并
其中,ci表示第i個圓臺,ri表示第i個圓臺的下底面半徑;
第三,根據(jù)合并后的結(jié)果重新進行圓臺的擬合以及平面展開。
有益效果
本發(fā)明的基礎是模型切割平面的獲取,通過切割平面將模型分割成可以近似用圓臺擬合的片段,從而用圓臺展開公式實現(xiàn)具有旋轉(zhuǎn)對稱性的瓷器表面紋飾從三維模型到二維平面的近似展開。本發(fā)明具有以下優(yōu)點:
(1)能夠自動的實現(xiàn)紋理分割。與現(xiàn)有的的紋理分割方法相比,本發(fā)明能夠達到我們期望的紋理分割的效果。
(2)本方法涉及展開到平面后布局的調(diào)整,達到便于觀察的目的。
(3)本發(fā)明同傳統(tǒng)的考古繪圖相比,不僅減少了制圖所需的時間,節(jié)約了人力物力,而且降低了用身體去觸碰珍貴器物的需求,達到了保護器物的目的。
附圖說明
圖1是本發(fā)明流程圖;
圖2是本發(fā)明通過梯度算子對瓷器查找紋理分割的位置圖像;其中:(a)為模型前后左右四個方向的正視圖,圖(b)為用matlab繪制的梯度圖,圖(c)為找到的切割平面;
圖3是本發(fā)明中圓臺的展開圖;
圖4是本發(fā)明中圓臺展開遇到的特殊情況圖;圖中的(a)表示模型及切割平面,圖中的(b)表示水平切割平面穿過三角面片的一個頂點和一條邊;圖(c)表示水平切割平面穿過三角面片的兩條邊;圖(d)表示豎直切割平面穿過三角面片,導致展開后的三角面片分布在展開面的邊界上;
圖5是本發(fā)明展開后二維布局的調(diào)整:圖(a)為布局調(diào)整前的結(jié)果圖;圖(b)為布局調(diào)整后的結(jié)果圖。
圖6是本發(fā)明中無紋理區(qū)域的合并圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作出詳細說明。
如圖1所示,本發(fā)明提供一種面向旋轉(zhuǎn)對稱瓷器的紋飾展開圖的自動生成方法,包括如下步驟:
步驟一101,輸入具有二維紋理的模型數(shù)據(jù)信息;
步驟二102,基于對稱軸方旋轉(zhuǎn)模型正立的模型,進而獲得其前后左右四個方向的正視圖;步驟三103,利用梯度算子對獲得的四個正視圖進行分析,生成模型的累積梯度圖;
其中,基于梯度算子的分析具體為利用sobel梯度算子計算模型四個方向正視圖的垂直梯度,并沿水平方向累加正視圖的絕對值之和,獲得一維的梯度絕對值之和的分布。
步驟四104,在獲得的累積梯度圖基礎上計算模型切割平面完成對模型本身的分段處理;
a)切割線的位置定義為梯度絕對值之和發(fā)生劇烈改變的位置,利用公式(1)尋找切割線的位置:
其中,li表示第i行,
b)根據(jù)正投影原理把在圖像上找到的切割線映射到三維模型上,從而獲得切割平面的位置。
步驟五105,對獲得的每個分段模型進行圓臺擬合;
其中,基于可展開曲面圓臺的擬合與展開公式的推導包括以下步驟:
a)根據(jù)切割平面對模型進行分割,并對分割后獲得的模型片段進行圓臺的近似擬合。
b)對擬合后的圓臺根據(jù)我們推導出的平面展開公式進行展開。
c)當三角面片被切割平面或展開面貫穿時,需把三角面片沿切割平面或展開面拆分為子三角面片再分別進行展開。
其中,展開到平面后布局的調(diào)整包括以下步驟:
a)計算展開后每個紋理片段的包圍盒的大小。
b)以最下面的紋理片段為基準,移動其它片段的豎直位置使得片段的包圍盒相切,豎直位置計算由公式(2)定義:
其中,
步驟六106,判斷圓臺擬合中是否存在無紋理的特殊區(qū)域,如果存在無紋理區(qū)域則與生成圓臺合并再返回步驟五105;其中,無紋理區(qū)域合并包括以下步驟:
a)確定無紋理區(qū)域的位置,選擇其相鄰圓臺中半徑相近的進行合并107。
b)根據(jù)合并后的結(jié)果重新進行圓臺的擬合以及展開。否則進行圓臺表面紋理展開生成具有二維紋理的平面(108,109)。
如圖2所示,針對具有旋轉(zhuǎn)對稱性的三維瓷器模型,首先利用常用的對稱軸估計方法計算其對稱軸,旋轉(zhuǎn)模型直至對稱軸的朝向與坐標系的豎直方向重合。其中(a)為模型前后左右四個方向的正視圖,是通過正投影方式獲得模型前后左右四個方向的正視圖,利用sobel梯度算子分別計算四個正視圖的垂直梯度分布,并沿水平方向累加正視圖的絕對值之和,獲得一維的梯度絕對值之和的分布,即圖(b)為用matlab繪制的梯度圖。然后由公式(1)確定出絕對值之和變化最大的位置,將此位置作為切割線的位置。
其中,li表示第i行,
其中圖(c)為找到的切割平面根據(jù)正投影的原理,模型頂點到切割面的距離與模型的高度的比值在二維正視圖以及在三維空間中滿足等比例的關系。因此我們可將獲得的切割線映射到三維空間,從而獲得模型切割平面的位置。
如圖3所示,根據(jù)切割平面對模型進行分割,將模型的三角面片劃分為不同的模型片段。對分割后獲得的模型片段,將片段包含的所有三角面片頂點通過正投影到與水平面垂直的正視圖上,用投影頂點擬合出具有最小面積的圓臺輪廓線?;跀M合的圓臺,我們可推導出圓臺到平面的展開公式:
其中,
其中,(x,y,z)表示三維空間中的點,(x,y)表示與其相對應的二維平面上的點,h和r分別表示過點(x,y,z)并且與原圓臺底面平行的圓臺的高和半徑,h和r分別表示原圓臺的高和半徑,ya表示a的y坐標值,θ表示圓臺展開后的扇形的圓心角。每個符號的具體含義見附圖3。
如圖4所示,值得注意的是在展開過程中會遇到幾種特殊情況,需要進行單獨處理:
i.三角面片被水平切割平面分成上下兩部分,見附圖3。此時需要把被切割平面穿過的三角形分成兩部分。對于每一部分,如果是三角形則直接展開;如果是四邊形,則連接四邊形的對角線,分成兩個三角形分別進行展開。
ii.三角面片被初始展開平面分成左右兩部分,此種情況如果直接進行展開,則展開的結(jié)果見附圖3。因此我們同樣需要分成兩部分分別進行展開。
如圖5所示,為展開到平面后布局的調(diào)整:每個分割的模型片段經(jīng)圓臺擬合和平面展開后落在平面上,相互之間可能產(chǎn)生交疊。本步驟用于調(diào)整展開片段在平面上的豎直位置,消除相互之間的交疊,形成便于觀察的二維紋飾展開圖。一個可行的做法是計算每個展開后的紋理片段的包圍盒,以最下面的片段為基準,根據(jù)公式(3)調(diào)整其他片段的位置,使得相鄰片段的包圍盒相切;
其中,
如圖6所示,無紋理區(qū)域合并包括以下步驟:
三維模型的表面紋理可能存在部分基本空白的區(qū)域,這類區(qū)域多為狹窄片段。本步驟將這類片段與相鄰的分割片段合并,以產(chǎn)生更為連貫的紋飾展開結(jié)果。一個可行的做法是首先確定梯度值小于給定的閾值的區(qū)域為無紋理的區(qū)域,然后將其與和它半徑接近的鄰居區(qū)域進行合并(由公式4定義),根據(jù)合并后的結(jié)果重新進行圓臺的擬合以及平面展開。
其中,ci表示第i個圓臺,ri表示第i個圓臺的下底面半徑;
該算法的輸入為貼有紋理的三維模型,通過獲取模型的對稱軸來旋轉(zhuǎn)物體以獲得模型前后左右四個方向的正視圖,利用sobel梯度算子分別計算四個正視圖的垂直梯度分布,并沿水平方向求取正視圖的梯度的絕對值之和。在獲得的梯度圖上尋找模型的切割平面,從而實現(xiàn)對模型的分段。進而對每個分段模型進行圓臺擬合。對于分割產(chǎn)生的無紋理的特殊區(qū)域,我們通過比較此區(qū)域與上下相鄰區(qū)域的半徑的相似度,來實現(xiàn)無紋理區(qū)域的合并。利用展開公式實現(xiàn)對分段模型表面紋理的分段展開。對展開到平面上的二維紋理,通過求取每段紋理的包圍盒來移動紋理,使得紋理之間互不重疊,以達到優(yōu)化展開結(jié)果的目的。