專利名稱:基于gpu加速的三維場景重建方法
技術領域:
本發明涉及計算機視覺和計算機圖形學領域,具體地,涉及一種基于GPlXGraphicProcessing Unit,圖形處理器)加速的三維場景重建方法。
背景技術:
在計算機視覺領域,從二維圖像中重建出物體的三維點云,一直是該領域的重點研究問題之一。它不僅綜合了眾多的學科知識,并且在航空測繪、場景模擬、視覺導航、醫學診斷、文物保護、電子商務、虛擬現實等諸多領域都有著非常廣闊的應用前景。基于圖像的三維重建方法充分利用計算機視覺和計算機圖形學的相關知識,從實際拍攝的單幅或多幅圖像中恢復出物體的三維模型,可以把它認為是相機拍攝照片的一個逆過程。我國嫦娥一號環月衛星傳回了月球表面的三維立體圖像,其也向世人昭示了三維重建技術的巨大應用前景。如何更逼真地、簡便地獲得真實世界的三維模型促使著計算機視覺研究者們不斷地提出新的方法并完善現有方法。計算機構建物體三維模型的技術手段通常分為以下三種幾何造型的方法、用三維掃描設備獲取三維模型的方法和基于圖像的三維重建方法。幾何造型的方法是指通過點、線、面、體等幾何元素的平移、旋轉、變比等幾何變換以及并、交、差等集合運算,產生實際的或想象的物體模型。幾何造型方法起源于上世紀七十年代,現在己經廣泛地應用在計算機輔助設計、動畫制作、廣告制作、影視制作等領域。目前,市面上流行著很多優秀的建模軟件,像3DMAX,Maya, AutoCAD等。它們都是利用一些基本的幾何元素,通過一系列幾何操作來構造復雜的模型。這種方法要求必須充分掌握場景數據,同時相關軟件的操作比較復雜,往往需要熟練的操作人員且具備豐富的專業知識,創作過程相對比較復雜。利用三維掃描設備可以獲得精確的三維模型,這些設備包括深度掃描儀、三維相機、激光器等。根據掃描儀不同的測頭結構,可以分為接觸式和非接觸式兩種,其中,接觸式測頭又可分為硬測頭和軟測頭兩種,接觸式測頭需要與被測物體直接接觸,獲取物體的三維信息。非接觸式測頭利用了光學及激光原理,稱為三維激光掃描儀。利用三維掃描設備對物體進行三維重建的方法使用簡單,精度非常高,并且構建模型所需時間相對較少,因此被廣泛應用于逆向工程、虛擬現實、環境仿真等領域。但是,通常這些高精度的設備都非常昂貴,因此并不具備很好的普及性。基于圖像的三維重建方法充分利用計算機視覺和計算機圖形學的相關知識,從實際拍攝的單幅或多幅圖像中恢復出物體的三維模型,可以把它認為是相機拍攝照片的一個逆過程,如公開號為101714262A的中國發明專利所公開的單幅圖像的三維場景重建方法。目前,通過對重建方法的不斷改進,建模過程越來越自動化,人工勞動強度越來越輕,建模成本越來越低。而在設備方面只需要一個普通的數碼相機,價格低廉,適用于任何場景的重構,并且可以獲得具有“照片級”高真實感的三維模型。目前基于圖像重建三維點云的方法主要有兩類SFM(Structure From Motion,從運動信息中恢復三維場景)和SFS (Shape From Silhouette,從輪廓信息恢復三維場景)。第一類方法的好處是可以獲得更多的細節,但是會產生噪聲;第二類方法的好處是能對邊界問題進行非常好的處理,但是它對于細節的處理要比較糟糕。
發明內容
針對現有技術中的缺陷,本發明的目的是提供一種基于GPU加速的三維場景重建方法,可以自動的快速獲得三維場景。為實現上述目的,本發明采用的技術方案是對二維圖像進行GPU并行SIFT(Scale-1nvariant feature transform,尺度不變特征轉換)特征點計算,并進行特征點匹配,然后對每幅圖像進行相機標定,再進行稠密點云重建,接著進行點云濾波,去噪,再把點云網格化,最后通過GPU進行紋理映射,得到三維場景。具體地,一種基于GPU加速的三維場景重建方法,它由以下步驟具體實現步驟一、使用相機在不同的位置、不同的角度對場景進行拍照,獲得真實場景的二維圖像序列。步驟二、使用GPU并行加速的SIFT算法得到每幅圖像的特征點,并進行特征點匹配。步驟三、使用Bundle Adjustment (光束平差)算法,自動獲得所有圖像的相機參數(相機矩陣),并得到特征點在三維空間中的位置,生成初始的稀疏點云模型。步驟四、使用PMVS(Patch-based Mult1-view Stereo,基于塊的多視角立體場景)算法,將之前由特征點重建出的空間點稱之為種子點,擴散從種子點開始,利用相鄰點具有相似的法向和位置的特性,逐步擴散重建出其周圍的空間點,擴散結束后,進行過濾處理,將灰度一致性、幾何一致性比較弱的點剔除,得到稠密的點云模型。步驟五、對每一幅圖像進行圖像分割,得到前景和背景,然后通過點云反投影到圖像中,把錯誤生成的點去掉,第一次精煉點云,然后使用低通濾波器對三維模型進行濾波,濾掉一些孤立點(高頻噪聲),第二次精煉點云。步驟六、對生成的點云使用KNN (k-Nearest Neighbor algorithm, K最鄰近結點算法)的思想計算點云中每個點的法向向量,然后將向量投影到一個球面的cell (格子)中,計算點云的主方向、此方向和第三方向,再計算旋轉矩陣,將點云的主要法向與三維空間的坐標軸方向一致。步驟七、重新組織點云的存儲結構,把點云放在空間八叉樹中,然后從最上方的點進行A*搜索,增量的搜索三角片面,將點云網格化。步驟八、從二維圖像中找到網格化后所有三角片面對應的紋理,然后通過GPU進行紋理映射,最終渲染出整個場景。優選地,步驟一中,所采用的相機獲取目標對象的二維圖像序列的方法,需在不同的角度和不同的位置進行拍攝,不能只站在一個固定的位置拍攝。優選地,步驟二中,所采用的GPU加速SIFT,系統需要安裝CUDA (ComputeUnifiedDevice Architecture,顯卡廠商NVidia推出的運算平臺)的運行環境,保證SIFT可以并行的由GPU處理。優選地,步驟四中,所采用PMVS進行稠密點云的獲取,需要對圖像劃分網格,網格的尺寸可以選擇,網格越小,獲得的點云越稠密。優選地,步驟五中,先對圖像進行前景和背景的分割,然后所采用的反投影的方式,為將點云反投影到每幅圖像中,如果有點落在了前景或者圖像之外,則保留該點,如果投影到背景中,則刪掉該點。再使用低通濾波器,濾掉孤立點。優選地,步驟七中,基于A*搜索的網格化,在生成三角網格的時候要保證兩個條件第一,三角形盡可能的飽滿,不要太窄,要求三角形的每個角都要大于30度,第二,平面盡可能光滑,即相鄰的兩個三角面片要近似180度。優選地,步驟八中,紋理映射可以使用OpenGL SL (Open Graphics LibraryShadingLanguage,開放的圖形程序庫渲染語言)將圖像作為紋理保存起來,然后綁定紋理,進行渲染。與現有技術相比,本發明具有如下的有益效果本發明通過對一個場景進行多角度,多位置的拍照,可以自動的快速獲得三維場景。本發明主要有三個顯著優點1.本發明通過GPU并行計算SIFT特征點,加快重建的速度,解決三維重建速度慢的問題;2.本發明通過使用SFM和SFS融合的辦法,成功解決三維重建邊界的問題;3.本發明不需要人工干預,可以實現完全的重建自動化。
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發明的其它特征、目的和優點將會變得更明顯圖1是本發明基于GPU加速的三維場景重建方法的流程圖。圖2 是一實施例 Bundle Adjustment 的結果。圖3是圖2所示實施例的稠密點云。圖4是圖2所示實施例的最終結果。
具體實施例方式下面結合具體實施例對本發明進行詳細說明。以下實施例將有助于本領域的技術人員進一步理解本發明,但不以任何形式限制本發明。應當指出的是,對本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進。這些都屬于本發明的保護范圍。如圖1所示,使用基于GPU加速的三維場景重建方法,通過以下步驟獲得真實場景的三維重建模型步驟一、使用相機在不同的位置、不同的角度對場景進行拍照,獲得真實場景的二維圖像序列。步驟二、使用GPU并行加速的SIFT算法得到每幅圖像的特征點。并進行特征點匹配。所米用的 GPU 加速 SIFT,系統安裝 CUDA (Compute Unified DeviceArchitecture,顯卡廠商NVidia推出的運算平臺)的運行環境,保證SIFT可以并行的由GPU處理。步驟三、使用Bundle Adjustment算法,自動獲得所有圖像的相機參數(相機矩陣),并得到特征點在三維空間中的位置,生成初始的稀疏點云模型,如圖2。步驟四、使用PMVS算法,將之前由特征點重建出的空間點稱之為種子點,擴散從種子點開始,利用相鄰點具有相似的法向和位置的特性,逐步擴散重建出其周圍的空間點,擴散結束后,進行過濾處理,將灰度一致性、幾何一致性比較弱的點剔除.得到稠密的點云模型。如圖3。采用PMVS進行稠密點云的獲取,需要對圖像劃分網格,網格的尺寸可以選擇,網格越小,獲得的點云越稠密。步驟五、對每一幅圖像進行圖像分割,得到前景和背景,然后通過點云反投影到圖像中,把錯誤生成的點去掉,第一次精煉點云,然后使用低通濾波器對三維模型進行濾波,濾掉一些孤立點(高頻噪聲),第二次精煉點云。在此步驟中,采用反投影的方式將點云反投影到每幅圖像中,如果有點落在了前景或者圖像之外,則保留該點,如果投影到背景中,則刪掉該點,再使用低通濾波器,濾掉孤立點。步驟六、對生成的點云使用KNN的思想計算點云中每個點的法向向量,然后將向量投影到一個球面的cell中,計算點云的主方向、次方向和第三方向,再計算旋轉矩陣,將點云的主要法向與三維空間的坐標軸方向一致。步驟七、重新組織點云的存儲結構,把點云放在空間八叉樹中,然后從最上方的點進行A*搜索,增量的搜索三角片面,將點云網格化。本步驟中,基于A*搜索的網格化,在生成三角網格的時候要保證兩個條件第一,三角形盡可能的飽滿,不要太窄,要求三角形的每個角都要大于30度,第二,平面盡可能光滑,即相鄰的兩個三角面片要近似180度。步驟八、從二維圖像中找到網格化后所有三角片面對應的紋理,然后通過GPU進行紋理映射,最終渲染出整個場景。紋理映射可以使用OpenGL SLCOpen GraphicsLibraryShading Language,開放的圖形程序庫渲染語言)將圖像作為紋理保存起來,然后綁定紋理,進行渲染。最終的結果如圖4所示。本實施例通過對一個場景進行多角度,多位置的拍照,可以自動的快速獲得三維場景,通過GPU并行計算SIFT特征點,解決三維重建速度慢的問題,同時解決三維重建邊界的問題。以上對本發明的具體實施例進行了描述。需要理解的是,本發明并不局限于上述特定實施方式,本領域技術人員可以在權利要求的范圍內做出各種變形或修改,這并不影響本發明的實質內容。
權利要求
1.一種基于GPU加速的三維場景重建方法,其特征是,它由以下步驟構成 步驟一、使用相機在不同的位置、不同的角度對場景進行拍照,獲得真實場景的二維圖像序列; 步驟二、使用GPU并行加速的SIFT算法得到每幅圖像的特征點,并進行特征點匹配; 步驟三、使用Bundle Adjustment算法,自動獲得所有圖像的相機參數即相機矩陣,并得到特征點在三維空間中的位置,生成初始的稀疏點云模型; 步驟四、使用PMVS算法,將之前由特征點重建出的空間點稱之為種子點,擴散從種子點開始,利用相鄰點具有相似的法向和位置的特性,逐步擴散重建出其周圍的空間點,擴散結束后,進行過濾處理,將灰度一致性、幾何一致性比較弱的點剔除,得到稠密的點云模型; 步驟五、對每一幅圖像進行圖像分割,得到前景和背景,然后通過點云反投影到圖像中,把錯誤生成的點去掉,第一次精煉點云,然后使用低通濾波器對三維模型進行濾波,濾掉一些高頻噪聲孤立點,第二次精煉點云; 步驟六、對生成的點云使用KNN的思想計算點云中每個點的法向向量,然后將向量投影到一個球面的cell中,計算點云的主方向、次方向和第三方向,再計算旋轉矩陣,將點云的主要法向與三維空間的坐標軸方向一致; 步驟七、重新組織點云的存儲結構,把點云放在空間八叉樹中,然后從最上方的點進行A*搜索,增量的搜索三角片面,將點云網格化; 步驟八、從二維圖像中找到網格化后所有三角片面對應的紋理,然后通過GPU進行紋理映射,最終渲染出整個場景。
2.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟一中所采用的相機獲取目標對象的二維圖像序列的方法,需在不同的角度和不同的位置進行拍攝,不能只站在一個固定的位置拍攝。
3.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟二中所采用的GPU加速SIFT,系統安裝CUDA的運行環境,保證SIFT能并行的由GPU處理。
4.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟四中采用PMVS進行稠密點云的獲取,需對圖像劃分網格,網格的尺寸可以選擇,網格越小,獲得的點云越稠密。
5.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟五中先對圖像進行前景和背景的分割,然后所采用的反投影的方式,將點云反投影到每幅圖像中,如果有點落在了前景或者圖像之外,則保留該點,如果投影到背景中,則刪掉該點,再使用低通濾波器,濾掉孤立點。
6.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟七中基于A*搜索的網格化,在生成三角網格時要保證兩個條件 第一,三角形盡可能的飽滿,不要太窄,三角形的每個角都要大于30度,第二,平面盡可能光滑,即相鄰的兩個三角面片要在160度至200度范圍。
7.根據權利要求1所述的一種基于GPU加速的三維場景重建方法,其特征在于步驟八中的紋理映射,使用OpenGL SL將圖像作為紋理保存起來,然后綁定紋理,進行渲染。
全文摘要
本發明提供了一種基于GPU加速的三維重建系統。其方法主要包括對二維圖像進行GPU并行SIFT特征點計算,并進行特征點匹配,然后對每幅圖像進行相機標定,再進行稠密點云重建,接著進行點云濾波,去噪,再把點云網格化,最后通過GPU進行紋理映射,得到三維場景。該系統通過輸入一系列二維圖像,可以輸出最終的三維模型,全過程自動處理,不需要人工干預,具有重建速度快,精讀高,誤差小等特點。
文檔編號G06T15/04GK103021017SQ20121051374
公開日2013年4月3日 申請日期2012年12月4日 優先權日2012年12月4日
發明者楊杰, 閆世博, 毛潤超 申請人:上海交通大學