【技術領域】
本發明涉及光學測量技術領域,具體涉及一種利用深度相機進行精確測量的方法與系統。
背景技術:
深度相機可以獲取目標的深度信息借此實現3d掃描、場景建模、手勢交互,與目前被廣泛使用的rgb相機相比,深度相機正逐步受到各行各業的重視。在利用深度相機對目標進行深度圖像測量時,清晰、準確的深度信息是衡量深度相機性能的重要指標,然而由于受到溫度、光照、場景等影響,往往會使得深度相機獲取的深度信息有較大的誤差。另一方面,在深度相機元器件制造以及組裝過程中不可避免地會產生誤差,這也會給測量直接帶來系統性的誤差。
常用的消除誤差的方法是對深度相機建立誤差模型,然后對多個已知量進行測量后,利用真實值與測量值對誤差模型中的未知量進行求解。盡管如此,由于深度相機的測量精度受多重因此影響,比如被測物體表面材質、當前測量環境光以及上述所述的系統誤差等等,這種方法也僅能對系統誤差進行消除,而對于由被測物體、環境等偶然誤差的影響,目前仍缺少一種行之有效的誤差消除方案。
技術實現要素:
本發明的目的是解決現有技術中深度相機不能同時消除系統誤差和偶然誤差進行精確測量的問題,提供一種利用深度相機進行精確測量的方法和系統。
一種利用深度相機進行精確測量的方法,包括如下步驟:
t1:建立深度相機的測量值和真實值之間的誤差模型;
t2:利用所述深度相機對處在不同深度上的同一被測物體進行測量得到所述不同深度的測量值,并測得所述不同深度的差值;
t3:根據所述不同深度的測量值、所述不同深度之間的差值以及所述深度相機的誤差模型修正得到所述被測物體的真實值。
優選地,所述誤差模型是測量值和真實值之間的映射關系,所述映射關系包含可利用步驟t2中所測量的測量值、差值來進行計算的未知系數。
優選地,所述映射關系為線性或非線性映射,所述映射關系中至少有兩個未知系數。
優選地,所述映射關系為冪函數映射,所述映射關系中至少有兩個未知系數。
優選地,所述不同深度的測量值的數量大于所述映射關系中未知系數的數量。
優選地,所述測量值包括:利用所述深度相機對處在不同深度上的同一被測物體上的單個點進行測量得到所述單個點的測量值;
或利用所述深度相機對處在不同深度上的同一被測物體上的至少兩個點進行測量得到所述至少兩個點的測量值。
優選地,所述真實值包括:被測物體上單個點或多個點的深度真實值;被測物體上單個點或多個點的橫、縱坐標真實值;被測物體上的任意兩點之間的尺寸真實值;被側物體的部件的尺寸真實值。
一種包含計算機程序的計算機可讀存儲介質被計算機執行以實現以上任一所述的方法。
一種利用深度相機進行精確測量的系統,包括:深度相機和計算設備;所述計算設備與深度相機連接,并用于執行以上任一所述的方法。
一種利用深度相機進行精確測量的系統包括深度相機,所述深度相機包括一個或多個處理器、存儲器以及一個或多個程序;所述程序存儲在所述處存儲器中,被配置成由所述一個或多個處理器執行,所述程序包括用于執行以上任一所述方法的指令。
本發明的有益效果為:提供了利用深度相機進行精確測量的方法與系統,建立深度相機的深度測量值和深度真實值之間的誤差模型;然后在不同測量環境下,對處在不同深度上的同一被測物體進行測量得到幾何測量值和深度差值,根據在不同環境下的所述不同深度的幾何測量值、所述不同深度之間的深度差值以及所述深度相機的誤差模型修正得到所述深度相機不同深度的真實值,從而在任意環境中且無需額外的設備進行真實值測量就可以實現深度相機測量值的修正以得到較精確的測量結果。
【附圖說明】
圖1是本發明實施例中深度相機的精度隨測量距離變化圖像。
圖2是本發明實施例中深度相機進行精確測量的示意圖。
圖3是本發明實施例的精確測量方法的流程圖。
【具體實施方式】
以下對本發明的實施方式作詳細說明。應該強調的是,下述說明僅僅是示例性的,而不是為了限制本發明的范圍及其應用。
實施例1
任何測量系統都存在誤差,誤差越小表明該系統的測量精度越高。深度相機屬于一種距離測量裝置,與傳統的米尺、激光測距儀等設備相比,優勢在于深度相機能實現無接觸、全場的實時深度距離測量。根據測量原理,深度相機分基于雙目視覺、時間飛行法以及結構光三角法等。以下的說明中將以結構光三角法為例進行說明,但本發明所述方法與系統也可以適用其他距離測量裝置。
基于結構光三角法的深度相機一般由激光投影儀、激光相機以及處理器組成,其中激光投影儀用于向被測物體投影結構光圖案,比如散斑圖案;散斑圖案由激光相機采集,最后傳輸到處理器中,通過三角法原理可以計算出被測物體所成的散斑圖案上各個點的深度值。
在實際使用中,所測量的結果往往存在誤差,主要可以分為兩類,一種是系統誤差,一種是偶然誤差。其中系統誤差由深度相機的裝配誤差、激光溫度、深度算法等決定,一般地,各個深度相機在出廠時都會經過嚴格的標定,同時會在給定的測量環境下對深度相機的系統誤差進行評價,給出一個參考的數據以供用戶參考。因此,系統誤差在較大程度上可以被修正。偶然誤差主要由于被測物體的表面材質、環境光照以及溫度等影響,而這些影響因素由于過于復雜在深度相機出廠時是無法標定的,本發明就是針對這種情況,提出一種能夠在任意被測物體以及環境下對深度測量進行偶然誤差修正的方法及系統。值得注意的是,測量系統的誤差理論是不可能被消除的,只能被修正以降低可減小誤差,真實值在大多數情況下是無法獲取的,因此真實值實際上指的是比測量值精度更高的值或者指的是被修正后的測量值。
圖1是在一實施例中深度相機的精度隨測量距離的變化曲線,一般地,當被測物體以及環境確定后,深度相機的精度會隨著測量距離的變化而變化;同樣地,在被測物體以及環境不同時,該曲線也會不一樣,這就是為何偶然誤差無法在出廠時就進行標定的原因。從圖1中可以看出,精度曲線可以被線性擬合或者非線性擬合(如冪函數擬合),兩種情形下可以分別擬合出測量值與真實值之間的映射關系,即擬合函數。線性擬合函數可以用下式表示:
z′=az+b
冪函數擬合函數可以用下式表示:
z′=azb
式中,z′表示深度測量值,z表示深度真實值,a、b表示系數。
如圖3所示,在被測物體以及環境確定后,在給定了擬合函數下,只要計算出系數即可以得到映射關系以修正由偶然誤差所帶來的影響。以上分別針對線性映射以及非線性映射分別舉例說明,但并非是對本發明的限定,在其它實施例中也可以由其他擬合函數。
在上述說明中將誤差分成系統誤差以及偶然誤差進行闡述,但在實際情形中,兩種誤差是被耦合在一起的,也就是說,測量的精度是同時由多種誤差引起的。本發明的方法并非僅僅針對解決偶然誤差,而是針對在被測物體以及測量環境確定后,通過本發明所述的方法與系統進行誤差消除以提高測量精度。
圖2是根據本發明的一種實施例的利用深度相機進行精確測量的示意圖。測量對象為人體,假設測量的是人體腳尖的深度值。在測量時,分別在三個不同的位置對人體進行測量,各個位置的真實的深度值(z)是未知的,然而相互之間的間距為已知量(l1、l2)。
假如在三個位置時由深度相機測量的深度值分別為:z’1、z’2、z’3,真實值設為z1、z1+l1、z1+l1+l2。若測量值與真實值的映射關系為線性映射,則有以下關系:
上述三式組成的方程組中有三個未知數k、z1、b,然而用傳統的求解方程組的方法是無法對未知數進行求解。實際上,上式僅在理想情形下才會成立,方程組中三個等式中左右兩邊在大部分情形下均不會相等,而是近似,用差值δ表示近似的程度:
用∑δi表示整體的近似程度,當未知數選取某個值時∑δi最小時,認為所選取的值為方程組的解,對應的z1即為所要精確測量的真實值,這里可以采用迭代法進行求解,迭代初始值選為:z1=z’1、k=1、b=0。在其它實施例中整體近似程度也可以用其他公式表示,例如
在另一種實施例中,可以利用機器學習的方法進行求解。與前面不同的是,需要在更多個位置處進行測量,以確保有足夠的學習樣本。比如使用基于多層神經網絡的深度學習,將測量值做為樣本數據進行輸入,輸出的是真實值,然后將真實值之間的差值與已知的間距構成loss函數,用于更新多層神經網絡中的參數,在通過多個樣本數據的學習之后可以得到一個較為理想的學習模型。
實施例2
下面介紹冪函數映射關系來進行誤差修正。同樣在三個位置上由深度相機得到三個測量值:z’1、z’2、z’3,真實值設為z1、z1+l1、z1+l1+l2。則測量值與真實值的映射關系如下:
上述方程組中有三個未知數a、z1、b,可以通過方程組直接求解。在其他實施例中方程組的數量也可以大于3個。
實施例3
考慮到深度相機獲取的是多像素的深度圖像,在上述分析中僅以單個點來進行說明。在實際使用中,往往單個點是難以定位的,因此也可以利用一個區域的深度值平均來替代單個點,或者直接同步對多個點進行誤差修正。
在本實施例中,需要測量的除了深度值之外,還包括x、y方向上的坐標值,比如測量人體的身高,則是主要利用y方向上的坐標值。假設某個點的深度相機坐標系的坐標為(x、y、z),深度相機的像素坐標系為(u、v),二者之間的關系可以用下式表示:
式中fx、fy、ox、oy分別指深度相機的焦距以及感光底片的中心坐標,由上式可知,x、y方向上的坐標值x、y與深度值z線性相關,因此只要得到深度值的精確值就可以得到x、y方向上的精確坐標值。以下將以身高精確測量為例進行說明。
將深度相機與被測人體以一定的初始距離放置,一般地,深度相機固定放置。在初始位置處用深度相機獲取初始深度圖像,然后由被測人體向前/后走n步,再用深度相機獲取第二幅深度圖像,以此類推。獲取了多幅深度圖像后,通過對每幅深度圖像進行前景提取后利用前面所述的誤差修正方法將頭部頂點以及腳部底點的三維坐標測量值進行誤差修正得到精確的三維坐標,然后利用所獲取的三維坐標來計算人體身高。本實施例中通過人體步伐來控制多次測量,且已知每個步伐的長度且假設每個步伐相等,這種方法比較適合一般應用的測量,在另一種實施例中,可以設置被測人體固定,而通過機械裝置控制深度相機間距移動以實現多次測量的目的。
實施例4
對于基于雙目視覺、時間飛行法以及結構光三角法的任意深度相機都可以采用本發明所述的方法進行精確測量,而不需要額外的設備。所述的精確測量是在降低系統誤差的基礎上同時降低環境誤差。基本原理是通過在真實測量環境中,首先選取深度相機的誤差模型,此時的誤差模型僅對系統誤差進行修正;然后通過測量得到被測物體在不同深度處的測量值,不同深度之間的差值已知或測量得到;根據不同深度處的測量值以及不同深度之間的差值可以對選取的誤差模型進一步修正,得到該環境下測量值所對應的真實值。因為此次修正是通過真實測量環境中的測量值進行修正的,所以在一定程度上降低了環境誤差。具體包括如下步驟:
(1)建立深度相機的測量值和真實值之間的誤差模型,這個誤差模型可以來自深度相機的生產廠家也可以來自用戶對深度相機的使用研究所得,根據測量目的可以選擇最優的誤差模型;
(2)利用所述深度相機對處在不同深度上的同一被測物體進行測量得到所述不同深度的測量值,并測得所述不同深度的差值;或者選取差值已知的不同深度處的同一被測物體進行測量得到不同深度處的測量值;測量值包括但不限于:利用所述深度相機對處在不同深度上的同一被測物體上的單個點進行測量得到所述單個點的幾何測量值;或利用所述深度相機對處在不同深度上的同一被測物體上的至少兩個點進行測量得到所述至少兩個點的幾何測量值;
(3)根據所述不同深度的測量值、所述不同深度之間的差值以及所述深度相機的誤差模型修正得到所述深度相機不同深度的真實值,修正的方法有很多種,比如迭代法,也可以采用計算軟件修正;真實值包括但不限于:被測物體上單個點或多個點的深度真實值;被測物體上單個點或多個點的橫、縱坐標真實值;被測物體上的任意兩點之間的尺寸真實值;被側物體的部件的尺寸真實值,所述的測量值和真實值的種類涵蓋深度相機測量的主要應用但是不僅僅限于這些測量的數值信息,還可以包括其他深度相機可能得到的數值信息。
以上所述誤差模型是幾何測量值和幾何真實值之間的映射關系,這個映射關系包含有未知系數,所述映射關系為線性或非線性映射,也可以為冪函數映射,所述映射關系中至少有兩個未知系數。所述未知系數可以通過不同深度的測量值、不同深度之間的差值進行計算得到,測量次數肯定要大于未知系數的數量才能解出未知系數的值,但是本發明的目的不在于求解未知系數的值而在于直接求解對應于某次測量值的真實值。
每一次測量環境發生變化時,都需要利用深度相機進行大于所選取的誤差模型中所含的未知系數的數量的測量次數對測量值進行修正,得到該環境下的測量值所對應的真實值。
實施例5
實現本發明所述方法的硬件設備可以是一種包含計算機程序的計算機可讀存儲介質,這種可讀存儲介質可以是移動存儲設備,比如優盤、硬盤、光盤、軟盤等,也可以是其他形式,計算機可讀存儲介質中存儲實現本發明所述方法的程序。
還可以通過深度相機和計算設備相連接的方式實現本發明所述的方法,所述計算設備中存儲了可以實現本發明所述方法的程序,存儲的程序可以直接存儲于電腦硬盤,也可以通過外接設備導入。
還可以將實現本發明所述方法的程序直接配置到深度相機中,所述深度相機包括一個或多個處理器、存儲器以及一個或多個程序;所述程序存儲在所述處存儲器中,被配置成由所述一個或多個處理器執行,所述程序包括用于執行以上任一所述方法的指令。
以上內容是結合具體/優選的實施方式對本發明所作的進一步詳細說明,不能認定本發明的具體實施只局限于這些說明。對于本發明所屬技術領域的普通技術人員來說,在不脫離本發明構思的前提下,其還可以對這些已描述的實施方式做出若干替代或變型,而這些替代或變型方式都應當視為屬于本發明的保護范圍。