相機標定(一) —— 深入理解齊次坐標及其作用

一、什么是齊次坐標和齊次坐標系

齊次坐標

齊次坐標是一個相機標定問題的關鍵理論之一,所以就此問題分析一下。
單從定義上來講,齊次坐標(投影坐標)就是用N+1維來代表N維坐標(點和向量),也可說用齊次坐標來表示笛卡爾坐標,具體的數學表達式可以這樣寫:
在直角坐標系點坐標(x,y)末尾加上一個額外的變量w,一個點(X,Y)在齊次坐標里面變成了(x,y,w),并且有
X = x/w
Y = y/w
這也就解決了笛卡爾坐標系無法表示無窮遠點的問題,按照人的視覺,兩條平行線在無窮遠處會相交,采用直角坐標系無法對這一現象進行描述,而當w趨近于0時,(X,Y)趨向無窮大,其齊次坐標就可表示為(x,y,0),解決了這一問題。
在這里插入圖片描述

于此同時衍生了另外一個問題,笛卡爾坐標和齊次坐標轉換的問題:
(1) 笛卡爾坐標轉換成齊次坐標,需要考慮坐標是點還是向量的問題,如果(x,y)是個點,就可變為(x,y,1);而如果(x,y)是個向量,則變為(x,y,0)
(2) 齊次坐標轉換成笛卡爾坐標,如果是(x,y,2),則其笛卡爾坐標為(x/2,y/2);
如果是(x,y,0),其笛卡爾坐標仍為(x,y)。
齊次坐標(針對二維)因此有如下定義:

  1. 投影平面上的任何點都可以表示成 (X, Y, Z),稱之為該點的’齊次坐標或投影坐標,其中 X、Y 及 Z 不全為 0。
  2. 以齊次坐標表表示的點,若該坐標內的數值全乘上一相同非零實數,仍會表示該點。
  3. 相反地,兩個齊次坐標表示同一點,當且僅當其中一個齊次坐標可由另一個齊次坐標乘上一相同非零常數得取得。
  4. 當 Z 不為 0,則該點表示歐氏平面上的 (X/Z, Y/Z)。
  5. 當 Z 為 0,則該點表示一無窮遠點。
  6. 三元組 (0, 0, 0) 不表示任何點。原點表示為 (0, 0, 1)。

齊次坐標系

那怎么從空間上去理解齊次坐標系呢?
有個說法挺有意思,我們想象在宇宙中有一個絕對坐標系,對于我們現在使用的笛卡爾坐標系,其原點位于(0,0)點,當然同時也就還有無數的相同的坐標系,只不過它們的原點不同,對于笛卡爾坐標系中的點(x,y),它對于所有的笛卡爾坐標系都是相同的,有點多維宇宙的感覺,其中一個坐標系就是一個宇宙。

二、齊次坐標的作用

看了不少文章,基本都有這么一句話來概況其作用:齊次坐標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用于進行仿射(線性)幾何變換。
齊次坐標在計算機圖形學中有重要應用,可以用來區分向量和點,上面已經解釋了點和向量的區別問題,其仿射變換主要應用如下:

2.1 "平移矩陣"擴展為3維

在圖像處理時,經常會對圖像進行平移操作,就會采用矩陣的形式進行計算。通過對坐標點進行齊次變換,可以將平移矩陣用3維方式進行表達,可以。
平移可表示為:
[x2y2]\begin{bmatrix} x2\\ y2\end{bmatrix}[x2y2?]=[x1y1]\begin{bmatrix} x1\\ y1\end{bmatrix}[x1y1?]+[x0y0]\begin{bmatrix} x0\\ y0\end{bmatrix}[x0y0?]
齊次變換后:
[x2y21]\begin{bmatrix} x2\\ y2\\1\end{bmatrix}???x2y21????=[10x001y0001]\begin{bmatrix} 1&0&x0\\ 0&1&y0\\0&0&1\end{bmatrix}???100?010?x0y01????*[x1y11]\begin{bmatrix} x1\\ y1\\1\end{bmatrix}???x1y11????

2.2 旋轉,縮放

旋轉
對一個點繞原點逆時針旋轉一個角度,用矩陣的形式表達為:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
縮放
在這里插入圖片描述
在這里插入圖片描述

參考文章:
關于齊次坐標系的理解
齊次坐標的理解
齊次坐標變換

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

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

相關文章

機器學習——圖解SVM中gamma和c參數的作用

參數c和gamma的作用 我們通過下圖詳解參數c的作用,首先我們以一個簡單的線性分類器為例,上一個博客中我們知道影響分類器的主要因素是支持向量,即虛線上的樣本,如下圖可知: 但當正負樣本的分布在如下情況時&#xff0…

關于結構體里面結構體的申明和使用

申請: typedef struct Vo{int Voltage;float Delay_ms;char Enable;}Volt_Def;typedef struct ed{float Delay_ms;int Level;}Edge_Def;typedef struct Ed_hard{Edge_Def a;Edge_Def b;Edge_Def c;}HARD_RESET;int power_sel 0xff;typedef struct power_x{Volt_Def…

面試題(十四)

唐巧前輩說這些都是 iOS 的基礎問題,應該對此深入的了解。當初看到時,大部分回答不上來,因為平時沒有好好思考整理過。這里大部分的概念大多會在學習 OC 的過程中遇到過,但還是得經過寫代碼才能有更深的理解。反正我當初看那些設計…

工業相機基礎知識詳述 —— 焦平面,像平面,彌散圓,光圈,分辨率,景深,接口,靶面尺寸

一、焦平面 想到焦平面,很多人不由自主就想到不就是焦點所在的垂直于光軸的平面嗎?其實其背后隱藏這更多的東西。 1)焦點不止一個 對于一般拍攝場景來說,光通過一個凸透鏡,匯聚不到一個點,越靠近中軸線的…

