u can read from:
also u can get the documents from me.send me the private message
講述了bumblebee立體視覺的原理
講述了bumblebee demo程式中各項引數的含義及如何調整 講述了為什麼在深度影象和重構的3d影象中有無效的畫素
本文將試著去闡述立體視覺技術。閱讀完本文後你將對資料如何在系統中流動和其間所有可 調整的引數有乙個更深入的了解。這將使你可以量身定做自己的系統來完成特殊的任務。
立體視覺的基本原理
立體視覺的任務是完成空間的測量,這種測量是基於空間上存在偏移的相機所採集到的影象 的。立體視覺的處理過程可分為如下三步:建立從不同觀測角度所獲得的同一場景影象特徵的相關。 計算每幅影象中相同特徵的相對位移
根據相機的幾何結構,決定特徵相對於相機的3d
位置 考慮如下兩幅。這兩幅取自一對存在水平偏移的 triclops 相機模型。我們可以在兩 幅中分別定義兩個點 a 和 b。點 aleft 對應於點 aright ,同樣的,點 bleft 對應於點 bright 。
使用一把尺子,如果你測量乙個點到影象邊緣的水平距離,你會發現左圖的這個距離比右圖 中對應點到影象邊緣的水平距離要大。例如,左圖中邊緣到**聽筒的距離要大於右圖中邊緣到**聽筒的距離。我們就可以根據這個距離(也被叫做視差)來確定**聽筒到相機模型的距離。
我們把左圖和右圖中相同特徵在各自座標系中的值的差定義為視差。你會發現在兩幅圖中, 影象上端到所匹配的特徵的距離完全相同,這是因為相機是水平排列的,因此只有水平的位 移。
於是特徵 a 的視差被定義成 d(a) = x(aleft) – x(aright),b 的則為 d(b) = x(bleft) – x(bright),其 中 x(aleft)是 aleft 點的 x 軸座標。
如果你去計算
d(a)
和 d(b)
,你會發現d(a
) ,這說
明在這個場景當中點a 比點b
要遠。
建立相關
triclops 庫使用絕對相關偏差和的方法來建立影象間的相關。這種方法的原理如下:對於影象中的中每乙個畫素
在參照影象中,按照給定的正方形尺寸選擇乙個鄰域 將這個鄰域沿著同一行與另一幅影象中的一系列鄰域相比較找到最佳的匹配
結束
鄰域的比較方法如下面的公式所示:
dmax
m m
2 2
i right [x + i][ y + j] − ileft[x + i + d ][ y + j]
d =dmin
i=− j =−
2 2
m m
其中:
d min 和 d max 是最小和最大視差(disparity)
m 是模板尺寸(mask size)
i right 和 ileft 是右面的影象和左面的影象
計算距離 物體到相機的距離可由視差和相機的幾何結構確定。所匹配的特徵的距離是視差,鏡頭焦距 的長度,
ccd的解析度和基線長度(兩相機間的距離)的函式。
triclops 庫提供了深度對映轉化為距離影象的函式。
下面的方程給出了視差與距離的關係以及單個相機中世界座標與像座標的關係:
z = bf
; x
= u
; y
= vd z f z f
其中:(x,y,z)是3d 點在世界座標系中的位置
f 是相機的焦距
(u,v)是像座標
d 是視差值
b 是相機間的基線長度
triclops庫中的資料流程
triclops 庫中的資料流程如下圖所示。系統首先從相機模型中獲得raw 格式的影象,最終將 其處理成深度影象。在系統中有兩個主要的處理模組。第乙個處理模組是乙個應用了低通濾波、影象校正和邊緣檢測的預處理模組。第二個處理模組用來做立體匹配、結果確認和亞像 素插值。最後的處理結果就是一幅深度影象。
預處理(pre-processing)為了校正一幅影象,事先對其進行平滑是非常重要的。所以如果要校正一幅影象,事先將低 通濾波器開啟是很好的方法。當然不使用低通濾波器同樣可以校正影象,但校正後的影象可能會出現混淆的現象。如果要提高處理速度,可以將低通濾波器關掉。
校正(rectification)
校正是用來修正鏡頭所產生的畸變的。在原始影象中可以看到鏡頭所帶來的這種畸變。例如,
場景中的一條直線在原始影象中會變成一條曲線,這種效果在影象的邊角處尤為明顯。校正就是為了修正這種型別的畸變。 進一步來講,如果沒有正確的校正,那麼沿著行或者列所做的特徵搜尋將可能產生錯誤的結果。
邊緣檢測(edge detection)邊緣檢測是一項任選的特性,它使用亮度的變化來匹配特徵。當系統中的相機具有自動增益 功能時,這項功能是非常有用的。如果每個相機的自動增益的變化是不一致的,那麼影象間 的絕對亮度是不一致的,而雖然絕對亮度是不一致的,但亮度的變化卻是乙個常數。因此邊 緣檢測適用於光照有很大變化的環境當中。
雖然邊緣檢測可以改善檢測的結果,但這相當於 又引入了另外的處理步驟,因此要權衡結果的改善狀況和速度之間的關係來使用這項功能。 注意,確認功能僅在邊緣檢測模式下有效。
立體處理(stereo processing)
立體處理使用前面所講過的絕對相關偏差和的演算法。
視差範圍(disparity range)視差範圍是立體演算法為了在兩幅影象中搜尋最佳匹時,所搜尋的畫素的範圍。在tr
iclops系 統中
0個畫素的視差代表了無窮遠處的物體。最大的視差定義了能被檢測到的最近的物體。我們需要根據實際的任務來設定合適的視差範圍。
減小視差範圍可以加快系統的執行速度, 並降低誤匹配的機率。
相關模板(correlation mask)相關模板是圍繞著乙個畫素的乙個正方形鄰域,這個畫素就是系統想要為其尋找匹配的像 素。我們可以設定這個相關模板的尺寸。大的模板會產生更密集更平滑的深度影象,然而,在識別不連續深度位置的精度上會有所欠缺。另一方面,小的模板所產生的影象較為稀疏且 會有更多的雜訊,但在定位不連續深度的時候會有上佳的表現。為了生成相同的結果,模板的尺寸要與被處理影象的解析度成一定的比例。就是說為了得到 具有可比性的結果,對於
160x120影象的
5x5的模板,
對於 320x240 影象的時候模板要增大 到
9x9。模板
的尺寸必須是奇數。3x3
,5x5,7x7
是有效的模板尺寸,而
4x4,
6x6,8x8
則 是無效的模板尺寸。tr
iclops提供了
最大為 15x15 和最小為 1x1
的模板。
另外,t
riclops中 提供了乙個新的用於實驗的函式:
troclopssetanystereomask,
這個函式允許使用者設定任意尺 寸的相關模板。
確認(validation)在一些情況下,例如封閉的缺乏變化的質地,是無法建立影象之間的相關的。如果相關建立 的不正確,那麼測量的結果也就是不正確的了。為了避免不正確的測量,系統引入了兩個確 認的方法:
質地確認(t
exture validation)
是基於相關模板的質地的水平的,它決定了視差值是否有效。如果質地的水平不足以產生乙個正確的匹配,這個畫素就會被宣告為無效。 唯一性確認(
uniqueness validation)
是指對於乙個特定畫素的最佳匹配和這個相關模板下的 其他匹配比起來是不是足夠好。即使相關模板的質地滿足要求,由於封閉的原因,可能還是
得不到正確的匹配。如果相關的結果不足夠強,這個畫素就會被宣告為無效。
使用者可以設定兩個閾值來控制確認的嚴格程度——乙個是質地另乙個是唯一性。
雙目視覺焦距 雙目視覺系統的原理和設計
雙目立體視覺是機器視覺的一種重要形式,它是基於視差原理並由多幅影象獲取物體三維幾何資訊的方法。雙目立體視覺系統一般由雙攝像機從不同角度同時獲得被測物的兩幅數字影象,或由單攝像機在不同時刻從不同角度獲得被測物的兩幅數字影象,並基於視差原理恢復出物體的三維幾何資訊,重建物體三維輪廓及位置。雙目立體視覺原...
雙目視覺 1 座標系變換
由q矩陣轉換到相機座標系 q u vd1 xy zw q begin u v d 1 end begin x y z w end q uvd1 xyzw 最終將到的向量 x,y,z,w t x,y,z,w t x,y,z w t 用w ww歸一化就得到三維的點。opecv中可以直接呼叫reproje...
影響雙目視覺系統定位精度的因素分析
雙目視覺系統已經被廣泛應用在很多領域,但其定位精度仍難以滿足工業要求。為了進一步提高它的精度,可以限制一些引數,使引數在這些範圍內可以達到最佳精度。現在需要做的便是找到這些引數,並分析每乙個引數和可能的誤差之間的關係。本篇文章將分析影響精度的7個引數,並將其分為兩大類 第一類是系統結構引數 包括基線...