本文轉(zhuǎn)自徐飛翔的“【多視角立體視覺系列】 conic圓錐線和quadric二次曲錐面的定義和應(yīng)用 ”
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明
圓錐線
定義我們暫且不管計(jì)算機(jī)視覺和攝像機(jī)成像的這方面的應(yīng)用背景,在數(shù)學(xué)的角度上先描述下圓錐線。圓錐線(conic) 首先是一種在二維平面上的二維點(diǎn)的軌跡,在歐幾里德幾何中,圓錐線主要分為三種:雙曲線(hyperbola),橢圓線(ellipse),拋物線(parabola)。名字很熟悉,在高中大家都應(yīng)該或多或少學(xué)過這些幾何,而這些不同的曲線之所以都被稱之為圓錐線的原因是,它們都可以看成是不同方向的平面切割圓錐體形成的相交平面的邊緣的軌跡,如Fig 1.1所示。我們將會(huì)發(fā)現(xiàn),這些不同的圓錐線在投影變換(projective transformation)下都是等價(jià)的,這個(gè)也就是我們指的“不同的角度下觀察”的意思,投影變換可以描述這個(gè)過程。
Fig 1.1 圓錐線,用不同方向的平面切割圓錐體,就形成了不同的圓錐曲線,我們會(huì)發(fā)現(xiàn),這里所謂的不同方向,其實(shí)指的是不同的方向去觀察該圓錐體,這點(diǎn)和我們用相機(jī)在不同方向成像是異曲同工的,因此在立體視覺中會(huì)引入這個(gè)概念。
那么,作為解析幾何的角度,我們嘗試用代數(shù)的形式描述這類二次曲線,我們有:
其中曲線軌跡上的每個(gè)點(diǎn)為,如果用齊次化坐標(biāo)的形式表達(dá)它[1],令
即是
? ,那么我們把(1.1)轉(zhuǎn)成(1.2),有:
用矩陣形式表達(dá)就是:
我們注意到描述一個(gè)圓錐線,在代數(shù)角度下用一個(gè)對(duì)稱矩陣就夠了,其矩陣的自由度為5,為什么是5而不是6呢?這里不是有a,b,c,d,e,f六個(gè)未知參數(shù)嗎?那是因?yàn)閷?duì)于一個(gè)圓錐線來說,其尺度因子是不重要的,畢竟我們的等式右邊是個(gè)0,可以除去除了0之外的任意數(shù),因此一般可以對(duì)矩陣做歸一化處理,如:
因此自由度就只有5了。因此我們發(fā)現(xiàn),只需要用五個(gè)點(diǎn),就可以確定一個(gè)圓錐線,聯(lián)立方程:
可以發(fā)現(xiàn),圓錐曲線的解是這個(gè)矩陣的零向量[2]。
圓錐線的切線
在幾何中,我們經(jīng)常需要使用圓錐線的切線方程,在齊次坐標(biāo)系的表示下,這種表示特別簡單,,其中
為圓錐線的對(duì)稱矩陣,
是齊次坐標(biāo)下的點(diǎn)坐標(biāo),并且該點(diǎn)在圓錐線之上。這點(diǎn)其實(shí)很容易證明:
首先是經(jīng)過點(diǎn)
的,有
,所以這個(gè)點(diǎn)同時(shí)在直線和圓錐線上,接下來我們證明只有一個(gè)交點(diǎn)即可。假設(shè)還有另外一個(gè)交點(diǎn)
,那么我們有
并且因?yàn)橹本€也經(jīng)過交點(diǎn)
,有
。因此不難得到(1.6)也成立。
那么也就是說,整個(gè)直線兩點(diǎn)之間的連線的任意點(diǎn)都在圓錐線上,因此這兩個(gè)點(diǎn)只能是同一個(gè)點(diǎn),即是交點(diǎn)。
對(duì)偶圓錐線
我們之前定義的圓錐線是以如何構(gòu)成該圓錐線的點(diǎn)的軌跡來定義的,因此形式中的
是點(diǎn)。然而,我們知道用向量的形式既可以表示點(diǎn),也能表示直線,如果這里的不是點(diǎn),而是直線,那么方程形式就變成了
,而數(shù)值上來看是和點(diǎn)形式一樣的,但是幾何含義卻完全不同了。在這種情況,如Fig 1.2(b)所示,是無數(shù)直線的不斷運(yùn)動(dòng)的軌跡的切線交點(diǎn)構(gòu)成了整個(gè)圓錐線的軌跡。這個(gè)稱之為對(duì)偶圓錐線(dual conics)。同樣的,對(duì)偶圓錐線也是用對(duì)稱的
矩陣來表示,表示為
。利用共軛矩陣的性質(zhì),我們可以求出以點(diǎn)形式的圓錐線
對(duì)應(yīng)的對(duì)偶圓錐線的矩陣為
。這個(gè)其實(shí)很容易推導(dǎo),我們知道經(jīng)過圓錐線的
的切線為
,反過來,我們有
,那么我們有:
點(diǎn)變換后的圓錐線
假設(shè)新的點(diǎn) ,那么新點(diǎn)的圓錐線可以表示為:
因此有:
二次曲錐面
我們上一章談到的圓錐線是在二維平面上定義出來的,那么在三維空間中,二維的圓錐線就擴(kuò)展成為了二次曲錐面(quadric)。其數(shù)學(xué)形式類似(1.3),可以表達(dá)成
類似于圓錐線,二次曲錐面的自由度為9,去掉了尺度因子。同樣,如果X \mathbf{X}X在二次曲錐面上,其切面可以表示為。與圓錐線不同的是,平面與二次曲錐面的交疊軌跡不是點(diǎn),而是一個(gè)圓錐線
。當(dāng)然,二次曲錐面也有其對(duì)偶形式,就如同對(duì)偶圓錐線一樣,表示為
,其中的
是
的共軛矩陣,一般是
。 如圖Fig2.1所示,我這里貼了幾張不同類型的二次曲錐面,我們可以發(fā)現(xiàn),曲錐面的形式要比圓錐線復(fù)雜很多。
點(diǎn)變換后的二次曲錐面同圓錐線,假設(shè)有點(diǎn)變換 ,那么有
。
應(yīng)用我們?cè)谟?jì)算機(jī)視覺特別是成像中,我們會(huì)發(fā)現(xiàn)對(duì)物體的一些變換,可以體現(xiàn)到對(duì)圓錐線或者二次曲錐面的變換上,方便我們分析問題,本文作為預(yù)備知識(shí),僅僅介紹了圓錐線和二次曲錐面,先不考慮其他內(nèi)容了。我們后面的章節(jié)再見。
Reference
[1]. https://blog.csdn.net/LoseInVain/article/details/102756630
[2]. https://en.wikipedia.org/wiki/Null_vector
[3]. Hartley R, Zisserman A. Multiple View Geometry in Computer Vision[J]. Kybernetes, 2008