機器學習——SVM之交叉驗證對參數(C,gamma)進行優化以及選擇

目錄 一、(C,gamma)簡介 二、交叉驗證 1、什么是交叉驗證? 2、參數優化方法

【BZOJ-2427】軟件安裝 Tarjan + 樹形01背包

2427: [HAOI2010]軟件安裝 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status][Discuss]Description 現在我們的手頭有N個軟件,對于一個軟件i,它要占用Wi的磁盤空間,它的價值為Vi。我們希望從中選擇一些軟件…

Hadoop目錄

1. 通過java讀取HDFS的數據 (轉) 2. FLume監控文件夾,將數據發送給Kafka以及HDFS的配置文件詳解 3. 開啟hadoop和Hbase集群的lzo壓縮功能(轉) 4. Hadoop集群WordCount運行詳解(轉)轉載于:https://www.cnblo…

相機標定(二)深入理解四大坐標系與其變換關系

一、前言 視覺系統一共有四個坐標系:像素平面坐標系(u,v)、圖像坐標系(x,y)、相機坐標系(Xc,Yc,Zc)和世界坐標系(Xw,Yw,Zw),如下圖所示。每種坐標系之間均存…

numpy——ravel()和flatten()

目錄 功能 用法 區別 flatten() ravel() 功能 這兩個函數的功能都是將多維數組轉換成一維 用法 import numpy as np arr np.array([[1, 2],[3, 4]]) arr.flatten()降維默認行序優先,傳入參數‘F’表示列序優先 arr.flatten(F) arr.r…

Django的model中日期字段設置默認值的問題

之前寫過這樣一個model: class MonthlyFeeMember(models.Model):worker models.ForeignKey(Student, verbose_nameu"worker", related_name"as_monthly_fee_members")month models.CharField(umonth, max_length10, defaultget_current_month…

相機標定(三) —— 畸變校正

一、前言 根據針孔模型,物體和成像之間參數會滿足相似三角形的關系。但現實中會存在裝配誤差和透視失真等原因,導致這種關系無法成立,使理想成像與實際成像存在誤差,這種誤差即稱為畸變。 畸變分為徑向畸變,切向畸變和…

SVG技術入門:線條動畫實現原理

相信大家都見到過這樣神奇的技術:一副線條構成的畫能自動畫出自己。非常的酷。Jake Archibald是這種SVG技術的首創者,并且寫了一篇非常好的文章來描述它是如何實現的。Brian Suda也在24 Ways網站上討論過它。 Polygon使用它在一篇設計方面的文章里創造出…

機器學習——人工神經網絡之BP算法編程(python二分類數據集:馬疝病數據集)

目錄 一、理論知識回顧 1、神經網絡模型 2、明確任務以及參數 1)待估參數: 2)超參數: 3)任務 3、神經網絡數學模型定義 1)激活函數 ? 2)各層權重、閾值定義 3)各層輸入輸…

Halcon例程(基于多個標定圖的單目相機標定)詳解—— Camera_calibration_multi_image.hdev

一、前言 在我的工業相機專欄里已經將相機標定涉及到的理論部分講解完畢,為什么要標定以及標定要求出什么參數呢,用一個Halcon 例程來幫助理解。 這個例程是比較經典的標定程序,基本將標定過程講的比較清楚,用的標定圖像是系統自…

SkipList 跳表

為什么選擇跳表 目前經常使用的平衡數據結構有:B樹,紅黑樹,AVL樹,Splay Tree, Treep等。 想象一下,給你一張草稿紙,一只筆,一個編輯器,你能立即實現一顆紅黑樹,或者AVL樹…

Redis failover過程

在Leader觸發failover之前,首先wait數秒(隨即0~5),以便讓其他sentinel實例準備和調整。如果一切正常,那么leader就需要開始將一個salve提升為master,此slave必須為狀態良好(不能處于SDOWN/ODOWN狀態)且權重值最低(redis.conf中)的…

機器學習——深度學習之卷積神經網絡(CNN)——LeNet卷積神經網絡結構

目錄 一、卷積神經網絡 1、卷積神經的作用 2、LeNet 1)數據庫準備——minst 2)模型 二、關于卷積神經網絡結構的一些術語定義 1、特征圖(Feature map) 2、height(長度)、width(寬度&…

工業相機(3D)主要參數詳述

一、前言 準確的完成相機選型是一個視覺工程師必備的技能,而選型前必須對其內部參數了如指掌。工業相機是一種比較復雜的產品,其參數很多,每個參數可能會有不同的標準,下面對主要的參數會做比較詳細的闡述。 二、參數詳述 2.1 …

JAVA8永久代

在Java虛擬機(以下簡稱JVM)中,類包含其對應的元數據,比如類的層級信息,方法數據和方法信息(如字節碼,棧和變量大小),運行時常量池,已確定的符號引用和虛方法表…

Struts 2初體驗

Struts2簡介: Struts2是一個基于MVC設計模式的Web應用框架,它本質上相當于一個servlet,在MVC設計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數據交互。 Struts 2 目錄結構:     apps目錄:Struts2示例…