圖像坐標:我想和世界坐標談談(A) 【計算機視覺學習筆記--雙目視覺幾何框架系列】

?玉米竭力用輕松具體的描述來講述雙目三維重建中的一些數學問題。希望這樣的方式讓大家以一個輕松的心態閱讀玉米的《計算機視覺學習筆記》雙目視覺數學架構系列博客。這個系列博客旨在捋順一下已標定的雙目視覺中的數學主線。數學推導是有著幾分枯燥的,但奇妙的計算機視覺世界是建立在嚴密的數學架構之上的。所以對數學框架的理解是理解雙目視覺的必由之路。不過請大家放心,接下來玉米會以盡量有趣,盡量更接地氣兒的方式,闡釋一下自己對雙目視覺數學或者說是投影幾何的理解。

? ? ? ?先來張《計算機視覺:算法與應用》中的3D重建示例圖鎮樓!


? ? ? ? ?好吧,現在言歸正傳,來看看幾何學上世界是怎樣投影進攝相機里的吧!接下來讓我們來看一下本系列博客的第一“搏”:


圖像坐標:我想和世界坐標談談(A)

???????? 首先,我先解釋一下這個題目吧。題目的字面意義是說:圖像坐標系想和世界坐標系談談。這里面包含著兩個問題:

? ? ? ? ?A、談話對象:視覺系統的三大坐標系:世界坐標系,攝像機坐標系和圖像坐標系。這是玉米在本文《我想和世界坐標談談 ? ? ? ? ? ? ? ? ? ? ? (A)》中想要和大家分享的內容。其中主要包含:三大坐標系的位置、作用和應用場景。

? ? ? ? ?B、談話方式:兩個不同的坐標系之間該如何溝通呢?玉米將在《我想和世界坐標談談(B)》中和大家分享一下剛體變換和透視 ? ? ? ? ? ? ? ? 投影變換。連起兩個坐標系之間這不在一個參考系的“世界上最遠的距離”。

? ? ? ? ? ? ? ? ?好吧,下面讓我們來揭開三大坐標系的廬山真面目。


?

? ? ? ? ?上圖是三個坐標的示意簡圖,通過它大家可以對三個坐標有一個直觀的認識。下面來看看三個坐標系的骨子里藏了什么。

? ? ? ? ?世界坐標系(XW,YW,ZW):其是目標物體位置的參考系。除了無窮遠,世界坐標可以根據運算方便與否自由放置。在雙目視覺中世界坐標系主要有三個用途:1、標定時確定標定物的位置2、作為雙目視覺的系統參考系,給出兩個攝像機相對世界坐標系的關系,從而求出相機之間的相對關系3、作為重建得到三維坐標的容器,盛放重建后的物體的三維坐標。世界坐標系是將看見中物體納入運算的第一站。

? ? ? ? 攝像機坐標系(XC,YC,ZC):其是攝像機站在自己角度上衡量的物體的坐標系。攝像機坐標系的原點在攝像機的光心上,z軸與攝像機光軸平行。它是與拍攝物體發生聯系的橋頭堡,世界坐標系下的物體需先經歷剛體變化轉到攝像機坐標系,然后在和圖像坐標系發生關系。它是圖像坐標與世界坐標之間發生關系的紐帶,溝通了世界上最遠的距離。哈哈

? ? ? ? ?圖像坐標系(x,y)/(u,v) :其是以攝像機拍攝的二維照片為基準建立的坐標系。用于指定物體在照片中的位置。玉米更傾向將(x,y)稱為連續圖像坐標或空間圖像坐標,將(u,v)稱為離散圖像坐標系或者是像素圖像坐標系(雖然這樣的稱呼未經考證,但更能傳達二者的物理意義)。

? ? ? ? ? (x,y)坐標系的原點位于攝像機光軸與成像平面的焦點O’(u0,v0)上,單位為長度單位(米)。(u,v)坐標系的原點在圖片的左上角(其實是存儲器的首地址)如上圖所示,單位為數量單位(個)。(x,y)主要用于表征物體從攝像機坐標系向圖像坐標系的透視投影關系。而(u,v)則是實實在在的,我們能從攝像機中得到的真實信息。

(x,y)與(u,v)存在如下轉換關系:


