<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中使用單應(yīng)性進(jìn)行姿勢(shì)估計(jì)

          共 2751字,需瀏覽 6分鐘

           ·

          2021-03-02 10:12

          點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)


          什么是單應(yīng)性


          單應(yīng)性是一種平面關(guān)系,可將點(diǎn)從一個(gè)平面轉(zhuǎn)換為另一個(gè)平面。它是3乘3的矩陣,轉(zhuǎn)換3維向量表示平面上的2D點(diǎn)。這些向量稱為同構(gòu)坐標(biāo),下面將進(jìn)行討論。下圖說(shuō)明了這種關(guān)系。這四個(gè)點(diǎn)在紅色平面和圖像平面之間相對(duì)應(yīng)。單應(yīng)性存儲(chǔ)相機(jī)的位置和方向,這可以通過(guò)分解單應(yīng)性矩陣來(lái)檢索。

          針孔相機(jī)

          針孔相機(jī)型號(hào)

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


          同構(gòu)坐標(biāo)


          同構(gòu)坐標(biāo)是表示計(jì)算機(jī)視覺(jué)中的點(diǎn)的投影坐標(biāo)。由于拍攝照片時(shí)會(huì)從3D轉(zhuǎn)換為2D,因此深度范圍會(huì)丟失。因此,可以將無(wú)限數(shù)量的3D點(diǎn)投影到相同的2D點(diǎn),從而使均勻坐標(biāo)在描述時(shí)可以通用,因?yàn)樗鼈兊谋壤嗨啤}R次坐標(biāo)只需采用正常的笛卡爾坐標(biāo),并將維數(shù)增大到末端。

          均勻坐標(biāo)在比例上也相等。

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


          投影矩陣


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

          投影矩陣

          外在矩陣

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

          旋轉(zhuǎn)矩陣

          然后將旋轉(zhuǎn)矩陣和平移向量連接起來(lái)以創(chuàng)建外部矩陣。從功能上講,外部矩陣將3D同構(gòu)坐標(biāo)從全局坐標(biāo)系轉(zhuǎn)換為相機(jī)坐標(biāo)系。因此,所有變換后的矢量將相對(duì)于焦點(diǎn)在空間中表示相同的位置。

          內(nèi)在矩陣

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

          針孔相機(jī)型號(hào)

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


          單應(yīng)性的派生


          H是單應(yīng)性矩陣,這是一個(gè)3 x 3的矩陣,可將點(diǎn)從一個(gè)平面轉(zhuǎn)換為另一個(gè)平面。在這里,轉(zhuǎn)換是在Z = 0的平面和指向該點(diǎn)的圖像平面之間進(jìn)行的投影。單應(yīng)性矩陣通常通過(guò)4點(diǎn)算法求解。本質(zhì)上,它使用來(lái)自2個(gè)平面的4個(gè)點(diǎn)對(duì)應(yīng)來(lái)求解單應(yīng)矩陣。在OpenCV中,我們可以使用cv2.findHomography方法找到單應(yīng)矩陣:

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

          此方法需要某種形式的特征點(diǎn)跟蹤,以便實(shí)現(xiàn)上面方法的結(jié)果。坐標(biāo)測(cè)量的質(zhì)量將有助于上述方法的準(zhǔn)確性。一旦有了單應(yīng)性矩陣,就可以將其分解為攝像機(jī)的平移和旋轉(zhuǎn)。


          分解


          我們可以通過(guò)將求解矩陣中的前兩列用作旋轉(zhuǎn)矩陣中的前兩列,然后使用叉積來(lái)找到旋轉(zhuǎn)矩陣的最后一列,從而得出旋轉(zhuǎ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進(jìn)行視覺(jué)本地化的優(yōu)勢(shì)


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


          使用單應(yīng)性進(jìn)行視覺(jué)本地化的缺點(diǎn)


          由于僅在Z坐標(biāo)等于0的情況下才有可能進(jìn)行同構(gòu)照相,因此僅在所需目標(biāo)位于平面上的情況下才能使用同構(gòu)照相。否則,需要其他方法來(lái)定位,例如不具有此類約束的對(duì)極幾何。如果期望的目標(biāo)移出視野,則單應(yīng)性也將變得無(wú)用。結(jié)果,有必要對(duì)攝像機(jī)進(jìn)行定向,使其始終可以注視目標(biāo),這在許多機(jī)器人上可能都不可行。


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

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

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


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



          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲黄片在线播放 | 五月天社区 | 青娱乐亚洲精品视频线 | 亚洲系列日韩 | 激情婷婷丁香 |