<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于OpenCV的位姿估計

          共 2319字,需瀏覽 5分鐘

           ·

          2020-11-05 18:08

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          今天我們的目標是找出我們相對于球場上的位置,從而了解我們在比賽中的全局位置。

          01.什么是單應性

          單應性是一種平面關系,可將點從一個平面轉換為另一個平面。它是一個3乘3的矩陣,轉換3維矢量表示平面上的2D點。這些向量稱為同質坐標,下面將進行討論。下圖說明了這種關系。這四個點在紅色平面和圖像平面之間相對應。單應性存儲相機的位置和方向,這可以通過分解單應性矩陣來檢索。

          針孔相機

          針孔相機數(shù)學模型


          針孔相機模型是相機的數(shù)學表示。它接受3D點并將其投影到像上圖所示的圖像平面上。該模型的重要方面是焦點,像平面(上圖中的灰度平面),主點(上圖中的像面上的粗體點),焦距(像平面與像之間的距離)焦點)和光軸(垂直于穿過焦點的像平面的線)。可以在投影矩陣中編碼該變換,該投影矩陣將表示3D點的4維均勻向量轉換為表示圖像平面上2d點的3維均勻向量。


          齊次坐標是表示計算機視覺中的點的投影坐標。由于拍攝照片時會從3D轉換為2D,因此深度范圍會丟失。因此,可以將無限數(shù)量的3D點投影到相同的2D點,這使得同質坐標在描述可能性射線時非常通用,因為它們的比例相似。齊次坐標僅取直角坐標,并將維數(shù)增大到末端。

          用齊次坐標表示的笛卡爾坐標,在比例上也相等。

          請注意,三角形可能會越來越遠且更大,但仍然可以產生相同的圖像給定同質坐標,將所有元素除以矢量的最后一個元素(比例因子),然后笛卡爾坐標是一個矢量,該矢量由除最后一個元素之外的所有元素組成。

          02.投影矩陣

          投影矩陣是與相機屬性相關的其他兩個矩陣的乘積。它們是外部和內部相機矩陣。這些矩陣分別存儲攝像機的外部參數(shù)和固有參數(shù)(因此命名)。

          投影矩陣(3 x 4矩陣)

          外參矩陣

          外在矩陣存儲攝像機在全局空間中的位置。該信息存儲在旋轉矩陣以及平移矢量中。旋轉矩陣存儲相機的3D方向,而平移矢量將其位置存儲在3D空間中。

          旋轉矩陣

          然后將旋轉矩陣和平移向量連接起來以創(chuàng)建外部矩陣。從功能上講,外部矩陣將3D同類坐標從全局坐標系轉換為相機坐標系。因此,所有變換后的矢量將相對于焦點在空間中表示相同的位置。

          內參矩陣

          本征矩陣存儲相機的本征,例如焦距和主點。焦距(f 1和f 6)是從焦點到像面的距離,可以用像素寬度或像素高度(因此為何有2個焦距)來度量。每個像素都不是一個完美的正方形,因此每個邊都有不同的邊長。主點(c?和c?)是光軸和像平面(像平面的功能中心)的交點。該矩陣將相對于焦點的3D坐標轉換到圖像平面上;將其視為拍攝照片的矩陣。當與外部矩陣組合時,將創(chuàng)建針孔相機模型。

          針孔相機數(shù)學模型

          現(xiàn)在,單應性是針孔相機模型的特殊情況,其中投影到相機上的所有現(xiàn)實世界坐標都位于z坐標為0的平面上。


          H是單應性矩陣,是3 x 3矩陣,可將點從一個平面轉換為另一個平面。在這里,變換是在Z = 0的平面和指向該點的圖像平面之間進行的投影。單應性矩陣通常通過4點算法求解。本質上,它使用來自2個平面的4個點對應來求解單應矩陣。在OpenCV中,我們可以使用cv2.findHomography方法找到單應矩陣:

          cv2.findHomography(, )

          此方法需要某種形式的特征點跟蹤,以便上面方法的結果。坐標測量的質量將有助于上述方法的準確性。一旦有了單應性矩陣,就可以將其分解為攝像機的平移和旋轉。單應矩陣的分解如下所示:


          我們可以通過將解決方案矩陣的前兩列用作旋轉矩陣中的前兩列,然后使用叉積來找到旋轉矩陣的最后一列,從而得出旋轉矩陣。翻譯是解決方案矩陣的最后一列。


          03.分解代碼

          '''H is the homography matrixK is the camera calibration matrixT is translationR is rotation'''H = H.Th1 = H[0]h2 = H[1]h3 = H[2]K_inv = np.linalg.inv(K)L = 1 / np.linalg.norm(np.dot(K_inv, h1))r1 = L * np.dot(K_inv, h1)r2 = L * np.dot(K_inv, h2)r3 = np.cross(r1, r2)T = L * (K_inv @ h3.reshape(3, 1))R = np.array([[r1], [r2], [r3]])R = np.reshape(R, (3, 3))

          代碼鏈接:https://github.com/RaubCamaioni/OpenCV_Position

          04,優(yōu)勢

          使用Homography比其他算法簡單得多,因為它非常簡單直觀。利用基本或基本矩陣的其他方法需要復雜的算法和更多的實現(xiàn)精力。由于所有視覺本地化方法都在做相同的事情,因此最好在可能的情況下使用Homography,以節(jié)省時間和精力。


          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码黄色电影 | 大鸡吧视频免费在线看 | 色老扳AV | 免费一级a毛片在线播放直播 | 欧美在线综合 |