? ? ? ? ? dx代表x軸方向一個像素的寬度,dy代表y軸方向上一個像素的寬度。dx、dy為攝像機的內參數。(u0,v0)稱為圖像平面的主點,也是攝像機的內參數。其實相當于對x軸和y軸的離散化。其可以運用齊次坐標,將上式寫成矩陣形式,如下:

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

? ? ? (1)式運用了齊次坐標,初學者可能會感到有些迷惑。大家會問:怎樣將普通坐標轉換為齊次坐標呢齊次坐標能帶來什么好處呢

? ? ? ? ?玉米在這里對齊次坐標做一個通俗的解釋。此處只講怎么將普通坐標改寫為齊次坐標及為什么引入齊次坐標。這里只做一個通俗但不太嚴謹的表述。力求簡單明了。針對齊次坐標的嚴謹的純數學推導,可參見“周興和版的《高等幾何》---1.3拓廣平面上的齊次坐標”。玉米曾詳細讀過《高等幾何》這本書,但覺得離計算機視覺有點遠,是講純數學的投影關系的,較為生澀難懂。

? ? ? ? 齊次坐標可以理解為在原有坐標后面加一個“小尾巴”。將普通坐標轉換為齊次坐標,通常就是在增加一個維度,這個維度上的數值為1。如圖像坐標系(u,v)轉換為(u,v,1)一樣。對于無窮遠點,小尾巴為0。注意,給零向量增加小尾巴,數學上無意義。

那么,為什么計算機視覺在坐標運算時要加上這個“小尾巴”呢?

? ? ? ? 玉米看來有兩點原因

? ? ? ? ?1、 將投影平面擴展到無窮遠點。如對消隱點(vanishing point)的描述。

? ? ? ? ? 2、 使得計算更加規整

? ? ? ? ?如式(1)如果用普通坐標來表達的話,會是下面的樣子:

? ? ? ? ? 這樣的運算形式會給后與運算帶來一定的麻煩,所以齊次坐標是一個更好的選擇。

? ? ? ? ? 齊次坐標還有一個重要的性質,伸縮不變性。即:設齊次坐標M,則αM=M。

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

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

相關文章

沖刺總結博客

項目預期計劃 完美的完成我們的耿丹師生基本信息管理系統,可以實現增刪改查等功能,能運用到我們學校里去。 實際進展 實現了增刪改查功能,但是要是真的運用到學校中去,功能還是太單一。 過程體會 這個項目是我們小組成立之后&…

img

轉載于:https://www.cnblogs.com/SoulCode/p/6508720.html

HALCON示例程序clip.hdev曲別針方向識別

HALCON示例程序clip.hdev曲別針方向識別 示例程序源碼(加注釋) 關于顯示類函數解釋 dev_update_window (‘off’) 讀入圖片 read_image (Clip, ‘clip’) 獲得圖片尺寸大小 get_image_size (Clip, Width, Height) dev_close_window () dev_open_windo…

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

二、圖像坐標:我想和世界坐標談談(B) 玉米將在這篇博文中,對圖像坐標與世界坐標的這場對話中涉及的第二個問題:談話方式,進行總結。世界坐標是怎樣變換進攝像機,投影成圖像坐標的呢? 玉米做了一個簡單的圖示…

c#基礎 函數

函數 就是方法 獨立完成某項功能的一個個體 函數的的三個好處:1、提高代碼的重用性。2、提高功能開發的效率,3.提高代碼的可維護性。 函數也分為 固定功能函數, 高度抽象函數。高度抽象函數應用比較廣泛, 函數的四要素&#…

【Android】Fragment的簡單筆記

被虐了,做某公司筆試時,發現自己連個Fragment的生命周期都寫不詳細。平時敲代碼,有開發工具的便利,有網上各大神的文章,就算忘了也很容易的可以查到,但當要自己不借助外界,卻發現自己似乎對該知…

HALCON示例程序color_fuses.hdev通過顏色對保險絲進行分類

