【三維重建】對極幾何

極幾何描述了同一場景或者物體的兩個視點圖像間的幾何關系

可以發現P在左右相機的投影點一定在各自的極線上,如果求出極線就能縮小求解對應點的范圍。

本質矩陣對規范化攝像機拍攝的兩個視點圖像間的極幾何關系進行代數描述

規范化相機指的是相機的內參矩陣為一個單位矩陣

P'=\begin{bmatrix} x\\y \\ z \end{bmatrix}=\begin{bmatrix} 1 &0 & 0 & 0\\ 0&1 &0 &0 \\ 0& 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} x\\y \\ z \\ 1 \end{bmatrix} \ \ P'=MP?????

p'^*p'O_1坐標系下的坐標,則:

p'=Rp'^*+T \rightarrow p'^*=R^Tp'-R^TT(R^{-1} = R^T)

因此,p'O_1坐標系下的坐標為 R^Tp'-R^TT

同理:O_2O_1坐標系下的坐標為 -R^TT

得到兩個向量 O_1p' \ , O_1O_2

O_1p' \times O_1O_2 = R^TT \times (R^Tp'-R^TT)=R^TT \times R^Tp' (垂直于極平面)

[R^TT \times R^Tp']^T \cdot p = 0

a \times b 可以寫成一個矩陣乘積的形式,比如:

a = (x_1,y_1,z_1),b=(x_2,y_2,z_2)

a \times b = (y_1z_2-z_1y_2,z_1x_2-x_1z_2,x_1y_2-y_1x_2)\\ = \begin{bmatrix} 0& -z_1 &y_1 \\ z_1&0 &-x_1 \\ -y_1&x_1 &0 \end{bmatrix}\begin{bmatrix} x_2\\y_2 \\ z_2 \end{bmatrix}

因此,

[R^TT \times R^Tp']^T \cdot p = [T \times p']^TRp=[T_xp']^TRp \\ \\ =p'^TT_x^TRp=p'^TT_xRp=p'^T[T \times R]p = 0

( T_x 是一個秩為2的對稱矩陣)

E = T \times R = T_{\times}R

E就是本質矩陣,描述了規范化攝像機下兩個視點的關系。

p^T \cdot l = 0 ,\ p'^TEp =0\rightarrow l =E^Tp' \\ p'^T \cdot l' = 0 ,\ p'^TEp =0\rightarrow l' =Ep

e也是極線l上的點,所以

l^Te = p'^TEe=0\rightarrow Ee =0

基礎矩陣對一般的透視攝像機的兩個視點的圖像間的極幾何關系進行代數描述

核心思想是將一般相機下的p,p',變成規范化相機下的p,p'

p=K[I\ O]P\rightarrow K^{-1}p=K^{-1}K[I \ O]P\rightarrow \begin{bmatrix} 1 &0 &0 &0 \\ 0& 1& 0&0 \\ 0 & 0&1 & 0 \end{bmatrix}P

let \ \begin{bmatrix} 1 &0 &0 &0 \\ 0 & 1 & 0 &0 \\ 0 & 0 & 1 & 0 \end{bmatrix}P = p_c\rightarrow p_c = K^{-1}p \ , p_c '= K'^{-1}p'

p_c',p_c符合規范換相機要求,因此:

p_c'Ep_c=p_c'^T[T_{\times}]Rp_c=(K'^{-1}p' )^T [T_{\times}]RK^{-1}p \\ \\ =p'^TK'^{-T}[T_{\times}]RK^{-1}p = 0

let F=K'^{-T}[T_{\times}]RK^{-1},\ p'^TFp=0

F就是基礎矩陣,反映了一般相機下,兩視點間的關系。

求解基礎矩陣

用對應點求解F

求出的\hat{F}往往是滿秩的,而我們所要求的基礎矩陣秩為2

單應性矩陣

 

如果采集到的對應點在同一平面,兩個視點間的對應關系用單應性矩陣表示

M = K(I \ O),\ M' = K'(I\ O),\ P= (\tilde{P^T},1)^T \\ \\ p = M\begin{pmatrix} \tilde{P}\\1 \end{pmatrix} =K \tilde{P} \\ \\ p' = M'\begin{pmatrix} \tilde{P}\\1 \end{pmatrix}=K'(R \ t)\begin{pmatrix} \tilde{P} \\1 \end{pmatrix}=K'(R \tilde{P} + t)

n^T \tilde{P} = d \rightarrow n^T \tilde{P} / d = 1 \\ \\ let \ n / d = n_d , n_d^T \tilde{P} = 1

?p'=K'(R\tilde{P} + t \cdot n_d^T \tilde{P}) = K'(R + t \cdot n_d^T)\tilde{P} =K'(R + t \cdot n_d^T)K^{-1}p

本質矩陣 H = K'(R + t \cdot n_d^T)K^{-1}

參考內容:計算機視覺之三維重建(深入淺出SfM與SLAM核心算法)—— 4. 三維重建基礎與極幾何_嗶哩嗶哩_bilibili

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215118.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能_機器學習063_SVR支持向量機_回歸擬合天貓雙十一銷量方程---人工智能工作筆記0103

之前我們用線性回歸做過天貓雙十一銷量預測的數據,現在我們再來用SVR支持向量機來做一下 首先上面是給出了銷量,對應2009年到2019年的,銷售額 可以看到: X=np.arange(2009,2020)-2008 統一減去2008的話看起來數據比較簡單了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

華為OD機試 - 結隊編程(Java JS Python C)

題目描述 某部門計劃通過結隊編程來進行項目開發, 已知該部門有 N 名員工,每個員工有獨一無二的職級,每三個員工形成一個小組進行結隊編程,結隊分組規則如下: 從部門中選出序號分別為 i、j、k 的3名員工,他們的職級分貝為 level[i],level[j],level[k], 結隊小組滿足…

使用perl的Tie::File 模塊刪除文件固定行

使用perl的Tie::File 模塊刪除文件固定行, 為了說明簡單代碼中處理的是固定第二行開始的3行長度。下面給出perl代碼: #! /usr/bin/perl use v5.14; use Tie::File;if (ARGV 0) {say "請輸入一個文件名 !!!";exit 1; }my $filePath $ARGV[0]; tie my ar…

java工程(ajax/axios/postman)向請求頭中添加消息

1、問題概述 在項目中我們經常會遇到需要向請求頭中添加消息的場景,然后后端通過request.getRequest()或者RequestHeader獲取請求頭中的消息。 下面提供幾種前端向請求頭添加消息的方式 2、創建一個springmvc工程用于測試 2.1、創建工程并引入相關包信息 sprin…

C++之STL算法(1)

STL容器算法主要由、、組成; ??algorithm主要有遍歷、比較、交換、查找、拷貝、修改等; 1.遍歷容器for_each for_each()函數用于完成容器遍歷,函數參數如下: for_each(_InIt _First, _InIt _Last, _Fn _Func) 形參&#xff1a…

深度學習 Day10——T10數據增強

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 | 接輔導、項目定制 文章目錄 前言一、我的環境二、代碼實現與執行結果1.引入庫2.設置GPU(如果使用的是CPU可以忽略這步)3.導入數據4.查…

4-Docker命令之docker update

1.docker update介紹 docker update命令是用于更新一個或多個docker容器的配置 2.docker update用法 docker update [參數] container [container......] [root@centos79 ~]# docker update --helpUsage: docker update [OPTIONS] CONTAINER [CONTAINER...]Update configu…

編寫函數計算一個或不特定多個數的乘積

編寫函數計算一個或不特定多個數的乘積 輸入樣例: 3 2 1 輸出樣例: 6.0000 def caculate(*t):r1for x in t:r*xreturn r s input().split() t [float(x) for x in s] print("%.4f" % caculate(*t))

Docker基礎概念解析:鏡像、容器、倉庫

當談到容器化技術時,Docker往往是第一個被提及的工具。Docker的基礎概念涵蓋了鏡像、容器和倉庫,它們是理解和使用Docker的關鍵要素。在這篇文章中,將深入探討這些概念,并提供更豐富的示例代碼,幫助大家更好地理解和應…

智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.混合蛙跳算法4.實驗參數設定5.算法結果6.…

2023年華為HCIA認證H12-811題庫講解

在VRP平臺上,可以通過下面哪種方式返回到上一條歷史命令?( ) A、Ctr1U B、Ctr1P C、左光標 D、上光標 試題答案:BD 試題解析:在VRP系統中,ctrlU為自定義快捷鍵,ct…

路由和網絡周期

### 路由(Routing): 1. **路由的概念:** 路由是用于確定用戶在網站或應用程序中所處位置的機制。它可以將不同的 URL 映射到對應的頁面或視圖組件,使得用戶可以通過不同的 URL 訪問不同的內容。 2. **路由器&#xf…

DevEco Studio 3.1IDE環境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE環境配置(HarmonyOS 3.1) 一、安裝環境 操作系統: Windows 10 專業版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、環境安裝 IDE下載地址:HUAWEI DevEco Studio和SDK下載和升級 | HarmonyOS開發者 IDE的安裝就是…

Android---Kotlin 學習002

聲明變量 在 Kotlin 中定義一個變量,通過關鍵字 var 開始。然后是變量名,在“:”后緊跟變量類型。 示例1:聲明一個 int 類型的變量 var num:Int 1 示例2:聲明一個 String 類型的變量 var str:String "Hello world&quo…

計算機網絡——期末考試復習資料

什么是計算機網絡 將地理位置不同的具有獨立功能的多臺計算機及其外部設備通過通信線路和通信設備連接起來;實現資源共享和數據傳遞的計算機的系統。 三種交換方式 報文交換:路由器轉發報文; 電路交換:建立一對一電路 分組交換&a…

2024 年 SEO 現狀

搜索引擎優化(SEO)一直以來都是網絡知名度和成功的基石。隨著我們踏上 2024 年的征程,SEO領域正在經歷重大變革,有些變革已經開始,這對企業、創作者和營銷人員來說既是挑戰也是機遇。 語音搜索 語音搜索曾是一個未來…

可以組成網絡的服務器 - 華為OD統一考試(C卷)

OD統一考試(C卷) 分值: 200分 題解: Java / Python / C 題目描述 在一個機房中,服務器的位置標識在n*m的整數矩陣網格中,1表示單元格上有服務器,0表示沒有。如果兩臺服務器位于同一行或者同一列…

HTML常用表單元素使用?

目錄 一、常用表單元素使用的關鍵字二、常用表單元素使用的效果與作用(1)password : 保護用戶的隱私(2) email: 輸入郵件(比如QQ郵件)(3)、number : 輸入框只能輸入數字(4)、tel : 常用于輸入電話號&#x…

Kubernetes實戰(十二)-使用kubeconfig文件管理多套kubernetes(k8s)集群

1 概述 在生產環境中可能不止有一套kubernetes(k8s)集群,面對多套集群,運維人員可以使用kubeconfig文件管理多套kubernetes(k8s)集群,使用 kubeconfig 文件,可以組織集群、用戶和命名空間,還可以定義上下文&#xff0…

深入理解模板引擎:解鎖 Web 開發的新境界(上)

🤍 前端開發工程師(主業)、技術博主(副業)、已過CET6 🍨 阿珊和她的貓_CSDN個人主頁 🕠 牛客高級專題作者、在牛客打造高質量專欄《前端面試必備》 🍚 藍橋云課簽約作者、已在藍橋云…