核面幾何 學習

2021-10-07 12:09:26 字數 1154 閱讀 6545

**這裡

當我們使用針***機拍攝影象時,我們會丟失重要資訊,影象的深度。或者影象每個點離攝像機有多遠,因為這是乙個3d到2d的轉換。所以我們是否能找到深度資訊就變得很重要。回答是使用多個攝像機。我們的眼睛也是類似的方法,我們使用兩個攝像機(雙眼),這被叫做立體影像。所以我們看看opencv提供了什麼。在更進一步之前,我們先明白一些多視幾何的基礎概念。在本節裡,我們會用核面幾何處理。看下面的影象顯示了兩個攝像機對同乙個場景拍攝影象的基本設定。

如果我們只用左邊的攝像機,我們沒法找到點x的對應3d點。因為線ox上的每乙個點在影象平面都投影到同乙個點。但是如果加上右邊的攝像機,現在ox線上的不同點在右邊的平面投影到了不同的點(x』)。所以用兩個影象,我們可以三角測量正確的3d點。這就是所有想法。

在右邊平面上不同點投影出來的直線(l』)。我們叫做點x對應的極線。它表示,要找到右邊影象裡的點x,沿著這根直線找就行。它應該在這條線上的某齣(這麼想,要找到在另一張圖上的對應點,你不需要搜尋整張,只需要在這根直線上找就行。所以它提供了更好的效能和準確性)。這被叫做極限約束。類似的所有的點都會在另一張圖上有對應的極線。平面xoo』背景叫做偏斜面。

o和o』是攝像機中心,從上面可以看到右邊攝像機的o』的投影可以在左邊看到,e點。這被叫做極點。極點是通過兩個攝像機中心的直線與平面的焦點。類似的,e』是左邊攝像機的極點。在某些情況下,你沒法在影象內定位極點,他們可能在影象外(這表示攝像機沒法看見彼此)。

所有的極線都通過極點。所以要找到極點的位置,我們可以找多條極線,然後找他們的交點。我們要找到極線和極點,需要兩個東西,基礎矩陣(f)和本質矩陣(e)。本質矩陣包含平移和旋轉的資訊,描述了第二個攝像機相對於第乙個在全域性座標系裡的位置。看下圖:

基礎矩陣包含了和本質矩陣一樣的資訊,另外還有兩個攝像機內聯資訊,這樣我們可以把兩個攝像機在畫素座標系內關聯起來。(如果我們使用修正過的影象並按焦距把點分開正規化了,f=e)。簡單的說,基礎矩陣f把乙個影象裡的點對映到另乙個圖里的線(極線)。這是通過兩個影象裡的匹配點計算的。最少需要8個點來得到基礎矩陣(使用8點演算法),最好能有多個點來使用ransac來得到更健壯得到結果。

計算幾何學習筆記

基礎部分 include using namespace std define type double define vector point define eps 1e 8 const double pi 3.14159265358979323 type deg2red type deg type...

計算幾何學習筆記

計算幾何是什麼東西?能吃嗎?給定 n 個點 x i,yi 問 歐幾里得 距離最近的點對。如果用樸素的兩兩枚舉,需要o n2 的時間。考慮用分治法,先將點按照先 x 後 y排序。考慮對一段點 l r 的處理。在 放一根平行於y軸的線,其左邊的答案為a,右邊為b,設 min a,b 考慮如果有跨這條線的...

計算幾何(學習)模板

點結構 struct point 浮點誤差處理 int dblcmp double x 或者int dblcmp double x 判斷線段是否相交並求交點 規範相交 double det double x1,double y1,double x2,double y2 double cross po...