HALCON示例程序color_fuses.hdev通過顏色對保險絲進行分類 示例程序源碼(加注釋) 關于顯示類函數解釋 dev_update_window (‘off’)定義字符串變量并初始化 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,‘Green’] FuseTypes : [5,10,15,20…

三、致敬“張正友標定”

三、致敬“張正友標定” 此處“張正友標定”又稱“張氏標定”,是指張正友教授于1998年提出的單平面棋盤格的攝像機標定方法。張氏標定法已經作為工具箱或封裝好的函數被廣泛應用。張氏標定的原文為“A Flexible New Technique forCamera Calibration”。此文中所提到…

Using KernelShark to analyze the real-time scheduler【轉】

轉自:https://lwn.net/Articles/425583/ This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the …

無縫滾動的算法

一早上的時間做了一個簡單的無縫滾動,遇到的問題特別的多,而且對無縫滾動的算法也不是特別的清楚。 無縫滾動效果的原理:就是幾個圖片 浮動成為一排;然后讓圖片滾動,正常情況下圖片滾完,就留下了后面的空白…

ACM題目————一筆畫問題

描述 zyc從小就比較喜歡玩一些小游戲&#xff0c;其中就包括畫一筆畫&#xff0c;他想請你幫他寫一個程序&#xff0c;判斷一個圖是否能夠用一筆畫下來。 規定&#xff0c;所有的邊都只能畫一次&#xff0c;不能重復畫。 輸入第一行只有一個正整數N(N<10)表示測試數據的組數…

HALCON示例程序color_fuses_lut_trans.hdev通過顏色對保險絲進行分類

HALCON示例程序color_fuses_lut_trans.hdev通過顏色對保險絲進行分類 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off ()定義變量并初始化&#xff0c;這些變量都是下邊識別要用到的 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,…

上海電驅動

從行業前景上來說還可以&#xff0c;但這個公司不行&#xff0c;公司各種坑&#xff0c;從上到下各種腐敗&#xff0c;打醬油的人比較多&#xff0c;在薪資方面除了技術部稍好一點&#xff0c;其他部門我建議你最好別去了&#xff0c;整體上這個公司員工沒幸福感&#xff01;只…

1056. 組合數的和(15)

1056. 組合數的和(15) 時間限制400 ms內存限制65536 kB乙級練習題解目錄給定N個非0的個位數字&#xff0c;用其中任意2個數字都可以組合成1個2位的數字。要求所有可能組合出來的2位數字的和。例如給定2、5、8&#xff0c;則可以組合出&#xff1a;25、28、52、58、82、85&#…

3、時間和隨機數

一、時間 1.1 使用Calendar/[?kl?nd?]/類獲取時間 1.1.1 常用方法 (1)public static Calendar getInstance&#xff08;&#xff09;: 使用默認時區和語言環境獲取一個基于當前時間的Calendar對象。 (2)public int get(int field) 返回給定日歷字段表示的日歷部分的數字…

哥尼斯堡的“七橋問題” (歐拉回路,并查集)

哥尼斯堡的“七橋問題” (25分) 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含兩個島嶼及連接它們的七座橋&#xff0c;如下圖所示。 可否走過這樣的七座橋&#xff0c;而且每橋只走過一次&#xff1f;瑞士數學家歐拉(Leonhard Euler&#xff0c;1707—1783)最終解決…

HALCON示例程序color_pieces.hdev通過MLP訓練器對彩色棋子進行分類識別

HALCON示例程序color_pieces.hdev通過MLP訓練器對彩色棋子進行分類識別&#xff1b;分別在彩色圖像下與灰度圖像下進行&#xff0c;從而產生對比。 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () dev_open_window (…

無人駕駛汽車之爭本田為何未戰先敗

摘要 : 本田汽車的研發部門對于汽車雖然理解深刻&#xff0c;但從整體而言&#xff0c;本田的造車理念還停留在上個時代&#xff0c;在未來的無人駕駛競爭中&#xff0c;本田已經有未戰先啊敗的苗頭。 百度百家The BIG Talk硅谷站連續5小時的高密度頭腦風暴&#xff0c;果然讓人…

理解git結構與簡單操作(四)合并分支的方法與策略

接上節&#xff0c;此時的dev分支與master分支的進度就不一樣了&#xff0c;所以需要將dev分支與master分支同步。這里需要的就是合并分支的操作&#xff0c;大家應該都知道用git merge或者git rebase。 git merge merge&#xff0c;即「合并」。 fast-forward 當出現我們上面圖…

HALCON示例程序color_segmentation_pizza.hdev披薩肉餅識別。

HALCON示例程序color_segmentation_pizza.hdev披薩肉餅識別。 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () read_image (Image, ‘color/pizza_01’) get_image_size (Image, Width, Height) dev_open_window (0,…