單目和多目視覺統一標定
一.單目視覺標定
在圖像測量過程以及機器視覺應用中,為確定空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關系,必須建立相機成像的幾何模型,這些幾何模型參數就是相機參數。在大多數條件下這些參數必須通過實驗與計算才能得到,這個求解參數的過程就稱之為相機標定(或攝像機標定)。無論是在圖像測量或者機器視覺應用中,相機參數的標定都是非常關鍵的環節,其標定結果的精度及算法的穩定性直接影響相機工作產生結果的准確性。因此,做好相機標定是做好后續工作的前提,提高標定精度是科研工作的重點所在。
相機標定方法有:傳統相機標定法、主動視覺相機標定方法、相機自標定法。
世界坐標系是系統的絕對坐標系,在沒有建立用戶坐標系之前畫面上所有點的坐標都是以該坐標系的原點來確定各自的位置的。
一般也定義到第一台相機的相機坐標系上。原點位於相機光心處。那么,這台相機的投影矩陣P=[ I|0]。也就是,這台相機在世界坐標系中沒有進行平移和旋轉。這樣其他相機的位置就可以以第一台相機定義出來的世界坐標系為參考進行旋轉和平移了。這樣做的目的是為了計算起來簡單。當然也可以不用這樣構建世界坐標系。但是計算出來會復雜些。
機器視覺就是用機器代替人眼來做測量和判斷。
機器視覺系統是指通過機器視覺產品將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特征,進而根據判別的結果來控制現場的設備動作。
攝像頭分為CCD、和CMOS兩種。
計算機視覺領域中常見的四個坐標系:像素坐標系、圖像坐標系,相機坐標系,世界坐標系。
1. 像素坐標系:
如下圖所示:像素坐標系u-v的原點為O0,
橫坐標u和縱坐標v分別是圖像所在的行和列,
在視覺處理庫OpenCV中,u對應x,v對應y;
2. 圖像坐標系:
圖像坐標系x-y的原點是O1,為像素坐標系的中點,
如圖所示:
假設(u0,v0)代表O1在u-v坐標系下的坐標,dx和dy分別表示每個像素在橫軸x和縱軸y的物理尺寸;
則圖像坐標系和像素坐標系的關系如下:
3. 假設物理坐標系中的單位為毫米,那么dx的單位為毫米/像素。
那么x/dx的單位就是像素了,
即和u的單位一樣。
為了方便,
將上式寫成矩陣形式:
4. 相機坐標系:
如圖所示:
O為攝像機光心,
Zc為攝像機的光軸,和圖像平面垂直;
OO1為攝像機焦距;
5. 相機坐標系與圖像坐標系的關系:
如圖所示:
6. 世界坐標系:
世界坐標系是為了描述相機的位置而被引入的,
任何維的旋轉可以表示為坐標向量與合適的方陣的乘積。
平移向量是第一個坐標原點與第二個坐標原點的偏移量;
在世界坐標系下,有兩個重要的參數:
旋轉矩陣R和平移向量T
二.多目視覺標定:相機間無重疊部分,介紹兩種典型方法
隨着機器視覺應用的日益廣泛,大幅面多相機視覺系統的需求越來越多,主要應用方向為大幅面高精度的定位與測量和場景拼接等。
多相機視覺系統的難點在於多相機坐標系的統一。 可以分為兩類,一是相機視野間無重疊部分,二是相機視野間有重疊部分。
相機間無重疊部分的情況主要用於大幅面多相機高精度的定位和測量,相機間有重疊部分的情況主要用於場景的拼接等。
1. 使用大標定板統一坐標
方案簡介:
此方法采用一塊大標定板來統一各個相機的坐標,每個大標定板中有若干小標定板,各個小標定板間的位置關系都是已知的,各個相機都能拍攝到一個小標定板。通過各個小標定板可以標定每個相機的內部參數和外部參數,每個相機的坐標都可以轉換到各個小標定板的坐標系上,從而統一各個相機的坐標。系統結構:
相機在各個位置拍攝Mark圖像,通過圖像處理方法得到Mark坐標
常用的標定板形式:
上圖所示為單個標定板圖像,大標定板由若干單個標定板組成,標定板的大小和數量根據實際測量情況而定。
多個標定板組合示意圖:
案例分析:
(1) 檢測目標分析
測量產品需要若干個測量指標。如下圖所示。
(2)圖像獲取 采用4只相機來完成所有項目的測量,分別拍到的照片如下圖所示。
(3)檢測流程
先分別利用每張圖的兩條垂直邊計算出它們的交點,那么得到的4個交點就可以算出L1和L2的值,如下圖所示(以右下角相機為例)。
注意事項: 此種方法需要將多只相機的坐標統一到一個坐標系中,並且單一相機還要做自己的校准,保證精度。根據檢測要求,設置取多少個點作為參考,但是這影響測試的時間,需酌情考慮。
應用領域: 手機和平板電腦面板尺寸的檢測。
2. 使用相對運動統一坐標
方案簡介: 此方法采用相機和被測物之間的相對運動來統一相機的坐標,相機和被測物只要一方運動即可,記錄各個位置的坐標,然后通過數學運算來統一坐標。通常情況下是相機位置固定,被測物通過機械手等運動裝置進行移動,然后把相機坐標系統一到機械手等運動裝置的原點。 總體結構:
方法介紹: 通過相機拍攝的圖像對Mark點進行定位,從而計算出被測物相對於標准位置的偏差,包含角度偏差和位移偏差,最終確定機械裝置需要旋轉的角度和平移的距離。選用手機觸摸屏和手機外殼的定位系統來介紹算法原理。 手機觸摸屏和手機外殼的定位系統,使用多支相機代替一支相機的方法進行定位,使手機觸摸屏和手機外殼精確組裝。相機分為兩組,每組兩支相機,一組拍攝手機外殼(組1),一組拍攝觸摸屏(組2),兩組相機標定方法相同,下面只介紹拍攝手機外殼的兩支相機的標定。相機固定,機械手吸住手機外殼移動,兩支相機分別拍攝手機外殼的兩個定位孔,使用模板匹配的方法對兩個定位孔進行識別,如下圖所示:
(1) 通過機械手的移動獲取標定所用坐標 (三點線性標定法)
組1相機1:
把Mark點移動到相機視野中,定相機的初始位置,得到初始Mark點的中心坐標Point11(cRow11, cColumn11),機械手沿X方向移動一定距離(5mm)后得到Mark點的中心坐標Point12 (cRow12, cColumn12),機械手沿Y方向移動一定距離(6mm)后得到Mark點的中心坐標Point13(cRow13, cColumn13),同時可以得到在上述三個位置機械手的空間坐標Robot11(X1[0],Y1[0])、Robot12(X1[1],Y1[1])、Robot13(X1[2],Y1[2])。組1相機2:
同上,把相同Mark點移動到相機視野中,通過相同的操作得到坐標:Point21 (cRow21, cColumn21)、Point22 (cRow22, cColumn22)、Point23 (cRow23, cColumn23)、Robot21 (X2[0],Y2[0])、Robot22(X2[1],Y2[1])、Robot23(X2[2],Y2[2])。
(2) 圖像距離和實際距離之間轉換比例關系的確定:
通過數學運算可計算得到比例關系。
(3) 旋轉中心的確定
依據三個點就可以確定一個圓的原理,讓機械手在初始位置旋轉三次,得到Robot31,Robot32和Robot33三個相對於機械手坐標系的坐標點,三個點的坐標就可以求出旋轉圓心的坐標。
(4) 標准線斜率求取:
需要在兩個相機的視野中各選取一點作為標准線的起始點和終點,然后求取此標准線在機械手坐標系中的斜率。調整機械手到合適位置,確定此處為標准位置,此時組1的兩支相機分別拍攝初始位置的兩個不同的Mark點的圖像。通過模板匹配方法找到兩個相機初始位置視野中兩個Mark點的中心坐標Point10(Row10,Column10)和Point20(Row20,Column20),Point10和Point20確定為標准線的起始點和終點。求取Point10在機械手中的坐標如下圖所示,下圖中XOY是機械手坐標系,X1O1Y1是組1相機1的圖像坐標。
通過點到直線的距離運算可以得到d14,d15和d16的實際長度,由於在移動過程中使用的是同一個mark點,d1,d2,d3在相機1和相機2的視野中的值是一樣的。從而可以得到Point10在機械手坐標系中的實際坐標為: Point10X=X1[1]+d16+d2,Point10Y=Y1[1]+(d1-d15)。 同樣可以得到Point20在機械手坐標系中的實際坐標:
Point20X=X2[1]+d26+d2,Point20Y=Y2[1]+(d1-d25)。
求取該標准線斜率;
K = (Point20Y-Point10Y) / (Ponit20X-Point20X)
= (Y2[1]-Y1[1]-d25+d15) / (X2[1]-X1[1]+d26-d16)
之后在每次定位時需要和此標准線的斜率進行比較,從而得到和標准線的夾角,最后進行旋轉校正。
注意:由於Point10和Point20會落在不同的位置,在計算Point10和Point20的實際坐標時上述公式會有所變化,但原理相同。
定位校准 以后在每次進行檢測時,得到的結果都和標准線進行比較,可以得到和標准線的夾角和相對於標准位置的位置偏差,根據得到的角度和位置偏差進行校正。在校正過程中需要先旋轉后平移,做一個閉環反饋系統實時校正。
應用領域: 手機或平板電腦觸摸屏和外殼的裝配定位。
============================
三.多目視覺標定:相機間有重疊部分,介紹兩種典型方法。
1. 標定方法拼接圖像
方案簡介:
對於有些大幅面物體 ,可以通過拍攝多幅圖像,每幅圖像覆蓋物體的不同的部分。如果攝像機經過標定並且它們與一個共有的世界坐標系之間的相對關系已知,就可以通過不同的圖像進行精確測量。 甚至可以將多幅圖像拼接為一副覆蓋整個物體的大圖,這個可以通過將每幅圖像都校正到同一個測量平面上實現。在結果圖像上,可以直接在世界坐標系中進行測量。圖像拼接示意圖:
安裝: 兩個攝像機或多個攝像機必須安裝在一個穩定的平台上,並且每幅圖像覆蓋整個場景的一部分。攝像機的方位可以隨意,也就是說不需要它們看起來平行或垂直於物體表面。調整攝像機焦距、燈光以及交迭區域,使用一個大的可以覆蓋整個視野的參照物。為了保證可以將多幅圖像拼接為一副大圖,它們之間必須存在一個小的交迭區域。交迭區域可以很小,因為這個交迭區域只是為了保證在拼接的結果圖像中沒有縫隙,下圖為交疊區域示意圖。
標定: 圖像的標定可以分為兩個步驟。 確定每個攝像機的內參。可以分別對每個攝像機進行標定求取攝像機的內參。 確定所有攝像機的外參。因為最后要將所有的圖像轉換到某一個世界坐標系中,所以需要使用一個大的標定物,這個標定物可以出現在所有的圖像中,它可以由多個標定板組合而成,標定板的數量和使用攝像機的數量一致。下圖為兩個相機分別拍攝到的標定圖像。 注意:為了確定攝像機的外參,每個攝像機只需要拍攝一副標定圖像就已經足夠。標定物在多個攝像機分別進行拍攝標定圖像的過程中不可以移動。理想情況下,這些標定圖像應該同時獲取。
將單個圖像拼接為一個大圖: 首先,每幅圖像都必須進行校正,將這些圖像轉換到一個共有的坐標系中,它們之間就會正確匹配。在得到所有進行校正圖像需要的映射圖后,使用兩個攝像機拍攝的每個圖像對都可以進行校正並且高效的拼接。拼接的結果圖由兩幅校正后的圖像組成,每個校正后的圖像占圖像的一個部分,下圖為校正后的圖像和拼接結果。
應用領域:液晶面板表面質量的檢測
2. 非標定方法拼接圖像
簡介: 此種方法和前三種方法相比精度較低,適用於不需要實現高精度拼接的應用場合。這種拼接方法的優點是不需要進行攝像機標定,並且每幅單獨的圖像可以自動進行排列。拍攝單幅圖像規則:在拍攝每幅圖像時需要遵循下面這些規則: (1) 相鄰的圖像之間必須有交迭 (2) 圖像之間的交迭區域必須有比較明顯的特征,這樣就可以保證比較精確的自動匹配過程。如果在某些交迭區域內的特征不明顯那么可以通過定義合適的圖像對來克服。如果整個物體的特征都不是特別明顯,那么交迭區域就應該更大一些。 (3) 交迭的圖像的縮放比例必須大約相等。一般情況下,縮放比例的不同不能超過5-10% (4) 這些圖像的亮度應該相似,至少在交迭區域部分的亮度相似。否則,如果亮度區別非常明顯的話,圖像之間的接縫在結果圖像中就非常明顯,如下圖所示。
定義交疊圖像對: 需要定義一些交迭圖像對,通過匹配確定這些圖像對之間的轉換關系。匹配的過程只會應用在這些交迭圖像對上。
如果需要拼接的圖像比較多,或者交迭圖像每行圖像比較多,此時合理徹底地安排圖像對的配置十分重要。否則就可能有些圖像不能實現精確匹配。這主要是因為噪聲造成點坐標的一些誤差導致不能准確計算圖像之間的轉換關系,這些誤差會由一個圖像傳到下一幅圖像上。
提取圖像中的特征點: 提取出的特征點的數量影響運行時間以及匹配的結果。特征點的數量越多,匹配的過程就越慢。但是太少的特征點將增大產生錯誤結果的可能性。在交迭的區域中匹配特征點並且確定圖像之間轉換關系: 在進行圖像拼接過程中最重要的任務就是圖像對之間的匹配過程。匹配的圖像對可以有任意的平移和旋轉,唯一的要求就是圖像應該有大約相同的縮放比例。如果圖像之間平移和旋轉的信息可用,它就可以用來限定尋找區域,這樣就可以加速匹配過程並且使算法更加健壯。匹配特征點過程如下圖所示。
生成拼接圖像 知道了圖像對之間的轉換關系,就可以調用函數進行圖像拼接,下圖為拼接好的圖像。
注意: 需要注意球面拼接的情況,上述方法只適用於攝像機繞光心旋轉或縮放。如果攝像機的移動包含平移或不是嚴格繞光心的旋轉,使用這種方法得到的拼接結果將不准確也就不能夠用在精確測量的場合。
應用領域:(1) 街景的拼接。(2) 電子地圖的制作。(3) 醫學影像的拼接。