1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        在OpenCV中使用單應性進行姿勢估計

        共 2751字,需瀏覽 6分鐘

         ·

        2021-03-02 10:12

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

        重磅干貨,第一時間送達


        什么是單應性


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

        針孔相機

        針孔相機型號

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


        同構坐標


        同構坐標是表示計算機視覺中的點的投影坐標。由于拍攝照片時會從3D轉換為2D,因此深度范圍會丟失。因此,可以將無限數(shù)量的3D點投影到相同的2D點,從而使均勻坐標在描述時可以通用,因為它們的比例相似。齊次坐標只需采用正常的笛卡爾坐標,并將維數(shù)增大到末端。

        均勻坐標在比例上也相等。

        給定同構坐標,將所有元素除以矢量的最后一個元素(比例因子),然后笛卡爾坐標是一個矢量,該矢量由除最后一個元素之外的所有元素組成。


        投影矩陣


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

        投影矩陣

        外在矩陣

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

        旋轉矩陣

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

        內(nèi)在矩陣

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

        針孔相機型號

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


        單應性的派生


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

        cv2.findHomography(<points from plane1>, <points from plane 2>)

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


        分解


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

        '''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))


        使用Homography進行視覺本地化的優(yōu)勢


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


        使用單應性進行視覺本地化的缺點


        由于僅在Z坐標等于0的情況下才有可能進行同構照相,因此僅在所需目標位于平面上的情況下才能使用同構照相。否則,需要其他方法來定位,例如不具有此類約束的對極幾何。如果期望的目標移出視野,則單應性也將變得無用。結果,有必要對攝像機進行定向,使其始終可以注視目標,這在許多機器人上可能都不可行。


        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

        交流群


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



        瀏覽 45
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            精品一区二区三区四区五区六区七区八区九区 | 久久影院国产 | 动漫小舞美女被羞羞视频网站 | 欧美精品不卡免费在线 | 91黄视频| aaa日韩 | 高清视频一区二区 | 中国黄色视屏 | 国内揄拍国内精品浪潮av | 大BBBBB小BBBBBB |