用于頂點誤差校正的方法和裝置的制造方法【
技術領域:
】[0001]本發明涉及一種用于生成代表3D模型的比特流的方法和裝置,以及一種用于解碼該比特流的方法和裝置。【
背景技術:
】[0002]在實際應用中,許多3D模型由大量的連接組件構成。這些多組件3D模型通常包含許多采用各種變換的重復結構,如圖1所示。[0003]已知用于多組件3D模型的利用了輸入模型中重復結構的壓縮算法。3D模型的重復結構以各種位置、方向和縮放因子被發現。于是,3D模型被組織成"模式-實例"("pattern-instance")的表示。模式用于標記對應的重復結構的代表性幾何圖形。屬于一個重復結構的組件被標記為對應模式的實例,并由模式ID以及相對于該模式的例如反射、平移、旋轉和可能的縮放的變換信息來表示。實例變換信息可被組織成例如反射部分、平移部分、旋轉部分和可能的縮放部分。可能存在一些不重復的3D模型的組件,其被稱為獨特組件。[0004]由W.Jiang、K.Cai和J.Tian(PCT/CN2012/074286,代理人案號為No.PA120012,以下簡稱"Jiang")共同擁有且名稱為"VertexCorrectionforRotated3DComponents"的PCT申請,通過引用將其教導明確地并入本文,該PCT申請公開了在編碼和解碼3D模型時用于頂點誤差補償的方法和裝置。【
發明內容】[0005]本原理提供了一種用于生成表示3D模型的比特流的方法,如下所述包括步驟:訪問與實例對應的重構實例;基于實例的頂點與重構實例的對應頂點之間的頂點坐標誤差而確定量化參數;響應于所確定的量化參數而確定量化索引;以及將量化索引和頂點坐標誤差編碼成比特流。本原理還提供了一種用于執行這些步驟的裝置。[0006]本原理提供了一種用于解碼表示3D模型的比特流的方法,如下所述包括步驟:訪問與實例對應的重構實例;根據比特流而確定量化索引;響應于量化索引而確定量化參數;解碼代表實例的頂點與重構實例的對應頂點之間的誤差的頂點坐標誤差;以及響應于所解碼的頂點坐標誤差而細化(refine)重構實例。本原理還提供了一種用于執行這些步驟的裝置。[0007]本原理還提供了一種計算機可讀存儲介質,在其上存儲了用于根據如上所述的方法而生成或解碼表示3D模型的比特流的指令。[0008]本原理還提供了一種計算機可讀存儲介質,在其上存儲了根據如上所述的方法生成的表示3D模型的比特流。【附圖說明】[0009]圖1示出了具有大量的連接組件和重復結構的示例性3D模型;[0010]圖2A示出了繪出模式的圖形例子,圖2B示出了繪出對應實例和重構實例的圖形例子;[0011]圖3是繪出根據本原理的實施例的用于編碼3D模型的實例的例子的流程圖;[0012]圖4是繪出根據本原理的實施例的用于解碼3D模型的實例的例子的流程圖;[0013]圖5示出了根據本原理的示例性實例編碼器;[0014]圖6示出了根據本原理的示例性實例解碼器。【具體實施方式】[0015]如圖1所示,在3D模型中可存在許多重復結構。為了有效地編碼3D模型,可將重復結構組織成模式和實例,其中例如使用對應模式的模式ID以及包含諸如平移、旋轉和縮放的信息的變換矩陣,可以將實例表示為對應模式的變換。[0016]當實例由模式ID和變換矩陣表示時,模式ID和變換矩陣將在壓縮實例時被壓縮。因此,實例可通過模式ID和解碼的變換矩陣來重構,即,實例可被重構為由模式ID進行索引的解碼的模式的(根據解碼的變換矩陣的)變換。在一個實施例中,在編碼變換矩陣時,變換矩陣的旋轉部分可例如使用固定數量的比特來量化。由于在量化時引入的損失,解碼的旋轉部分可能不同于原始的旋轉部分。[0017]圖2A和2B示出了2D表示的示例性組件,其中組件210和220是模式,組件250和270(以實線描繪的)是將要被壓縮的原始實例,組件260和280(以虛線描繪的)是重構實例。具體地,實例250和270可以分別被表示為模式210和220的變換(例如,旋轉和平移)版本。[0018]在圖2B的例子中,旋轉的量化引入大約5°的誤差,從而造成原始實例與重構實例之間的差異。正如圖2B中可以看到的,雖然(以角度測量的)旋轉誤差對于實例250和270是類似的,但是由旋轉量化而造成的頂點坐標誤差(即,原始實例和重構實例之間的頂點偏移,例如圖2B中從A到A'、從B到B')在兩個實例之間顯著變化,其中實例270具有大得多的頂點坐標誤差。因此,重構組件的質量可能是不一致的,例如,較大的實例相對于較小的實例具有更低的重構質量。[0019]在Jiang中,為了有效地補償頂點坐標誤差,可以為頂點的頂點坐標誤差估計上限(upperbound)。根據上限,編碼解碼器決定頂點的頂點坐標誤差是否需要壓縮,如果需要壓縮,則決定用于壓縮頂點坐標誤差的量化參數。在編碼器和解碼器處均可以估計上限,因此不需要明確的信令以指示是否使用頂點坐標誤差補償或指示用于頂點坐標誤差的量化參數。[0020]本原理還提供用于有效地補償由旋轉量化而造成的頂點坐標誤差的方法和裝置。為了降低解碼器處的計算負荷,在比特流中用信號表達(signal)量化參數。在一個實施例中,通過量化表在比特流中傳輸與用于量化頂點坐標誤差的量化比特數量對應的索引。[0021]圖3示出了用于編碼3D模型的實例的示例性方法300。方法300在步驟305開始。在步驟310,輸入3D模型數據,并執行初始化。還可輸入或者從輸入中推斷出附加數據,諸如質量參數、最大容許頂點坐標誤差、變換矩陣的平移部分和旋轉部分的量化參數。在一個示例性實施例中,初始化步驟可以將重復結構組織成模式和實例,生成實例的變換矩陣,并將模式編碼以形成重構模式。對于特定的待編碼實例(標記為C),對應的原始模式、重構模式和變換矩陣分別被標記為P、P'和T。有可能實例可被精確地表示為模式的變換,gp,C=TP。或者,在某些情況下模式的變換是實例的近似,即,C~TP。[0022]在步驟320,編碼變換矩陣(T)。在步驟330,所編碼的變換矩陣接著被解碼為Τ',并且例如使用對應的重構模式和解碼的變換矩陣來重構實例(C'=Τ'Ρ')。[0023]在步驟340,將重構實例中的頂點(V1')與原始實例中的對應頂點(V1)之間的頂點坐標誤差(E1)計算為例如E1=V1-V^。為了編碼頂點坐標誤差,在步驟350估計量化參數。在步驟360,量化并編碼頂點坐標誤差。此外,在比特流中用信號表達量化參數。在步驟370,檢查是否還有頂點需要處理。如果還有頂點將要處理,則控制返回到步驟340。否貝IJ,控制轉到結束步驟399。[0024]為了有效地用信號表達量化參數,可以將量化參數的索引編碼到比特流中,而不是將實際的量化參數編碼到比特流中。使用量化比特數量作為示例性量化參數,進一步詳細討論量化過程。本原理還可以在使用其它量化參數時運用,所述其它量化參數例如但不限于量化步長。[0025]表1[0026][0027]表1示出了示例性量化表,其中量化比特數量被映射為量化索弓丨。具體地,[0028]QBtable[0]=2;[0029]QBtable[1]=4;[0030]QBtable[2]=5;[0031]QBtable[3]=6。[0032]對于特定頂點,我們將MaxErrorAllow標記為由用戶提供的質量要求(即,最大容許頂點坐標誤差),并將Error標記為原始實例和重構實例的頂點坐標之間的差異。對于該特定頂點,我們將量化頂點坐標誤差所需要的初始比特數量估計為:
當前第1頁
1 
2 
3 
4