python 几何_OpenCV-Python系列之对极几何理论
在我們使用針孔相機時,我們會丟失大量重要的信息,比如說圖像的深度,或者說圖像上的點和攝像機的距離,因這是一個從?3D?到?2D?的轉換。因此一?個重要的問題就產生了,使用這樣的攝像機我們能否計算除深度信息呢?答案?就是使用多個相機。我們的眼睛就是這樣工作的,使用兩個攝像機(兩個眼睛),?這被稱為立體視覺。
在進入深度圖像之前,我們要先掌握一些多視角幾何的基本概念。在本節中我們要處理對極幾何。下圖為使用兩臺攝像機同時對一個一個場景進行拍攝的示意圖。
如果只是用一臺攝像機我們不可能知道?3D?空間中的?X?點到圖像平面的距離,因為?OX?連線上的每個點投影到圖像平面上的點都是相同的。但是如果我?們也考慮上右側圖像的話,直線?OX?上的點將投影到右側圖像上的不同位置。?所以根據這兩幅圖像,我們就可以使用三角測量計算出?3D?空間中的點到攝像?機的距離(深度)。這就是整個思路。
直線?OX?上的不同點投射到右側圖像上形成的線?l′?被稱為與?x?點對應的極線。也就是說,我們可以在右側圖像中沿著這條極線找到?x?點。它可能在這條?直線上某個位置(這意味著對兩幅圖像間匹配特征的二維搜索就轉變成了沿著極線的一維搜索。這不僅節省了大量的計算,還允許我們排除許多導致虛假匹配的點)。這被稱為對極約束。與此相同,所有的點在其他圖像中都有與之對應?的極線。平面?XOO'?被稱為對極平面。
O?和?O'?是攝像機的中心。從上面的示意圖可以看出,右側攝像機的中心O'?投影到左側圖像平面的?e?點,這個點就被稱為極點。極點就是攝像機中心連?線與圖像平面的交點。因此點?e'?是左側攝像機的極點。有些情況下,我們可能?不會在圖像中找到極點,它們可能落在了圖像之外(這說明這兩個攝像機不能拍攝到彼此)。
所有的極線都要經過極點。所以為了找到極點的位置,我們可以先找到多條極線,這些極線的交點就是極點。?本節我們的重點就是找到極線和極點。為了找到它們,我們還需要兩個元素,本征矩陣(E)和基礎矩陣(F)。本征矩陣包含了物理空間中兩個攝像機?相關的旋轉和平移信息。如下圖所示:
基礎矩陣?F?除了包含?E?的信息外還包含了兩個攝像機的內參數。由于?F?包含了這些內參數,因此它可以它在像素坐標系將兩臺攝像機關聯起來。(如果?使用是校正之后的圖像并通過除以焦距進行了歸一化,F=E)。簡單來說,基?礎矩陣?F?將一副圖像中的點映射到另一幅圖像中的線(極線)上。這是通過匹?配兩幅圖像上的點來實現的。要計算基礎矩陣至少需要?8?個點(使用?8?點算?法)。點越多越好,可以使用?RANSAC?算法得到更加穩定的結果(該算法我們在之前已經講過)。
本次教程我們簡述其部分原理,將在下次進行實戰。
更多openvino技術信息可以入群交流~
OpenVINO技術交流群QQ223824636
申請時備注:B站
總結
以上是生活随笔為你收集整理的python 几何_OpenCV-Python系列之对极几何理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python和工程造价_终于懂了自学造价
- 下一篇: 如何在mac上安装python3_在Ma