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的圖像單應(yīng)性轉(zhuǎn)換實戰(zhàn)

        共 2958字,需瀏覽 6分鐘

         ·

        2021-03-15 10:26

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

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


        同形轉(zhuǎn)換

        我們所常見的都是以這樣的方式來處理圖像:檢測斑點(diǎn),分割感興趣的對象等。我們?nèi)绾螌⑺鼈儚囊环N形式轉(zhuǎn)換為另一種形式來處理這些圖像呢?通過單應(yīng)矩陣快速轉(zhuǎn)換圖像可以實現(xiàn)這個需求。


        單應(yīng)性


        單應(yīng)性,也被稱為平面單應(yīng)性,是兩個平面之間發(fā)生的轉(zhuǎn)換。換句話說,它是圖像的兩個平面投影之間的映射。它由同構(gòu)坐標(biāo)空間中的3x3轉(zhuǎn)換矩陣表示。在數(shù)學(xué)上,同質(zhì)矩陣表示為:

        在坐標(biāo)標(biāo)平面上:

        如圖所示,圖像中的元素在同一個坐標(biāo)平面中投影到另一幅圖像,保留了相同的信息,但具有變換的透視圖。現(xiàn)在,讓我們使用Python代碼實現(xiàn)這一操作。與往常一樣,在我們實際執(zhí)行此操作之前。必須導(dǎo)入以下庫:

        from skimage.io import imread, imshowfrom skimage import transformimport matplotlib.pyplot as pltimport numpy as np

        我們將在本文中使用多個圖像。通過單擊標(biāo)題中嵌入的鏈接來下載圖像??紤]一下這個棋盤:

        chess = imread('chess.png')imshow(chess)

        假設(shè)你們想改為看到木板及其零件的鳥瞰圖。是否可以僅使用圖像中的信息來做到這一點(diǎn)?在這種情況下,你們要做的就是找到木板的角并將其設(shè)置為原坐標(biāo)。之后,在要進(jìn)行單應(yīng)性投影的同一圖像中,選擇要顯示變換后的圖像的目標(biāo)坐標(biāo)。該代碼已實現(xiàn):

        #source coordinatessrc = np.array([391, 100,                 14, 271,                347, 624,                747, 298,]).reshape((4, 2))#destination coordinatessrc = np.array([100, 100,                 100, 650,                650, 650,                650, 100,]).reshape((4, 2))#using skimage’s transform module where ‘projective’ is our desired parametertform = transform.estimate_transform('projective', src, dst)tf_img = transform.warp(chess, tform.inverse)#plotting the transformed imagefig, ax = plt.subplots()ax.imshow(tf_img)_ = ax.set_title('projective transformation')

        既然我們已經(jīng)做到了,那么考慮到目標(biāo)圖像來自其他圖像的情況,我們又如何處理另一個圖像呢?讓我們來看這個例子。考慮一下這張圖像,一場籃球比賽。

        still2 = imread('still2.png')imshow(still2)

        假設(shè)我們有興趣通過單應(yīng)性法改變球場的一半。首先,從上面的圖像(即半場的角)確定原坐標(biāo)。然后,從另一幅與上述圖像完全不同的圖像中找到我們的目的地坐標(biāo)。我們正在談?wù)摰牧硪粋€圖像如下所示:

        court = imread('court.png')plt.imshow(court)

        讓我們通過代碼實際看到這一點(diǎn):

        src_2 = np.array([440, 470,                  10, 750,                  1190, 490,                  1195, 785,]).reshape((4, 2))dst_2 = np.array([3, 7,                  3, 506,                  447, 7,                  447, 506,]).reshape((4, 2))fig, ax = plt.subplots(3, 1, figsize=(25, 15))ax[0].imshow(still2, ) ax[0].scatter(src_2[:,0], src_2[:,1], c='red', s=30) ax[0].set_title('source coordinates')ax[1].imshow(court) ax[1].scatter(dst_2[:,0], dst_2[:,1], c='red', s=30) ax[1].set_title('destination coordinates')dst_2 = dst_2*2 #because image sizes are not the same. tform = transform.estimate_transform('projective', src_2, dst_2)tf_img = transform.warp(still2, tform.inverse)ax[2].imshow(tf_img) ax[2].scatter(dst_2[:,0], dst_2[:,1], c='red', s=10)

        就這樣利用單應(yīng)矩陣來進(jìn)行變換圖像,現(xiàn)在,我們不僅可以從另一個角度來看待球場上的玩家,而且仍然保留了原始角度的相關(guān)信息。


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

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

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

        交流群


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


        瀏覽 57
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        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>
            国产色情成人无码性生活在线播放 | 在线观看黄色小视频 | 国产寡妇婬乱A毛片91精品 | 成人免费观看视频 | 人妻 日韩 欧美 综合 晨跑 | 精品久久久久久久久久久 | 红桃视频一区二区三区四区 | 波多野结无码高清中文 | 精品国产99久久久久久www | 欧美三级理论片 |