本發(fā)明屬于三維重建技術(shù)領(lǐng)域,尤其涉及一種物體三維重建方法及裝置。
背景技術(shù):
在現(xiàn)代工業(yè)中,傳統(tǒng)的測量設(shè)備,如三坐標測量機、卡尺、千分尺等,因測量速度慢、效率低,已不能適應(yīng)現(xiàn)代制造技術(shù)發(fā)展的需要。而計算機視覺檢測技術(shù)以其非接觸、快速、高精度、自動化程度高等諸多優(yōu)點,在工業(yè)生產(chǎn)中得到了越來越廣泛的應(yīng)用。計算機視覺檢測方法包括基于單攝像頭結(jié)合結(jié)構(gòu)光的方法、雙目視覺方法和投影儀配合攝像機方法等。目前用于采集實物表面點云數(shù)據(jù)的方法基本可以分為兩大類:接觸式測量和非接觸式測量。非接觸式測量包括激光掃描法和莫爾條紋法。
發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)傳統(tǒng)的激光掃描法存在以下不足:需提前對整個測量裝置進行精確標定,一旦裝置內(nèi)部元件位置發(fā)生輕微移動,則需要重新送回原廠標定,測量精度低。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了一種物體三維重建方法及裝置,以解決現(xiàn)有技術(shù)中需提前對整個測量裝置進行精確標定且在裝置內(nèi)部元件位置發(fā)生輕微移動時需重新標定的問題。
本發(fā)明實施例的第一方面,提供了一種物體三維重建裝置,包括:第一光線捕捉模塊、第二光線捕捉模塊、光線生成模塊、標靶和處理模塊;
在所述光線生成模塊射出的光線的方向上,所述標靶為雙層或多層的閉合環(huán)狀結(jié)構(gòu),設(shè)置在所述光線生成模塊和目標物體之間;
所述光線生成模塊,用于生成源光線,以使所述源光線通過所述標靶投向所述目標物體以及反射至所述第一光線捕捉模塊;
所述第二光線捕捉模塊,用于捕捉所述目標物體反射的第二光線;
所述處理模塊,用于根據(jù)所述第一光線捕捉模塊捕捉到的第一光線和所述第二光線捕捉模塊捕捉到的所述第二光線對所述目標物體進行三維重建。
本發(fā)明實施例的第二方面,提供了一種物體三維重建方法,包括:
根據(jù)第一光線和第二光線,標定第一光線捕捉模塊的第一內(nèi)參數(shù)和第二光線捕捉模塊的第二內(nèi)參數(shù);
根據(jù)所述第一內(nèi)參數(shù)和所述第二內(nèi)參數(shù),得出所述第一光線捕捉模塊和所述第二光線捕捉模塊之間的位置關(guān)系;
根據(jù)光線生成模塊生成的源光線與標靶的交界線確定光平面;
根據(jù)所述光平面和所述第一光線捕捉模塊和所述第二光線捕捉模塊之間的位置關(guān)系對目標物體進行三維重建。
本發(fā)明實施例相對于現(xiàn)有技術(shù)所具有的有益效果:本發(fā)明實施例采取在所述光線生成模塊射出的光線的方向上為雙層或多層的閉合環(huán)狀結(jié)構(gòu)的標靶,實現(xiàn)實時標定線結(jié)構(gòu)光平面與光線捕捉模塊坐標系的關(guān)系,能夠增強抗外界環(huán)境擾動的干擾,外界的震動導(dǎo)致的標靶或者光線生成模塊的小幅移動并不會影響測量精度,測量精度較高,且不需要定期重新標定,從而能夠大大拓展適用范圍,尤其對于多震動環(huán)境。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的物體三維重建裝置的結(jié)構(gòu)框圖;
圖2是本發(fā)明實施例提供的物體三維重建裝置的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實施例提供的標靶的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例提供的物體三維重建方法的流程圖;
圖5是本發(fā)明實施例提供的圖4中步驟s102的實現(xiàn)流程圖;
圖6是本發(fā)明實施例提供的圖4中步驟s104的實現(xiàn)流程圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細節(jié),以便透徹理解本發(fā)明實施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細說明,以免不必要的細節(jié)妨礙本發(fā)明的描述。
為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實施例來進行說明。
實施例一
圖1示出了本發(fā)明實施例一提供的物體三維重建裝置的結(jié)構(gòu)框圖,詳述如下:
該物體三維重建裝置,包括:第一光線捕捉模塊102、第二光線捕捉模塊103、光線生成模塊101、標靶104和處理模塊105。其中,在所述光線生成模塊101射出的光線的方向上,所述標靶104為雙層或多層的閉合環(huán)狀結(jié)構(gòu),設(shè)置在所述光線生成模塊101和目標物體之間。所述光線生成模塊101,用于生成源光線,以使所述源光線通過所述標靶104投向所述目標物體以及反射至所述第一光線捕捉模塊102。所述第二光線捕捉模塊103,用于捕捉所述目標物體反射的第二光線。所述處理模塊105,用于根據(jù)所述第一光線捕捉模塊102捕捉到的第一光線和所述第二光線捕捉模塊103捕捉到的所述第二光線對所述目標物體進行三維重建。
首先將目標物體置于光線生成模塊101生成的光線覆蓋范圍內(nèi),固定不動;啟動測量程序,光線生成模塊101打開,第一光線捕捉模塊102和第二光線捕捉模塊103實時采集拍攝到的圖片;處理模塊105通過處理第二光線捕捉模塊103捕捉到的第二光線得到光平面與第二光線捕捉模塊103坐標系的位置關(guān)系;通過處理第一光線捕捉模塊102捕捉到的目標物體反射的第一光線得到三維坐標,從而可得到目標物體整個表面的稀疏點云。點云稀疏程度取決于掃描的線數(shù),掃描線數(shù)越多,舵機旋轉(zhuǎn)越慢,耗時越久,點云越密集,反之點云則越稀疏。實際應(yīng)用中可以根據(jù)得到點云的具體用途選擇合適的掃描線數(shù)。
由此可見,上述物體三維重建裝置,采取特制的標靶104實現(xiàn)實時標定線結(jié)構(gòu)光平面與光線捕捉模塊坐標系的關(guān)系,能夠增強抗外界環(huán)境擾動的干擾,外界的震動導(dǎo)致的標靶104或者光線生成模塊101的小幅移動并不會影響測量精度,測量精度較高,且不需要定期重新標定,從而能夠大大拓展適用范圍,尤其對于多震動環(huán)境。
參見圖3,作為一種可實施方式,標靶104可以包括兩個l型靶面1041和1042。在所述光線生成模塊101射出的光線的方向上,兩個靶面1041和1042為雙層結(jié)構(gòu)。例如,靶面1041位于前一層,靶面1042位于后一層。兩個l型靶面1041和1042呈口字型結(jié)構(gòu)。
在其他實施例中,標靶104還可以為其他形狀。例如,所述標靶104可以包括至少兩個弧形靶面。在所述光線生成模塊101射出的光線的方向上,所述至少兩個弧形靶面呈閉合環(huán)狀結(jié)構(gòu),且各個所述弧形靶面位于不同平面上。標靶104還可以為其他可構(gòu)成閉合環(huán)的標靶結(jié)構(gòu)。而且,在所述光線生成模塊101射出的光線的方向上,標靶104的層數(shù)不限于兩層,還可以為多層。
一個實施例中,第一光線捕捉模塊102可以為長焦攝像頭,第二光線捕捉模塊103可以為短焦廣角攝像頭,光線生成模塊101為半導(dǎo)體線激光器。第一光線捕捉模塊102和第二光線捕捉模塊103位于光線生成模塊101兩側(cè)。
可選的,所述處理模塊105具體用于:
根據(jù)所述第二光線,計算光平面與所述第二光線捕捉模塊103坐標系的旋轉(zhuǎn)平移關(guān)系;
根據(jù)所述旋轉(zhuǎn)平移關(guān)系和所述第一光線得出所述目標物體表面點云;
根據(jù)所述目標物體表面點云進行三維重建。
進一步的,物體三維重建裝置還可以包括轉(zhuǎn)動模塊。所述轉(zhuǎn)動模塊用于帶動光線生成模塊101旋轉(zhuǎn)。本實施例中采取旋轉(zhuǎn)光線生成模塊101的方式而不是使用平移導(dǎo)軌的方式完成對整個目標物體表面的掃描,不需要標定導(dǎo)軌的移動相對于第一光線捕捉模塊102坐標系和第二光線捕捉模塊103坐標系的關(guān)系,不需要經(jīng)過點云拼接融合,從而能夠大大減輕算法實現(xiàn)的復(fù)雜難度,同時由于不需要精密的平移導(dǎo)軌而大大降低成本。
參見圖2,物體三維重建裝置包括兩個作用不同的攝像頭202和203、一半導(dǎo)體線激光器201、一舵機206和一雙層標靶204。左攝像頭202是長焦攝像頭,用于拍攝目標物體。右攝像頭203是短焦廣角鏡頭,用于實時觀測雙層標靶204。雙層標靶204主要包含前后兩塊l型的靶面,每個l型靶面包含一大一小兩塊標靶,兩標靶方向相互垂直。兩塊l型標靶可組合成“口”字型標靶,且“口”字型標靶中間是空的,可以讓導(dǎo)體線激光器201射出的激光線穿過并打在目標物體上面。
工作時,舵機206帶著導(dǎo)體線激光器201旋轉(zhuǎn),激光一部分打在雙層標靶204上,另一部分通過雙層標靶204的中間空心區(qū)域投射到目標物體上。打在雙層標靶204上的激光線條可以被右攝像頭203捕捉,并實時計算線激光平面與右攝像頭203坐標系的旋轉(zhuǎn)平移關(guān)系,再通過立體標定參數(shù)計算激光平面與參考攝像機坐標系(左攝像頭202)的旋轉(zhuǎn)平移關(guān)系,結(jié)合參考攝像機小孔成像直線方程與激光平面方程可得出打在目標物體上的激光線條對應(yīng)的三維坐標。當(dāng)舵機206帶動導(dǎo)體線激光器201旋轉(zhuǎn)一周時,對應(yīng)得到360度方位上所有的線激光三維坐標的融合,從而得出目標物體的三維點云。
參見圖2,雙層標靶204放置在整個支架的前方20cm處,確保整個雙層標靶204都在攝像頭的視野范圍內(nèi)。左攝像頭202和右攝像頭203在支架上的位置可調(diào),且一旦標定了左攝像頭202和右攝像頭203的旋轉(zhuǎn)平移參數(shù),則不能改變左攝像頭202和右攝像頭203的相對位置,否則需重新標定。導(dǎo)體線激光器201的位置和雙層標靶204的位置可微調(diào),只要確保在調(diào)節(jié)范圍內(nèi)即可。
本發(fā)明實施例采取了線激光掃描的方式,但不限于單根激光線條,多線結(jié)構(gòu)光及其他投影圖案都可以實現(xiàn)。
實施例二
對應(yīng)于上文實施例所述的物體三維重建裝置,圖4示出了本發(fā)明實施例二提供的物體三維重建方法的結(jié)構(gòu)框圖。上述物體三維重建方法可以用于實施例一中處理模塊105根據(jù)第一光線捕捉模塊102、第二光線捕捉模塊103捕捉到的光線進行對目標物體進行三維重建處理。為了便于說明,僅示出了與本實施例一相關(guān)的部分。
參照圖4,該方法包括:
步驟s101,根據(jù)第一光線和第二光線,標定第一光線捕捉模塊的第一內(nèi)參數(shù)和第二光線捕捉模塊的第二內(nèi)參數(shù)。
步驟s102,根據(jù)所述第一內(nèi)參數(shù)和所述第二內(nèi)參數(shù),得出所述第一光線捕捉模塊和所述第二光線捕捉模塊之間的位置關(guān)系。
參見圖5,一個實施例中,步驟s102可以通過以下過程實現(xiàn):
步驟s201,通過在不同方位拍攝同一預(yù)設(shè)大小的棋盤格標靶,得到所述第一光線捕捉模塊/所述第二光線捕捉模塊的外參矩陣
和內(nèi)參矩陣
其中,fx和fy為焦距,u0和v0為理想圖像坐標,r為旋轉(zhuǎn)向量,t為平移向量。
步驟s202,根據(jù)剛體變換理論得出所述第一光線捕捉模塊102和所述第二光線捕捉模塊103之間的旋轉(zhuǎn)平移矩陣為:
其中,rl為所述第一光線捕捉模塊102的旋轉(zhuǎn)向量,tl為所述第一光線捕捉模塊102的平移向量,rr為所述第二光線捕捉模塊103的旋轉(zhuǎn)向量,tr為所述第二光線捕捉模塊103的平移向量。
步驟s103,根據(jù)光線生成模塊生成的源光線與標靶的交界線確定光平面。
其中,以標靶104為雙層標靶為例進行說明,但并不以此為限。雙層標靶每層都有兩個靶面,每個靶面又有兩個標靶,線激光每次都只能打在每個靶面中的一個標靶。因此每個靶面可提供一定數(shù)量的三維點(在第二光線捕捉模塊103坐標系中,即在右攝像頭203坐標系中),這些三維點在一條直線上,直線為激光平面與靶面的交線。由于有兩個靶面,故可以得出兩條不共靶面的直線點云,通過這些點可以擬合出激光平面方程。
其中,靶面上的每個標靶都有一定數(shù)量的規(guī)則排列的實心圓組成,每個圓直徑為10mm,兩個圓心之間為10mm,邊界離最近圓的圓心距離為7.5mm,靶面上兩個標靶分別為5*9和5*21大小。每個標靶的坐標系原點在標靶轉(zhuǎn)角處。當(dāng)線激光打在標靶上的時候,可以通過激光線在各實心圓中的位置按比例獲得激光線經(jīng)過的平面坐標。
步驟s104,根據(jù)所述光平面和所述第一光線捕捉模塊和所述第二光線捕捉模塊之間的位置關(guān)系對目標物體進行三維重建。
具體的,參見圖6,步驟s104可以通過以下過程實現(xiàn):
步驟s301,將所述源光線線條進行骨骼化處理,得出所述源光線線條的骨骼。
其中,將源光線線條進行骨骼化,以精確提取所述源光線線條經(jīng)過的區(qū)域。初步圖片處理后,可得到所述源光線線條的骨骼。本實施例中,對所述源光線線條進行骨骼化處理可參考灰度重心法。
首先決定一個搜索方向,如果激光線條在圖片中的傾斜方向更接近豎直方向,則按水平方向每行搜索,若激光線條方向更靠近水平方向,則按豎直方向每列搜索。下面以每行搜索為例分析。第一步先挑選一個閾值粗略的將激光線條分離出來,閾值的選取可以根據(jù)實際激光器的功率和測量距離大致選取,一般選200以上就可以。當(dāng)確定閾值threshold后,每行搜索時小于閾值的灰度值全部置為0,其余的保持不變。假設(shè)圖片某一行i中大于等于閾值的像素的列號和灰度值分別為col_no,grayvalue_no,則該行對應(yīng)的亞像素列值為:
最終骨骼在該行的像素值為(col_subpixel(i),i)i),按照同樣的方法可依次得到其余每行的亞像素坐標值(col_subpixel(j),j),j=0,1,2,......height-1。當(dāng)按列搜索時會類似得到每列的亞像素表示:(row_subpixel(j),j),j=0,1,2,......width-1,分別為攝像機采集圖像的高和寬(像素單位)。
步驟s302,提取每個所述實心圓的圓心,得出所述實心圓的圓心的亞像素坐標。
其中,可通過腐蝕算法提取每個所述實心圓的圓心,初步圖片處理后可以得出所述實心圓的圓心的亞像素坐標。
步驟s303,根據(jù)較比不變性原理得到所述源光線線條的骨骼上的二維亞像素點,并按照預(yù)設(shè)尺寸關(guān)系將所述實心圓圓心的亞像素坐標轉(zhuǎn)換成標靶坐標系上的二維坐標。
步驟s304,根據(jù)所述源光線線條的骨骼上的二維亞像素點和所述實心圓圓心在標靶坐標系上的二維坐標,得到所述源光線線條在所述第一光線捕捉模塊坐標系和所述第二光線捕捉模塊坐標系的三維坐標。
其中,所述源光線線條在所述第一光線捕捉模塊坐標系的三維坐標為point1(x,y,z),所述源光線線條在所述第一光線捕捉模塊坐標系的三維坐標為point2(x,y,z)。步驟s304中三維坐標的求解可以通過以下過程實現(xiàn):
首先,根據(jù)所述源光線線條的兩個三維坐標,擬合得出第一平面方程ax+by+cz+d=0。其中,可以根據(jù)所述源光線線條的兩個三維坐標,通過ransac方法擬合得出第一平面方程。
然后,根據(jù)所述第一平面方程和所述旋轉(zhuǎn)平移矩陣,得出第二平面方程ax+by+cz+d=0。
接著,設(shè)定空間上點p(x,y,z)在左攝像機圖片上投影為點(xl,yl),經(jīng)標定后得圖片中心點(ul,vl)和焦距f,則由小孔成像原理得出直線方程
最后,根據(jù)所述直線方程和所述第二平面方程求解點p(x,y,z)。按照這個方法依次取出左攝像機上激光線條上的骨骼亞像素坐標(xli,yli),i=1,2,......,即可算出對應(yīng)的三維坐標點pi(xi,yi,zi),i=1,2,......。
步驟s301至s304只重建了其中一根激光線上的所有三維坐標,按照同樣的方法,舵機每旋轉(zhuǎn)到一個新角度都可以得到一組新的三維點,由于被測物體保持不動,所得到的三維點云仍然是直接建立在左攝像機坐標系上的,點云之間無需其他復(fù)雜方法融合。當(dāng)舵機旋轉(zhuǎn)一周后,得到一周內(nèi)所有測量激光線條上的三維坐標,這些三維坐標就是被測物體表面的三維點云??梢岳眠@些點云進行后續(xù)各種處理或者進行三角剖分重建處完整的表面。
應(yīng)理解,上述實施例中各步驟的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將所述裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的系統(tǒng)實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明實施例各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。