1. 程式人生 > >(一)影象座標:我想和世界座標談談(A) 【計算機視覺學習筆記--雙目視覺幾何框架系列】

(一)影象座標:我想和世界座標談談(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://blog.csdn.net/onthewaysuccess/article/details/40709745

相關推薦

影象座標世界座標談談(A) 計算機視覺學習筆記--雙目視覺幾何框架系列

     玉米竭力用輕鬆具體的描述來講述雙目三維重建中的一些數學問題。希望這樣的方式讓大家以一個輕鬆的心態閱讀玉米的《計算機視覺學習筆記》雙目視覺數學架構系列部落格。這個系列部落格旨在捋順一下已標定的雙目視覺中的數學主線。數學推導是有著幾分枯燥的,但奇妙的計算機視覺世界

Oracle知識梳理理論篇基本概念術語整理

http 知識梳理 屬性集 操作 url 本質 開發 表格 weight 理論篇:基本概念和術語整理 一、關系數據庫 關系數據庫是目前應用最為廣泛的數據庫系統,它采用關系數據模型作為數據的組織方式,關系數據模型由關系的數據結構,關系的操作集合和關系的完整

數字影象處理的筆記第一部分概念應用領域

影象處理的部分先做一個大概的記錄,後續深入學習後展開。內容圍繞影象的分割和增強展開。 只是相關技術的某些應用,也可能不盡準確,為了記錄和學習。 第一部分:概念和應用領域 第二部分:相關的程式碼實現 ----------------------------針對畫素本身的操作,非

Tensorflow常見問題處理 TensorFlow 影象預處理 影象編解碼,影象尺寸調整 tensorflow()圖片處理 TensorFlow 處理圖片

1、Tensorflow中影象處理函式(影象大小調整)   Tensorflow中影象處理函式(影象大小調整)   tensorflow入門之---------影象大小調整   TensorFlow 影象預處理(一) 影象編解碼,影象尺寸調整   Tensorflow針對不定尺寸的圖片讀寫tfreco

一起學設計模式狀態模式+裝飾器模式+簡單工廠模式實戰提交個訂單到底經歷了什麼鬼?

前言 之前在我的部落格(一枝花算不算浪漫)中已經更新過兩篇設計模式相關的內容 【一起學設計模式】策略模式實戰一:基於訊息傳送的策略模式實戰 【一起學習設計模式】策略模式實戰二:配合註解 幹掉業務程式碼中冗餘的if else... 【一起學設計模式】訪問者模式實戰:許可權管理樹刪節點操作 【一起學設計模式】命

學習之路淺談基礎命令及linux工作原理

linux命令 看了視頻,它系統的講解了linux從硬件到操作系統的工作過程,以及常用的基礎命令的詳細參數及用法。 我也在這裏整理之後加強記憶一次基本概念,及linux文件樹目錄的基本知識結構。 硬件——>操作系統OS——>l

讀《有效管理的5大兵法》筆記摘錄核心價值觀求實、進取、創新、協同、分享

思維 協同 經典 現在 公司 高級 緣分 前行 其他 一、核心價值觀:求實、進取、創新、協同、分享 1、求實 求實:就是刨根問底,不誇大其詞,不以訛傳訛,不草率下結論,不不懂裝懂,不偷換概念,不當信息二傳手 如何求實,求甚解? 不管什麽事情,問五個為什麽,就像永遠有十萬個為

理解word2vec原理篇

為什麼想起來學習word2vec呢?其實之前自己根本沒有接觸過NLP的知識和任務,只是最近嘗試使用了embedding的方法去處理類別特徵和用embedding去做推薦,發現有不錯的效果。同時,自己也感觸到了所掌握知識的匱乏,因此,決定好好學習一下word2vec。 最近幾天自己研讀了網

程式設計師用段程式碼把眾人嚇跳,網友把寫程式碼的打

話不多說,直接上截圖: 這見過麼? 但是想不想來點刺激的。 有沒有哪些程式碼看到就很緊張?比如下面這個: 當有時候訪問人多的時候看到這段程式碼,驚不驚喜?!刺不刺激?!! 厲不厲害。驚不驚喜呢?哈哈 下面來看一下網友的反應: 萬一人家是伺服器分流之後返回

java高併發基本概念併發並行

併發和並行以前總是被我弄混,甚至以為是一樣的,但是現在發現並不是這樣 併發:實質為多工交替執行。微觀看為序列;因為cpu執行太快,巨集觀看,被認為是多個任務一起執行的。如圖:實線和虛線代表兩個不同的任務微觀上序列的執行著。如果系統為單核cpu,這時若有多個程序

C#.架構設計敏捷開發敏捷開發聯盟、開發工具、開發方法、C#敏捷開發

一、什麼是敏捷開發?        敏捷開發就是一種辦事流程,加快產品等研發。敏捷就是少文件,多迭代,多交流,更多的責任放到了工程師、專案管理者身上,從而加快產品的研發週期。說白了,就是如何在Team中,組織大家更快更好地做事情,不過其主要應用在軟體專案管

C# EmguCV學習筆記---影象加減法操作

影象加法: 使用Image.Add()方法,可以讓兩張圖片相加,或者讓當前影象加上一個色彩值,另外你也可以使用CvInvoke.Add()方法執行相同的操作。 Image.Add()方法內部就是呼叫CvInvoke.Add()方法實現的。 Image.Add()有3個實現,

openCV Python 學習筆記影象的基本操作

Python的版本是Python3.6,openCV使用的是cv2 例圖 一、影象的讀取、顯示和儲存 讀取影象:cv2.imread(filename,flags) 該函式有兩個引數,第一個引數是圖

實習生面試經驗-影象演算法崗

目前研二,女,模式識別專業,北京,為了方便明年找工作去試了試投實習。第一次實習面試,也不知道怎麼準備,直接就去了。昨天問了問,面試掛了。還是打算記錄一下面試內容,為以後的面試積累經驗,也可以刺激一下自己好好學習。 從研一開始做一個手勢識別和one-shot learnin

查詢演算法整理---靜態查詢表順序表查詢、折半判定樹查詢、靜態查詢樹

查詢在實際應用中也是最為常見的。通常我們要在一個集合中查詢某一個數或多個數,這個集合稱為查詢表。查詢表分為靜態查詢表和動態查詢表。 靜態查詢表:在查詢表中查詢某個“特定的”元素,查詢表的大小不會改變,即僅限於查詢某個元素,查詢表不會被修改。 動態查詢表:在查詢過程向查詢表中

前端開發sublime text 3 安裝使用

1.在官網 http://www.sublimetext.com/    下載安裝檔案,安裝完成2.開始安裝常用外掛    第一:首先安裝Package Control,官網 https://packagecontrol.io/installation#st3 根據你下載版本

影象處理影象變形(1)矩形全景影象還原-Siggraph 2014

最近發現,看過的文章,沒幾天就忘了,於是開始寫點東西記錄一下,所學習過的演算法。廢話不多說,今天看了這篇文獻“Rectangling Panoramic Images via Warping”,所以做一下記錄。 這篇文獻演算法分為兩步: 1、第一步需要通過計算影象最

OpenCV入門學習影象放縮簡單的按比例放縮,無技術含量

其中,filename 是待載入影象的名稱,包括影象的副檔名;iscolor是一個輔助引數項,可選正數、零和負數三種值,正數表示作為三通道(CV_LOAD_IMAGE_COLOR)影象載入,零(CV_LOAD_IMAGE_GRAYSCALE)表示該影象作為單通道影象,負數(CV_LOAD_IMAGE_UNCH

pythonpython資料結構——線性表順序表的實現

前言 這一系列文章將介紹基於python語言的資料結構,主要涉及線性表、字串、棧和佇列、二叉樹和樹、圖、字典和集合、排序等。 線性表及分類 線性表是一類元素序列的抽象,是某類元素的集合,記錄著元素之間的順序關係。python中的list和tuple都支援線性表的需要,只是t