本發明實施例涉及數據處理技術領域,尤其涉及一種海量點云數據的空間索引構建方法及裝置。
背景技術:
激光雷達掃描技術是一種新興的三維數據獲取技術,利用搭載在三腳架、汽車、飛機及衛星等不同平臺上的激光雷達掃描儀能夠快速獲取海量點云數據。點云數據中包含了每個點的經緯度坐標、強度、多次回波及顏色等豐富的信息,在測繪、林業、農業及數字城市等領域均有相關應用。目前常用的激光雷達掃描儀設備,如Riegl、Faro及Leica等,每秒均能產生成千上萬個點,每次掃描獲取的數據點數能達到數十萬或數百萬,數據量達幾十至幾百G。如此龐大的數據量給數據的存儲和處理均帶來了負擔。
如何對海量數據進行有效的組織、管理和動態調度顯示,對數據的進一步分析和應用至關重要,相關領域的研究如火如荼。空間索引是點云數據組織管理中的一項關鍵技術,不同空間索引方式的結構復雜度、構建、查詢效率以及空間利用率有所不同。目前常用的點云數據空間索引方式包括格網索引、四叉樹索引、八叉樹索引和KD(k-dimensional)樹索引等。格網索引容易構建且易于編碼,但是構建時未考慮數據的空間分布情況,而且不利于點云數據的快速可視化;四叉樹索引結構簡單,但對海量點云構建四叉樹索引時難以確定葉子節點包含的點數,而且數據分布不均勻時,構建和查詢效率降低;KD樹索引在數據的查詢檢索方面具有優勢,但是建立點的鄰域關系需要大量的時間;八叉樹索引是由四叉樹索引擴展到三維空間的三維空間索引結構,構建過程比較簡單,具有較高的索引效率,但對于海量點云數據來說,隨著八叉樹的深度不斷增加,構建索引時會占用較大的內存空間,查詢效率也隨之降低。
技術實現要素:
本發明實施例的目的是提供一種海量點云數據的空間索引構建方法及裝置,以優化現有的海量點云數據的空間索引構建方案。
一方面,本發明實施例提供了一種海量點云數據的空間索引構建方法,包括:
對獲取的原始點云數據進行分塊處理,得到多個點云數據塊;
對于每個點云數據塊,構建當前點云數據塊的八叉樹索引;
將多個點云數據塊的八叉樹索引進行合并處理,得到所述原始點云數據的空間索引結構。
另一方面,本發明實施例提供了一種海量點云數據的空間索引構建裝置,包括:
分塊模塊,用于對獲取的原始點云數據進行分塊處理,得到多個點云數據塊;
八叉樹索引構建模塊,用于對于每個點云數據塊,構建當前點云數據塊的八叉樹索引;
合并模塊,用于將多個點云數據塊的八叉樹索引進行合并處理,得到所述原始點云數據的空間索引結構。
本發明實施例中提供的海量點云數據的空間索引構建方案,對獲取的原始點云數據進行分塊處理,并對每個點云數據塊分別構建八叉樹索引,再對多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構。通過采用上述技術方案,對傳統的八叉樹索引結構進行了改進,通過對原始點云數據進行分塊處理,可將海量點云數據進行分解,減少在構建空間索引時對內存空間的占用。此外,在對多個八叉樹索引進行合并后,在進行后續的查詢時,可先找到目標數據所在的八叉樹索引,再基于找到的八叉樹索引查找目標數據,可有效提升查詢效率。
附圖說明
圖1為本發明實施例一提供的一種海量點云數據的空間索引構建方法的流程示意圖;
圖2為本發明實施例一提供的一種空間索引結構示意圖;
圖3為本發明實施例二提供的一種海量點云數據的空間索引構建方法的流程示意圖;
圖4為本發明實施例二提供的一種八叉樹索引結構示意圖;
圖5為本發明實施例三提供的一種海量點云數據的空間索引構建方法的流程示意圖;
圖6為本發明實施例三提供的一種基于八叉樹索引的分層顯示示意圖;
圖7為本發明實施例四提供的一種海量點云數據的空間索引構建裝置的結構框圖;
圖8為本發明實施例六提供的一種終端的結構框圖。
具體實施方式
下面結合附圖并通過具體實施方式來進一步說明本發明的技術方案。可以理解的是,此處所描述的具體實施例僅僅用于解釋本發明,而非對本發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發明相關的部分而非全部結構。
在更加詳細地討論示例性實施例之前應當提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各步驟描述成順序的處理,但是其中的許多步驟可以被并行地、并發地或者同時實施。此外,各步驟的順序可以被重新安排。當其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應于方法、函數、規程、子例程、子程序等等。
實施例一
圖1為本發明實施例一提供的一種海量點云數據的空間索引構建方法的流程示意圖,該方法可以由海量點云數據的空間索引構建裝置執行,其中該裝置可由軟件和/或硬件實現,一般可集成在計算機等終端中。如圖1所示,該方法包括:
步驟110、對獲取的原始點云數據進行分塊處理,得到多個點云數據塊。
示例性的,可根據運行環境信息對獲取的原始點云數據進行分塊處理,運行環境信息可包括內存容量等,此處的內存容量具體可指終端的可用內存容量。例如,可根據可用內存容量的大小來確定每個點云數據塊所包含的數據量的大小,在讀取原始點云數據時,根據點云數據塊所包含的數據量的大小來讀取相應數量的點云數據,得到當前的點云數據塊。假設原始點云數據包含2000萬個點,若根據終端的可用內存容量大小確定點云數據塊中可包含500萬個點,那么可在讀取500萬個點后,將該500萬個點對應的數據作為當前點云數據塊。
步驟120、對于每個點云數據塊,構建當前點云數據塊的八叉樹索引。
示例性的,構建當前點云數據塊的八叉樹索引可包括如下步驟:在當前點云數據塊中隨機選取一個點作為八叉樹的根節點,沿著X,Y和Z三個方向對當前點云數據塊進行劃分,獲得八個子節點;如果某個子節點中包含的點數小于設定劃分閾值,則不再劃分,反之,則以該子節點為根節點繼續劃分為八個子節點,以此類推,構建出當前點云數據的八叉樹索引。其中,未被劃分為八個子節點的節點可稱為葉子節點,被劃分為八個子節點的節點可稱為非葉子節點。
示例性的,可按照如上方式依次建立各點云數據塊的八叉樹索引,減少對終端內存空間的占用。
步驟130、將多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構。
示例性的,可基于多個點云數據塊的空間范圍為多個點云數據塊的八叉樹索引建立格網索引,得到原始點云數據的空間索引結構。
示例性的,圖2為本發明實施例一提供的一種空間索引結構示意圖,原始點云數據被劃分為4個點云數據塊,分別構建每個點云數據塊的八叉樹索引,得到了4個八叉樹索引,在對這4個八叉樹索引進行合并處理時,可基于每個點云數據塊的空間范圍建立格網索引,從而得到原始點云數據的空間索引結構,在后續的數據查詢過程中,只需要知道想要查詢的目標數據落在4個點云數據塊中的哪個部分,即可繼續根據相應的八叉樹索引找到目標數據,相比于傳統的根據整個原始點云數據構建1個較大的八叉樹索引來說,本實施例中構建的空間索引結構的查詢效率有了明顯提升。需要說明的是,如圖2所示,由于點的分布是雜散的,所以4個點云數據塊在空間范圍內可能存在交疊,本實施例對于是否存在交疊以及交疊程度不做具體限定。
本發明實施例一提供的海量點云數據的空間索引構建方法,對獲取的原始點云數據進行分塊處理,并對每個點云數據塊分別構建八叉樹索引,再對多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構。通過采用上述技術方案,對傳統的八叉樹索引結構進行了改進,通過對原始點云數據進行分塊處理,可將海量點云數據進行分解,減少在構建空間索引時對內存空間的占用。此外,在對多個八叉樹索引進行合并后,在進行后續的查詢時,可先找到目標數據所在的八叉樹索引,再基于找到的八叉樹索引查找目標數據,可有效提升查詢效率。
實施例二
圖3為本發明實施例二提供的一種海量點云數據的空間索引構建方法的流程示意圖,本實施例以上述實施例為基礎進行優化,在本實施例中,將步驟“對于每個點云數據塊,構建當前點云數據塊的八叉樹索引”優化為:對于每個點云數據塊,構建當前點云數據塊的八叉樹索引,并按照所構建的八叉樹索引的層次對所述當前點云數據塊進行存儲。其中,對于當前層次中的葉子節點,在當前層次中存儲所述葉子節點對應的包圍盒中的所有未存儲數據,對于當前層次中的非葉子節點,在當前層次中按照預設比例隨機存儲所述非葉子節點對應的包圍盒中的部分未存儲數據,各層次所存儲的數據的總和為所述當前點云數據塊包含的所有點云數據。
相應的,本實施例的方法包括如下步驟:
步驟310、對獲取的原始點云數據進行分塊處理,得到多個點云數據塊。
步驟320、對于每個點云數據塊,構建當前點云數據塊的八叉樹索引,并按照所構建的八叉樹索引的層次對所述當前點云數據塊進行存儲。
其中,對于當前層次中的葉子節點,在當前層次中存儲所述葉子節點對應的包圍盒中的所有未存儲數據,對于當前層次中的非葉子節點,在當前層次中按照預設比例隨機存儲所述非葉子節點對應的包圍盒中的部分未存儲數據,各層次所存儲的數據的總和為所述當前點云數據塊包含的所有點云數據。
一個節點的包圍盒可理解為將該節點所包含的所有點包含在內的立方空間。所述預設比例可根據所對應層次的不同而不同,具體可參照同層的葉子節點所包含的數據量來確定。
圖4為本發明實施例二提供的一種八叉樹索引結構示意圖,如圖4所示,該八叉樹索引包含了三個層次。第一層為八叉樹的根節點;第二層的第3個和第7個節點為非葉子節點,剩余節點為葉子節點;第三層包含了16個葉子節點。
傳統的八叉樹索引的數據存儲策略中,需要對同樣的數據進行重復存儲,會占用較大的存儲空間。例如,參照圖4,在第二層中,只有2個節點被繼續劃分了8個子節點,而另外6個節點是沒有子節點的,但是在第三層中進行數據存儲時,不僅需要存儲本層的16個葉子節點的數據,還需要將第二層中的6個葉子數據重復進行存儲,使得文件量變大。
本實施例中,可根據八叉樹的層次深度進行自適應存儲,對于當前層次中的葉子節點,在當前層次中存儲該葉子節點對應的包圍盒中的所有未存儲數據,對于當前層次中的非葉子節點,在當前層次中按照預設比例隨機存儲該非葉子節點對應的包圍盒中的部分未存儲數據,各層次所存儲的數據的總和為當前點云數據塊包含的所有點云數據。參照圖4,在第一層中,根節點為非葉子節點,此時的所有數據均處于未存儲狀態,在第一層中按照第一預設比例隨機存儲部分數據;在第二層中,以第1個葉子節點為例,該葉子節點對應的包圍盒中的數據可能被根節點隨機抽取了部分進行了存儲,此時,僅需要存儲該葉子節點對應的包圍盒中剩余的數據即可,即所有未存儲數據;在第二層中,以第1個非葉子節點(第3個節點)為例,該非葉子節點對應的包圍盒中的數據可能被根節點隨機抽取了部分進行了存儲,而該非葉子節點又被劃分為了8個子節點,所以,需要按照第二預設比例隨機存儲該非葉子節點對應的包圍盒中的部分未存儲數據,并將剩余的未存儲數據留到后面的層次中進行存儲;在第三層中,每個葉子節點存儲所對應的包圍盒中的所有未存儲數據。這樣,每個層次中的每個節點都會存儲部分數據,且各層次所存儲的數據的總和為當前點云數據塊包含的所有點云數據,不存在重復存儲的現象,有效節約了存儲空間。
步驟330、將多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構。
本發明實施例二在上述實施例的基礎上對數據存儲策略進行了優化,將數據合理分配至各個層次進行存儲,避免重復存儲,從而有效節約了存儲空間。
實施例三
圖5為本發明實施例三提供的一種海量點云數據的空間索引構建方法的流程示意圖,本實施例以上述實施例為基礎進行優化,在本實施例中,在將多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構之后,增加了步驟:基于多細節層次(Levels of Detail,LOD)技術根據當前視點到目標點的距離從原始點云數據的空間索引結構中調度相應的數據進行顯示。
相應的,本實施例的方法包括如下步驟:
步驟510、對獲取的原始點云數據進行分塊處理,得到多個點云數據塊。
步驟520、對于每個點云數據塊,構建當前點云數據塊的八叉樹索引,并按照所構建的八叉樹索引的層次對所述當前點云數據塊進行存儲。
其中,對于當前層次中的葉子節點,在當前層次中存儲所述葉子節點對應的包圍盒中的所有未存儲數據,對于當前層次中的非葉子節點,在當前層次中按照預設比例隨機存儲所述非葉子節點對應的包圍盒中的部分未存儲數據,各層次所存儲的數據的總和為所述當前點云數據塊包含的所有點云數據。
步驟530、將多個點云數據塊的八叉樹索引進行合并處理,得到原始點云數據的空間索引結構。
步驟540、基于LOD技術根據當前視點到目標點的距離從原始點云數據的空間索引結構中調度相應的數據進行顯示。
示例性的,在當前視點到目標點的距離較大時,能夠看到的場景范圍較大,而在當前視點到目標點的距離較小時,能夠看到的場景范圍較小。可根據所看到的場景范圍的大小來確定該場景范圍的坐標,根據場景范圍的坐標來確定需要從原始點云數據的空間索引結構中調度哪個或哪些點云數據塊對應的數據。
示例性的,在大規模場景渲染時,為了提高速度和效率往往不會調度所有的數據,而是根據不同的視點抽稀出其中的部分數據。LOD技術指根據物體模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。圖6為本發明實施例三提供的一種基于八叉樹索引的分層顯示示意圖,如圖所示,八叉樹索引包含三個層次,分別為第一層(Level 1)、第二層(Level 2)和第三層(Level 3),層次數越大,點越密集,所顯示的細節信息越多。
在對原始點云數據進行調度時,可根據當前視點到目標點的距離確定需要從原始點云數據的空間索引結構中調度的點云數據塊,再根據對細節信息的需求情況基于LOD技術從所確定的點云數據塊的八叉樹索引中調度相應層次對應的數據。
本發明實施例三提供的海量點云數據的空間索引構建方法,在原始點云數據的空間索引結構構建完成后,基于LOD技術進行了分級顯示,能夠實現點云數據的實時可視化,并方便后續對點云數據的編輯。為了驗證實施例所提出的方法的有效性和高效性,以無人機激光雷達掃描儀獲取的容量為42.1GB激光雷達點云數據為測試數據構建了空間索引,構建索引的時間為1.5小時,構建索引之后數據容量為36.1GB。測試所用電腦處理器的配置為:Intel(R)Core(TM)i5-4460CPU@3.2GHz,測試結果表明該方法能夠很好地管理海量點云,并且可以進行動態調度顯示和編輯。構建索引之后,后續使用數據時可以秒開,可以大幅節省時間。
實施例四
圖7為本發明實施例四提供的一種海量點云數據的空間索引構建裝置的結構框圖,該裝置可由軟件和/或硬件實現,一般集成在計算機等終端中,可通過執行海量點云數據的空間索引構建方法來構建點云數據的空間索引。如圖7所示,該裝置包括分塊模塊71、八叉樹索引構建模塊72和合并模塊73。
其中,分塊模塊71,用于對獲取的原始點云數據進行分塊處理,得到多個點云數據塊;八叉樹索引構建模塊72,用于對于每個點云數據塊,構建當前點云數據塊的八叉樹索引;合并模塊73,用于將多個點云數據塊的八叉樹索引進行合并處理,得到所述原始點云數據的空間索引結構。
本發明實施例四提供的海量點云數據的空間索引構建裝置,對傳統的八叉樹索引結構進行了改進,通過對原始點云數據進行分塊處理,可將海量點云數據進行分解,減少在構建空間索引時對內存空間的占用。此外,在對多個八叉樹索引進行合并后,在進行后續的查詢時,可先找到目標數據所在的八叉樹索引,再基于找到的八叉樹索引查找目標數據,可有效提升查詢效率。
在上述實施例的基礎上,所述八叉樹索引構建模塊具體用于:對于每個點云數據塊,構建當前點云數據塊的八叉樹索引,并按照所構建的八叉樹索引的層次對所述當前點云數據塊進行存儲,其中,對于當前層次中的葉子節點,在當前層次中存儲所述葉子節點對應的包圍盒中的所有未存儲數據,對于當前層次中的非葉子節點,在當前層次中按照預設比例隨機存儲所述非葉子節點對應的包圍盒中的部分未存儲數據,各層次所存儲的數據的總和為所述當前點云數據塊包含的所有點云數據。
在上述實施例的基礎上,所述分塊模塊具體用于:根據運行環境信息對獲取的原始點云數據進行分塊處理,得到多個點云數據塊,其中,所述運行環境信息包括內存容量。
在上述實施例的基礎上,所述合并模塊具體用于:基于所述多個點云數據塊的空間范圍為多個點云數據塊的八叉樹索引建立格網索引,得到所述原始點云數據的空間索引結構。
在上述實施例的基礎上,該裝置還包括調度模塊,用于在將多個點云數據塊的八叉樹索引進行合并處理,得到所述原始點云數據的空間索引結構之后,基于多細節層次LOD技術根據當前視點到目標點的距離從所述原始點云數據的空間索引結構中調度相應的數據進行顯示。
實施例五
本發明實施例還提供一種包含計算機可執行指令的存儲介質,所述計算機可執行指令在由計算機處理器執行時用于執行一種點云數據的空間索引構建方法,該方法包括:
對獲取的原始點云數據進行分塊處理,得到多個點云數據塊;對于每個點云數據塊,構建當前點云數據塊的八叉樹索引;將多個點云數據塊的八叉樹索引進行合并處理,得到所述原始點云數據的空間索引結構。
可選的,該計算機可執行指令在由計算機處理器執行時還可以用于執行本發明任意實施例所提供的海量點云數據的空間索引構建方法的技術方案。
通過以上關于實施方式的描述,所屬領域的技術人員可以清楚地了解到,本發明可借助軟件及必需的通用硬件來實現,當然也可以通過硬件實現,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如計算機的軟盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、閃存(FLASH)、硬盤或光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。
實施例六
本發明第六實施例提供了一種終端,包括本發明任意實施例所提供的海量點云數據的空間索引構建裝置。
具體的,圖8為本發明實施例六提供的一種終端的結構框圖,如圖8所示,本發明實施例提供一種終端,該終端包括處理器80、存儲器81、輸入裝置82和輸出裝置83;終端中處理器80的數量可以是一個或多個,圖8中以一個處理器80為例;終端中的處理器80、存儲器81、輸入裝置82和輸出裝置83可以通過總線或其他方式連接,圖8中以通過總線連接為例。
存儲器81作為一種計算機可讀存儲介質,可用于存儲軟件程序、計算機可執行程序以及模塊,如本發明實施例中的海量點云數據的空間索引構建方法對應的程序指令/模塊(例如,海量點云數據的空間索引構建裝置中的分塊模塊71、八叉樹索引構建模塊72和合并模塊73)。處理器80通過運行存儲在存儲器81中的軟件程序、指令以及模塊,從而執行終端的各種功能應用以及數據處理,即實現上述的海量點云數據的空間索引構建方法。
存儲器81可主要包括存儲程序區和存儲數據區,其中,存儲程序區可存儲操作系統、至少一個功能所需的應用程序;存儲數據區可存儲根據終端的使用所創建的數據等。此外,存儲器81可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他非易失性固態存儲器件。在一些實例中,存儲器81可進一步包括相對于處理器80遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至終端。上述網絡的實例包括但不限于互聯網、企業內部網、局域網、移動通信網及其組合。
輸入裝置82可用于接收輸入的數字或字符信息,以及產生與終端的用戶設置以及功能控制有關的鍵信號輸入。輸出裝置83可包括顯示屏等顯示設備。
上述實施例中提供的海量點云數據的空間索引構建裝置、存儲介質及終端可執行本發明任意實施例所提供的海量點云數據的空間索引構建方法,具備執行該方法相應的功能模塊和有益效果。未在上述實施例中詳盡描述的技術細節,可參見本發明任意實施例所提供的海量點云數據的空間索引構建方法。
注意,上述僅為本發明的較佳實施例及所運用技術原理。本領域技術人員會理解,本發明不限于這里所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調整和替代而不會脫離本發明的保護范圍。因此,雖然通過以上實施例對本發明進行了較為詳細的說明,但是本發明不僅僅限于以上實施例,在不脫離本發明構思的情況下,還可以包括更多其他等效實施例,而本發明的范圍由所附的權利要求范圍決定。