視覺標定,再來一波!!更簡單粗暴!!!!!!

繼續!!!!!!

一、四個坐標系簡介和轉換

相機模型為以后一切標定算法的關鍵,只有這邊有相當透徹的理解,對以后的標定算法才能有更好的理解。本人研究了好長時間,幾乎每天都重復看幾遍,最終才會明白其推導過程。
? ? ?我覺得首先我們要理解相機模型中的四個平面坐標系的關系:像素平面坐標系(u,v)、像平面坐標系(圖像物理坐標第(x,y)、相機坐標系(Xc,Yc,Zc)和世界坐標系(Xw,Yw,Zw),在每一篇介紹相機模型的文章中都有介紹。
? ? ?我剛開始理解時,看著那一堆的公式十分的頭暈,我相信很多初學者和我一樣,但仔細想想,只不過是,我們假設了一些參數,使四個坐標系之間的坐標聯系起來,這樣我們就可以從拍攝的圖片上一個點坐標一路反推出世界中的那個點的坐標,這樣就達到了我們的目的,三維重建。而那些我們假設的參數,就是我們要標定的內外參數。

?

1、像素坐標與像平面坐標系之間的關系?
? ? ? 確定他們的關系之前,我們可以假設每一個像素在u軸和v軸方向上的物理尺寸為dx和dy。仔細看下他們的模型可以推出以下公式(這個還是比較好理解的):

?

?

?

?

解釋:1、dx,dy,u0,v0其實都是我們假設出來的參數,dxdy表示感光芯片上像素的實際大小,是連接像素坐標系和真實尺寸坐標系的,u0,v0是圖像平面中心,最終是要我們求的內外參數。

得出這個公式后我們可以運用線性代數的知識把方程用矩陣形式表示:

當然我們也可以用另一種矩陣形式表示:

2、相機坐標系與世界坐標系之間的關系?

? ? ?這兩個坐標系之間的關系我們可以旋轉矩陣R和平移矩陣T來得到以下關系:

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 公式4

? ?解釋:1、 在這個公式中,R為3*3矩陣,T為3*1,0為(0,0,0),簡化用Lw表示后為4*4矩陣。

3、成像投影關系(相機坐標系與像平面坐標系)?

? ? ?在相機模型中我們可以得到以下公式:

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?公式5

? ? ? ? ? ?解釋:1、

同樣我們用矩陣形式表示:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?公式6

?

4、得到公式

?

而我們可以將以上公式綜合一下就可以得到:

??

因此,內參數矩陣可以表示為:

=

?

外參矩陣可以表示為:,由旋轉矩陣R和平移向量T組成

?

當然在好多資料上都有這種做法:

上圖中表示的情況是像素坐標系和圖像物理坐標系的兩個坐標軸不是平行的關系,像素坐標系的兩個坐標軸也不是垂直90°的關系,而圖像物理坐標系的兩個坐標軸是垂直關系。所以,我們在轉換兩個坐標軸的坐標之間的關系時就必須考慮像素坐標系兩個坐標軸之間的夾角了。就有了上面的不同的內參矩陣,理解了就好了。

?

二、圖像坐標:我想和世界坐標談談(B)

? ? ? ? ?玉米將在這篇博文中,對圖像坐標與世界坐標的這場對話中涉及的第二個問題:談話方式,進行總結。世界坐標是怎樣變換進攝像機,投影成圖像坐標的呢?

? ? ? ? 玉米做了一個簡單的圖示,在這里做一個提綱。圖中顯示,世界坐標系通過剛體變換到達攝像機坐標系,然后攝像機坐標系通過透視投影變換到達圖像坐標系。可以看出,世界坐標與圖像坐標的關系建立在剛體變換和透視投影變換的基礎上。為了獎勵剛體變和透視投影變換溝通了“世界上最遠的距離”,玉米在圖上獎勵了他們兩朵小紅花。哈哈

?

?首先,讓我們來看一下剛體變換是如何將世界坐標系與圖像坐標系聯系起來的吧。這里,先對剛體變換做一個介紹:

? ? ? ? 剛體變換(regidbody motion):三維空間中, 當物體不發生形變時,對一個幾何物體作旋轉,?平移的運動,稱之為剛體變換。

因為世界坐標系和攝像機坐標都是右手坐標系,所以其不會發生形變。我們想把世界坐標系下的坐標轉換到攝像機坐標下的坐標,如下圖所示,可以通過剛體變換的方式。空間中一個坐標系,總可以通過剛體變換轉換到另外一個個坐標系的。轉一轉,走一走,就到另外一個坐標系下了。以前可能是面朝大海,經過平移旋轉,最終可能只能面朝冰山了,哈哈

下面讓我來看一下,二者之間剛體變化的數學表達。

?

其中,XC代表攝像機坐標系,X代表世界坐標系。R代表旋轉,T代表平移。R、T與攝像機無關,所以稱這兩個參數為攝像機的外參數(extrinsic parameter)可以理解為兩個坐標原點之間的距離,因其受x,y,z三個方向上的分量共同控制,所以其具有三個自由度。

? ? ? ? ?R則為分別繞XYZ三軸旋轉的效果之和。如下面所示:

?

?R=r1*r2*r3.其由三個方向的θ控制,故具有三個自由度。

? ? ? ? ? ?好了,剛體變換就講完了。大家應該都了解,世界坐標系到攝像機坐標系之間的轉換過程了吧。

? ? ? ? ? 接下來,讓我們看看攝像機坐標下的坐標如何投影到圖像坐標系下,最終變為照片中的一個像素。這其中包含兩個過程:一是從攝像機坐標到“空間圖像坐標”(x,y)所發生的透視投影;二是從“連續圖像坐標”到“離散圖像坐標”(u,v)。后者我們已經在第一篇博文中解釋過。所以在這里,主要介紹一下透視投影。

? ? ? ? ?透視投影(perspective projection):?用中心投影法將形體投射到投影面上,從而獲得的一種較為接近視覺效果的單面投影圖。有一點像皮影戲。它符合人們心理習慣,即離視點近的物體大,離視點遠的物體小,不平行于成像平面的平行線會相交于消隱點(vanish point)。

? ? ? ? ?啰嗦這么多,其實大家看看示意圖,看看公式,秒懂。

??以圖中B(XB,YB)點為例,在小孔成像攝像機模型下(幾何分析的最常用模型)。這里的f為攝像機的焦距,其屬于攝像機的內參數(intrinsic parameter)。其在成像平面上的投影點b(xb,yb)的坐標利用簡單的相似三角形比例關系很容易求出:

?

上面兩式也闡明了攝像機坐標與圖像坐標之間的透視投影關系。

? ? ? ? ? ? 好吧,現在玉米已經把圖像坐標與世界坐標之間的這場對話所需經歷的三個波折的過程加以了解釋。即:剛體變換、透視投影、(x,y)換(u,v)(ps.這個在上一篇博文中講過)。接下來玉米用一張圖把三個過程連接起來。實現從世界坐標(X,Y,Z)到(u,v)之間的轉換。讓圖像坐標與世界坐標直接對話。

? ? ? ? ?下圖中的轉換關系,都是用齊次坐標表達的,大家會發現這樣的表達非常整潔。

? ? ? ? ?其實這張圖顯示的過程還有一個名字:攝像機模型(camera model)。其實也就是攝像機的幾何模型了。

? ? ? ? ?將三者相乘,可以把這三個過程和在一起,寫成一個矩陣:

P就是世界坐標到圖像坐標的直接聯系人,P就表示了一個投影相機,有下面公式:

注意在表示齊次坐標時,需要在符號上面加個小帽子。除去齊次坐標控制位P23,P具有11個自由度。

?? ? ? 攝像機模型及其中涉及的坐標系等,是弄清3D重建幾何框架的基礎。可以把它們視為基本運算關系。后面對于三維重建幾何框架的推導,都是要用到三個基本坐標系和攝像機模型的。

轉:https://blog.csdn.net/messi_cyc/article/details/78052931

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

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

相關文章

深入淺出NIO之Selector實現原理

2019獨角獸企業重金招聘Python工程師標準>>> 前言 Java NIO 由以下幾個核心部分組成: 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入淺出NIO之Channel、Buffer一文中已經介紹過,本文主要講解NIO的Selector實現原理。 之前進行sock…

介紹一下畫圖小能手matplotlib。

我們在做完數據分析的時候需要把分析出來的結果,做一個圖形化的形象表達,這里我們就需要用到畫圖小能手matplotlib,下面就演示一下常用的條形圖和折線圖 散點圖 散點圖的做大的作用是研究兩個變量的相關性(正相關,負相…

立體視覺標定源代碼C++,簡單粗暴!粗暴·······

疑點解答: 攝像機矩陣由內參矩陣和外參矩陣組成,對攝像機矩陣進行QR分解可以得到內參矩陣和外參矩陣。 內參包括焦距、主點、傾斜系數、畸變系數 (1) 其中,fx,fy為焦距,一般情況下&#xff…

11. 臨時表

-- 查詢5大洲國家總數 SELECT continent,COUNT(*) FROM country GROUP BY continent;-- 演示臨時表 CREATE TEMPORARY TABLE tmp_table ( continent VARCHAR(20), COUNT INT );INSERT INTO tmp_table SELECT Asia AS continent,COUNT(*) FROM country WHERE continent Asia;…

MongoDB負載信息一目了然 阿里云HDM重磅發布MongoDB監控和診斷功

2019獨角獸企業重金招聘Python工程師標準>>> 混合云數據庫管理(HDM)的統一監控、告警、診斷功能新增了對MongoDB的支持。 通過直觀的方式將MongoDB多個維度的負載信息統一整合,不僅可以清晰的查看實時負載信息,也可以方…

在iview的Table中添加Select(render)

首先對Render進行分析,在iview官方的文檔中,找到了table插入Button的例子: [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

JavaScript中call和apply方法

1 /*2 在js中 call和apply常用于綁定作用域3 */4 //1 簡單的綁定5 function sum(a,b){6 return ab;7 }8 //將sum的功能綁定給test2來執行9 function test2(a,b){ 10 return sum.call(this,a,b); 11 } 12 // call 和apply的區別是 apply接收數組作為參數…

工業機械人運動學正逆解,簡單粗暴!!!!!!

ur機械臂是六自由度機械臂,由D-H參數法確定它的運動學模型,連桿坐標系的建立如上圖所示。 轉動關節θi是關節變量,連桿偏移di是常數。 關節編號 α(繞x軸) a(沿x軸) θ(繞z軸&am…

python opencv立體測距 立體匹配BM算法

立體標定應用標定數據轉換成深度圖標定 在開始之前,需要準備的當然是兩個攝相頭,根據你的需求將兩個攝像頭進行相對位置的固定,我是按平行來進行固定的(如果為了追求兩個雙目圖像更高的生命度,也可以將其按一定鈍角固…

對于python 作用域新的理解

今天看Python習題,看到如下題目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()])  # 求輸出結果是什么 我看了半天才明白這應該是一個列表生成式,列表中的元素為四個匿名函數,我本以為每個匿名函數應該是…

Vue基礎學習(一)------內部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一個內部指令,指令用在我們的html中,用來判斷是否加載html的DOM 現在舉個栗子,判斷用戶的登錄操作,用isLogin作為一個判斷字段,登錄成功,就顯示用戶的名稱 代碼&…

【bzoj3555】[Ctsc2014]企鵝QQ 簡單哈希

傳送門 題目分析 題意即求有多少對字符串只相差一個字符,枚舉刪除每個字符后的哈希, 看有多少相等即可。 比如有如下字符串:$Sd123$,其中S部分的哈希值為H,刪除的是d,則原字符串的哈希值為$$(((H * T d) *…

StereoRectify()函數定義及用法畸變矯正與立體校正

畸變矯正是上一篇博文的遺留問題,當畸變系數和內外參數矩陣標定完成后,就應該進行畸變的矯正,以達到消除畸變的目的,此其一。 在該系列第一部分的博文中介紹的立體成像原理中提到,要通過兩幅圖像估計物點的深度信息&a…

死磕 java集合之TreeMap源碼分析(三)- 內含紅黑樹分析全過程

2019獨角獸企業重金招聘Python工程師標準>>> 歡迎關注我的公眾號“彤哥讀源碼”,查看更多源碼系列文章, 與彤哥一起暢游源碼的海洋。 刪除元素 刪除元素本身比較簡單,就是采用二叉樹的刪除規則。 (1)如果刪除的位置有兩…

Linux:進程實例信息(/proc)

https://blog.csdn.net/test1280/article/details/73632333 Linux:進程實例信息(/proc) 問幾個問題: 1.怎么知道一個進程對應哪個可執行文件? 2.怎么知道一個進程的資源限制? 3.怎么知道一個進程所處的環境&#xff1f…

四元素理解

旋轉變換_四元數 2017年03月29日 11:59:38 csxiaoshui 閱讀數:5686 1.簡介 四元數是另一種描述三維旋轉的方式,四元數使用4個分量來描述旋轉,四元數的描述方式如下: qsxiyjzk,(s,x,y,z∈?)i2j2k2ijk?1 四元數的由…

31、SAM文件中flag含義解釋工具--轉載

轉載:http://www.cnblogs.com/nkwy2012/p/6362996.html SAM是Sequence Alignment/Map 的縮寫。像bwa等軟件序列比對結果都會輸出這樣的文件。samtools網站上有專門的文檔介紹SAM文件。具體地址:http://samtools.sourceforge.net/SAM1.pdf很多人困惑SAM文…

《Head First設計模式》批注系列(一)——觀察者設計模式

最近在讀《Head First設計模式》一書,此系列會引用源書內容,但文章內容會更加直接,以及加入一些自己的理解。 觀察者模式(有時又被稱為模型-視圖(View)模式、源-收聽者(Listener)模式或從屬者模式&#xff…

PYPL 4 月排行:Python 最流行,Java 還行不行?

開發四年只會寫業務代碼,分布式高并發都不會還做程序員? PYPL 發布了 4 月份的編程語言排行榜。 前五的分別是:Python、Java、Javascript、C# 和 PHP。可以看到,榜單沒有什么大變化,但是相比去年 4 月份,…

兩個向量的旋轉矩陣與四元素

兩向量的夾角 2017年06月20日 17:38:11 csxiaoshui 閱讀數:36764 怎么計算兩個向量間的夾角呢? 這里主要分兩種情況,對于二維向量和三維向量來分別討論。 1. 二維向量 二維向量的情況相對簡單,根據向量間的點乘關系 v1?v2|…