TW202425629A - 點雲編解碼方法、裝置、設備及儲存媒介 - Google Patents
點雲編解碼方法、裝置、設備及儲存媒介 Download PDFInfo
- Publication number
- TW202425629A TW202425629A TW112133713A TW112133713A TW202425629A TW 202425629 A TW202425629 A TW 202425629A TW 112133713 A TW112133713 A TW 112133713A TW 112133713 A TW112133713 A TW 112133713A TW 202425629 A TW202425629 A TW 202425629A
- Authority
- TW
- Taiwan
- Prior art keywords
- equipment
- storage medium
- point cloud
- decoding method
- cloud encoding
- Prior art date
Links
Images
Abstract
一種點雲編解碼方法、裝置、設備及儲存媒介,該方法包括:在基於L3C2的點雲編解碼中,首先通過點雲所包括的總點數,以及該點雲的L3C2的節點總數,確定該點雲所包括的重複點總數,這樣在編解碼時,即時記錄已編解碼的重複點的個數,且將已編解碼的重複點的個數與點雲所包括的重複點總數進行比較,以確定在編解碼當前節點時,是否編解碼該節點的重複點資訊,例如,在編解碼當前點時,確定已編解碼的重複點的個數等於點雲的重複點總數,說明點雲中的重複點已編解碼結束,進而不需要編解碼後續節點的重複點資訊,進而提升了編解碼效率。
Description
本申請涉及點雲技術領域,尤其涉及一種點雲編解碼方法、裝置、設備及儲存媒介。
通過採集設備對物體表面進行採集,形成點雲資料,點雲資料包括幾十萬甚至更多的點。在視訊製作過程中,將點雲資料以點雲媒體檔的形式在點雲編碼設備和點雲解碼設備之間傳輸。但是,如此龐大的點給傳輸帶來了挑戰,因此,點雲編碼設備需要對點雲資料進行壓縮後傳輸。
點雲的壓縮也稱為點雲的編碼,在點雲編碼過程中,採用不同的編碼模型,將點雲中的點對應到節點中,對節點進行編碼,其中有些節點包括重複點。目前的編解碼方式,例如低時延低複雜度編碼模型(Low latency, Low complexity coding,簡稱L3C2),在編解碼L3C2中的每一個節點時,需要編解碼該節點的重複點資訊,進而降低了點雲的編解碼效率。
本申請實施例提供了一種點雲編解碼方法、裝置、設備及儲存媒介,以降低編解碼的複雜度、節約編解碼時間,進而提升點雲的編解碼效率。
第一方面,本申請實施例提供一種點雲解碼方法,包括:
解碼點雲的幾何碼流,得到所述點雲的低時延低複雜度編碼模型L3C2的節點總數,以及所述點雲的總點數;
根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數;
在解碼所述L3C2中的當前節點時,確定已解碼重複點的個數;
根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼。
第二方面,本申請提供了一種點雲編碼方法,包括:
確定點雲的低時延低複雜度編碼模型L3C2結構;
確定所述點雲的L3C2的節點總數和所述點雲的總點數;
根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數;
在編碼所述L3C2中的當前節點時,確定已編碼重複點的個數;
根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼。
第三方面,本申請提供了一種點雲解碼裝置,用於執行上述第一方面或其各實現方式中的方法。具體地,該裝置包括用於執行上述第一方面或其各實現方式中的方法的功能單元。
第四方面,本申請提供了一種點雲編碼裝置,用於執行上述第二方面或其各實現方式中的方法。具體地,該裝置包括用於執行上述第二方面或其各實現方式中的方法的功能單元。
第五方面,提供了一種點雲解碼器,包括處理器和記憶體。該記憶體用於儲存電腦程式,該處理器用於調用並運行該記憶體中儲存的電腦程式,以執行上述第一方面或其各實現方式中的方法。
第六方面,提供了一種點雲編碼器,包括處理器和記憶體。該記憶體用於儲存電腦程式,該處理器用於調用並運行該記憶體中儲存的電腦程式,以執行上述第二方面或其各實現方式中的方法。
第七方面,提供了一種點雲編解碼系統,包括點雲編碼器和點雲解碼器。點雲解碼器用於執行上述第一方面或其各實現方式中的方法,點雲編碼器用於執行上述第二方面或其各實現方式中的方法。
第八方面,提供了一種晶片,用於實現上述第一方面至第二方面中的任一方面或其各實現方式中的方法。具體地,該晶片包括:處理器,用於從記憶體中調用並運行電腦程式,使得安裝有該晶片的設備執行如上述第一方面至第二方面中的任一方面或其各實現方式中的方法。
第九方面,提供了一種電腦可讀儲存媒介,用於儲存電腦程式,該電腦程式使得電腦執行上述第一方面至第二方面中的任一方面或其各實現方式中的方法。
第十方面,提供了一種電腦程式產品,包括電腦程式指令,該電腦程式指令使得電腦執行上述第一方面至第二方面中的任一方面或其各實現方式中的方法。
第十一方面,提供了一種電腦程式,當其在電腦上運行時,使得電腦執行上述第一方面至第二方面中的任一方面或其各實現方式中的方法。
第十二方面,提供了一種碼流,碼流是基於上述第二方面的方法生成的,可選的,上述碼流包括第一參數和第二參數中的至少一個。
基於以上技術方案,在基於L3C2的點雲編解碼中,首先通過點雲所包括的總點數,以及該點雲的L3C2的節點總數,確定該點雲所包括的重複點總數,這樣在編解碼時,即時記錄已編解碼的重複點的個數,且將已編解碼的重複點的個數與點雲所包括的重複點總數進行比較,以確定在編解碼當前節點時,是否編解碼該節點的重複點資訊,例如,在編解碼當前點時,確定已編解碼的重複點的個數等於點雲的重複點總數,說明點雲中的重複點已編解碼結束,剩餘節點均不包括重複點,進而不需要編解碼後續節點的重複點資訊,進而降低了點雲的編解碼複雜度,節約了編解碼時間,進而提升了編解碼效率。
本申請可應用於點雲上採樣技術領域,例如可以應用於點雲壓縮技術領域。
為了便於理解本申請的實施例,首先對本申請實施例涉及到的相關概念進行如下簡單介紹:
點雲(Point Cloud)是指空間中一組無規則分佈的、表達三維物體或三維場景的空間結構及表面屬性的離散點集。圖1A為三維點雲圖像示意圖,圖1B為圖1A的局部放大圖,由圖1A和圖1B可知,點雲表面是由分佈稠密的點所組成的。
二維圖像在每一個像素點均有資訊表達,分佈規則,因此不需要額外記錄其位置資訊;然而點雲中的點在三維空間中的分佈具有隨機性和不規則性,因此需要記錄每一個點在空間中的位置,才能完整地表達一幅點雲。與二維圖像類似,採集過程中每一個位置均有對應的屬性資訊。
點雲資料(Point Cloud Data)是點雲的具體記錄形式,點雲中的點可以包括點的位置資訊和點的屬性資訊。例如,點的位置資訊可以是點的三維座標資訊。點的位置資訊也可稱為點的幾何資訊。例如,點的屬性資訊可包括顏色資訊、反射率資訊、法向量資訊等等。顏色資訊反映物體的色彩,反射率(reflectance)資訊反映物體的表面材質。所述顏色資訊可以是任意一種色彩空間上的資訊。例如,所述顏色資訊可以是(RGB)。再如,所述顏色資訊可以是於亮度色度(YcbCr,YUV)資訊。例如,Y表示明亮度(Luma),Cb (U)表示藍色色差,Cr (V)表示紅色,U和V表示為色度(Chroma)用於描述色差資訊。例如,根據雷射測量原理得到的點雲,所述點雲中的點可以包括點的三維座標資訊和點的雷射反射強度(reflectance)。再如,根據攝影測量原理得到的點雲,所述點雲中的點可以可包括點的三維座標資訊和點的顏色資訊。再如,結合雷射測量和攝影測量原理得到點雲,所述點雲中的點可以可包括點的三維座標資訊、點的雷射反射強度(reflectance)和點的顏色資訊。如圖2示出了一幅點雲圖像,其中,圖2示出了點雲圖像的六個觀看角度,表1示出了由檔頭資訊部分和資料部分組成的點雲資料儲存格式:
表1中,頭資訊包含了資料格式、資料表示類型、點雲總點數、以及點雲所表示的內容,例如,本例中的點雲為“.ply”格式,由ASCII碼表示,總點數為207242,每個點具有三維位置資訊XYZ和立體色彩資訊RGB。
點雲可以靈活方便地表達三維物體或場景的空間結構及表面屬性,並且由於點雲通過直接對真實物體採樣獲得,在保證精度的前提下能提供極強的真實感,因而應用廣泛,其範圍包括虛擬實境遊戲、電腦輔助設計、地理資訊系統、自動導航系統、數位文化遺產、自由視點廣播、三維沉浸遠端呈現、生物組織器官三維重建等。
點雲資料的獲取途徑可以包括但不限於以下至少一種:(1)電腦設備生成。電腦設備可以根據虛擬三維物體及虛擬三維場景的生成點雲資料。(2)3D(3-Dimension,三維)雷射掃描獲取。通過3D雷射掃描可以獲取靜態現實世界三維物體或三維場景的點雲資料,每秒可以獲取百萬級點雲資料;(3)3D攝影測量獲取。通過3D攝影設備(即一組攝像機或具有多個鏡頭和感測器的攝像機設備)對現實世界的視覺場景進行採集以獲取現實世界的視覺場景的點雲資料,通過3D攝影可以獲得動態現實世界三維物體或三維場景的點雲資料。(4)通過醫學設備獲取生物組織器官的點雲資料。在醫學領域可以通過磁共振成像(Magnetic Resonance Imaging,MRI)、電子電腦斷層掃描(Computed Tomography,CT)、電磁定位資訊等醫學設備獲取生物組織器官的點雲資料。
點雲可以按獲取的途徑分為:密集型點雲和稀疏性點雲。
點雲按照資料的時序類型劃分為:
第一類靜態點雲:即物體是靜止的,獲取點雲的設備也是靜止的;
第二類動態點雲:物體是運動的,但獲取點雲的設備是靜止的;
第三類動態獲取點雲:獲取點雲的設備是運動的。
按點雲的用途分為兩大類:
類別一:機器感知點雲,其可以用於自主導航系統、即時巡檢系統、地理資訊系統、視覺分揀機器人、搶險救災機器人等場景;
類別二:人眼感知點雲,其可以用於數位文化遺產、自由視點廣播、三維沉浸通訊、三維沉浸交互等點雲應用場景。
上述點雲獲取技術降低了點雲資料獲取成本和時間週期,提高了資料的精度。點雲資料獲取方式的變革,使大量點雲資料的獲取成為可能,伴隨著應用需求的增長,海量3D點雲資料的處理遭遇儲存空間和傳輸頻寬限制的瓶頸。
以幀率為30fps(幀每秒)的點雲視訊為例,每幀點雲的點數為70萬,每個點具有座標資訊xyz(float)和顏色資訊RGB(uchar),則10s點雲視訊的資料量大約為0.7million∙(4Byte∙3+1Byte∙3)∙30fps∙10s=3.15GB,而YUV採樣格式為4:2:0,幀率為24fps的1280∙720二維視訊,其10s的資料量約為1280∙720∙12bit∙24frames∙10s≈0.33GB,10s的兩視角3D視訊的資料量約為0.33Χ2=0.66GB。由此可見,點雲視訊的資料量遠超過相同時長的二維視訊和三維視訊的資料量。因此,為更好地實現資料管理,節省伺服器儲存空間,降低伺服器與用戶端之間的傳輸流量及傳輸時間,點雲壓縮成為促進點雲產業發展的關鍵問題。
下面對點雲編解碼的相關知識進行介紹。
圖3為本申請實施例涉及的一種點雲編解碼系統的示意性框圖。需要說明的是,圖3只是一種示例,本申請實施例的點雲編解碼系統包括但不限於圖3所示。如圖3所示,該點雲編解碼系統100包含編碼設備110和解碼設備120。其中編碼設備用於對點雲資料進行編碼(可以理解成壓縮)產生碼流,並將碼流傳輸給解碼設備。解碼設備對編碼設備編碼產生的碼流進行解碼,得到解碼後的點雲資料。
本申請實施例的編碼設備110可以理解為具有點雲編碼功能的設備,解碼設備120可以理解為具有點雲解碼功能的設備,即本申請實施例對編碼設備110和解碼設備120包括更廣泛的裝置,例如包含智慧手機、桌上型電腦、移動計算裝置、筆記本(例如,膝上型)電腦、平板電腦、機上盒、電視、相機、顯示裝置、數位媒體播放機、點雲遊戲控制台、車載電腦等。
在一些實施例中,編碼設備110可以經由通道130將編碼後的點雲資料(如碼流)傳輸給解碼設備120。通道130可以包括能夠將編碼後的點雲資料從編碼設備110傳輸到解碼設備120的一個或多個媒體和/或裝置。
在一個實例中,通道130包括使編碼設備110能夠即時地將編碼後的點雲資料直接發射到解碼設備120的一個或多個通訊媒體。在此實例中,編碼設備110可根據通訊標準來調製編碼後的點雲資料,且將調製後的點雲資料發射到解碼設備120。其中通訊媒體包含無線通訊媒體,例如射頻頻譜,可選的,通訊媒體還可以包含有線通訊媒體,例如一根或多根物理傳輸線。
在另一實例中,通道130包括儲存媒介,該儲存媒介可以儲存編碼設備110編碼後的點雲資料。儲存媒介包含多種本地存取式資料儲存媒介,例如光碟、DVD、快閃記憶體等。在該實例中,解碼設備120可從該儲存媒介中獲取編碼後的點雲資料。
在另一實例中,通道130可包含儲存伺服器,該儲存伺服器可以儲存編碼設備110編碼後的點雲資料。在此實例中,解碼設備120可以從該儲存伺服器中下載儲存的編碼後的點雲資料。可選的,該儲存伺服器可以儲存編碼後的點雲資料且可以將該編碼後的點雲資料發射到解碼設備120,例如web伺服器(例如,用於網站)、檔傳送協議(FTP)伺服器等。
一些實施例中,編碼設備110包含點雲編碼器112及輸出介面113。其中,輸出介面113可以包含調製器/解調器(數據機)和/或發射器。
在一些實施例中,編碼設備110除了包括點雲編碼器112和輸出介面113外,還可以包括點雲源111。
點雲源111可包含點雲採集裝置(例如,掃描器)、點雲存檔、點雲輸入介面、電腦圖形系統中的至少一個,其中,點雲輸入介面用於從點雲內容提供者處接收點雲資料,電腦圖形系統用於產生點雲資料。
點雲編碼器112對來自點雲源111的點雲資料進行編碼,產生碼流。點雲編碼器112經由輸出介面113將編碼後的點雲資料直接傳輸到解碼設備120。編碼後的點雲資料還可儲存於儲存媒介或儲存伺服器上,以供解碼設備120後續讀取。
在一些實施例中,解碼設備120包含輸入介面121和點雲解碼器122。
在一些實施例中,解碼設備120除包括輸入介面121和點雲解碼器122外,還可以包括顯示裝置123。
其中,輸入介面121包含接收器及/或數據機。輸入介面121可通過通道130接收編碼後的點雲資料。
點雲解碼器122用於對編碼後的點雲資料進行解碼,得到解碼後的點雲資料,並將解碼後的點雲資料傳輸至顯示裝置123。
顯示裝置123顯示解碼後的點雲資料。顯示裝置123可與解碼設備120整合或在解碼設備120外部。顯示裝置123可包括多種顯示裝置,例如液晶顯示器(LCD)、等離子體顯示器、有機發光二極體(OLED)顯示器或其它類型的顯示裝置。
此外,圖3僅為實例,本申請實施例的技術方案不限於圖3,例如本申請的技術還可以應用于單側的點雲編碼或單側的點雲解碼。
目前的點雲編碼器可以採用國際標準組織運動圖像專家組(Moving Picture Experts Group,MPEG)提出了兩種點雲壓縮編碼技術路線,分別是基於投影的點雲壓縮(Video-based Point Cloud Compression, VPCC)和基於幾何的點雲壓縮(Geometry-based Point Cloud Compression, GPCC)。VPCC通過將三維點雲投影到二維,利用現有的二維編碼工具對投影後的二維圖像進行編碼,GPCC利用層級化的結構將點雲逐級劃分為多個單元,通過編碼記錄劃分過程編碼整個點雲。
下面以GPCC編解碼框架為例,對本申請實施例可適用的點雲編碼器和點雲解碼器進行說明。
圖4A是本申請實施例提供的點雲編碼器的示意性框圖。
由上述可知點雲中的點可以包括點的位置資訊和點的屬性資訊,因此,點雲中的點的編碼主要包括位置編碼和屬性編碼。在一些示例中點雲中點的位置資訊又稱為幾何資訊,對應的點雲中點的位置編碼也可以稱為幾何編碼。
在GPCC編碼框架中,點雲的幾何資訊和對應的屬性資訊是分開編碼的。
如下圖4A所示,目前G-PCC的幾何編解碼可分為基於八叉樹的幾何編解碼和基於預測樹的幾何編解碼。
位置編碼的過程包括:對點雲中的點進行預處理,例如座標變換、量化和移除重複點等;接著,對預處理後的點雲進行幾何編碼,例如構建八叉樹,或構建預測樹,基於構建的八叉樹或預測樹進行幾何編碼形成幾何碼流。同時,基於構建的八叉樹或預測樹輸出的位置資訊,對點雲資料中各點的位置資訊進行重建,得到各點的位置資訊的重建值。
屬性編碼過程包括:通過給定輸入點雲的位置資訊的重建資訊和屬性資訊的原始值,選擇三種預測模式的一種進行點雲預測,對預測後的結果進行量化,並進行算術編碼形成屬性碼流。
如圖4A所示,位置編碼可通過以下單元實現:
座標轉換(Tanmsform coordinates)單元201、體素(Voxelize)單元202、八叉樹劃分(Analyze octree)單元203、幾何重建(Reconstruct geometry)單元204、算術編碼(Arithmetic enconde)單元205、表面擬合單元(Analyze surface approximation)206和預測樹構建單元207。
座標轉換單元201可用於將點雲中點的世界座標變換為相對座標。例如,點的幾何座標分別減去xyz座標軸的最小值,相當於去直流操作,以實現將點雲中的點的座標從世界座標轉換為相對座標。
體素(Voxelize)單元202也稱為量化和移除重複點(Quantize and remove points)單元,可通過量化減少座標的數目;量化後原先不同的點可能被賦予相同的座標,基於此,可通過去重操作將重複的點刪除;例如,具有相同量化位置和不同屬性資訊的多個雲可通過屬性轉換合併到一個雲中。在本申請的一些實施例中,體素單元202為可選的單元模組。
八叉樹劃分單元203可利用八叉樹(octree)編碼方式,編碼量化的點的位置資訊。例如,將點雲按照八叉樹的形式進行劃分,由此,點的位置可以和八叉樹的位置一一對應,通過統計八叉樹中有點的位置,並將其標識(flag)記為1,以進行幾何編碼。
在一些實施例中,在基於三角面片集(trianglesoup,trisoup)的幾何資訊編碼過程中,同樣也要通過八叉樹劃分單元203對點雲進行八叉樹劃分,但區別於基於八叉樹的幾何資訊編碼,該trisoup不需要將點雲逐級劃分到邊長為1x1x1的單位立方體,而是劃分到block(子塊)邊長為W時停止劃分,基於每個block中點雲的分佈所形成的表面,得到該表面與block的十二條邊所產生的至多十二個vertex(交點),通過表面擬合單元206對交點進行表面擬合,對擬合後的交點進行幾何編碼。
預測樹構建單元207可利用預測樹編碼方式,編碼量化的點的位置資訊。例如,將點雲按照預測樹的形式進行劃分,由此,點的位置可以和預測樹中節點的位置一一對應,通過統計預測樹中有點的位置,通過選取不同的預測模式對節點的幾何位置資訊進行預測得到預測殘差,並且利用量化參數對幾何預測殘差進行量化。最終通過不斷反覆運算,對預測樹節點位置資訊的預測殘差、預測樹結構以及量化參數等進行編碼,生成二進位碼流。
幾何重建單元204可以基於八叉樹劃分單元203輸出的位置資訊或表面擬合單元206擬合後的交點進行位置重建,得到點雲資料中各點的位置資訊的重建值。或者,基於預測樹構建單元207輸出的位置資訊進行位置重建,得到點雲資料中各點的位置資訊的重建值。
算術編碼單元205可以採用熵編碼方式對八叉樹分析單元203輸出的位置資訊或對表面擬合單元206擬合後的交點,或者預測樹構建單元207輸出的幾何預測殘差值進行算術編碼,生成幾何碼流;幾何碼流也可稱為幾何位元流(geometry bitstream)。
屬性編碼可通過以下單元實現:
顏色轉換(Transform colors)單元210、重著色(Transfer attributes)單元211、區域自我調整分層變換(Region Adaptive Hierarchical Transform,RAHT)單元212、生成LOD(Generate LOD)單元213以及提升(lifting transform)單元214、量化係數(Quantize coefficients)單元215以及算術編碼單元216。
需要說明的是,點雲編碼器200可包含比圖4A更多、更少或不同的功能組件。
顏色轉換單元210可用於將點雲中點的RGB色彩空間變換為YCbCr格式或其他格式。
重著色單元211利用重建的幾何資訊,對顏色資訊進行重新著色,使得未編碼的屬性資訊與重建的幾何資訊對應起來。
經過重著色單元211轉換得到點的屬性資訊的原始值後,可選擇任一種變換單元,對點雲中的點進行變換。變換單元可包括:RAHT變換單元212和提升(lifting transform)單元214。其中,提升變化依賴生成細節層(level of detail,LOD)。
RAHT變換和提升變換中的任一項可以理解為用於對點雲中點的屬性資訊進行預測,以得到點的屬性資訊的預測值,進而基於點的屬性資訊的預測值得到點的屬性資訊的殘差值。例如,點的屬性資訊的殘差值可以是點的屬性資訊的原始值減去點的屬性資訊的預測值。
在本申請的一實施例中,生成LOD單元生成LOD的過程包括:根據點雲中點的位置資訊,獲取點與點之間的歐式距離;根據歐式距離,將點分為不同的細節表達層。在一個實施例中,可以將歐式距離進行排序後,將不同範圍的歐式距離劃分為不同的細節表達層。例如,可以隨機挑選一個點,作為第一細節表達層。然後計算剩餘點與該點的歐式距離,並將歐式距離符合第一閾值要求的點,歸為第二細節表達層。獲取第二細節表達層中點的質心,計算除第一、第二細節表達層以外的點與該質心的歐式距離,並將歐式距離符合第二閾值的點,歸為第三細節表達層。以此類推,將所有的點都歸到細節表達層中。通過調整歐式距離的閾值,可以使得每層LOD層的點的數量是遞增的。應理解,LOD劃分的方式還可以採用其它方式,本申請對此不進行限制。
需要說明的是,可以直接將點雲劃分為一個或多個細節表達層,也可以先將點雲劃分為多個點雲切塊(slice),再將每一個點雲切塊劃分為一個或多個LOD層。
例如,可將點雲劃分為多個點雲切塊,每個點雲切塊的點的個數可以在55萬-110萬之間。每個點雲切塊可看成單獨的點雲。每個點雲切塊又可以劃分為多個細節表達層,每個細節表達層包括多個點。在一個實施例中,可根據點與點之間的歐式距離,進行細節表達層的劃分。
量化單元215可用於量化點的屬性資訊的殘差值。例如,若量化單元215和RAHT變換單元212相連,則量化單元215可用於量化RAHT變換單元212輸出的點的屬性資訊的殘差值。
算術編碼單元216可使用零行程編碼(Zero run length coding)對點的屬性資訊的殘差值進行熵編碼,以得到屬性碼流。所述屬性碼流可以是位元流資訊。
圖4B是本申請實施例提供的點雲解碼器的示意性框圖。
如圖4B所示,解碼器300可以從編碼設備獲取點雲碼流,通過解析碼得到點雲中的點的位置資訊和屬性資訊。點雲的解碼包括位置解碼和屬性解碼。
位置解碼的過程包括:對幾何碼流進行算術解碼;構建八叉樹後進行合併,對點的位置資訊進行重建,以得到點的位置資訊的重建資訊;對點的位置資訊的重建資訊進行座標變換,得到點的位置資訊。點的位置資訊也可稱為點的幾何資訊。
屬性解碼過程包括:通過解析屬性碼流,獲取點雲中點的屬性資訊的殘差值;通過對點的屬性資訊的殘差值進行反量化,得到反量化後的點的屬性資訊的殘差值;基於位置解碼過程中獲取的點的位置資訊的重建資訊,選擇如下RAHT逆變換和提升逆變換中的一種進行點雲預測,得到預測值,預測值與殘差值相加得到點的屬性資訊的重建值;對點的屬性資訊的重建值進行顏色空間逆轉換,以得到解碼點雲。
如圖4B所示,位置解碼可通過以下單元實現:
算數解碼單元301、八叉樹合成(synthesize octree)單元302、表面擬合單元(Synthesize suface approximation)303、幾何重建(Reconstruct geometry)單元304、逆座標變換(inverse transform coordinates)單元305和預測樹重建單元306。
屬性編碼可通過以下單元實現:
算數解碼單元310、反量化(inverse quantize)單元311、RAHT逆變換單元312、生成LOD(Generate LOD)單元313、提升逆變換(Inverse lifting)單元314以及逆顏色轉換(inverse trasform colors)單元315。
需要說明的是,解壓縮是壓縮的逆過程,類似的,解碼器300中的各個單元的功能可參見編碼器200中相應的單元的功能。另外,點雲解碼器300可包含比圖4B更多、更少或不同的功能組件。
例如,解碼器300可根據點雲中點與點之間的歐式距離將點雲劃分為多個LOD;然後,依次對LOD中點的屬性資訊進行解碼;例如,計算零行程編碼技術中零的數量(zero_cnt),以基於zero_cnt對殘差進行解碼;接著,解碼框架200可基於解碼出的殘差值進行反量化,並基於反量化後的殘差值與當前點的預測值相加得到該點雲的重建值,直到解碼完所有的點雲。當前點將會作為後續LOD中點的最鄰近點,並利用當前點的重建值對後續點的屬性資訊進行預測。
上述是基於GPCC編解碼框架下的點雲編解碼器的基本流程,隨著技術的發展,該框架或流程的一些模組或步驟可能會被優化,本申請適用於該基於GPCC編解碼框架下的點雲編解碼器的基本流程,但不限於該框架及流程。
下面對基於八叉樹的幾何編碼和基於預測樹的幾何編碼進行介紹。
基於八叉樹的幾何編碼包括:首先對幾何資訊進行座標轉換,使點雲全都包含在一個bounding box(包圍盒)中。然後再進行量化,這一步量化主要起到縮放的作用,由於量化取整,使得一部分點的幾何資訊相同,根據參數來決定是否移除重複點,量化和移除重複點這一過程又被稱為體素化過程。接下來,按照廣度優先遍歷的順序不斷對bounding box進行樹劃分(八叉樹/四叉樹/二叉樹),對每個節點的占位元碼進行編碼。在一種隱式幾何的劃分方式中,首先計算點雲的包圍盒
,假設,該
包圍盒對應為一個長方體。在幾何劃分時,首先會基於x軸一直進行二叉樹劃分,得到兩個子節點;直到滿足
條件時,才會基於x和y軸一直進行四叉樹劃分,得到四個子節點;當最終滿足
條件時,會一直進行八叉樹劃分,直到劃分得到的葉子結點為1x1x1的單位立方體時停止劃分,對葉子結點中的點進行編碼,生成二進位碼流。在基於二叉樹/四叉樹/八叉樹劃分的過程中,引入兩個參數:K、M。參數K指示在進行八叉樹劃分之前二叉樹/四叉樹劃分的最多次數;參數M用來指示在進行二叉樹/四叉樹劃分時對應的最小塊邊長為
。同時K和M必須滿足條件:假設
,參數K滿足:
;參數M滿足:
。參數K與M之所以滿足上述的條件,是因為目前G-PCC在幾何隱式劃分的過程中,劃分方式的優先順序為二叉樹、四叉樹和八叉樹,當節點塊大小不滿足二叉樹/四叉樹的條件時,才會對節點一直進行八叉樹的劃分,直到劃分到葉子節點最小單位1Χ1Χ1。但基於八叉樹的幾何資訊編碼模式僅對空間中具有相關性的點有高效的壓縮速率,而對於在幾何空間中處於孤立位置的點來說,使用直接編碼模式(Direct Coding Model ,簡稱DCM)編碼方式可以大大降低複雜度。對於八叉樹中的所有節點,DCM的使用不是通過標誌位元資訊來表示的,而是通過當前節點的父節點和鄰居資訊來進行推斷得到。判斷當前節點是否具有DCM編碼資格的方式有以下兩種:
(1)當前節點僅有一個被佔據子節點,同時當前節點父節點的父節點僅有兩個被佔據子節點,即當前節點最多只有一個鄰居節點。
(2)當前節點的父節點僅有當前節點一個佔據子節點,同時與當前節點共用一個面的六個鄰居節點也都屬於空節點。
如果當前節點不具有DCM編碼資格將對其進行八叉樹劃分,若具有DCM編碼資格將進一步判斷該節點中包含的點數,當點數小於閾值2時,則對該節點進行DCM編碼,否則將繼續進行八叉樹劃分。當應用DCM編碼模式時,當前節點中包含點的幾何座標X,Y,Z分量將分別獨立地被直接編碼。當一個節點的邊長為
時,對該節點幾何座標的x、y和z每一個分量進行編碼時需要dx, dy, dz位元,該位元資訊直接被編進碼流中。
需要注意的是,在節點劃分到葉子節點時,在幾何無損編碼的情況下,需要對葉子節點中的重複點數目進行編碼。最終對所有節點的占位元資訊進行編碼,生成二進位碼流。另外G-PCC目前引入了一種平面編碼模式,在對幾何進行劃分的過程中,會判斷當前節點的子節點是否處於同一平面,如果當前節點的子節點滿足同一平面的條件,會用該平面對當前節點的子節點進行表示。
在基於八叉樹的幾何解碼,解碼端按照廣度優先遍歷的順序,通過不斷解析得到每個節點的占位碼,並且依次不斷劃分節點,直至劃分得到1x1x1的單位立方體時停止劃分,解析得到每個葉子節點中包含的點數,最終恢復得到幾何重構點雲資訊。
在基於trisoup(triangle soup,三角面片集)的幾何資訊編碼框架中,同樣也要先進行幾何劃分,但區別於基於二叉樹/四叉樹/八叉樹的幾何資訊編碼,該方法不需要將點雲逐級劃分到邊長為1x1x1的單位立方體,而是劃分到block(子塊)邊長為W時停止劃分,基於每個block中點雲的分佈所形成的表面,得到該表面與block的十二條邊所產生的至多十二個vertex(交點)。依次編碼每個block的vertex座標,生成二進位碼流。
基於trisoup的點雲幾何資訊重建,在解碼端進行點雲幾何資訊重建時,首先解碼vertex座標用於完成三角面片重建,該過程如圖5A至圖5C所示。圖5A所示的block中存在3個vertex(v1,v2,v3),利用這3個vertex按照一定順序所構成的三角面片集被稱為triangle soup,即trisoup,如圖5B所示。之後,在該三角面片集上進行採樣,將得到的採樣點作為該block內的重建點雲,如圖5C所示。
基於預測樹的幾何編碼包括:首先對輸入點雲進行排序,目前採用的排序方法包括無序、莫頓序、方位角序和徑向距離序。在編碼端通過利用兩種不同的方式建立預測樹結構,其中包括:KD-Tree(高時延慢速模式)和利用雷射雷達標定資訊,將每個點劃分到不同的Laser上,按照不同的Laser建立預測結構(低時延快速模式)。接下來基於預測樹的結構,遍歷預測樹中的每個節點,通過選取不同的預測模式對節點的幾何位置資訊進行預測得到預測殘差,並且利用量化參數對幾何預測殘差進行量化。最終通過不斷反覆運算,對預測樹節點位置資訊的預測殘差、預測樹結構以及量化參數等進行編碼,生成二進位碼流。
基於預測樹的幾何解碼,解碼端通過不斷解析碼流,重構預測樹結構,其次通過解析得到每個預測節點的幾何位置預測殘差資訊以及量化參數,並且對預測殘差進行反量化,恢復得到每個節點的重構幾何位置資訊,最終完成解碼端的幾何重構。
幾何編碼完成後,對幾何資訊進行重建。目前,屬性編碼主要針對顏色資訊進行。首先,將顏色資訊從RGB顏色空間轉換到YUV顏色空間。然後,利用重建的幾何資訊對點雲重新著色,使得未編碼的屬性資訊與重建的幾何資訊對應起來。在顏色資訊編碼中,主要有兩種變換方法,一是依賴於LOD(Level of Detail,細節層次)劃分的基於距離的提升變換,二是直接進行RAHT(Region Adaptive Hierarchal Transform,區域自我調整分層變換)變換,這兩種方法都會將顏色資訊從空間域轉換到頻域,通過變換得到高頻係數和低頻係數,最後對係數進行量化並編碼,生成二進位碼流。
在利用幾何資訊來對屬性資訊進行預測時,可以利用莫頓碼進行最近鄰居搜索,點雲中每點對應的莫頓碼可以由該點的幾何座標得到。計算莫頓碼的具體方法描述如下所示,對於每一個分量用d位元二進位數字表示的三維座標,其三個分量可以表示為公式(1):
(1)
其中,
分別是
,
,
的最高位(
)到最低位(
)對應的二進位數字值。莫頓碼M是對
,
,
從最高位開始,依次交叉排列
到最低位,M的計算公式如下公式(2)所示:
(2)
其中,
分別是M的最高位
到最低位(
)的值。在得到點雲中每個點的莫頓碼M後,將點雲中的點按莫頓碼由小到大的順序進行排列,並將每個點的權值w設為1。
GPCC的通用測試條件共4種:
條件1:幾何位置有限度有損、屬性有損;
條件2:幾何位置無損、屬性有損;
條件3:幾何位置無損、屬性有限度有損;
條件4:幾何位置無損、屬性無損。
GPCC的通用測試序列包括Cat1A,Cat1B,Cat3-fused,Cat3-frame共四類,其中Cat2-frame點雲只包含反射率屬性資訊,Cat1A、Cat1B點雲只包含顏色屬性資訊,Cat3-fused點雲同時包含顏色和反射率屬性資訊。
GPCC的技術路線:共2種,以幾何壓縮所採用的演算法進行區分。
技術路線1:八叉樹編碼分支:
在編碼端,將包圍盒依次劃分得到子立方體,對非空的(包含點雲中的點)的子立方體繼續進行劃分,直到劃分得到的葉子結點為1Χ1Χ1的單位立方體時停止劃分,在幾何無損編碼情況下,需要對葉子節點中所包含的點數進行編碼,最終完成幾何八叉樹的編碼,生成二進位碼流。
在解碼端,解碼端按照廣度優先遍歷的順序,通過不斷解析得到每個節點的占位碼,並且依次不斷劃分節點,直至劃分得到1x1x1的單位立方體時停止劃分,在幾何無損解碼的情況下,需要解析得到每個葉子節點中包含的點數,最終恢復得到幾何重構點雲資訊。
技術路線2:預測樹編碼分支:
在編碼端通過利用兩種不同的方式建立預測樹結構,其中包括:KD-Tree(高時延慢速模式)和利用雷射雷達標定資訊,將每個點劃分到不同的Laser上,按照不同的Laser建立預測結構(低時延快速模式)。接下來基於預測樹的結構,遍歷預測樹中的每個節點,通過選取不同的預測模式對節點的幾何位置資訊進行預測得到預測殘差,並且利用量化參數對幾何預測殘差進行量化。最終通過不斷反覆運算,對預測樹節點位置資訊的預測殘差、預測樹結構以及量化參數等進行編碼,生成二進位碼流。
在解碼端,解碼端通過不斷解析碼流,重構預測樹結構,其次通過解析得到每個預測節點 的幾何位置預測殘差資訊以及量化參數,並且對預測殘差進行反量化,恢復得到每個節點的重構幾何位置資訊,最終完成解碼端的幾何重構。
下面對L3C2編解碼框架進行介紹。
如圖6所示,L3C2編碼端演算法:
構建單鏈結構的輸入:體素化後的點雲、旋轉雷射雷達的先驗資訊。
構建單鏈結構的輸出:當前點的幾何預測值及預測殘差、當前點採用的預測模式、當前點的量化參數、重複點數和以及當每種模式所對應跳過的點數。
如圖6所示,構建L3C2具體分為:重排序、座標轉換、建立單鏈結構、選擇預測模式、生成預測值、重複點數的編碼、預測殘差的量化、座標逆轉換、座標轉換殘差的編碼。
下面對L3C2編碼過程的各步驟分別進行介紹:
1)重排序
對體素化後的點雲進行重排序以構建更高效的單鏈結構,預設的排序方法是按雷射雷達的掃描順序進行排序。
示例性的,將每個點的笛卡爾座標
轉化為極座標
,並依次根據仰角正切值
、方位角
、半徑
對各點進行排序。
2)座標轉換
根據排序後的結果遍歷點雲,將點由笛卡爾座標
按照以下公式(4)轉換為柱面座標
並進行儲存。
(4)
其中,i即點對應的LaserID(一個典型的雷射雷達系統可能有16、32或64個Laser Scanner,每個laser的先驗資訊不同即仰角
和在垂直方向上的高度
不同),i的確定是通過迴圈不同Laser的先驗資訊,在每次迴圈中利用點的r、先驗資訊和以上轉換公式計算點的z分量,並計算該轉換而來的z分量與點的原始z分量之間的偏差,進而從不同LaserID中選擇出偏差最小的作為該點的i,此過程對點雲在空間中垂直方向的非均勻分佈進行了處理,使其規則化。
3)建立單鏈結構
圖7A是基於柱面座標
對點雲中的點進行排序,得到的單鏈結構。
由於雷射雷達點雲是通過利用雷射掃描器來對物體進行掃描的,具體的掃描示意圖如圖8所示。可以利用雷射掃描器的採集參數得到每個Laser的旋轉間隔即Δφ,通過利用Δφ來對圖7A所示的單鏈結構在垂直方向(即φ方向)進行規則化處理,得到如圖7B所示的規則化後的單鏈結構。
示例性的,可以通過如下公式(5)對圖7A所示的單鏈結構在垂直方向進行規則化處理:
(5)
其中,round()為四捨五入函數。
本申請實施例,整個編碼過程均是以規則化後的單鏈結構為例進行。
在得到圖8所示的規則化結構之後,計算每個點在單鏈結構中的順序(order)o(P)。
示例性的,通過如下公式(6)計算每個點在單鏈結構中對應的o(P):
o(P) = φc* Nlaser + i (6)
其中,Nlaser表示Laser的數目,i表示當前點對應的LaserID,φc表示當前點規則化後的φ分量。在得到每個點在單鏈結構中的order即o(P)後,對o(P)進行編碼。
4)預測模式選擇
示例性的,按照如圖9所示的結構對每個點進行預測編碼。對於每個點建立一個預測列表,其中包含N(假設N=5)個參考值。在編碼端利用率失真優化準則選取最佳的預測模式predMode,需要將預測模式進行編碼。
在編碼完之後,需要對預測列表的值進行更新,更新準則如下所示:
準則1、當預測殘差大於一定閾值(Th)時,則將當前點更新到預測列表內,並且將最後的一個預測值進行刪除。
準則2、當預測殘差小於或等於一定閾值(Th)時,則將所選取的預測值進行刪除,並將當前點更新到預測列表內。
5)預測殘差的量化
基於上述確定的預測模式和預測列表,確定當前點的預測值假設為(rpred, φpred),基於當前點的預測值和原始值,確定出當前點的預測殘差值假定為(rres, φres)。
接著,對當前點的預測殘差值(rres, φres)進行量化得到(Qrres, Qφres)。
示例性的,x和y對應的量化因數的確定原理如圖10所示,r和φ對應的量化因數的確定原理如圖11所示。
示例性的,根據如下公式(7)和公式(8)分別計算得到r和φ對應的量化因數Δr和Δϕ:
Δr = ΔQ / (|cosϕc| + |sinϕc|) (7)
Δϕ = Δr/r (8)
確定出量化因數Δr和Δϕ後,對當前點的預測殘差值進行量化,例如,
並對量化後的預測殘差值進行編碼。
6)重複點數的編碼
對當前點在笛卡爾座標下的重複點數目進行編碼。
7)座標逆轉換
將當前點的重建柱面座標( rrec, φrec,i)按照以下公式(9)轉換為笛卡爾座標
,
即為當前點的預測笛卡爾座標。
=
=
=
(9)
其中,
為點對應的LaserID,每個laser的先驗資訊不同即仰角
和在垂直方向上的高度
不同,因此第
個Laser對應的仰角為
,在垂直方向上的高度為
。
8)座標轉換殘差的編碼
利用當前點的座標(x,y,z)以及座標逆轉換得到的座標
得到座標轉換殘差(Δx,Δy,Δz)之後,幾何有損情況下,對Δx,Δy殘差分量不進行編碼,並且對Δz進行殘差量化編碼。而對於無損編碼情況下,需要對座標轉換殘差進行編碼。
下面對L3C2的解碼過程進行介紹。
重構單鏈結構的輸入:解碼後資料(包括當前點採用的預測模式、當前點的預測殘差、當前點的量化參數、重複點數、每個點的Order)、旋轉雷射雷達的先驗資訊。
重構單鏈結構的輸出:重建的體素化後點雲。
如圖12所示,重構單鏈結構具體分為四步:生成預測值、重建單鏈結構、解碼重複點數、座標逆轉換、重建幾何點雲。下面分別進行介紹:
1)生成預測值
根據解碼得到的當前點採用的預測模式及其祖先的重建柱面座標對當前點的柱面座標進行預測並生成對應的預測值,具體過程如下:
示例性的,按照如圖9所示的結構對每個點進行預測編碼。對於每個點建立一個預測列表,其中包含N(假設N=5)個參考值。在解碼端通過從碼流中解析得到當前點的預測模式predMode,其次利用預測模式predMode在預測列表中得到當前點的柱面座標預測值(rpred, φpred)。
笛卡爾座標預測值為點的柱面座標重建值( rrec, φrec,i)逆轉換得到的
;
對柱面座標系下的預測殘差分量進行反量化,以及預測值來恢復得到當前點的重建柱面座標( rrec, φrec,i)。
2)重建L3C2結構
通過上一步可得當前點的柱面座標預測值(rpred, φpred)。接下來按照以下公式(10)利用解碼得到的柱面座標殘差(Qrres, Qφres)和當前點的預測柱面座標(rpred, φpred)計算當前點的重建柱面座標( rrec, φrec,i)。
Δr = ΔQ / (|cosϕc| + |sinϕc|)
Δϕ = Δr/r
(10)
通過解析當前點在單鏈結構中的順序(order)o(P),可以確定當前點在L3C2結構的位置,以及重建柱面座標
從而重建L3C2結構。
3)解碼重複點數目
對當前點的重複點數目進行解碼。
4)座標逆轉換
將當前點的重建柱面座標
,即上述的重建柱面座標( rrec, φrec,i),按照以下公式(11)轉換為笛卡爾座標
,
即為當前點的預測笛卡爾座標。
(11)
其中,
為點對應的LaserID,每個laser的先驗資訊不同即仰角
和在垂直方向上的高度
不同,因此第
個Laser對應的仰角為
,在垂直方向上的高度為
。
6)重建幾何點雲
示例性的,按照以下公式(12)利用解碼得到的笛卡爾座標殘差
和當前點的預測笛卡爾座標
計算當前點的重建笛卡爾座標
。
(12)
最終,即得到了重建的體素化後的點雲。
上文對基於L3C2的編解碼方法進行介紹,由上述可知,在基於L3C2的編解碼中,對於L3C2中的每一個節點,均需要編解碼該節點的重複點資訊,但是並不是每一個節點上均具有重複點,因此,對每一個編解碼重複點資訊,增加了編解碼的複雜度,且浪費大量編解碼時間,使得編解碼效率低。
為了解決上述技術問題,本申請實施例在基於L3C2的點雲編解碼中,首先通過點雲所包括的總點數,以及該點雲的L3C2的節點總數,確定該點雲所包括的重複點總數,這樣在編解碼時,即時記錄已編解碼的重複點的個數,且將已編解碼的重複點的個數與點雲所包括的重複點總數進行比較,以確定在編解碼當前節點時,是否編解碼該節點的重複點資訊,例如,在編解碼當前點時,確定已編解碼的重複點的個數等於點雲的重複點總數,說明點雲中的重複點已編解碼結束,剩餘節點均不包括重複點,進而不需要編解碼後續節點的重複點資訊,進而降低了點雲的編解碼複雜度,節約了編解碼時間,進而提升了編解碼效率。
下面結合具體的實施例,對本申請實施例涉及的點雲編解碼方法進行介紹。
首先,以解碼端為例,對本申請實施例提供的點雲解碼方法進行介紹。
圖13為本申請一實施例提供的點雲解碼方法流程示意圖。本申請實施例的點雲解碼方法可以由上述圖3或圖4B所示的點雲解碼設備完成。
如圖13所示,本申請實施例的點雲解碼方法包括:
S101、解碼點雲的幾何碼流,得到點雲的L3C2的節點總數,以及點雲的總點數。
由上述可知,點雲包括幾何資訊和屬性資訊,對點雲的解碼包括幾何解碼和屬性解碼。本申請實施例涉及點雲的幾何解碼。
在一些實施例中,點雲的幾何資訊也稱為點雲的位置資訊,因此,點雲的幾何解碼也稱為點雲的位置解碼。
在基於L3C2的編碼方式中,編碼端基於點雲的幾何資訊,構建點雲的L3C2結構,L3C2結構為鏈結構,由至少一個單鏈結構組成,每個單鏈結構中包括至少一個節點。一個節點包括至少一個點雲中的點,也就是說,在L3C2編碼中,將點雲中的點劃分至L3C2中的節點上。
在一些實施例中,由於點雲中的有些點的座標資訊相同,因此,這些座標相同的點被劃分到L3C2的同一個節點上,使得該節點包括重複點。
在一些實施例中,構建點雲的L3C2時,需要對點雲中的點進行座標轉換,例如,將點雲中的點在第二座標系下的座標轉換為第一座標系下的座標時,可能會使得第二座標系下座標不同的點,轉換到第一座標系下時,座標變得相同。這樣基於第一座標系下點的座標進行L3C2構建時,會將第一座標系下座標相同的點劃分到一個節點上,進而使得該節點包括重複點。
當然可能還有其他的情況,使得點雲的L3C2中的節點包括重複點。
目前編碼端在對L3C2中的每一個節點進行編碼時,需要編碼每一個節點的重複點資訊。對應的,解碼端在解碼時,對每一個節點的重複點資訊解碼。這樣會增加編解碼的複雜度,浪費編解碼時間,降低編解碼效率。
由上述可知,在點雲的L3C2中,並不是每一個節點具有重複點,甚至可以理解的是,點雲的L3C2中只有較少的節點包括重複點。基於此,本申請實施例中,在解碼時,首先確定出該點雲所包括的重複點總數,且在解碼過程中,對已解碼的重複點的個數進行統計,進而在解碼每一個點之前,首先判斷統計的當前已解碼的重複點的個數是否已經等於點雲所包括的重複點總數。若當前已解碼的重複點的個數等於點雲所包括的重複點總數時,說明點雲中的重複點均已解碼完成,L3C2中的剩餘待解碼的節點上均不包括重複節點,這樣在後續對這些節點進行解碼時,不再解碼這些節點的重複點資訊,進而降低點雲的解碼複雜度,節約了解碼時間,進而提升了解碼效率。
本申請實施例對解碼端獲得點雲的L3C2的節點總數和點雲的總點數的具體方式不做限制。
在一些實施例中,編碼端將點雲的L3C2的節點總數和點雲的總點數寫入幾何碼流。這樣,解碼端通過解碼幾何碼流,得到點雲的L3C2的節點總數和點雲的總點數。
在一些實施例中,編碼端將點雲所包括的單鏈數量,以及每個單鏈所包括的節點數目寫入幾何碼流。這樣,解碼端解碼點雲的幾何碼流,得到點雲所包括的單鏈數量headsCount,以及每一個單鏈所包括的節點數量,進而基於單鏈數量,以及每個單鏈所包括的節點數量,得到L3C2的節點總數。例如,將各個單鏈所包括的節點數量之和,確定為L3C2的節點總數。
在該實施例的一種示例中,可以通過如下指令,將點雲所包括的各單鏈上的節點進行相加,得到L3C2的節點總數nodeCount:
for( index= 0; index< headsCount; index++ )
nodeCount+=nodeCnt
在一些實施例中,編碼端將點雲的總點數寫入點雲的幾何資料單元中。這樣,解碼端通過解碼點雲的幾何資料單元,得到點雲的總點數。
在一些實施例中,由於點雲至少包括一個點,為了節約碼字,則編碼端在編碼點雲的總點數時,對點雲的總點數減一,得到第一值,將該第一值寫入幾何資料單元中,即第一值表示為slice_num_points_minus1。對應的,解碼端在解碼時,解碼幾何資料單元,得到第一值,接著對該第一值加1,得到點雲的總點數。
在一種示例中,幾何資料單元的腳本語法(Geometry data unit footer syntax)如表2所示:
表2中,slice_num_points_minus1加1,用於指定點雲的總點數。位元流一致性要求slice_num_points_minus1加1應等於可解碼點的數量。解碼器不應依賴位元流一致性來防止實現緩衝區溢位。
也就是說,解碼端通過解碼表2所示的幾何資料單元,得到第一值slice_num_points_minus1,對第一值加1,得到點雲的總點數。
解碼端基於上述方法,得到點雲的L3C2的節點總數,以及點雲的總點數後,執行如下S102的步驟。
S102、根據點雲的總點數和L3C2的節點總數,確定點雲的重複點總數。
解碼端確定出點雲的L3C2的節點總數,以及點雲的總點數後,根據點雲的總點數和L3C2的節點總數,確定點雲的重複點總數,進而以點雲的重複點總數作為監督,進行後續的解碼。
本申請實施例對解碼端根據點雲的L3C2的節點總數,以及點雲的總點數,確定點雲的重複點總數的具體方式不做限制。
在一種可能的實現方式中,在資料傳輸或編碼等過程中,可以會丟失或損毀部分點的資訊。解碼端可以對幾何碼流進行淺層解碼,確定出幾何碼流中所包括的節點個數,進而基於幾何碼流中所包括的節點個數,以及上述步驟確定出的點雲的總點數和L3C2的節點總數,確定點雲的重複點總數。
在另一種可能的實現方式中,直接將點雲的總點數和L3C2的節點總數之間的差值,確定為點雲的重複點總數。
示例性的,解碼端通過如下公式(13),確定出點雲的重複點總數:
dupSumNum=(slice_num_points_minus1+1)-nodeCount (13)
其中,dupSumNum為點雲的重複點總數,slice_num_points_minus1+1為點雲的總點數,nodeCount為L3C2的節點總數。
解碼端基於上述步驟,確定出點雲的重複點總數後,開始對L3C2中的各點進行解碼,具體參照下面S103。
S103、在解碼L3C2中的當前節點時,確定已解碼重複點的個數。
本申請實施例中,解碼端解碼L3C2中每一個節點的方式相同,為了便於描述,以L3C2中的當前節點為例進行說明。
在一種示例中,用dupCount表示當前已解碼的重複點的個數,dupCount初始化為0,在解碼L3C2中的第一個節點時,dupCount=0,小於點雲的重複點總數dupSumNum,則解碼第一個節點時,需要對該第一個節點的重複點資訊進行解碼。可選的,第一個節點的重複點資訊包括該第一個節點所包括的重複點的個數,假設第一個節點包括的重複點的個數為a,則將dupCount更新為a。接著,解碼L3C2中的第二個節點,在解碼第二節點之前,首先判斷dupCount=a是否等於點雲的重複點總數dupSumNum,若否,則繼續解碼該第二節點的重複點資訊,並使用該第二節點所包括的重複點的個數對當前的dupCount進行更新,依次類推。
由於上述可知,解碼端在解碼L3C2中的當前節點時,首先確定在解碼當前節點之前,已解碼的重複點的個數,即已解碼重複點的個數dupCount,進而基於該已解碼重複點的個數dupCount,確定是否解碼當前節點的重複點資訊。
在一種示例中,解碼端通過如下指令,記錄已解碼重複點的個數:
for( index= 0; index< nodeCount; index++ )
dupCount+=dupPointNum
其中,dupPointNum表示節點所包括的重複點的個數。
S104、根據已解碼重複點的個數和點雲的重複點總數,對當前節點進行解碼。
解碼端在解碼當前節點時,將已解碼重複點的個數和點雲的重複點總數進行比較,以對當前節點進行解碼。
具體的,上述S104的實現過程包括如下幾種情況:
情況1,若已解碼重複點的個數等於點雲的重複點總數,則上述S104包括S104-A1和S104-A2:
S104-A1、跳過解碼當前節點的重複點資訊;
S104-A2、確定當前節點所包括的第一點的幾何重建值。
在情況1中,在解碼當前節點時,若確定解碼重複點的個數等於點雲的重複點總數,則說明所有重複點已經解碼結束,L3C2的剩餘節點均不包括重複點。基於此,在解碼當前節點時,則跳過重複點資訊的解碼,進而降低解碼複雜度,節約解碼時間,提升解碼效率。
此時,可以確定當前節點只包括一個點,記為第一點,接著,確定該第一點的幾何重建值。
需要說明的是,確定第一點的幾何重建值的過程具體可以參照如下步驟11至步驟13的描述,在此不再贅述。
上文對情況1,若已解碼重複點的個數等於點雲的重複點總數,則跳過解碼當前節點的重複點資訊,並確定當前節點所包括的第一點的幾何重建值的過程進行介紹。
情況2,若重複點資訊包括當前節點所包括的重複點的個數,已解碼重複點的個數小於點雲的重複點總數,且當前節點為L3C2中的最後一個節點時,上述S104包括S104-C1和S104-C2:
S104-A1、跳過解碼當前節點的重複點資訊;
S104-A2、將點雲的重複點總數與已解碼重複點的個數的差值,確定為當前節點所包括的重複點個數。
在該情況2中,若當前節點對應的已解碼重複點的個數小於點雲的重複點總數,則說明當前節點可能包括重複點,進一步的,若解碼端確定當前節點為L3C2的最後一個節點時,則確定當前節點一定包括重複點,且當前節點所包括的重複點的個數為點雲的重複點總數與已解碼重複點的個數的差值。因此,在該情況2中,若確定當前節點對應的已解碼重複點的個數小於點雲的重複點總數,且當前節點為L3C2的最後一個節點,則跳過解碼當前節點的重複點資訊,且將點雲的重複點總數與已解碼重複點的個數的差值,確定為當前節點所包括的重複點個數,進而降低解碼複雜度,節約解碼時間,提升解碼效率。
在該情況2中,解碼端還需要確定當前節點所包括的第一個點的幾何重建值,其中確定第一點的幾何重建值的過程具體可以參照如下步驟11至步驟13的描述,在此不再贅述。
情況3,若已解碼重複點的個數小於點雲的重複點總數,且當前節點不是L3C2中的最後一個節點時,上述S104包括S104-B1和S104-B2:
S104-B1、解碼當前節點的重複點資訊;
S104-B2、基於重複點資訊,確定當前節點所包括的N個重複點的幾何重建值,N為整數。
本申請實施例中,編碼端在確定當前節點對應的已編碼點重複點的個數小於點雲的重複點總數,且當前節點不是L3C2中的最後一個節點時,確定當前節點具有重複點時,將當前節點的重複點資訊寫入幾何碼流。對應的,解碼端在確定當前節點對應的已解碼點重複點的個數小於點雲的重複點總數,且當前節點不是L3C2中的最後一個節點時,解碼幾何碼流,得到當前節點的重複點資訊,並基於該重複點資訊,確定當前節點所包括的N個重複點的幾何重建值。
本申請實施例對重複點資訊所包括的具體內容不做限制。
在一些實施例中,重複點資訊包括當前節點所包括的重複點的個數。
在一些實施例中,若N大於0,則重複點資訊包括當前節點所包括的重複點的個數,以及至少一個第一標誌,第一標誌用於指示當前節點中的當前點與前一個點在第二座標下的座標是否相同。
例如,當前節點包括3個點,分別記為點1、點2和點3,點2和點3分別對應一個第一標誌,其中,點2的第一標誌用於指示點2與點1在第二座標下的座標是否相同,點3的第一標誌用於指示點3與點2在第二座標下的座標是否相同。
解碼端確定出當前節點的重複點資訊後,執行S104-B2的步驟,基於重複點資訊,確定當前節點所包括的N個重複點中每個重複點的幾何重建值。
在一些實施例中,若重複點資訊指示當前節點所包括的點的座標值相同時,則參照上述確定第一點的幾何重建值的方式,確定出當前節點所包括的所有點的幾何重建值。
在一些實施例中,上述S104-B2包括如下步驟:
S104-B21、確定當前節點中第一個點的幾何重建值;
S104-B22、基於重複點資訊,以及第一個點的幾何重建值,確定N個重複點的幾何重建值。
具體的,編碼端在對當前節點進行編碼時,該當前節點包括N+1個點,其中N個點與第一個點重複,進而確定該當前節點包括N個重複點。在編碼時,編碼端首先對當前節點中的第一個點進行編碼,例如,將第一個點在第一座標系下的座標殘差值,以及第一個點在第二座標系下的座標殘差值,以及第一個點對應的預測模式和在單鏈中的順序o(P)進行編碼。同時,確定當前節點對應的重複點資訊,並將該重複點資訊編入碼流。
基於此,解碼端首先確定當前節點中第一個點的幾何重建值。其中,解碼端確定當前節點中第一個點的幾何重建值的過程可以參照如下步驟11至步驟13的詳細描述,在此不再贅述。
解碼端確定出當前節點中第一個點的幾何重建值後,基於當前節點的重複點資訊和第一個點的幾何重建值,確定N個重複點中每一個重複點的幾何重建值。
在一些實施例中,解析重複點資訊,從重複點資訊中獲得每一個重複點對應的第一標誌,若每一個重複點對應的第一標誌均指示該重複點與前一個點在第二座標系下的座標值均相同,且與第一個點的在第二座標系下的座標值也相同,例如每一個重複點的第一標誌的取值均為1。這樣,解碼端可以直接將第一個點的幾何重建值,確定為N個重複點的幾何重建值。
在一些實施例中,解碼端對N個重複點中的每一個重複點一一進行解碼,此時,上述S104-B22包括如下步驟:
S104-B22-1、針對N個重複點中的第i個重複點,解析重複點資訊,得到第i個重複點對應的第一標誌,第一標誌用於指示第i個重複點與第i-1個重複點在第二座標系下的座標是否相同,i為小於或等於N的正整數,若i為1時,則第i-1個重複點為第一個點;
S104-B22-2、基於第i個重複點對應的第一標誌,確定第i個重複點的幾何重建值。
在該實現方式中,確定N個重複點中每一個重複點的方式相同,為了便於描述,在此以N個重複點中的第i個重複點為例進行說明。針對N個重複點中的第i個重複點,首先從當前節點的重複點資訊中,得到該第i個重複點對應的第一標識,該第一標誌指示第i個重複點與前一個點,即第i-1個重複點在在第二座標系下的座標是否相同。示例性的,若第i個重複點為N個重複點中的第一個重複點,即i=1,此時,第i-1個重複點為當前節點中的第一個點。
接著,解碼端基於第i個重複點對應的第一標誌,確定第i個重複點的幾何重建值。
在一些實施例中,若第一標誌指示第i個重複點與第i-1個重複點在所述第二座標系下的座標相同,例如,第一標誌的取值為1,則將第i-1個重複點的幾何重建值,確定為第i個重複點的幾何重建值。
在一些實施例中,若第一標誌指示第i個重複點與第i-1個重複點在第二座標系下的座標不相同,則解碼端需要重新確定第i個重複點的幾何重建值。例如,解碼端解碼幾何碼流,得到第i個重複點在第二座標系下的座標殘差值、第i個重複點在第一座標系下的座標殘差值,以及第i個重複點對應的預測模式,基於第i個重複點對應的預測模式,確定第i個重複點在第一座標系下的座標預測值,基於第i個重複點在第一座標系下的座標預測值和座標殘差值,確定第i個重複點在第一座標系下的座標重建值,對第i個重複點在第一座標系下的座標重建值進行座標轉換後,與第i個重複點在第二座標系下的座標殘差值進行相加,得到第i個重複點在第二座標系下的座標重建值,將第i個重複點在第二座標系下的座標重建值確定為第i個重複點的幾何重建值。
需要說明的是,上述確定第i個重複點的幾何重建值的過程具體可以參照如下步驟11至步驟13的描述,在此不再贅述。
解碼端基於上述步驟,可以確定出N個重複點中每一個重複點的幾何重建值。
在該情況2中,通過上述步驟,確定出當前節點所包括的第一個節點和N個重複點的幾何重建值外,還基於當前節點所包括的重複點個數N,對已解碼重複點的個數進行更新,例如將當前節點所包括的重複點的個數與已解碼重複點的個數之和,確定為新的已解碼重複點的個數。基於該新的已解碼重複點的個數,進行下一個節點的解碼。
下面對上述情況1中,確定當前節點所包括的一個點,即第一點的幾何重建值的確定過程,以及情況2和情況3中,當前節點包括多個點時的第一個點的幾何重建值,以及情況3中當前節點所包括的N個重複點中第i個重複點的幾何重建值的確定過程進行介紹。也就是說,下面步驟11至步驟13中的目標值可以理解為情況1中的第一點,也可以理解為情況2和情況3中的第一個點,也可以理解為情況3中的第i個重複點。
下面對確定目標點的幾何重建值的具體過程進行介紹。
步驟11,確定目標點在第一座標系下的座標預測值。
在一種可能的實現方式中,基於當前解碼點在第一座標系下的座標重建值,確定目標點在第一座標系下的座標預測值。例如,將目標點之前的一個或幾個已解碼點在第一座標系下的座標重建值的算術平均值或加權平均值,確定為目標點在第一座標系下的座標預測值。
在另一種可能的實現方式中,上述步驟11包括如下步驟步驟11-1和步驟11-2:
步驟11-1、解碼幾何碼流,得到目標點對應的預測模式;
步驟11-2、基於預測模式,確定目標點在第一座標系下的座標預測值。
編碼端在編碼時,將目標點對應預測模式編入幾何碼流中,這樣解碼端可以解碼幾何碼流,得到目標點對應的預測模式,進而基於該預測模式,確定出目標點在第一座標系下的座標預測值。
本申請實施例對目標點對應的預測模式的具體類型不做限制。
在一些實施例中,在L3C2編碼時,假設掃描點雲的雷射雷達包括N個雷射,每個雷射對應一個預測列表,對應的L3C2對應N個預測列表。對於目標點,假設目標點在第一座標系下的座標為(r,φ,i),其中i表示目標點對應的雷射標識,這樣,可以將目標點的i對應的預測列表,確定為目標點對應的預測列表。假設目標點對應的預測列表中包括M個預測值,使用這M個預測值分別對目標點進行預測,確定M個預測值中每一個預測值對應的代價,進而將低價最小的一個預測值在該預測列表中的索引,確定為目標點對應的預測模式,進行編碼。也就是說,目標點對應的預測模式,為目標點對應的預測列表中,代價最小的預測值的索引。接著,編碼端基於目標點的i確定出目標點在L3C2單鏈中的順序(order),即o(P),並將o(P)以及目標點對應的預測模式編入碼流。對應的,解碼端解碼碼流,得到目標點對應的o(P)和預測模式,接著,基於o(P)確定出目標點的i分量,記irec,接著基於irec確定出目標點對應的預測列表。接著,在該預測列表中,將索引為目標點對應的預測模式的預測值,確定為目標點在第一座標系下的座標預測值。可選的,該預測值包括rpred和φpred。
本申請實施例對第一座標系的具體類型不做限制。
在一種示例中,第一座標系為柱面座標。
基於上述步驟,確定出目標點在第一座標系下的座標預測值後,執行如下步驟12。
步驟12、基於目標點在第一座標系下的座標預測值,確定目標點在第一座標系下的座標重建值。
基於上述步驟,確定出目標點在第一座標系下的座標預測值後,基於目標點在第一座標系下的座標預測值,確定目標點在第一座標系下的座標重建值。
在一種示例中,將目標點在第一座標系下的座標預測值,確定為目標點在第一座標系下的座標重建值。
在另一種示例中,上述步驟12包括如下步驟12-1至步驟12-3:
步驟12-1、解碼幾何碼流,得到目標點在第一座標系下量化後的座標殘差值;
步驟12-2、對量化後的座標殘差值進行反量化,得到目標點在第一座標系下的座標殘差值;
步驟12-3、基於目標點在第一座標系下的座標預測值和座標殘差值,得到目標點在第一座標系下的座標重建值。
在該實現方式中,編碼端在對目標點進行編碼時,基於目標點在第一座標系下的座標預測值,確定出目標點在第一座標系下的座標殘差值,例如將目標點在第一座標系下的座標值與座標預測值的差值,確定為目標點在第一座標系下的座標殘差值。接著,編碼端將目標點在第一座標系下的座標殘差值進行量化後,編入碼流。
基於此,解碼端解碼幾何碼流,得到目標點在第一座標系下量化後的座標殘差值,對量化後的座標殘差值進行反量化,得到目標點在第一座標系下的座標殘差值。
在一些實施例中,解碼端在對目標點在第一座標系下量化後的座標殘差值進行反量化之前,首先確定量化因數,基於確定的量化因數對目標點在第一座標系下量化後的座標殘差值進行反量化。
假設解碼幾何碼流,得到目標點在第一座標系下量化後的座標殘差值為Q(rres)和Q(φres),基於上述步驟,確定出的目標點在第一座標系下的座標預測值為(rprd,φprd)。
示例性的,解碼端通過如下公式(14),確定出Q(rres)對應的量化因數Δr:
Δr=ΔQ/(|cosφprd|+|sinφprd|) (14)
其中,ΔQ為基於預設的量化參數確定的。
基於上述公式(14)確定出的量化因數Δr,對目標點在第一座標系下量化後的座標殘差值Q(rres)進行反量化,得到目標點在第一座標系下的座標殘差值rres。
接著,解碼端基於目標點在第一座標系下的座標預測值rprd和座標殘差值rres,得到目標點在第一座標系下的座標重建值rrec。
示例性的,解碼端將目標點在第一座標系下的座標預測值rprd和座標殘差值rres之和,確定為目標點在第一座標系下的座標重建值rrec。
解碼端根據上述方法確定出目標點在第一座標系下的座標重建值rrec後,解碼端基於rrec確定Q(φres)對應的量化因數Δφ。
在一種示例中,解碼端通過如下公式(15),確定Q(φres)對應的量化因數Δφ:
Δφ = Δr/rrec (15)
基於上述方法,解碼端確定出Q(φres)對應的量化因數Δφ後,基於該量化因數Δφ對Q(φres)進行反量化,得到目標點在第一座標系下的座標殘差值φres。
接著,解碼端基於目標點在第一座標系下的座標預測值φprd和座標殘差值φres,得到目標點在第一座標系下的座標重建值rrec。
示例性的,解碼端將目標點在第一座標系下的座標預測值φprd和座標殘差值φres之和,確定為目標點在第一座標系下的座標重建值φrec。
基於上述方法,可以確定出目標點在第一座標系下的座標重建值(rrec,φrec,irec)。
接著,解碼端執行如下步驟13。
步驟13、基於目標點在第一座標系下的座標重建值,確定目標點在第二座標系下的座標重建值。
本申請實施例對第一座標系和第二座標系的具體類型不做限制。
本申請實施例對基於目標點在第一座標系下的座標重建值,確定目標點在第二座標系下的座標重建值的具體方式不做限制。
方式1,解碼端基於第一座標系與第二座標系之間的轉換關係,將目標點在第一座標系下的座標重建值轉換為目標點在第二座標系下的座標重建值。
方式二,解碼端通過如下步驟13-1至步驟13-3的步驟,確定目標點在第二座標系下的座標重建值:
步驟13-1、對目標點在第一座標系下的座標重建值進行座標轉換,得到目標點在第二座標系下的座標預測值。
具體的,基於第一座標系與第二座標系之間的轉換關係,對目標點在第一座標系下的座標重建值進行座標轉換,得到目標點在第二座標系下的座標預測值。
示例性的,假設第一座標系為笛卡爾座標系,第二座標系為柱面座標系,則基於如下公式(16)確定目標點在第二座標系下的座標預測值:
=rreccosφres
=rrecsinφres
rrecΧtan(θ(irec))-zLaser(irec) (16)
其中,θ為irec對應的雷射Laser的仰角,zLaser為irec對應的雷射Laser在垂直方向上的高度。
步驟13-2、解碼幾何碼流,得到目標點在第二座標系下的座標殘差值。
在本申請實施例中,編碼點在編碼目標點時,基於目標點在第一座標系下的座標預測值,確定目標點在第一座標系下的座標重建值,對目標點在第一座標系下的座標重建值進行變換,得到目標點在第二座標系下的座標重建值。接著,編碼端基於目標點在第二座標系下的座標預測值以及座標重建值,確定目標點在第二座標系下的座標殘差值。編碼端將基於目標點在第二座標系下的座標殘差值寫入幾何碼流。
基於此,解碼端解碼幾何碼流,得到目標點在第二座標系下的座標殘差值。
在一些實施例中,若編碼端對目標點在第二座標系下的座標殘差值進行量化後,寫入幾何碼流。對應的,解碼端從幾何碼流中解析出目標點在第二座標系下量化後的座標殘差值後,對該目標點在第二座標系下量化後的座標殘差值進行反量化,得到目標點在第二座標系下的座標殘差值。
步驟13-3、基於目標點在第二座標系下的座標預測值和座標殘差值,得到目標點在第二座標系下的座標重建值。
例如,將目標點在第二座標系下的座標預測值和座標殘差值之和,確定為目標點在第二座標系下的座標重建值。
示例性的,基於如下公式(17),確定出目標點在第二座標系下的座標重建值(x,y,z):
(17)
其中,
為目標點在第二座標系下的座標殘差值。
上述實施例以L3C2中當前節點的幾何解碼過程為例進行說明,L3C2中的其他節點的解碼過程參照當前節點的解碼過程即可,進而可以得到重建後的點雲幾何資訊。
本申請實施例提供的點雲解碼方法,解碼點雲的幾何碼流,得到點雲的L3C2的節點總數,以及點雲的總點數,基於點雲的總點數,以及該點雲的L3C2的節點總數,確定該點雲所包括的重複點總數,這樣在解碼時,即時記錄已解碼的重複點的個數,且將已解碼的重複點的個數與點雲所包括的重複點總數進行比較,以確定在解碼當前節點時,是否解碼該節點的重複點資訊,例如,在解碼當前點時,確定已解碼的重複點的個數等於點雲的重複點總數,說明點雲中的重複點已解碼結束,剩餘節點均不包括重複點,進而不需要解碼後續節點的重複點資訊,進而降低了點雲的解碼複雜度,節約了解碼時間,進而提升了解碼效率。
上文以解碼端為例,對本申請實施例提供的點雲解碼方法進行詳細介紹,下面以編碼端為例,對本申請實施例提供的點雲編碼方法進行介紹。
圖14為本申請一實施例提供的點雲編碼方法流程示意圖。本申請實施例的點雲編碼方法可以由上述圖3或圖4所示的點雲編碼設備完成。
如圖14所示,本申請實施例的點雲編碼方法包括:
S201、確定點雲的L3C2結構。
具體的,編碼端基於點雲中點的座標資訊,對點雲中的點進行重排序,基於重排序後的點的座標資訊構建單鏈結構,進而得到點雲的L3C2結構。
本申請實施例對點雲重排序的方式不做限制。
在一些實施例中,對體素化後的點雲進行重排序以構建更高效的單鏈結構,預設的排序方法是按雷射雷達的掃描順序進行排序。
示例性的,將點雲中每個點的在第二座標系下的座標值,例如笛卡爾座標下的座標值
轉化為第三座標系下的座標值,例如第三座標系為極座標系,對應的座標值為
。接著,依次根據極座標系下的仰角正切值
、方位角
、半徑
對各點進行排序。
需要說明的是,本申請實施例對第三座標系的具體類型不做限制,第三座標系包括柱面座標系、極座標系,也可以包括其他座標系。
接著,對排序後的點雲進行座標轉換,具體的,根據排序後的結果遍歷點雲,將點雲中點在第二座標系的座標值,轉換為第一座標系下的座標值,並進行儲存。
示例性的,假設第一座標系為柱面座標系,第二座標系為笛卡爾座標系,則基於上述公式(4),將點雲中點在笛卡爾座標系下的座標值
,轉換為柱面座標系下的座標值
。
基於點雲中點在第一座標系下的座標值構建單鏈結構,一種示例中,假設第一座標系為柱面座標系,則點雲構建的單鏈結構如圖7A所示。
在一些實施例中,每個Laser的旋轉間隔即Δφ,通過利用Δφ來對圖7A所示的單鏈結構在垂直方向上進行規則化處理,得到如圖7B所示的單鏈結構。可選的,可以採用上述公式(5)進行規則化處理。
本申請實施例中,基於規則化後的單鏈結構進行編碼。
S202、確定點雲的L3C2的節點總數和點雲的總點數。
本申請實施例中,在基於L3C2的編碼方式中,編碼端基於點雲的幾何資訊,構建點雲的L3C2結構,L3C2結構為鏈結構,由至少一個單鏈結構組成,每個單鏈結構中包括至少一個節點。一個節點包括至少一個點雲中的點,也就是說,在L3C2編碼中,將點雲中的點劃分至L3C2中的節點上。
在一些實施例中,由於點雲中的有些點的座標資訊相同,因此,這些座標相同的點被劃分到L3C2的同一個節點上,使得該節點包括重複點。
在一些實施例中,由上述可知,構建點雲的L3C2時,需要對點雲中的點進行座標轉換,例如,將點雲中的點在第二座標系下的座標轉換為第一座標系下的座標時,可能會使得第二座標系下座標不同的點,轉換到第一座標系下時,座標變得相同。這樣基於第一座標系下點的座標進行L3C2構建時,會將第一座標系下座標相同的點劃分到一個節點上,進而使得該節點包括重複點。
目前編碼端在對L3C2中的每一個節點進行編碼時,需要編碼每一個節點的重複點資訊。這樣會增加編碼的複雜度,浪費編碼時間,降低編碼效率。
由上述可知,在點雲的L3C2中,並不是每一個節點具有重複點,甚至可以理解的是,點雲的L3C2中只有較少的節點包括重複點。基於此,本申請實施例中,在編碼時,首先確定出該點雲所包括的重複點總數,且在編碼過程中,對已編碼的重複點的個數進行統計,進而在編碼每一個點之前,首先判斷統計的當前已編碼的重複點的個數是否已經等於點雲所包括的重複點總數。若當前已編碼的重複點的個數等於點雲所包括的重複點總數時,說明點雲中的重複點均已編碼完成,L3C2中的剩餘待編碼的節點上均不包括重複節點,這樣在後續對這些節點進行編碼時,不再編碼這些節點的重複點資訊,進而降低點雲的編碼複雜度,節約了編碼時間,進而提升了編碼效率。
本申請實施例對編碼端獲得點雲的L3C2的節點總數和點雲的總點數的具體方式不做限制。
在一些實施例中,編碼端在構建L3C2時,統計L3C2所包括的節點點數。
在一些實施例中,編碼端確定L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量;基於單鏈數量,以及每個單鏈所包括的節點數量,得到L3C2的節點總數。例如,將各個單鏈所包括的節點數量之和,確定為L3C2的節點總數。
在該實施例的一種示例中,可以通過如下指令,將點雲所包括的各單鏈上的節點進行相加,得到L3C2的節點總數nodeCount:
for( index= 0; index< headsCount; index++ )
nodeCount+=nodeCnt
在該實現方式中,編碼端還包括:將L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量寫入點雲的幾何碼流。
另外,點雲檔中包括該點雲的總點數,這樣編碼端通過接收點雲檔,得到點雲的總點數。
進一步的,編碼端將點雲的總點數寫入幾何碼流。
在一些實施例中,編碼端將點雲的總點數,寫入幾何資料單元中。
在一些實施例中,編碼端將點雲的總點數減1,得到第一值;將第一值寫入幾何資料單元中。示例性的,如上述表2所示。
編碼端基於上述方法,得到點雲的L3C2的節點總數,以及點雲的總點數後,執行如下S203的步驟。
S203、根據點雲的總點數和L3C2的節點總數,確定點雲的重複點總數。
編碼端確定出點雲的L3C2的節點總數,以及點雲的總點數後,根據點雲的總點數和L3C2的節點總數,確定點雲的重複點總數,進而以點雲的重複點總數作為監督,進行後續的編碼。
本申請實施例對編碼端根據點雲的L3C2的節點總數,以及點雲的總點數,確定點雲的重複點總數的具體方式不做限制。
在一種可能的實現方式中,直接將點雲的總點數和L3C2的節點總數之間的差值,確定為點雲的重複點總數。
示例性的,編碼端通過上述公式(13),確定出點雲的重複點總數。
編碼端基於上述步驟,確定出點雲的重複點總數後,開始對L3C2中的各點進行編碼,具體參照下面S204。
S204、在編碼L3C2中的當前節點時,確定已編碼重複點的個數。
本申請實施例中,編碼端編碼L3C2中每一個節點的方式相同,為了便於描述,以L3C2中的當前節點為例進行說明。
在一種示例中,用dupCount表示當前已編碼的重複點的個數,dupCount初始化為0,在編碼L3C2中的第一個節點時,dupCount=0,小於點雲的重複點總數dupSumNum,則編碼第一個節點時,需要對該第一個節點的重複點資訊進行編碼。可選的,第一個節點的重複點資訊包括該第一個節點所包括的重複點的個數,假設第一個節點包括的重複點的個數為a,則將dupCount更新為a。接著,編碼L3C2中的第二個節點,在編碼第二節點之前,首先判斷dupCount=a是否等於點雲的重複點總數dupSumNum,若否,則繼續編碼該第二節點的重複點資訊,並使用該第二節點所包括的重複點的個數對當前的dupCount進行更新,依次類推。
由於上述可知,編碼端在編碼L3C2中的當前節點時,首先確定在編碼當前節點之前,已編碼的重複點的個數,即已編碼重複點的個數dupCount,進而基於該已編碼重複點的個數dupCount,確定是否編碼當前節點的重複點資訊。
在一種示例中,編碼端通過如下指令,記錄已編碼重複點的個數:
for( index= 0; index< nodeCount; index++ )
dupCount+=dupPointNum
其中,dupPointNum表示節點所包括的重複點的個數。
S205、根據已編碼重複點的個數和點雲的重複點總數,對當前節點進行編碼。
編碼端在編碼當前節點時,將已編碼重複點的個數和點雲的重複點總數進行比較,以對當前節點進行編碼。
具體的,上述S205的實現過程包括如下幾種情況:
情況1,若已編碼重複點的個數等於點雲的重複點總數,則上述S205包括如下S205-A1和S205-A2:
S205-A1、跳過確定以及編碼當前節點的重複點資訊。
S205-A2、確定當前節點所包括的第一點的座標殘差值,將第一點的座標殘差值寫入點雲的幾何碼流。
在情況1中,在編碼當前節點時,若確定編碼重複點的個數等於點雲的重複點總數,則說明所有重複點已經編碼結束,L3C2的剩餘節點均不包括重複點。基於此,在編碼當前節點時,則跳過重複點資訊的編碼,進而降低編碼複雜度,節約編碼時間,提升編碼效率。
此時,可以確定當前節點只包括一個點,記為第一點,接著,確定該第一點的座標殘差值,並將第一點的座標殘差值寫入點雲的幾何碼流。
需要說明的是,確定第一點的座標殘差值,並將第一點的座標殘差值寫入點雲的幾何碼流的過程具體可以參照如下步驟21至步驟25的描述,在此不再贅述。
上文對情況1,若已編碼重複點的個數等於點雲的重複點總數,則跳過編碼當前節點的重複點資訊,並確定當前節點所包括的第一點的幾何編碼過程進行介紹。
情況2,若已編碼重複點的個數小於點雲的重複點總數,且當前節點不是L3C2中的最後一個節點,則上述S205包括如下步驟:
S205-B1、確定當前節點的重複點資訊。
本申請實施例對重複點資訊所包括的具體內容不做限制。
在本申請實施例中,編碼端在編碼當前節點時,確定當前節點對應的已編碼重複點的個數,若當前節點對應的已編碼重複點的個數小於點雲的重複點總數,則說明當前節點可能包括重複點,此時為了準確編碼,則需要確定當前節點的重複點資訊,且對當前節點的重複點資訊進行編碼。
在一些實施例中,重複點資訊包括當前節點所包括的重複點的個數,這樣,確定出當前節點所包括的重複點的個數,即可以確定出當前節點的重複點資訊。
在一些實施例中,重複點資訊包括當前節點所包括的重複點的個數,以及至少一個第一標誌,第一標誌用於指示當前節點中的當前點與前一個點在第二座標下的座標是否相同。
例如,當前節點包括3個點,分別記為點1、點2和點3,點2和點3分別對應一個第一標誌,其中,點2的第一標誌用於指示點2與點1在第二座標下的座標是否相同,點3的第一標誌用於指示點3與點2在第二座標下的座標是否相同。
在一些實施例中,若N大於0,且所述重複點資訊包括第一標誌,第一標誌用於指示所述當前節點中的當前點與前一個點在第二座標下的座標是否相同,則上述S205-B1包括如下S205-B11和S205-B12:
S205-B11、確定當前節點所包括的N個重複點的個數;
S205-B12、基於當前節點所包括的第一個點在第二座標系下的座標值,以及N個重複點在第二座標系下的座標值,確定N個重複點分別對應的第一標誌;
S205-B13、基於當前節點所包括的N個重複點的個數和N個重複點分別對應的第一標誌,確定當前節點的重複點資訊。
具體的,將當前節點中除第一個點之外的點,確定出與第一個點重複的點,例如,當前節點包括3個點,則確定當前節點包括2個重複節點。
接著,基於當前節點所包括的第一個點在第二座標系下的座標值,以及N個重複點在第二座標系下的座標值,確定N個重複點分別對應的第一標誌。
在一種可能的實現方式中,針對N個重複點中的每一個重複點,將該重複點在第二座標系下的座標值與第一個點在第二座標系下的座標值進行比較,確定該重複點對應的第一標誌。例如,該重複點在第二座標系下的座標值與第一個點在第二座標系下的座標值相同,則將該重複點對應的第一標誌的值置為第一數值,若該重複點在第二座標系下的座標值與第一個點在第二座標系下的座標值不相同,則將該重複點對應的第一標誌的值置為第二數值。
本申請實施例對第一數值和第二數值的具體取值不做限制。
可選的,第一數值為1。
可選的,第二數值為0。
在另一種可能的實現方式中,針對N個重複點中的第i個重複點,基於第i-1個重複點在第二座標系下的座標值,以及第i個重複點在第二座標系下的座標值,確定第i個重複點對應的第一標誌,i為大於0且小於或等於N的正整數,若i為1時,則第i-1個重複點為第一個點。
例如,若第i個重複點在第二座標系下的座標值與第i-1個重複點在第二座標系下的座標值相同,則將第一標誌的值置為第一數值,第一數值指示第i個重複點在第二座標系下的座標值與第i-1個重複點在第二座標系下的座標值相同。
再例如,若第i個重複點在第二座標系下的座標值與第i-1個重複點在第二座標系下的座標值不相同,則確定第一標誌的值置為第二數值,第二數值指示第i個重複點在第二座標系下的座標值與第i-1個重複點在第二座標系下的座標值不相同。
在一些實施例中,若確定第i個重複點在第二座標系下的座標值與第i-1個重複點在第二座標系下的座標值不相同,即第i個重複點對應的第一標誌的取值為第二數值,此時,本申請實施例還包括:確定第i個重複點的座標殘差值,並將該第i個重複點的座標殘差值,確定幾何碼流。其中,確定第i個重複點的座標殘差值可以參照如下步驟21至步驟25的描述,在此不再贅述。
基於上述確定出當前節點所包括的重複點的個數N,以及每個重複點對應的第一標誌後,將當前節點所包括的重複點個數N,以及每個重複點對應的第一標誌,確定為當前節點的重複點資訊。
進一步的,編碼端使用當前節點所包括的重複點個數N,對已編碼重複點的個數進行更新,例如將當前節點所包括的重複點的個數與已編碼重複點的個數之和,確定為新的已編碼重複點的個數。
基於上述步驟,確定出當前節點的重複點資訊後,執行S205-B2的步驟。
S205-B2、確定當前節點中第一個點的座標殘差值。
例如,確定當前節點中第一個點的座標預測值,基於座標預測值和座標值,確定第一個點的座標殘差值。
上述S205-B2的具體實現過程參照如下步驟21至步驟25的描述,在此不再贅述。
S205-B3、將第一個點的座標殘差值和當前節點的重複點資訊寫入幾何碼流。
在該情況2中,基於上述步驟,確定出當前節點的重複點資訊,以及當前節點的第一個點的座標殘差值後,將第一個點的座標殘差值和當前節點的重複點資訊寫入幾何碼流。
情況3,若重複點資訊包括當前節點所包括的重複點的個數,已編碼重複點的個數小於點雲的重複點總數,且當前節點為L3C2中的最後一個節點,則上述S205包括如下步驟:
S205-C1、跳過編碼當前節點所包括的重複點個數;
S205-C2、確定當前節點中第一個點的座標殘差值;
S205-C3、將第一個點的座標殘差值和當前節點的重複點資訊寫入幾何碼流。
在該情況3中,若當前節點對應的已編碼重複點的個數小於點雲的重複點總數,則說明當前節點可能包括重複點,進一步的,若編碼端確定當前節點為L3C2的最後一個節點時,則確定當前節點一定包括重複點,且當前節點所包括的重複點的個數為點雲的重複點總數與已編碼重複點的個數的差值。因此,在該情況3中,若確定當前節點對應的已編碼重複點的個數小於點雲的重複點總數,且當前節點為L3C2的最後一個節點,則解碼端可以將點雲的重複點總數與已編碼重複點的個數的差值,確定為當前節點所包括的重複點個數,進而編碼端跳過編碼當前節點的重複點資訊,進而降低編碼複雜度,節約編碼時間,提升編碼效率。
在該情況3中,編碼端還需要確定當前節點所包括的第一個點的座標殘差值,並將第一個點的座標殘差值寫入幾何碼流,其中確定第一點的座標殘差值的過程具體可以參照如下步驟21至步驟25的描述,在此不再贅述。
下面對上述情況1中,確定當前節點所包括的一個點,即第一點的座標殘差值的確定過程,以及情況2中,當前節點包括多個點時的第一個點的座標殘差值和當前節點所包括的N個重複點中的第i個重複點的座標殘差值的確定過程,以及情況3中當前節點的第一個點的座標殘差值的確定過程進行介紹。也就是說,下面步驟21至步驟25中的目標值可以理解為情況1中的第一點,也可以理解為情況2中的第一個點。
下面對確定目標點的座標殘差值的具體過程進行介紹。
步驟21、確定目標點在第一座標系下的座標預測值。
在一種可能的實現方式中,基於當前編碼點在第一座標系下的座標值,確定目標點在第一座標系下的座標預測值。例如,將目標點之前的一個或幾個已編碼點在第一座標系下的座標值的算術平均值或加權平均值,確定為目標點在第一座標系下的座標預測值。
在一種可能的實現方式中,,步驟21包括如下步驟21-1和步驟21-2:
步驟21-1、確定目標點對應的預測模式;
步驟21-2、基於預測模式,確定目標點在第一座標系下的座標預測值。
在一些實施例中,上述目標點對應的預測模式為預設模式。
在一些實施例中,在L3C2編碼時,假設掃描點雲的雷射雷達包括N個雷射,每個雷射對應一個預測列表,對應的L3C2對應N個預測列表。對於目標點,假設目標點在第一座標系下的座標為(r,φ,i),其中i表示目標點對應的雷射標識,這樣,可以將目標點的i對應的預測列表,確定為目標點對應的預測列表。假設目標點對應的預測列表中包括M個預測值,使用這M個預測值分別對目標點進行預測,確定M個預測值中每一個預測值對應的代價,進而將低價最小的一個預測值在該預測列表中的索引,確定為目標點對應的預測模式。也就是說,目標點對應的預測模式,為目標點對應的預測列表中,代價最小的預測值的索引。
接著,基於預測模式,確定目標點在第一座標系下的座標預測值。例如,將目標點的i對應的預測列表中,預測模式對應的索引所在的預測值,確定為目標點在第一座標系下的座標預測值。可選的,該預測值包括rpred和φpred。
在一些實施例中,編碼端將目標點對應的預測模式寫入幾何碼流。
編碼端基於上述步驟,確定出目標點在第一座標系下的座標預測值後,執行如下步驟22。
步驟22、基於目標點在第一座標系下的座標預測值和目標點在第一座標系下的座標值,確定目標點在第一座標系下的殘差值。
例如,將目標點在第一座標系下的座標值與座標預測值的差值,確定為目標點在第一座標系下的殘差值。
在一些實施例中,編碼端對目標點在第一座標系下的殘差值進行量化,得到該目標點在第一座標系下量化後的殘差值。
在一些實施例中,在對目標點在第一座標系下的殘差值進行量化時,首先需要確定量化因數。例如,基於上述公式(7)和公式(8)確定出量化因數Δr和Δφ,進而基於量化因數Δr對目標點在第一座標系下的殘差值rres進行量化,使用Δφ對目標點在第一座標系下的殘差值φres進行量化。
本申請實施例中,目標點的座標殘差值包括目標點在第一座標系下的座標殘差值和目標點在第二座標系下的座標殘差值。基於上述方法,確定出目標點在第一座標系下的座標殘差值。接著,基於步驟23至步驟25確定出目標點在第二座標系下的座標殘差值。
步驟23、基於目標點在第一座標系下的座標預測值,得到目標點在第一座標系下的座標重建值。
在一些實施例中,將目標點在第一座標系下的座標預測值,作為目標點在第一座標系下的座標重建值。
在一些實施例中,若目標點在第一座標系下的殘差值未進行量化時,則將目標點在第一座標系下的座標預測值和殘差值的和值,確定為目標點在第一座標系下的座標重建值。
在一些實施例中,若目標點在第一座標系下的殘差值進行量化時,則編碼端對量化後的目標點在第一座標系下量化後的座標殘差值進行反量化,得到目標點在第一座標系下的座標殘差值;基於目標點在第一座標系下的座標預測值和座標殘差值,得到目標點在第一座標系下的座標重建值。例如,將目標點在第一座標系下的座標預測值和座標殘差值之和,確定為目標點在第一座標系下的座標重建值。
步驟24、對目標點在第一座標系下的座標重建值進行座標轉換,得到目標點在第二座標系下的座標重建值。
不同的第一座標系與不同的第二座標系對應的轉換關係不同。
示例性的,假設第一座標系為柱面座標系,第二座標系為笛卡爾座標系,則參照上述公式(9)對目標點在第一座標系下的座標重建值進行座標轉換,得到目標點在第二座標系下的座標重建值。
步驟25、基於目標點在第二座標系下的座標重建值和座標值,確定目標點在第二座標系下的座標殘差值。
例如,將目標點在第二座標系下的座標預測值和座標重建值的差值,確定為目標點在第二座標系下的座標殘差值。
在一些實施例中,編碼端將目標點在第一座標系下的座標殘差值和目標點在第二座標系下的座標殘差值,寫入幾何碼流。
在一些實施例中,編碼端對目標點在第一座標系下的座標殘差值和目標點在第二座標系下的座標殘差值中的至少一個進行量化後,寫入幾何碼流。
在一些實施例中,編碼端還基於上述公式(6)確定出目標點在單鏈結構中的order即o(P)後,對o(P)進行編碼。
上述實施例以L3C2中當前節點的幾何編碼過程為例進行說明,L3C2中的其他節點的編碼過程參照當前節點的編碼過程即可,進而可以得到重建後的點雲幾何資訊。
本申請實施例提供的點雲編碼方法,確定點雲的L3C2結構,確定點雲的L3C2的節點總數,以及點雲的總點數,基於點雲的總點數,以及該點雲的L3C2的節點總數,確定該點雲所包括的重複點總數,這樣在編碼時,即時記錄已編碼的重複點的個數,且將已編碼的重複點的個數與點雲所包括的重複點總數進行比較,以確定在編碼當前節點時,是否編碼該節點的重複點資訊,例如,在編碼當前點時,確定已編碼的重複點的個數等於點雲的重複點總數,說明點雲中的重複點已編碼結束,剩餘節點均不包括重複點,進而不需要編碼後續節點的重複點資訊,進而降低了點雲的編碼複雜度,節約了編碼時間,進而提升了編碼效率。
應理解,圖13至圖14僅為本申請的示例,不應理解為對本申請的限制。
以上結合附圖詳細描述了本申請的優選實施方式,但是,本申請並不限於上述實施方式中的具體細節,在本申請的技術構思範圍內,可以對本申請的技術方案進行多種簡單變型,這些簡單變型均屬於本申請的保護範圍。例如,在上述具體實施方式中所描述的各個具體技術特徵,在不矛盾的情況下,可以通過任何合適的方式進行組合,為了避免不必要的重複,本申請對各種可能的組合方式不再另行說明。又例如,本申請的各種不同的實施方式之間也可以進行任意組合,只要其不違背本申請的思想,其同樣應當視為本申請所公開的內容。
還應理解,在本申請的各種方法實施例中,上述各過程的序號的大小並不意味著執行順序的先後,各過程的執行順序應以其功能和內在邏輯確定,而不應對本申請實施例的實施過程構成任何限定。另外,本申請實施例中,術語“和/或”,僅僅是一種描述關聯物件的關聯關係,表示可以存在三種關係。具體地,A和/或B可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字元“/”,一般表示前後關聯物件是一種“或”的關係。
上文結合圖13至圖14,詳細描述了本申請的方法實施例,下文結合圖15至圖18,詳細描述本申請的裝置實施例。
圖15是本申請實施例提供的點雲解碼裝置的示意性框圖。
如圖15所示,該點雲解碼裝置10可包括:
第一解碼單元11,用於解碼點雲的幾何碼流,得到所述點雲的低時延低複雜度編碼模型L3C2的節點總數,以及所述點雲的總點數;
點數確定單元12,用於根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數;
重複點確定單元13,用於在解碼所述L3C2中的當前節點時,確定已解碼重複點的個數;
第二解碼單元14,用於根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼。
在一些實施例中,點數確定單元12,具體用於將所述點雲的總點數和所述L3C2的節點總數的差值,確定為所述點雲的重複點總數。
在一些實施例中,第二解碼單元14,具體用於若所述已解碼重複點的個數等於所述點雲的重複點總數,則跳過解碼所述當前節點的重複點資訊,並確定所述當前節點所包括的第一點的幾何重建值。
在一些實施例中,若所述重複點資訊包括所述當前節點所包括的重複點的個數,則第二解碼單元14,具體用於若所述已解碼重複點的個數小於所述點雲的重複點總數,且所述當前節點為所述L3C2中的最後一個節點時,則跳過解碼所述當前節點的重複點資訊;將所述點雲的重複點總數與所述已解碼重複點的個數的差值,確定為所述當前節點所包括的重複點個數。
在一些實施例中,第二解碼單元14,具體用於若所述已解碼重複點的個數小於所述點雲的重複點總數,且所述當前節點不是所述L3C2中的最後一個節點時,則解碼所述當前節點的重複點資訊;基於所述重複點資訊,確定所述當前節點所包括的N個重複點的幾何重建值,所述N為整數。
在一些實施例中,第二解碼單元14,具體用於確定所述當前節點中第一個點的幾何重建值;基於所述重複點資訊,以及所述第一個點的幾何重建值,確定所述N個重複點的幾何重建值。
在一些實施例中,若N大於0,且所述重複點資訊包括第一標誌,所述第一標誌用於指示所述當前節點中的當前點與前一個點在第二座標下的座標是否相同,則第二解碼單元14,具體用於針對所述N個重複點中的第i個重複點,解析所述重複點資訊,得到所述第i個重複點對應的第一標誌,所述i為小於或等於N的正整數,若i為1時,則第i-1個重複點為所述第一個點;基於所述第i個重複點對應的第一標誌,確定所述第i個重複點的幾何重建值。
在一些實施例中,第二解碼單元14,具體用於若所述第一標誌指示所述第i個重複點與所述第i-1個重複點在所述第二座標系下的座標相同,則將所述第i-1個重複點的幾何重建值,確定為所述第i個重複點的幾何重建值。
在一些實施例中,第二解碼單元14,具體用於若所述第一標誌指示所述第i個重複點與所述第i-1個重複點在所述第二座標系下的座標不相同,則確定所述第i個重複點的幾何重建值。
在一些實施例中,第二解碼單元14,具體用於將所述當前節點所包括的重複點的個數與所述已解碼重複點的個數之和,確定為新的已解碼重複點的個數。
在一些實施例中,第二解碼單元14,具體用於確定目標點在第一座標系下的座標預測值,所述目標點為所述當前節點中的第一點,或者為所述當前節點所包括的第一個點,或者為所述當前節點所包括的N個重複點中的第i個重複點;基於所述目標點在第一座標系下的座標預測值,確定所述目標點在所述第一座標系下的座標重建值;基於所述目標點在所述第一座標系下的座標重建值,確定所述目標點在第二座標系下的座標重建值;將所述目標點在第二座標系下的座標重建值,確定為所述目標點的幾何重建值。
在一些實施例中,第二解碼單元14,具體用於解碼所述幾何碼流,得到所述目標點對應的預測模式;基於所述預測模式,確定所述目標點在所述第一座標系下的座標預測值。
在一些實施例中,第二解碼單元14,具體用於解碼所述幾何碼流,得到所述目標點在所述第一座標系下量化後的座標殘差值;對所述量化後的座標殘差值進行反量化,得到所述目標點在所述第一座標系下的座標殘差值;基於所述目標點在所述第一座標系下的座標預測值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值。
在一些實施例中,第二解碼單元14,具體用於將所述目標點在所述第一座標系下的座標預測值和座標殘差值之和,確定為所述目標點在所述第一座標系下的座標重建值。
在一些實施例中,第二解碼單元14,具體用於對所述目標點在所述第一座標系下的座標重建值進行座標轉換,得到所述目標點在所述第二座標系下的座標預測值;解碼所述幾何碼流,得到所述目標點在所述第二座標系下的座標殘差值;基於所述目標點在所述第二座標系下的座標預測值和座標殘差值,得到所述目標點在第二座標系下的座標重建值。
在一些實施例中,第二解碼單元14,具體用於將所述目標點在所述第二座標系下的座標預測值和座標殘差值之和,確定為所述目標點在第二座標系下的座標重建值。
在一些實施例中,第一解碼單元11,具體用於解碼所述點雲的幾何碼流,得到所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量;基於所述單鏈數量,以及每個單鏈所包括的節點數量,得到所述L3C2的節點總數。
在一些實施例中,第一解碼單元11,具體用於解碼所述點雲的幾何資料單元,得到所述點雲的總點數。
在一些實施例中,第一解碼單元11,具體用於解碼所述幾何資料單元,得到第一值,所述第一值為所述點雲的點個數減一;對所述第一值加一,得到所述點雲的總點數。
應理解,裝置實施例與方法實施例可以相互對應,類似的描述可以參照方法實施例。為避免重複,此處不再贅述。具體地,圖15所示的點雲解碼裝置10可以對應於執行本申請實施例的點雲解碼方法中的相應主體,並且點雲解碼裝置10中的各個單元的前述和其它操作和/或功能分別為了實現點雲解碼方法中的相應流程,為了簡潔,在此不再贅述。
圖16是本申請實施例提供的點雲編碼裝置的示意性框圖。
如圖16所示,點雲編碼裝置20包括:
結構確定單元21,用於確定點雲的低時延低複雜度編碼模型L3C2結構;
點數確定單元22,用於確定所述點雲的L3C2的節點總數和所述點雲的總點數;
重複點確定單元23,用於根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數;
計算單元24,用於在編碼所述L3C2中的當前節點時,確定已編碼重複點的個數;
編碼單元25,用於根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼。
在一些實施例中,點數確定單元22,具體用於將所述點雲的總點數和所述L3C2的節點總數的差值,確定為所述點雲的重複點總數。
在一些實施例中,編碼單元25,具體用於若所述已編碼重複點的個數等於所述點雲的重複點總數,則跳過確定以及編碼所述當前節點的重複點資訊;確定所述當前節點所包括的第一點的座標殘差值,將所述第一點的座標殘差值寫入所述點雲的幾何碼流。
在一些實施例中,若所述重複點資訊包括所述當前節點所包括的重複點的個數,則編碼單元25,具體用於若所述已編碼重複點的個數小於所述點雲的重複點總數,且所述當前節點為所述L3C2中的最後一個節點,則跳過編碼所述當前節點所包括的重複點個數;確定所述當前節點中第一個點的座標殘差值;將所述第一個點的座標殘差值和所述當前節點的重複點資訊寫入所述幾何碼流。
在一些實施例中,編碼單元25,具體用於若所述已編碼重複點的個數小於所述點雲的重複點總數,且所述當前節點不是所述L3C2中的最後一個節點,則確定所述當前節點的重複點資訊;確定所述當前節點中第一個點的座標殘差值;將所述第一個點的座標殘差值和所述當前節點的重複點資訊寫入所述幾何碼流。
在一些實施例中,若N大於0,且所述重複點資訊包括第一標誌,所述第一標誌用於指示所述當前節點中的當前點與前一個點在第二座標下的座標是否相同,則編碼單元25,具體用於確定所述當前節點所包括的N個重複點的個數;基於所述當前節點所包括的第一個點在第二座標系下的座標值,以及所述N個重複點在第二座標系下的座標值,確定所述N個重複點分別對應的第一標誌;基於所述當前節點所包括的N個重複點的個數和所述N個重複點分別對應的第一標誌,確定所述當前節點的重複點資訊。
在一些實施例中,編碼單元25,具體用於針對所述N個重複點中的第i個重複點,基於第i-1個重複點在第二座標系下的座標值,以及所述第i個重複點在第二座標系下的座標值,確定所述第i個重複點對應的第一標誌,所述i為大於0且小於或等於N的正整數,若i為1時,則所述第i-1個重複點為所述第一個點。
在一些實施例中,編碼單元25,具體用於若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值相同,則將所述第一標誌的值置為第一數值,所述第一數值指示所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值相同。
在一些實施例中,編碼單元25,具體用於若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同,則將所述第一標誌的值置為第二數值,所述第二數值指示所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同。
在一些實施例中,編碼單元25,還用於若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同, 確定所述第i個重複點的座標殘差值;將所述第i個重複點的座標殘差值,寫入所述幾何碼流中。
在一些實施例中,編碼單元25,具體用於將所述當前節點所包括的重複點的個數與所述已編碼重複點的個數之和,確定為新的已編碼重複點的個數。
在一些實施例中,編碼單元25,具體用於確定目標點在第一座標系下的座標預測值,所述目標點為所述當前節點中的第一點,或者為所述當前節點所包括的第一個點,或者為所述當前節點所包括的N個重複點中的第i個重複點;基於所述目標點在所述第一座標系下的座標預測值和所述目標點在所述第一座標系下的座標值,確定所述目標點在所述第一座標系下的殘差值;基於所述目標點在所述第一座標系下的座標預測值,得到所述目標點在所述第一座標系下的座標重建值;對所述目標點在所述第一座標系下的座標重建值進行座標轉換,得到所述目標點在所述第二座標系下的座標重建值;基於所述目標點在所述第二座標系下的座標重建值和座標值,確定所述目標點在所述第二座標系下的座標殘差值。
在一些實施例中,編碼單元25,具體用於對所述目標點在所述第一座標系下的座標殘差值和所述目標點在所述第二座標系下的座標殘差值中的至少一個進行量化後,寫入所述幾何碼流。
在一些實施例中,編碼單元25,具體用於確定所述目標點對應的預測模式;基於所述預測模式,確定所述目標點在所述第一座標系下的座標預測值。
在一些實施例中,編碼單元25,具體用於將所述目標點對應的預測模式寫入所述幾何碼流。
在一些實施例中,編碼單元25,具體用於對量化後的所述目標點在所述第一座標系下量化後的座標殘差值進行反量化,得到所述目標點在所述第一座標系下的座標殘差值;基於所述目標點在所述第一座標系下的座標預測值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值。
在一些實施例中,編碼單元25,具體用於將所述目標點在所述第一座標系下的座標預測值和座標殘差值之和,確定為所述目標點在所述第一座標系下的座標重建值。
在一些實施例中,點數確定單元22,具體用於確定所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量;基於所述單鏈數量,以及每個單鏈所包括的節點數量,得到所述L3C2的節點總數。
在一些實施例中,編碼單元25,還用於將所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量寫入所述點雲的幾何碼流。
在一些實施例中,編碼單元25,還用於將所述點雲的總點數,寫入幾何資料單元中。
在一些實施例中,編碼單元25,還用於將所述點雲的總點數減1,得到第一值;將所述第一值寫入所述幾何資料單元中。
應理解,裝置實施例與方法實施例可以相互對應,類似的描述可以參照方法實施例。為避免重複,此處不再贅述。具體地,圖16所示的點雲編碼裝置20可以對應於執行本申請實施例的點雲編碼方法中的相應主體,並且點雲編碼裝置20中的各個單元的前述和其它操作和/或功能分別為了實現點雲編碼方法中的相應流程,為了簡潔,在此不再贅述。
上文中結合附圖從功能單元的角度描述了本申請實施例的裝置和系統。應理解,該功能單元可以通過硬體形式實現,也可以通過軟體形式的指令實現,還可以通過硬體和軟體單元組合實現。具體地,本申請實施例中的方法實施例的各步驟可以通過處理器中的硬體的集成邏輯電路和/或軟體形式的指令完成,結合本申請實施例公開的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體單元組合執行完成。可選地,軟體單元可以位於隨機記憶體,快閃記憶體、唯讀記憶體、可程式設計唯讀記憶體、電可讀寫可程式設計記憶體、寄存器等本領域的成熟的儲存媒介中。該儲存媒介位於記憶體,處理器讀取記憶體中的資訊,結合其硬體完成上述方法實施例中的步驟。
圖17是本申請實施例提供的電子設備的示意性框圖。
如圖17所示,該電子設備30可以為本申請實施例所述的點雲解碼設備,或者點雲編碼設備,該電子設備30可包括:
記憶體31和處理器32,該記憶體31用於儲存電腦程式34,並將該程式碼34傳輸給該處理器32。換言之,該處理器32可以從記憶體31中調用並運行電腦程式34,以實現本申請實施例中的方法。
例如,該處理器32可用於根據該電腦程式34中的指令執行上述方法200中的步驟。
在本申請的一些實施例中,該處理器32可以包括但不限於:
通用處理器、數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式設計閘陣列(Field Programmable Gate Array,FPGA)或者其他可程式設計邏輯器件、分立門或者電晶體邏輯器件、分立硬體元件等等。
在本申請的一些實施例中,該記憶體31包括但不限於:
易失性記憶體和/或非易失性記憶體。其中,非易失性記憶體可以是唯讀記憶體(Read-Only Memory,ROM)、可程式設計唯讀記憶體(Programmable ROM,PROM)、可擦除可程式設計唯讀記憶體(Erasable PROM,EPROM)、電可擦除可程式設計唯讀記憶體(Electrically EPROM,EEPROM)或快閃記憶體。易失性記憶體可以是隨機存取記憶體(Random Access Memory,RAM),其用作外部快取記憶體。通過示例性但不是限制性說明,許多形式的RAM可用,例如靜態隨機存取記憶體(Static RAM,SRAM)、動態隨機存取記憶體(Dynamic RAM,DRAM)、同步動態隨機存取記憶體(Synchronous DRAM,SDRAM)、雙倍數據速率同步動態隨機存取記憶體(Double Data Rate SDRAM,DDR SDRAM)、增強型同步動態隨機存取記憶體(Enhanced SDRAM,ESDRAM)、同步連接動態隨機存取記憶體(synch link DRAM,SLDRAM)和直接記憶體匯流排隨機存取記憶體(Direct Rambus RAM,DR RAM)。
在本申請的一些實施例中,該電腦程式34可以被分割成一個或多個單元,該一個或者多個單元被儲存在該記憶體31中,並由該處理器32執行,以完成本申請提供的方法。該一個或多個單元可以是能夠完成特定功能的一系列電腦程式指令段,該指令段用於描述該電腦程式34在該電子設備30中的執行過程。
如圖17所示,該電子設備30還可包括:
收發器33,該收發器33可連接至該處理器32或記憶體31。
其中,處理器32可以控制該收發器33與其他設備進行通訊,具體地,可以向其他設備發送資訊或資料,或接收其他設備發送的資訊或資料。收發器33可以包括發射機和接收機。收發器33還可以進一步包括天線,天線的數量可以為一個或多個。
應當理解,該電子設備30中的各個元件通過匯流排系統相連,其中,匯流排系統除包括資料匯流排之外,還包括電源匯流排、控制匯流排和狀態訊號匯流排。
圖18是本申請實施例提供的點雲編解碼系統的示意性框圖。
如圖18所示,該點雲編解碼系統40可包括:點雲編碼器41和點雲解碼器42,其中點雲編碼器41用於執行本申請實施例涉及的點雲編碼方法,點雲解碼器42用於執行本申請實施例涉及的點雲解碼方法。
本申請還提供了一種碼流,該碼流是根據上述編碼方法生成的。
本申請還提供了一種電腦儲存媒介,其上儲存有電腦程式,該電腦程式被電腦執行時使得該電腦能夠執行上述方法實施例的方法。或者說,本申請實施例還提供一種包含指令的電腦程式產品,該指令被電腦執行時使得電腦執行上述方法實施例的方法。
當使用軟體實現時,可以全部或部分地以電腦程式產品的形式實現。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行該電腦程式指令時,全部或部分地產生按照本申請實施例該的流程或功能。該電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式設計裝置。該電腦指令可以儲存在電腦可讀儲存媒介中,或者從一個電腦可讀儲存媒介向另一個電腦可讀儲存媒介傳輸,例如,該電腦指令可以從一個網站、電腦、伺服器或資料中心通過有線(例如同軸電纜、光纖、數位用戶線路(digital subscriber line,DSL))或無線(例如紅外、無線、微波等)方式向另一個網站、電腦、伺服器或資料中心進行傳輸。該電腦可讀儲存媒介可以是電腦能夠存取的任何可用媒介或者是包含一個或多個可用媒介集成的伺服器、資料中心等資料存放裝置。該可用媒介可以是磁性媒介(例如,軟碟、硬碟、磁帶)、光媒介(例如數位點雲光碟(digital video disc,DVD))、或者半導體媒介(例如固態硬碟(solid state disk,SSD))等。
本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及演算法步驟,能夠以電子硬體、或者電腦軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本申請的範圍。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,該單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些介面,裝置或單元的間接耦合或通訊連接,可以是電性,機械或其它的形式。
作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。例如,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
以上內容,僅為本申請的具體實施方式,但本申請的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以申請專利範圍的保護範圍為准。
10:點雲解碼裝置
11:第一解碼單元
12:點數確定單元
13:重複點確定單元
14:第二解碼單元
20:點雲編碼裝置
21:結構確定單元
22:點數確定單元
23:重複點確定單元
24:計算單元
25:編碼單元
30:電子設備
31:記憶體
32:處理器
33:收發器
34:電腦程式
40:點雲編解碼系統
41:點雲編碼器
42:點雲解碼器
100:點雲編解碼系統
110:編碼設備
111:點雲源
112:點雲編碼器
113:輸出介面
120:解碼設備
121:輸入介面
122:點雲解碼器
123:顯示裝置
130:通道
200:點雲編碼器
201:座標轉換單元
202:體素單元
203:八叉樹劃分單元
204:幾何重建單元
205:算術編碼單元
206:表面擬合單元
207:預測樹構建單元
210:顏色轉換單元
211:重著色單元
212:RAHT變換單元
213:生成LOD單元
214:提升單元
215:量化係數單元
216:算術編碼單元
300:解碼器
301:算數解碼單元
302:八叉樹合成單元
303:表面擬合單元
304:幾何重建單元
305:逆座標變換單元
306:預測樹重建單元
310:算數解碼單元
311:反量化單元
312:RAHT逆變換單元
313:生成LOD單元
314:提升逆變換單元
315:逆顏色轉換單元
S101~S104:步驟
S201~S205:步驟
圖1A為點雲示意圖;
圖1B為點雲局部放大圖;
圖2為點雲圖像的六個觀看角度示意圖;
圖3為本申請實施例涉及的一種點雲編解碼系統的示意性框圖;
圖4A是本申請實施例提供的點雲編碼器的示意性框圖;
圖4B是本申請實施例提供的點雲解碼器的示意性框圖;
圖5A至圖5C為基於三角面片的幾何資訊編碼示意圖;
圖6為L3C2的一種解碼框架示意圖;
圖7A為一種單鏈結構示意圖;
圖7B為對圖7A所示的單鏈結構進行規則化後的單鏈示意圖;
圖8為雷射掃描器的掃描原理示意圖;
圖9為一種預測結構示意圖;
圖10為一種量化因數的確定原理示意圖;
圖11為另一種量化因數的確定原理示意圖;
圖12為L3C2的一種解碼框架示意圖;
圖13為本申請一實施例提供的點雲解碼方法流程示意圖;
圖14為本申請一實施例提供的點雲編碼方法流程示意圖;
圖15是本申請實施例提供的點雲解碼裝置的示意性框圖;
圖16是本申請實施例提供的點雲編碼裝置的示意性框圖;
圖17是本申請實施例提供的電子設備的示意性框圖;
圖18是本申請實施例提供的點雲編解碼系統的示意性框圖。
S101~S104:步驟
Claims (44)
- 一種點雲解碼方法,其中,包括: 解碼點雲的幾何碼流,得到所述點雲的低時延低複雜度編碼模型(L3C2)的節點總數,以及所述點雲的總點數; 根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數; 在解碼所述L3C2中的當前節點時,確定已解碼重複點的個數; 根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行幾何解碼。
- 根據請求項1所述的方法,其中,所述根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數,包括: 將所述點雲的總點數和所述L3C2的節點總數的差值,確定為所述點雲的重複點總數。
- 根據請求項1所述的方法,其中,所述根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼,包括: 若所述已解碼重複點的個數等於所述點雲的重複點總數,則跳過解碼所述當前節點的重複點資訊,確定所述當前節點所包括的第一點的幾何重建值。
- 根據請求項1所述的方法,其中,若所述重複點資訊包括所述當前節點所包括的重複點的個數,則所述根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼,包括: 若所述已解碼重複點的個數小於所述點雲的重複點總數,且所述當前節點為所述L3C2中的最後一個節點時,則跳過解碼所述當前節點的重複點資訊; 將所述點雲的重複點總數與所述已解碼重複點的個數的差值,確定為所述當前節點所包括的重複點個數。
- 根據請求項1所述的方法,其中,所述根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼,包括: 若所述已解碼重複點的個數小於所述點雲的重複點總數,且所述當前節點不是所述L3C2中的最後一個節點時,則解碼所述當前節點的重複點資訊; 基於所述重複點資訊,確定所述當前節點所包括的N個重複點的幾何重建值,所述N為整數。
- 根據請求項5所述的方法,其中,所述基於所述重複點資訊,確定所述當前節點所包括的N個重複點的幾何重建值,包括: 確定所述當前節點中第一個點的幾何重建值; 基於所述重複點資訊,以及所述第一個點的幾何重建值,確定所述N個重複點的幾何重建值。
- 根據請求項6所述的方法,其中,若N大於0,且所述重複點資訊包括第一標誌,所述第一標誌用於指示所述當前節點中的當前點與前一個點在第二座標下的座標是否相同,則所述基於所述重複點資訊,以及所述第一個點的幾何重建值,確定所述N個重複點的幾何重建值,包括: 針對所述N個重複點中的第i個重複點,解析所述重複點資訊,得到所述第i個重複點對應的第一標誌,所述i為小於或等於N的正整數,若i為1時,則第i-1個重複點為所述第一個點; 基於所述第i個重複點對應的第一標誌,確定所述第i個重複點的幾何重建值。
- 根據請求項7所述的方法,其中,所述基於所述第i個重複點對應的第一標誌,確定所述第i個重複點的幾何重建值,包括: 若所述第一標誌指示所述第i個重複點與所述第i-1個重複點在所述第二座標系下的座標相同,則將所述第i-1個重複點的幾何重建值,確定為所述第i個重複點的幾何重建值。
- 根據請求項7所述的方法,其中,所述基於所述第i個重複點對應的第一標誌,確定所述第i個重複點的幾何重建值,包括: 若所述第一標誌指示所述第i個重複點與所述第i-1個重複點在所述第二座標系下的座標不相同,則確定所述第i個重複點的幾何重建值。
- 根據請求項5至9任一項所述的方法,其中,所述方法還包括: 將所述當前節點所包括的重複點的個數與所述已解碼重複點的個數之和,確定為新的已解碼重複點的個數。
- 根據請求項3或6或9所述的方法,其中,所述方法還包括: 確定目標點在第一座標系下的座標預測值,所述目標點為所述當前節點中的第一點,或者為所述當前節點所包括的第一個點,或者為所述當前節點所包括的N個重複點中的第i個重複點; 基於所述目標點在第一座標系下的座標預測值,確定所述目標點在所述第一座標系下的座標重建值; 基於所述目標點在所述第一座標系下的座標重建值,確定所述目標點在第二座標系下的座標重建值; 將所述目標點在第二座標系下的座標重建值,確定為所述目標點的幾何重建值。
- 根據請求項11所述的方法,其中,所述確定所述目標點在第一座標系下的座標預測值,包括: 解碼所述幾何碼流,得到所述目標點對應的預測模式; 基於所述預測模式,確定所述目標點在所述第一座標系下的座標預測值。
- 根據請求項11所述的方法,其中,所述基於所述目標點在第一座標系下的座標預測值,確定所述目標點在所述第一座標系下的座標重建值,包括: 解碼所述幾何碼流,得到所述目標點在所述第一座標系下量化後的座標殘差值; 對所述量化後的座標殘差值進行反量化,得到所述目標點在所述第一座標系下的座標殘差值; 基於所述目標點在所述第一座標系下的座標預測值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值。
- 根據請求項13所述的方法,其中,所述基於所述目標點在所述第一座標系下的座標重建值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值,包括: 將所述目標點在所述第一座標系下的座標預測值和座標殘差值之和,確定為所述目標點在所述第一座標系下的座標重建值。
- 根據請求項11所述的方法,其中,所述基於所述目標點在所述第一座標系下的座標重建值,確定所述目標點在第二座標系下的座標重建值,包括: 對所述目標點在所述第一座標系下的座標重建值進行座標轉換,得到所述目標點在所述第二座標系下的座標預測值; 解碼所述幾何碼流,得到所述目標點在所述第二座標系下的座標殘差值; 基於所述目標點在所述第二座標系下的座標預測值和座標殘差值,得到所述目標點在第二座標系下的座標重建值。
- 根據請求項15所述的方法,其中,所述基於所述目標點在所述第二座標系下的座標預測值和座標殘差值,得到所述目標點在第二座標系下的座標重建值,包括: 將所述目標點在所述第二座標系下的座標預測值和座標殘差值之和,確定為所述目標點在第二座標系下的座標重建值。
- 根據請求項1至9任一項所述的方法,其中,所述解碼點雲的幾何碼流,得到所述點雲的低時延低複雜度編碼模型L3C2的節點總數,包括: 解碼所述點雲的幾何碼流,得到所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量; 基於所述單鏈數量,以及每個單鏈所包括的節點數量,得到所述L3C2的節點總數。
- 根據請求項1至9任一項所述的方法,其中,解碼點雲的幾何碼流,得到所述點雲的總點數,包括: 解碼所述點雲的幾何資料單元,得到所述點雲的總點數。
- 根據請求項18所述的方法,其中,所述解碼所述幾何資料單元,得到所述點雲的總點數,包括: 解碼所述幾何資料單元,得到第一值,所述第一值為所述點雲的點個數減一; 對所述第一值加一,得到所述點雲的總點數。
- 一種點雲編碼方法,其中,包括: 確定點雲的低時延低複雜度編碼模型(L3C2)結構; 確定所述點雲的L3C2的節點總數和所述點雲的總點數; 根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數; 在編碼所述L3C2中的當前節點時,確定已編碼重複點的個數; 根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼。
- 根據請求項20所述的方法,其中,所述根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數,包括: 將所述點雲的總點數和所述L3C2的節點總數的差值,確定為所述點雲的重複點總數。
- 根據請求項20所述的方法,其中,所述根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼,包括: 若所述已編碼重複點的個數等於所述點雲的重複點總數,則跳過確定以及編碼所述當前節點的重複點資訊; 確定所述當前節點所包括的第一點的座標殘差值,將所述第一點的座標殘差值寫入所述點雲的幾何碼流。
- 根據請求項20所述的方法,其中,若所述重複點資訊包括所述當前節點所包括的重複點的個數,則所述根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼,包括: 若所述已編碼重複點的個數小於所述點雲的重複點總數,且所述當前節點為所述L3C2中的最後一個節點,則跳過編碼所述當前節點所包括的重複點個數; 確定所述當前節點中第一個點的座標殘差值; 將所述第一個點的座標殘差值和所述當前節點的重複點資訊寫入所述幾何碼流。
- 根據請求項20所述的方法,其中,所述根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼,包括: 若所述已編碼重複點的個數小於所述點雲的重複點總數,且所述當前節點不是所述L3C2中的最後一個節點,則確定所述當前節點的重複點資訊; 確定所述當前節點中第一個點的座標殘差值; 將所述第一個點的座標殘差值和所述當前節點的重複點資訊寫入所述點雲的幾何碼流。
- 根據請求項24所述的方法,其中,若N大於0,且所述重複點資訊包括第一標誌,所述第一標誌用於指示所述當前節點中的當前點與前一個點在第二座標下的座標是否相同,則所述確定所述當前節點的重複點資訊,包括: 確定所述當前節點所包括的N個重複點的個數,所述N為整數; 基於所述當前節點所包括的第一個點在第二座標系下的座標值,以及所述N個重複點在第二座標系下的座標值,確定所述N個重複點分別對應的第一標誌; 基於所述當前節點所包括的N個重複點的個數和所述N個重複點分別對應的第一標誌,確定所述當前節點的重複點資訊。
- 根據請求項25所述的方法,其中,所述基於所述當前節點所包括的第一個點在第二座標系下的座標,以及所述N個重複點在第二座標系下的座標,確定所述N個重複點分別對應的第一標誌,包括: 針對所述N個重複點中的第i個重複點,基於第i-1個重複點在第二座標系下的座標值,以及所述第i個重複點在第二座標系下的座標值,確定所述第i個重複點對應的第一標誌,所述i為大於0且小於或等於N的正整數,若i為1時,則所述第i-1個重複點為所述第一個點。
- 根據請求項26所述的方法,其中,所述基於第i-1個重複點在第二座標系下的座標值,以及所述第i個重複點在第二座標系下的座標值,確定所述第i個重複點對應的第一標誌,包括: 若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值相同,則將所述第一標誌的值置為第一數值,所述第一數值指示所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值相同。
- 根據請求項26所述的方法,其中,所述基於第i-1個重複點在第二座標系下的座標值,以及所述第i個重複點在第二座標系下的座標值,確定所述第i個重複點對應的第一標誌,包括: 若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同,則將所述第一標誌的值置為第二數值,所述第二數值指示所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同。
- 根據請求項28所述的方法,其中,若所述第i個重複點在第二座標系下的座標值與所述第i-1個重複點在第二座標系下的座標值不相同,所述方法還包括: 確定所述第i個重複點的座標殘差值; 將所述第i個重複點的座標殘差值,寫入所述幾何碼流中。
- 根據請求項24至29任一項所述的方法,其中,所述方法還包括: 將所述當前節點所包括的重複點的個數與所述已編碼重複點的個數之和,確定為新的已編碼重複點的個數。
- 根據請求項22或25或29所述的方法,其中,所述方法還包括: 確定目標點在第一座標系下的座標預測值,所述目標點為所述當前節點中的第一點,或者為所述當前節點所包括的第一個點,或者為所述當前節點所包括的N個重複點中的第i個重複點; 基於所述目標點在所述第一座標系下的座標預測值和所述目標點在所述第一座標系下的座標值,確定所述目標點在所述第一座標系下的殘差值; 基於所述目標點在所述第一座標系下的座標預測值,得到所述目標點在所述第一座標系下的座標重建值; 對所述目標點在所述第一座標系下的座標重建值進行座標轉換,得到所述目標點在第二座標系下的座標重建值; 基於所述目標點在所述第二座標系下的座標重建值和座標值,確定所述目標點在所述第二座標系下的座標殘差值。
- 根據請求項31所述的方法,其中,所述方法還包括: 對所述目標點在所述第一座標系下的座標殘差值和所述目標點在所述第二座標系下的座標殘差值中的至少一個進行量化後,寫入所述幾何碼流。
- 根據請求項31所述的方法,其中,所述確定所述目標點在第一座標系下的座標預測值,包括: 確定所述目標點對應的預測模式; 基於所述預測模式,確定所述目標點在所述第一座標系下的座標預測值。
- 根據請求項33所述的方法,其中,所述方法還包括: 將所述目標點對應的預測模式寫入所述幾何碼流。
- 根據請求項32所述的方法,其中,所述基於所述目標點在第一座標系下的座標預測值,確定所述目標點在所述第一座標系下的座標重建值,包括: 對量化後的所述目標點在所述第一座標系下量化後的座標殘差值進行反量化,得到所述目標點在所述第一座標系下的座標殘差值; 基於所述目標點在所述第一座標系下的座標預測值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值。
- 根據請求項35所述的方法,其中,所述基於所述目標點在所述第一座標系下的座標重建值和座標殘差值,得到所述目標點在所述第一座標系下的座標重建值,包括: 將所述目標點在所述第一座標系下的座標預測值和座標殘差值之和,確定為所述目標點在所述第一座標系下的座標重建值。
- 根據請求項20至29任一項所述的方法,其中,所述確定所述點雲的L3C2的節點總數和所述點雲的總點數,包括: 確定所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量; 基於所述單鏈數量,以及每個單鏈所包括的節點數量,得到所述L3C2的節點總數。
- 根據請求項37所述的方法,其中,所述方法還包括: 將所述L3C2所包括的單鏈數量,以及每個單鏈所包括的節點數量寫入所述點雲的幾何碼流。
- 根據請求項20至29任一項所述的方法,其中,所述方法還包括: 將所述點雲的總點數,寫入幾何資料單元中。
- 根據請求項39所述的方法,其中,所述將所述點雲的總點數,寫入幾何資料單元中,包括: 將所述點雲的總點數減1,得到第一值; 將所述第一值寫入所述幾何資料單元中。
- 一種點雲編碼裝置,其中,包括: 第一解碼單元,用於解碼點雲的幾何碼流,得到所述點雲的低時延低複雜度編碼模型(L3C2)的節點總數,以及所述點雲的總點數; 點數確定單元,用於根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數; 重複點確定單元,用於在解碼所述L3C2中的當前節點時,確定已解碼重複點的個數; 第二解碼單元,用於根據所述已解碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行解碼。
- 一種點雲編碼裝置,其中,包括: 結構確定單元,用於確定點雲的低時延低複雜度編碼模型(L3C2)結構; 點數確定單元,用於確定所述點雲的L3C2的節點總數和所述點雲的總點數; 重複點確定單元,用於根據所述點雲的總點數和所述L3C2的節點總數,確定所述點雲的重複點總數; 計算單元,用於在編碼所述L3C2中的當前節點時,確定已編碼重複點的個數; 編碼單元,用於根據所述已編碼重複點的個數和所述點雲的重複點總數,對所述當前節點進行編碼。
- 一種電子設備,其中,包括:處理器和記憶體; 所述記憶體用於儲存電腦程式; 所述處理器用於調用並運行所述記憶體中儲存的電腦程式,以執行如請求項1至19或20至40任一項所述的方法。
- 一種電腦可讀儲存媒介,其中,用於儲存電腦程式,所述電腦程式使得電腦執行如請求項1至19或20至40任一項所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2022/122116 | 2022-09-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202425629A true TW202425629A (zh) | 2024-06-16 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3606067A4 (en) | VIDEO ENCODING METHOD, VIDEO DECODING METHOD, COMPUTER DEVICE AND STORAGE MEDIUM | |
EP3979647A4 (en) | CODING/DECODING METHOD AND DEVICE AND STORAGE MEDIUM | |
EP3438973A4 (en) | METHOD AND APPARATUS FOR BUILDING VOICE DECODING NETWORK AS PART OF DIGITAL VOICE RECOGNITION, AND RECORDING MEDIUM | |
EP3588914A4 (en) | DATA STORAGE METHOD, CODING DEVICE, AND DECODING DEVICE | |
EP4047597A4 (en) | METHOD FOR CONSTRUCTING A DECODING NETWORK, VOICE RECOGNITION METHOD, APPARATUS AND APPARATUS AND STORAGE MEDIUM | |
EP3979638A4 (en) | POINT CLOUD ENCODING AND DECODER METHOD, ENCODER, DECODER AND COMPUTER STORAGE MEDIA | |
EP3813371A4 (en) | VIDEO CODING / DECODING PROCESS AND APPARATUS, COMPUTER DEVICE, AND INFORMATION MEDIA | |
EP3742727A4 (en) | VIDEO ENCODING METHOD, DEVICE, DEVICE AND STORAGE MEDIUM | |
EP3965325A4 (en) | METHOD, APPARATUS AND DEVICE FOR DATA TRANSMISSION, CODING AND DECODED, AND STORAGE MEDIUM | |
HUE063301T2 (hu) | Képjel dekódolási eljárás, képjel kódolási eljárás és tárolóeszköz | |
CL2018000887A1 (es) | Codificación en capas y estructuras de datos para representaciones comprimidas, ambisónicas de mayor orden de sonido o campo de sonido. | |
EP3806462A4 (en) | PICTURE DECODING AND PICTURE ENCODING METHODS, RELATED DEVICE AND STORAGE MEDIA | |
EP4084338A4 (en) | DECODING METHOD AND APPARATUS, NETWORK DEVICE AND RECORDING MEDIUM | |
EP3975558A4 (en) | VIDEO DECODING METHOD, VIDEO ENCODING METHOD, DEVICE AND FACILITIES, AND STORAGE MEDIA | |
KR102384691B9 (ko) | 디코딩 또는 인코딩을 위한 방법, 장치 및 매체 | |
EP3869805A4 (en) | METHOD AND DEVICE FOR VIDEO ENCODING, METHOD AND DEVICE FOR VIDEO DECODING, COMPUTER DEVICE AND STORAGE MEDIUM | |
ZA202101726B (en) | Decoding prediction method and apparatus, and computer storage medium | |
EP4037321A4 (en) | VIDEO CODING AND DECODING METHOD AND APPARATUS, STORAGE MEDIA AND COMPUTER DEVICE | |
EP3869806A4 (en) | VIDEO ENCODING AND VIDEO DECODING PROCESSES, DEVICE, COMPUTER DEVICE AND INFORMATION MEDIA | |
SG11202110220RA (en) | Point cloud encoding method and apparatus, point cloud decoding method and apparatus, and storage medium | |
SG11202004508PA (en) | Channel state information encoding method and apparatus, storage medium and processor | |
TWI799683B (zh) | 支付方法、裝置、設備、系統及存儲介質 | |
EP3920537A4 (en) | VIDEO DECODING METHOD AND DEVICE, VIDEO ENCODING METHOD AND DEVICE, STORAGE MEDIA AND ELECTRONIC DEVICE | |
TW202425629A (zh) | 點雲編解碼方法、裝置、設備及儲存媒介 | |
TW202425635A (zh) | 點雲編解碼方法、裝置、設備及儲存媒介 |