孫延鵬,常占友,陳新禹,王 鵬
(1.沈陽航空航天大學,沈陽 110136;2.中國航發(fā)四川燃氣渦輪研究院,成都 610500)
立體視覺測量方法具有非接觸性、效率高和精度高等優(yōu)點[1],能夠應用于航空發(fā)動機噴管的測量。然而,發(fā)動機噴管尺寸較大,采用雙目立體視覺測量,存在測量范圍受限問題,難以完成對整個噴管幾何尺寸的測量;采用多目視覺測量可實現(xiàn)對整個噴管的測量,但面臨多個雙目測量單元間的數(shù)據(jù)拼接難題[2-3]。
目前,多目拼接算法主要分為以下兩種:一是基于精密儀器的輔助測量方法。一般采用經(jīng)緯儀[4]、全站儀[5]、激光跟蹤儀[6]等精密設備實現(xiàn)非接觸測量,但這些設備存在操作復雜、價格昂貴、靈活性差等不足。二是直接求取轉換矩陣的方法。楊超[7]通過實驗仿真發(fā)現(xiàn),在三維數(shù)據(jù)拼接方面,奇異值分解(SVD)法比三點法、單位四元素法具有更大的優(yōu)勢。何航[8]提出了基于平面靶標的數(shù)據(jù)拼接方法,通過靶標上的非共線標記點將相鄰局部坐標系的三維數(shù)據(jù)統(tǒng)一到同一坐標系下,但這種方法存在誤差累積的問題。金露[9]采用線性加權法和循環(huán)拼接法來降低三維數(shù)據(jù)拼接的累積誤差,不需要標記輔助點,避免了利用轉臺進行拼接時出現(xiàn)的定心不準問題,但是沒有對如何求解拼接矩陣問題進行研究和實驗仿真。杜娜等[10]提出一種針對多目立體視覺坐標測量技術的拼接算法,僅求解線性方程就能處理公共點面的三維數(shù)據(jù)拼接,但是求解轉換矩陣時用多次求解出來的轉換矩陣求平均會增加拼接誤差,給實驗結果帶來較大偏差??傊?,對于發(fā)動機噴管運動過程中的實時測量還沒有全面、實用的相關研究,且對于三維數(shù)據(jù)拼接算法研究成果較少。
本文針對現(xiàn)有拼接算法進行分析,在雙目立體視覺單元的基礎上(雙目視覺單元下能夠獲取三維坐標點),針對多雙目立體視覺單元間的三維數(shù)據(jù)進行拼接(可應用三維數(shù)據(jù)拼接方法實現(xiàn)拼接),提出一種隨機法和窮舉法相結合的拼接算法。其主要設計思路是:對于三維數(shù)據(jù)點的個數(shù)進行選擇。對于10個以上的三維數(shù)據(jù)點采用隨機法,對于10個以內(nèi)的三維數(shù)據(jù)點采用窮舉法,利用求解的局部轉移矩陣將不同視點下的數(shù)據(jù)拼接到一個坐標系下。
多目拼接是將不同視點下的觀測數(shù)據(jù)融合到統(tǒng)一視點下,同時彌補雙目在測量上存在的不足,能夠更好地研究和測量發(fā)動機噴管的動態(tài)位姿和運動參數(shù)[1-2]。對于矢量噴管,由于其只存在旋轉和平移的剛體運動,所以多目拼接的關鍵是求出兩視點的轉化矩陣。
三維數(shù)據(jù)拼接的前提是不同視點下存在若干個公共點,當每個視點存在3個或3個以上的非共線公共點時,將多個視點下的公共點數(shù)據(jù)通過轉換矩陣融合到同一坐標系,便可實現(xiàn)多視點數(shù)據(jù)拼接。
由于本文研究的發(fā)動機矢量噴管的運動過程是一種剛體運動,所以多視拼接的關鍵就是求解出視點間的轉換矩陣,然后將不同視點下的數(shù)據(jù)通過轉換矩陣都融合到一個視點下完成拼接。求解轉換矩陣的方法有SVD 法、最小二乘法、七參數(shù)法等。理論上公共點越多,解出來的轉換矩陣越準確,實現(xiàn)多目拼接的精度越高。然而在實際測量過程中,受測量誤差和噪聲等影響,多目拼接的精度并不高。理論上本文算法對于多視點下3個及3個以上的非共線公共點都可以實現(xiàn)很好的拼接,但隨著公共點的增加,迭代次數(shù)和誤差也會增加。考慮到此種情況,下面以視點下不超過10 個公共點為例。設計的算法描述如下:
第1 步,確定公共點的個數(shù)n。假設存在視點B和視點A兩個不同視點,且兩個視點下存在n(3 ≤n ≤10)個公共點,并求出從n中隨機取3個公共點的組合。
第2 步,求解轉換矩陣M。首先以第一步選取的任意3個公共點為例,使用文獻[10]方法引入1個輔助點,使得成為4 個公共點。假設組成的新的兩對應矩陣分別為P 和Q,則P 和Q存在相應的變換關系,可表示為式(1)。
第3 步,算法選擇。如果n>5,則選擇隨機法,否則選擇窮舉法。
第4 步,窮舉法算法設計。為求解使得多視拼接精度最高的M,用窮舉法求解第1 步所有可能組合的轉換矩陣,選出使得拼接誤差最小的M,并求解出最小均方誤差。
第5步,隨機法算法設計。若n>5,則兩視點的非共線公共點數(shù)較多,直接用窮舉法會增加算法的計算量,降低算法的效率,為此應采用隨機法的算法。從n個公共點中隨機選取3個非共線的公共點,求解M;重復n次,選擇使拼接誤差較小的最優(yōu)M,并求解出最小均方誤差。
多目拼接的算法流程圖如圖1所示。
圖1 多目拼接的算法流程圖Fig.1 The flow chart of multi-view splicing algorithm
考慮到以最小均方誤差進行判斷,有可能選擇的點非常集中,不利于計算。為此,本文也考慮點的分布比較集中的情況,對本文算法進行自驗證,使得選取的數(shù)據(jù)點更合理、更具有說服力。下面對自驗證算法設計進行說明:首先計算對應視點下每兩個點組成的邊的均方誤差error,然后計算對應視點下每兩個點組成的邊的均方誤差,再進行判斷。若error>精度值,重新選擇矩陣B 和A(分別對應視點B和視點A下數(shù)據(jù)),找到滿足精度值要求的誤差最小的點;若error≤精度值,則保留這3 個點作為要實現(xiàn)多目拼接的點,并重復前5 步操作。自驗證算法流程圖如圖2所示。
圖2 自驗證算法流程圖Fig.2 T he flow chart of self-verification algorithm
為降低算法的復雜度及更好地估計矢量噴管的姿態(tài),將求出的轉換矩陣轉換為歐拉角表示。通過已求出的轉換矩陣求解旋轉矩陣R(9個參數(shù)),進而求出歐拉角(3個參數(shù)),從而降低算法的復雜度。旋轉矩陣可表示為:
繞X軸歐拉角可表示為:
繞Y軸歐拉角可表示為:
繞Z軸歐拉角可表示為:
矢量噴管噴口(靜態(tài)狀況下噴口邊沿視為圓形)在偏轉時會形成各種空間位姿,下面僅對噴口的幾何形狀進行仿真。仿真了半徑為153.85 cm、圓心為(-74.89 cm,-43.93 cm,2049.72 cm)的空間圓,其中實驗仿真效果如圖3所示。對多目數(shù)據(jù)拼接實驗的條件進行描述:在空間圓上隨機選取19個坐標點作為視點B下的數(shù)據(jù),如圖3中藍點所示;原始視點A下的16個三維數(shù)據(jù)點如圖3中紅點所示。下面提供基于外參數(shù)數(shù)據(jù)拼接的實驗測試仿真數(shù)據(jù)。表1為原始視點B和A下的三維數(shù)據(jù),表2 為原始兩視點下的公共點數(shù)據(jù)。
表1 原始視點B和A下的三維數(shù)據(jù)Table 1 3D data of original viewpoint B and A 3D data
表2 原始兩視點下的公共點數(shù)據(jù)Table 2 Common point data under the original two viewpoints
圖3 矢量噴管噴口模擬效果圖Fig.3 The diagram of vector nozzle simulation effect
為使得數(shù)據(jù)更可靠,在視點A下的數(shù)據(jù)中加入均值為0、方差為0.1 的噪聲,對視點數(shù)據(jù)拼接進行模擬實驗,完成多目視覺測量實驗模擬仿真。應用本文提出的算法求解最優(yōu)轉換矩陣,并求出算法的最小均方誤差。
最小均方誤差為1.04×10-14??梢姳疚乃惴ň容^高,能很好地用于多視點數(shù)據(jù)拼接,從而能夠更好地研究和測量發(fā)動機噴管三維運動場景。
為更好地驗證實驗的合理性,對求解出的轉換矩陣進行驗證。主要內(nèi)容如下:假設選出的不同視點下最優(yōu)的3個非共線公共點分別為數(shù)據(jù)C和數(shù)據(jù)D,對比分析視點C通過轉換矩陣得到的數(shù)據(jù)E與數(shù)據(jù)D,以數(shù)據(jù)E中三維點連線構成的三角形與數(shù)據(jù)D中構成的三角形滿足全等作為約束,驗證選出的公共點是否正確,從而更好地驗證算法的合理性。根據(jù)本文算法選出的兩對應視點下的3個非共線公共點,與原始實驗數(shù)據(jù)進行對比,驗證本文算法的合理性。其中仿真求解出的最優(yōu)的3個非共線公共點如表3所示。
表3 選出的最優(yōu)3個非共線公共點Table 3 Optimal 3 non-collinear common points selected
為進一步驗證本文算法的合理性,對比本文算法與最小二乘法和文獻[7]、文獻[10]中算法實現(xiàn)表2數(shù)據(jù)拼接實驗的最小均方誤差,結果如表4所示。
表4 幾種數(shù)據(jù)拼接算法的最小均方誤差Table 4 Least mean square error data of several data splicing algorithms
應用本文算法進行數(shù)據(jù)仿真。具體介紹如下:本次數(shù)據(jù)來源同表1中數(shù)據(jù),并將圖3作為原始仿真效果。選出最優(yōu)的3 個非共線公共點實現(xiàn)多視拼接,結果如圖4 所示,其中綠色數(shù)據(jù)為視點B下的數(shù)據(jù)經(jīng)過轉換矩陣變換后的數(shù)據(jù)。
圖4 選出最優(yōu)的3個非共線公共點實現(xiàn)多視拼接的仿真圖Fig.4 Simulation of selecting the optimal 3 non-common-line common points for multi-view stitching
為測試算法的可靠性,重復14次表1中數(shù)據(jù),并在視點A下的數(shù)據(jù)中加入均值為0、方差為0.1 的噪聲,擬合擬合圓的半徑和原始仿真圓的半徑進行數(shù)據(jù)對比,結果如表5所示。由表可知,擬合數(shù)據(jù)與真實數(shù)據(jù)之間的最大半徑誤差為0.08 cm,最小半徑誤差為0.00 cm,半徑誤差平均值為0.03 cm。結合圖4多目拼接效果可知,應用本文算法可以將視點B下數(shù)據(jù)很好地拼接到視點A下,表明本文算法具有較高的測量精度。
表5 擬合數(shù)據(jù)半徑與真實數(shù)據(jù)半徑對比Table 5 Comparison between fitting data radius and real data radius
在計算機視覺研究中,對于求出的用9 個參數(shù)表示的旋轉矩陣,通常需要轉換為3 參數(shù)的歐拉角表示,這樣可以減少算法的復雜度。應用式(3)~式(5),可直接通過旋轉矩陣求解歐拉角。
為研究矢量噴管噴口在偏轉時形成的各種空間位姿,以便測量噴口邊沿形成的歐拉角參數(shù),需要將求解出來的旋轉矩陣轉為歐拉角表示,從而為研究矢量噴管噴口對發(fā)動機推力影響提供理論設計和實驗數(shù)據(jù)。以式(3)中求得的最優(yōu)旋轉矩陣為例,歐拉角實驗測試數(shù)據(jù)如表6。
表6 歐拉角實驗測試數(shù)據(jù)Table 6 Euler angle experiment data
針對現(xiàn)有拼接算法進行分析,在雙目立體視覺單元的基礎上,針對多雙目立體視覺單元間的三維數(shù)據(jù)進行拼接,提出一種隨機法和窮舉法相結合的拼接算法。給出了具體的算法設計流程,并用擬合圓和真實圓之間半徑絕對誤差作為評價指標,數(shù)據(jù)拼接誤差平均值為0.03 cm。視覺拼接實驗也表明,本文提出的拼接算法具有較高的測量精度。此外,本文將求解的旋轉矩陣轉換為歐拉角,降低了算法的復雜度?,F(xiàn)階段僅對算法進行了理論上的推導和實驗仿真,接下來將搭建多目立體視覺環(huán)境對真實矢量噴管進行測量,進一步研究本文算法的拼接誤差和拼接效果。