專利名稱:基于gpu的物料堆的體積測量系統(tǒng)及測量方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測量領(lǐng)域,具體地說,涉及物料堆的測量領(lǐng)域。
背景技術(shù):
在燃煤電廠,為了節(jié)約成本、科學(xué)管理,經(jīng)常要對煤場的各種燃煤的存煤量進行統(tǒng)計。在建筑工地,也經(jīng)常要對各種沙、石、灰等材料進行進行存量統(tǒng)計。在測量物料堆時,傳統(tǒng)的方法是人工測量加上估算,這種方法既耗費了人力,測量的結(jié)果也很不精確。隨著計算機技術(shù)的大量應(yīng)用,新型的堆體積測量方法是利用激光測距傳感器采集回若干采樣點的數(shù)據(jù),然后通過數(shù)學(xué)公式來求出結(jié)果,這樣的結(jié)果精確度比人工測量有很大的提高,但是這種方法目前來說,需要耗費大量的時間在計算上,而針對采樣數(shù)據(jù)龐大的真實物料堆來說,這種通過數(shù)學(xué)公式計算的方法不能快速的計算出有效的結(jié)果,同時也不能快速的進行不同種類物料堆的分割及分類物料體積統(tǒng)計。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于GPU的物料堆的體積測量系統(tǒng)及測量方法。
本發(fā)明的基于GPU的物料堆的體積測量系統(tǒng),控制器的一端連接激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng)。如圖1所示。 所述的激光測距儀安裝在斗輪機的懸臂上,旋轉(zhuǎn)傳感器安裝在旋轉(zhuǎn)平臺上,行程傳感器固定安裝在斗輪機的底部。 本發(fā)明的基于GPU的物料堆的體積測量方法,控制器的一端連接激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng);通過激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器來獲取被測目標(biāo)的表面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),通過控制器連接到計算機系統(tǒng)。 激光測距儀憑借旋轉(zhuǎn)平臺在煤場周圍隨行車運動對堆體連續(xù)作定點掃描,旋轉(zhuǎn)平臺旋轉(zhuǎn)時測量物料堆表面到激光掃描儀安裝位置的距離和旋轉(zhuǎn)傳感器測得的角度信息,測得的被測目標(biāo)的距離和旋轉(zhuǎn)傳感器測得的角度信息形成物料堆橫向截面的二維數(shù)據(jù);斗輪機沿物料場縱向行進通過行程傳感器得到位置信息,激光掃描儀測得的距離數(shù)據(jù)、旋轉(zhuǎn)傳感器測得的角度數(shù)據(jù)與行程傳感器所獲得的位置信息相匹配形成物料堆的若干點的三維坐標(biāo)數(shù)據(jù),輸入控制器,通過光纖,傳輸?shù)竭h(yuǎn)程計算機,進行后期數(shù)據(jù)處理和管理。
GPU(Gr即hic Processing Unit)為"圖形處理器"的英文縮寫。GPU是一個專門的圖形的核心處理器。本方法通過激光測距傳感器采集物料堆的表面若干點的三維坐標(biāo)數(shù)據(jù),建立物料堆的模型,然后通過GPU的一系列渲染,對模型進行重采樣,這些采樣點的深度值之和,然后再乘以每個采樣點的面積值,就可以得到總的體積。而且通過這些渲染,還可以根據(jù)圖形結(jié)果來對物料堆進行分割。這種方法主要是依賴GPU渲染,所以所用時間非常短,而且精確度也可以與用數(shù)學(xué)公式法所得結(jié)果相媲美。 該硬件裝置系統(tǒng)通過激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器來獲取被測目標(biāo)的表
5面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),為進行各種量算或三維建模顯示提供可靠依據(jù)。如圖 2所示。 遠(yuǎn)程計算機的后期數(shù)據(jù)處理為
( — )根據(jù)采樣數(shù)據(jù)建立模型
1)、將采樣數(shù)據(jù)進行重新排序 采集的數(shù)據(jù)每行的個數(shù)是不定的,而且由于是根據(jù)固定角度采樣的,那么采集的
點的順序也是不缺定的,所以采集進來的每行數(shù)據(jù)都要進行排序,也就是y分量排序;如圖 3。 2)、將數(shù)據(jù)進行網(wǎng)格化 由于行與行之間,所采集的數(shù)據(jù)在y分量上并不是完全對應(yīng)的,那么要進行網(wǎng)格 化,在兩行之間,就要建立行間完全對應(yīng)關(guān)系,所有行線段的兩個端的不變,并且插點的動 作也要在線段范圍之內(nèi)進行;插點的方法是如果當(dāng)前線段上一個檢測點的y分量值在和它 相鄰線段內(nèi)部存在y分量值與之相等的一個點,那么就要在相鄰線段內(nèi)插入一點,這個點 的x分量為此線段的x分量,y分量為檢測點的y分量,z分量為這個點所在線段處的z分 量線性插值結(jié)果;如圖4。
3)、程序處理 通過應(yīng)用軟件Directx建立網(wǎng)格化的數(shù)據(jù)結(jié)構(gòu)體Mesh,里面填充經(jīng)過網(wǎng)格化后的 數(shù)據(jù),這個Mesh的結(jié)構(gòu)為
Struct MODELVERTEX
{ 這個結(jié)構(gòu)分別為點的位置、法線、紋理坐標(biāo)以及歸一化的高度,高度歸一化的方法 為當(dāng)前點的z分量除以所有z分量的最大值所得到的結(jié)果;
( 二 )根據(jù)模型計算體積結(jié)果
1)、設(shè)備的創(chuàng)建 在創(chuàng)建Direct3D設(shè)備時,為了提高計算結(jié)果的精度,采用GPU高精度浮點運算模 式和頂點軟運算模式,并且作為儲存結(jié)果的深度Surface,使用可鎖定的32位浮點模式;
2)、模型的渲染 采用shader方法進行渲染,渲染所采用俯視角度,使用正交攝像機,并且工程的 寬高分別為采集數(shù)據(jù)x分量與y分量的跨度;在頂點shader中定義輸出分量包含高度分 量,然后把每個頂點上的高度分量傳出;這樣在像素sharder中經(jīng)過GPU的光柵化步驟,自 動插值出每個像素的高度分量,然后把這個分量輸出到深度緩沖區(qū)中;
3)、總體積計算 把深度surface鎖定,取得里面的結(jié)果,深度surface長為a寬為b,那么深度緩沖 區(qū)中共有a*b個二次采樣點,這些采樣點對應(yīng)采集數(shù)據(jù)的x分量跨度Lx與y分量跨度Ly,
D3DXVECT0R3 position ;點的位置 D3DXVECT0R3 normal ;點的法線 FLOAT u, v ;紋理坐標(biāo)
FLOAT h;歸一化的高度那么可以求出每個采樣點對應(yīng)的面積s :
s = (Lx*Ly) / (a*b) 又由于每個點的高度為歸一化的值,那么總體積的計算公式為 ,=:2^承&腿*$ ; 4)、將物料堆進行分堆并計算子體積 在實際物料存放時,會按照物料的不同而分堆存放;在數(shù)據(jù)采集后,根據(jù)測量數(shù)據(jù) 將物料堆進行分割,并計算各個分堆的體積; 采用快速分組算法,首先建立一個數(shù)組,此數(shù)組用于記錄子組的信息,包括最大 值、最小值、體積累計;另外建立一個結(jié)果緩沖,用于記錄每個深度點與子組對應(yīng)關(guān)系;按 掃描線順序遍歷所有深度點,當(dāng)遍歷到一個非邊緣點d時,當(dāng)點d高度大于最小值S時,按 順序在緩沖組對應(yīng)位置點的左側(cè)、左上、上、右上點,當(dāng)其中有點具有組索引時,表明此點與 其它點相接,后面具有組索引的各點的組索引和當(dāng)前對應(yīng)點的組索引賦值為此組索引,且 這些組索引所指向的組信息進行合并,而當(dāng)這些點都不存在組索引時,那么表明此點與其 它點不相接,此對應(yīng)點的組索引為新組索引; 當(dāng)此點為邊緣點時,則按實際情況減少比較所需的點。所以這種分組方法只在遍 歷深度surface —次,復(fù)雜度為a*b ;具體分區(qū)方法如圖5所示。圖中已經(jīng)標(biāo)有數(shù)字的格子 是當(dāng)前數(shù)組中已經(jīng)分區(qū)的數(shù)值,O代表沒有深度,即沒有分區(qū);l-n代表已經(jīng)分區(qū)后的區(qū)號; 標(biāo)有"?"的格子是當(dāng)前存在深度的點,如何進行分區(qū)并分到第幾區(qū)里去,格子中帶圈數(shù)字 為計算后所分區(qū)號;格子里帶下滑線的數(shù)字代表當(dāng)前分區(qū)結(jié)束后的變化值。
5)、誤差的處理 由于本方法是通過GPU渲染實現(xiàn)的,所以計算精度取決于GPU能力和顯卡質(zhì)量;顯
卡管線產(chǎn)生輕微瑕疵是不可避免的,所以程序中要把這些錯誤結(jié)果去掉,比如產(chǎn)生管線噪
點以及在特定點產(chǎn)生特定值等現(xiàn)象,這些點都會對結(jié)果產(chǎn)生輕微影響,雖然在誤差范圍之
內(nèi),但去掉這些點仍能夠?qū)ΡWC小數(shù)點后第二位精度產(chǎn)生貢獻,并且也能避免分堆過程中
可能產(chǎn)生的一些問題。(三)計算結(jié)果的直觀表示方法 1)、平面高度JPG圖 在體積計算完成后,會生成一張JPG圖片,圖片為俯視圖,高的部分顏色偏深,低 的部分顏色偏淺,并用數(shù)字來標(biāo)示各堆的分區(qū)。計算結(jié)果的JPG格式平面高度圖如圖6所 示。 2)、立體的AVI動畫 在體積計算完成后,還會生成三個AVI動畫如圖7,一個帶貼圖的煤堆、用紅色描 述高度的模型以及模型線框圖,這幾個動畫也分別由Direct3D進行渲染,采用30度俯視角 度,透視攝像機觀察煤堆進行360旋轉(zhuǎn)。
3)、用于其它三維軟件的模型文件 程序還可以輸出一個可以用于其它三維建模軟件或模型顯式軟件的一個DirectX 格式的三維線框模型,如圖8。
圖1是本發(fā)明的系統(tǒng)連接示意圖。 圖2是激光測量坐標(biāo)示意圖。 圖3是采集數(shù)據(jù)重新排序圖。 圖4是數(shù)據(jù)網(wǎng)格化處理示意圖。 圖5是物料堆分區(qū)方法。 圖6是JPG格式平面高度圖。 圖7是計算結(jié)果的立體的AVI動畫。 圖8是DirectX格式的三維線框模型。
具體實施方式
實施例1 本實施例基于GPU的物料堆的體積測量系統(tǒng),控制器的一端連接激光測距儀、行 程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng)。如圖1所示。 所述的激光測距儀安裝在斗輪機的懸臂上,旋轉(zhuǎn)傳感器安裝在旋轉(zhuǎn)平臺上,行程 傳感器固定安裝在斗輪機的底部。 本發(fā)明的基于GPU的物料堆的體積測量方法,控制器的一端連接激光測距儀、行 程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng);通過激光測距儀、行程傳感器和旋轉(zhuǎn)傳感 器來獲取被測目標(biāo)的表面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),通過控制器連接到計算機系 統(tǒng)。 激光測距儀憑借旋轉(zhuǎn)平臺在煤場周圍隨行車運動對堆體連續(xù)作定點掃描,旋轉(zhuǎn)平
臺旋轉(zhuǎn)時測量物料堆表面到激光掃描儀安裝位置的距離和旋轉(zhuǎn)傳感器測得的角度信息,測
得的被測目標(biāo)的距離和旋轉(zhuǎn)傳感器測得的角度信息形成物料堆橫向截面的二維數(shù)據(jù);斗輪
機沿物料場縱向行進通過行程傳感器得到位置信息,激光掃描儀測得的距離數(shù)據(jù)、旋轉(zhuǎn)傳
感器測得的角度數(shù)據(jù)與行程傳感器所獲得的位置信息相匹配形成物料堆的若干點的三維
坐標(biāo)數(shù)據(jù),輸入控制器,通過光纖,傳輸?shù)竭h(yuǎn)程計算機,進行后期數(shù)據(jù)處理和管理。 該硬件裝置系統(tǒng)通過激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器來獲取被測目標(biāo)的表
面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),為進行各種量算或三維建模顯示提供可靠依據(jù)。如圖
2所示。 數(shù)據(jù)處理軟件系統(tǒng)及其算法 應(yīng)用Microsoft Visual Studio 2005 Spl及DirectX SDK 2009. 3軟件開發(fā)系 統(tǒng),進行數(shù)據(jù)處理和數(shù)據(jù)管理的軟件系統(tǒng)設(shè)計。在啟動體積測量后,實時獲取激光測距儀、 旋轉(zhuǎn)傳感器和行程傳感器數(shù)據(jù),經(jīng)光纖傳送到上位機轉(zhuǎn)換為若干點的三維空間坐標(biāo)數(shù)據(jù)文 件。該軟件系統(tǒng)進行一系列的數(shù)據(jù)處理、計算后,得出物料堆的總體積及分割體積等數(shù)據(jù)文 件、二維圖片及三維動畫。進而可以進行各種管理。 [OOSS]( — )根據(jù)采樣數(shù)據(jù)建立模型
1)、將采樣數(shù)據(jù)進行重新排序 采集的數(shù)據(jù)每行的個數(shù)是不定的,而且由于是根據(jù)固定角度采樣的,那么采集的
點的順序也是不缺定的,所以采集進來 每行數(shù)據(jù)都要進行排序,也就是y分量排序;如圖3。 2)、將數(shù)據(jù)進行網(wǎng)格化 由于行與行之間,所采集的數(shù)據(jù)在y分量上并不是完全對應(yīng)的,那么要進行網(wǎng)格 化,在兩行之間,就要建立行間完全對應(yīng)關(guān)系,所有行線段的兩個端的不變,并且插點的動 作也要在線段范圍之內(nèi)進行;插點的方法是如果當(dāng)前線段上一個檢測點的y分量值在和它
相鄰線段內(nèi)部存在y分量值與之相等的一個點,那么就要在相鄰線段內(nèi)插入一點,這個點 的x分量為此線段的x分量,y分量為檢測點的y分量,z分量為這個點所在線段處的z分 量線性插值結(jié)果;如圖4。
3)、程序處理 通過應(yīng)用軟件Directx建立網(wǎng)格化的數(shù)據(jù)結(jié)構(gòu)體Mesh,里面填充經(jīng)過網(wǎng)格化后的 數(shù)據(jù),這個Mesh的結(jié)構(gòu)為
Struct MODELVERTEX
{ }; 這個結(jié)構(gòu)分別為點的位置、法線、紋理坐標(biāo)以及歸一化的高度,高度歸一化的方法 為當(dāng)前點的z分量除以所有z分量的最大值所得到的結(jié)果;
( 二 )根據(jù)模型計算體積結(jié)果
1)、設(shè)備的創(chuàng)建 在創(chuàng)建Direct3D設(shè)備時,為了提高計算結(jié)果的精度,采用GPU高精度浮點運算模 式和頂點軟運算模式,并且作為儲存結(jié)果的深度Surface,使用可鎖定的32位浮點模式;
2)、模型的渲染 采用shader方法進行渲染,渲染所采用俯視角度,使用正交攝像機,并且工程的 寬高分別為采集數(shù)據(jù)x分量與y分量的跨度;在頂點shader中定義輸出分量包含高度分 量,然后把每個頂點上的高度分量傳出;這樣在像素sharder中經(jīng)過GPU的光柵化步驟,自 動插值出每個像素的高度分量,然后把這個分量輸出到深度緩沖區(qū)中;
3)、總體積計算 把深度surface鎖定,取得里面的結(jié)果,深度surface長為a寬為b,那么深度緩沖 區(qū)中共有a*b個二次采樣點,這些采樣點對應(yīng)采集數(shù)據(jù)的x分量跨度Lx與y分量跨度Ly, 那么可以求出每個采樣點對應(yīng)的面積s :
s = (Lx*Ly) / (a*b) 又由于每個點的高度為歸一化的值,那么總體積的計算公式為 4)、將物料堆進行分堆并計算子體積 在實際物料存放時,會按照物料的不同而分堆存放;在數(shù)據(jù)采集后,根據(jù)測量數(shù)據(jù)
D3DXVECT0R3 position ;點的位置 D3DXVECT0R3 normal ;點的法線 FLOAT u, v ;紋理坐標(biāo)
FLOAT h;歸一化的高度將物料堆進行分割,并計算各個分堆的體積; 采用快速分組算法,首先建立一個數(shù)組,此數(shù)組用于記錄子組的信息,包括最大值、最小值、體積累計;另外建立一個結(jié)果緩沖,用于記錄每個深度點與子組對應(yīng)關(guān)系;按掃描線順序遍歷所有深度點,當(dāng)遍歷到一個非邊緣點d時,當(dāng)點d高度大于最小值S時,按順序在緩沖組對應(yīng)位置點的左側(cè)、左上、上、右上點,當(dāng)其中有點具有組索引時,表明此點與其它點相接,后面具有組索引的各點的組索引和當(dāng)前對應(yīng)點的組索引賦值為此組索引,且這些組索引所指向的組信息進行合并,而當(dāng)這些點都不存在組索引時,那么表明此點與其它點不相接,此對應(yīng)點的組索引為新組索引; 當(dāng)此點為邊緣點時,則按實際情況減少比較所需的點。所以這種分組方法只在遍歷深度surface —次,復(fù)雜度為a*b ;具體分區(qū)方法如圖5所示。圖中已經(jīng)標(biāo)有數(shù)字的格子是當(dāng)前數(shù)組中已經(jīng)分區(qū)的數(shù)值,O代表沒有深度,即沒有分區(qū);l-n代表已經(jīng)分區(qū)后的區(qū)號;標(biāo)有"?"的格子是當(dāng)前存在深度的點,如何進行分區(qū)并分到第幾區(qū)里去,格子中帶圈數(shù)字為計算后所分區(qū)號;格子里帶下滑線的數(shù)字代表當(dāng)前分區(qū)結(jié)束后的變化值。
5)、誤差的處理 由于本方法是通過GPU渲染實現(xiàn)的,所以計算精度取決于GPU能力和顯卡質(zhì)量;顯
卡管線產(chǎn)生輕微瑕疵是不可避免的,所以程序中要把這些錯誤結(jié)果去掉,比如產(chǎn)生管線噪
點以及在特定點產(chǎn)生特定值等現(xiàn)象,這些點都會對結(jié)果產(chǎn)生輕微影響,雖然在誤差范圍之
內(nèi),但去掉這些點仍能夠?qū)ΡWC小數(shù)點后第二位精度產(chǎn)生貢獻,并且也能避免分堆過程中
可能產(chǎn)生的一些問題。(三)計算結(jié)果的直觀表示方法 1)、平面高度JPG圖 在體積計算完成后,會生成一張JPG圖片,圖片為俯視圖,高的部分顏色偏深,低的部分顏色偏淺,并用數(shù)字來標(biāo)示各堆的分區(qū)。計算結(jié)果的JPG格式平面高度圖如圖6所示。 2)、立體的AVI動畫 在體積計算完成后,還會生成三個AVI動畫如圖7,一個帶貼圖的煤堆、用紅色描述高度的模型以及模型線框圖,這幾個動畫也分別由Direct3D進行渲染,采用30度俯視角度,透視攝像機觀察煤堆進行360旋轉(zhuǎn)。
3)、用于其它三維軟件的模型文件 程序還可以輸出一個可以用于其它三維建模軟件或模型顯式軟件的一個DirectX格式的三維線框模型,如圖8。
權(quán)利要求
一種基于GPU的物料堆的體積測量系統(tǒng),其特征在于,控制器的一端連接激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng)。
2. 如權(quán)利要求1所述的基于GPU的物料堆的體積測量系統(tǒng),其特征在于,所述的激光測 距儀安裝在斗輪機的懸臂上,旋轉(zhuǎn)傳感器安裝在旋轉(zhuǎn)平臺上,行程傳感器固定安裝在斗輪 機的底部。
3. —種基于GPU的物料堆的體積測量方法,其特征在于,控制器的一端連接激光測距 儀、行程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng);通過激光測距儀、行程傳感器和旋 轉(zhuǎn)傳感器來獲取被測目標(biāo)的表面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),通過控制器連接到計 算機系統(tǒng)。
4. 如權(quán)利要求3所述的基于GPU的物料堆的體積測量方法,其特征在于,激光測距儀憑 借旋轉(zhuǎn)平臺在煤場周圍隨行車運動對堆體連續(xù)作定點掃描,旋轉(zhuǎn)平臺旋轉(zhuǎn)時測量物料堆表 面到激光掃描儀安裝位置的距離和旋轉(zhuǎn)傳感器測得的角度信息,測得的被測目標(biāo)的距離和 旋轉(zhuǎn)傳感器測得的角度信息形成物料堆橫向截面的二維數(shù)據(jù);斗輪機沿物料場縱向行進通 過行程傳感器得到位置信息,激光掃描儀測得的距離數(shù)據(jù)、旋轉(zhuǎn)傳感器測得的角度數(shù)據(jù)與 行程傳感器所獲得的位置信息相匹配形成物料堆的若干點的三維坐標(biāo)數(shù)據(jù),輸入控制器, 通過光纖,傳輸?shù)竭h(yuǎn)程計算機,進行后期數(shù)據(jù)處理或管理。
5. 如權(quán)利要求4所述的基于GPU的物料堆的體積測量方法,其特征在于,遠(yuǎn)程計算機的 后期數(shù)據(jù)處理為(一)根據(jù)采樣數(shù)據(jù)建立模型1) 、將采樣數(shù)據(jù)進行重新排序采集的數(shù)據(jù)每行的個數(shù)是不定的,而且由于是根據(jù)固定角度采樣的,那么采集的點的 順序也是不缺定的,所以采集進來的每行數(shù)據(jù)都要進行排序,也就是y分量排序;2) 、將數(shù)據(jù)進行網(wǎng)格化由于行與行之間,所采集的數(shù)據(jù)在y分量上并不是完全對應(yīng)的,那么要進行網(wǎng)格化,在 兩行之間,就要建立行間完全對應(yīng)關(guān)系,所有行線段的兩個端的不變,并且插點的動作也要 在線段范圍之內(nèi)進行;插點的方法是如果當(dāng)前線段上一個檢測點的y分量值在和它相鄰線 段內(nèi)部存在y分量值與之相等的一個點,那么就要在相鄰線段內(nèi)插入一點,這個點的x分量 為此線段的x分量,y分量為檢測點的y分量,z分量為這個點所在線段處的z分量線性插 值結(jié)果;3) 、程序處理通過應(yīng)用軟件Directx建立網(wǎng)格化的數(shù)據(jù)結(jié)構(gòu)體Mesh,里面填充經(jīng)過網(wǎng)格化后的數(shù) 據(jù),這個Mesh的結(jié)構(gòu)為 Struct MODELVERTEXD3DXVECT0R3 position ;點的位置 D3DXVECT0R3 normal ;點的法線 FLOAT u, v ;紋理坐標(biāo)FLOAT h;歸一化的高度這個結(jié)構(gòu)分別為點的位置、法線、紋理坐標(biāo)以及歸一化的高度,高度歸一化的方法為當(dāng) 前點的z分量除以所有z分量的最大值所得到的結(jié)果; (二)根據(jù)模型計算體積結(jié)果1) 、設(shè)備的創(chuàng)建在創(chuàng)建Direct3D設(shè)備時,為了提高計算結(jié)果的精度,采用GPU高精度浮點運算模式和 頂點軟運算模式,并且作為儲存結(jié)果的深度Surface,使用可鎖定的32位浮點模式;2) 、模型的渲染采用shader方法進行渲染,渲染所采用俯視角度,使用正交攝像機,并且工程的寬高 分別為采集數(shù)據(jù)x分量與y分量的跨度;在頂點shader中定義輸出分量包含高度分量,然 后把每個頂點上的高度分量傳出;這樣在像素sharder中經(jīng)過GPU的光柵化步驟,自動插值 出每個像素的高度分量,然后把這個分量輸出到深度緩沖區(qū)中;3) 、總體積計算把深度surface鎖定,取得里面的結(jié)果,深度surface長為a寬為b,那么深度緩沖區(qū)中 共有a*b個二次采樣點,這些采樣點對應(yīng)采集數(shù)據(jù)的x分量跨度Lx與y分量跨度Ly,那么 可以求出每個采樣點對應(yīng)的面積s :s = (Lx*Ly)/(a*b)又由于每個點的高度為歸一化的值,那么總體積的計算公式為 Jp4 ,4) 、將物料堆進行分堆并計算子體積在實際物料存放時,會按照物料的不同而分堆存放;在數(shù)據(jù)采集后,根據(jù)測量數(shù)據(jù)將物 料堆進行分割,并計算各個分堆的體積;采用快速分組算法,首先建立一個數(shù)組,此數(shù)組用于記錄子組的信息,包括最大值、最 小值、體積累計;另外建立一個結(jié)果緩沖,用于記錄每個深度點與子組對應(yīng)關(guān)系;按掃描線 順序遍歷所有深度點,當(dāng)遍歷到一個非邊緣點d時,當(dāng)點d高度大于最小值6時,按順序在 緩沖組對應(yīng)位置點的左側(cè)、左上、上、右上點,當(dāng)其中有點具有組索引時,表明此點與其它點 相接,后面具有組索引的各點的組索引和當(dāng)前對應(yīng)點的組索引賦值為此組索引,且這些組 索引所指向的組信息進行合并,而當(dāng)這些點都不存在組索引時,那么表明此點與其它點不 相接,此對應(yīng)點的組索引為新組索引;當(dāng)此點為邊緣點時,則按實際情況減少比較所需的點;所以這種分組方法只在遍歷深 度surface —次,復(fù)雜度為a*b。
6.如權(quán)利要求5所述的基于GPU的物料堆的體積測量方法,其特征在于,計算結(jié)果的直 觀表示方法為1) 、平面高度JPG圖在體積計算完成后,會生成一張JPG圖片;2) 、立體的AVI動畫在體積計算完成后,還會生成三個AVI動畫,一個帶貼圖的煤堆、用深淺色描述高度的 模型以及模型線框圖;3) 、用于三維軟件的模型文件程序輸出一個可以用于三維建模軟件或模型顯式軟件的一個DirectX格式的三維線 框模型。
全文摘要
基于GPU的物料堆的體積測量系統(tǒng)及測量方法,本發(fā)明涉及測量領(lǐng)域,具體地說,涉及物料堆的測量領(lǐng)域。本發(fā)明的基于GPU的物料堆的體積測量方法,控制器的一端連接激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器,另一端連接計算機系統(tǒng);通過激光測距儀、行程傳感器和旋轉(zhuǎn)傳感器來獲取被測目標(biāo)的表面形態(tài),得到目標(biāo)表面三維坐標(biāo)數(shù)據(jù),通過控制器連接到計算機系統(tǒng)。后期數(shù)據(jù)處理為根據(jù)采樣數(shù)據(jù)建立模型,根據(jù)模型計算體積結(jié)果。
文檔編號G01B11/02GK101718523SQ200910228120
公開日2010年6月2日 申請日期2009年11月10日 優(yōu)先權(quán)日2009年11月10日
發(fā)明者劉艷玲, 沈兆奎, 解寧, 鄭越 申請人:天津理工大學(xué)