一 ,、視覺SLAM十四講相關數(shù)學總結(jié)左乘一個矩陣就代表對右邊的向量做一次變換,,向量代表的是一條有方向的直線,變換的結(jié)果其實就是對這條直線進行各種運動,,包括:平移,、旋轉(zhuǎn)、伸縮,、投影(高維到低維),、映射等,其中,,映射是對一個向量作升維或降維(也可以在同一空間中)的操作 R n →R m ,,所以廣義上,映射的意思等同于變換. 另外一個經(jīng)常提到的詞是“線性變換”,,線性變換保證了輸入的直線(向量)在變換過程中不會產(chǎn)生彎曲,,即輸入是直線,輸出也是直線,。因為 矩陣變換都是線性變換,所以我們這里說的“變換”其實就是“線性變換”,。 先舉個簡單的例子,,假如我們要將直線OB變換到直線OB’,也就是逆時針旋轉(zhuǎn)θ ,,那么我們怎么求變換矩陣A,? 根據(jù)變換的定義,,也就求一個矩陣A ,使得:[x′ y′]=A[x y] 正交變換 在各種變換中,,有一種變換擁有良好的特性——它能使變換后的向量長度,,向量之間的內(nèi)積、距離,、夾角等很多性質(zhì)都不變,,這種變換,我們稱為正交變換,,用于實施這種變換的矩陣,,我們稱為正交矩陣,這種變換的特性,,我們稱為正交變換的不變性,。 假如有m個向量,我們把向量都看作點,,那么這m點就會構(gòu)成一個具有一定幾何結(jié)構(gòu)的空間(圖形),,我們對這m個點進行正交變換,其結(jié)果直觀來說就是,,正交變換不會對圖形進行拉伸,、壓縮,它能夠使變換后的圖形保持原來圖形的幾何形狀,,如下圖所示,,ABC構(gòu)成的空間正交變換到A’B’C’,其大小和形狀都不會改變,。 正交矩陣 正交矩陣是在歐幾里得空間里的叫法,,在酉空間里叫酉矩陣。
酉空間和歐式空間統(tǒng)稱為內(nèi)積空間。 上面的正交變換是從變換的結(jié)果來進行直觀的解釋,,可以看到這種變換擁有良好的性質(zhì)——能夠保持空間的不變性,,保證不會對原空間產(chǎn)生壓縮拉伸,往深了說,,就是這種變換不會損失信息,,因為它保持了原空間的內(nèi)部結(jié)構(gòu),這在工程上是很有用的 那么產(chǎn)生這種變換的矩陣——正交矩陣是什么樣的,,有什么性質(zhì),?下面給出正交矩陣的定義:
對角矩陣(diagonal matrix)是一個主對角線之外的元素皆為0的矩陣 2.旋轉(zhuǎn)矩陣 參考:雙目立視覺:一(坐標系變換、左乘右乘,、旋轉(zhuǎn)矩陣 左右乘,,以及我們的旋轉(zhuǎn)平移,都是建立在我們的旋轉(zhuǎn)矩陣規(guī)定之上的,。 逆時針為正 且有下面公式 左乘:回退 右乘:前進 例如: 矩陣A旋轉(zhuǎn)30°變換到了矩陣B,,那么矩陣B坐標系下的點就可以左乘變換矩陣,回退到矩陣A時,,坐標點的大小,。 矩陣B旋轉(zhuǎn)30°到了矩陣A,那么矩陣B上的點右乘旋轉(zhuǎn)矩陣,,就可以在矩陣A上面進行表示了,。
坐標變換就把一個點(或一個向量)從一個坐標系轉(zhuǎn)換到另一個坐標系去,。舉個栗子:東北天坐標下點B坐標為(1, 2, 3),,通過坐標變換到北西天坐標系,在北西天坐標系下B點坐標是(x, x, x)。 上面那點就是說,,同一個點(或向量)在不同坐標系下的坐標分別是什么? 注意,,坐標變換,,是左乘的。過渡矩陣A是乘在左邊的,。(在這里A和A-1均只表示一個象征作用,,象征變換陣,下同) 3.矩陣的秩 「秩」是圖像經(jīng)過矩陣變換之后的空間維度 「秩」是列空間的維度 因此,,此矩陣的「秩」為2,。 因此,此矩陣的「秩」為1,。 3. AX*XB求解 包括: 1,、三角分解(LU分解) 2、LDLT分解與LLT分解(Cholesky分解) 3,、QR分解 4,、奇異值分解(SVD分解) 5、特征值分解 線性方程和非線性方程 線性方程:代數(shù)方程,,如y =2 x +7,,其中任一個變量都為一次冪。 這種方程的圖形為一直線,,所以稱為線性方程,。 所謂非線性方程,就是因變量與自變量之間的關系不是線性的關系,,這類方程很多,,例如平方關系、對數(shù)關系,、指數(shù)關系,、三角函數(shù)關系等等。 求解此類方程往往很難得到精確解,,經(jīng)常需要求近似解問題,。 4.最小二乘法 概念:所謂“二乘”就是平方的意思,又稱最小平方法,,通過最小化誤差的平方,,尋找數(shù)據(jù)的最佳函數(shù)匹配。用最小二乘法可以簡便的求得未知的數(shù)據(jù),,并使得求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小,。 觀測矩陣,指實際上是我們在測量時,得到的真實數(shù)據(jù),。 最小二乘法的幾何意義就是求解 b 在A的列向量空間中的投影,。 如何找到我需求的B呢? 線性回歸因為比較簡單,,可以直接推導出解析解,,而且許多非線性的問題也可以轉(zhuǎn)化為線性問題來解決,所以得到了廣泛的應用,。甚至許多人認為最小二乘法指的就是線性回歸,,其實并不是,最小二乘法就是一種思想,,它可以擬合任意函數(shù),,線性回歸只是其中一個比較簡單而且也很常用的函數(shù),所以講最小二乘法基本都會以它為例,。 窮舉法,,算出最小殘差平方和時的B………………這個最初是這樣做的,但是有點太浪費計算資源了,,速度比較慢,。 還有其他方法:(梯度下降法、牛頓法,、擬牛頓法,、共軛梯度法等)如何求逆,是矩陣求最小二乘的精華,。 4.1 非線性最小二乘 最小二乘又可以分為線性和非線性兩種,,分別對應fi(x)的線性形式與非線性形式,線性最小二乘很好求解,,可以將公式(1)變換為矩陣方程(公式2),,最后直接求解矩陣方程即可,不需要迭代,,這種解被稱為“解析解”,。非線性最小二乘問題則不然,它要復雜得多,,沒有辦法變換為矩陣方程形式,,以至于它必須將問題化簡為每一步均為可以直接求解的子問題,整個求解過程是迭代的,。 1.對原問題中的每一個函數(shù)fi(x)在x0處進行一階泰勒展開,,因為一階泰勒展開屬于線性函數(shù)(公式3),于是通過這種手段,,就可以將非線性最小二乘問題簡化為線性最小二乘問題來求解,。 2.對得到的線性最小二乘問題,,進行直接求解。這里面涉及到兩個矩陣,,一個是雅克比矩陣(公式4),,一個是赫森矩陣(公式5)。 3.得到子問題的解析解xk+1之后(公式2),,xk+1與xk之間便自然地建立了等式關系(公式6),。 4.更新參數(shù)xk(k=k+1, k=1....n),,回到步驟1,直到滿足收斂條件,,得到最優(yōu)解x* 幾個注意事項: 第一:步驟1中,,一定要一階泰勒展開,不能采用二階以上,,因為只有一階泰勒展開才是線性函數(shù),,才能轉(zhuǎn)換為線性最小二乘問題來直接求解。 第二:步驟2中,,雅克比矩陣和赫森矩陣都是屬于子問題的,,不是原問題的。 第三:步驟3中,,是為了得到新求解的參數(shù)xk+1與之前參數(shù)xk之間的關系,,形成一種“鏈式反應”,也就是迭代了,。 第四:步驟4中,,收斂條件一般有1.梯度近乎為0。2.變量變化很小,。3.目標函數(shù)值變化很小等,。 第五:許多優(yōu)化算法,都可以用于解決非線性最小二乘問題,。例如我之前講過的LM算法與信賴域算法(參考2與參考3),,對應的matlab代碼已給出。 第六:函數(shù)fi(x)往往都是如下形式(公式7),,千萬別以為fi(x)就是hi(x),,我之前犯過類似的錯誤,調(diào)代碼調(diào)的很慘,。 4.2 非線性最小二乘求解推導 我們先考慮一個最小二乘問題 是一個任意的非線性函數(shù),。如果 是個數(shù)學形式上很簡單的函數(shù),那問題也許可以用解析形式來求,。令目標函數(shù)導數(shù)為0,,求解最優(yōu)值,,就和求一個二元函數(shù)的極值一樣: 解此方程,,就得到了導數(shù)為0的極值,。它們可能是極大,極小或者鞍點值,,只要挨個比較它們的函數(shù)值即可,。但是,,這個方程是否容易解取決于 f導函數(shù)的形式。 有可能是一個非常復雜的非線性方程,。通常對于不方便求解的最小二層問題,,我們可以用迭代的方式,從一個初始值出發(fā),,不斷更新當前的優(yōu)化變量,,使目標函數(shù)下降。具體的步驟可列寫如下: 這讓求解導函數(shù)為零的問題,,變成了一個不斷尋找梯度并下降的過程,。直到某個時刻的增量非常小,無法再使函數(shù)下降,。此時算法收斂,,目標達到了一個極小,我們完成了尋找極小值的過程,。在這個過程中,,我們只要找到迭代點的梯度方向即可,而無需尋找全局導數(shù)為0的情況,。 5. 范數(shù) 范數(shù)主要是對矩陣和向量的一種描述,,有了描述那么“大小就可以比較了”,從字面理解一種比較構(gòu)成規(guī)范的數(shù),。有了統(tǒng)一的規(guī)范,,就可以比較了。 例如:1比2小我們一目了然,,可是(3,5,3)和(6,1,2)哪個大,?不太好比吧 2范數(shù)比:根號(43)比根號(41)大,因此2范數(shù)對比中(3,5,3)大 無窮范數(shù)比:5比6小,,因此無窮范數(shù)對比中(6,1,2)大矩陣范數(shù):描述矩陣引起變化的大小,,AX=B,矩陣X變化了A個量級,,然后成為了B,。 向量范數(shù):描述向量在空間中的大小。 更一般地可以認為范數(shù)可以描述兩個量之間的距離關系,。向量范數(shù)的通用公式為L-P范數(shù) 記住該公式其他公式都是該公式的引申,。 L-0范數(shù):用來統(tǒng)計向量中非零元素的個數(shù),。 L-1范數(shù):向量中所有元素的絕對值之和。可用于優(yōu)化中去除沒有取值的信息,,又稱稀疏規(guī)則算子,。 L-2范數(shù):典型應用——歐式距離。可用于優(yōu)化正則化項,,避免過擬合,。 L-∞范數(shù):計算向量中的最大值。 歐式距離 歐式距離就是所謂的向量的二范式 余弦距離 弦相似度經(jīng)常被用來衡量兩個向量的相似度 6. 在擬合的時候進行應用-LM算法——列文伯格-馬夸爾特算法(最速下降法,,牛頓法,,高斯牛頓法) 什么是擬合?你有一堆數(shù)據(jù)點,,我有一個函數(shù),,但是這個函數(shù)的很多參數(shù)是未知的,我只知道你的這些數(shù)據(jù)點都在我的函數(shù)上,,因此我可以用你的數(shù)據(jù)點來求我的函數(shù)的未知參數(shù)。 擬合我們可以認為是一種試探性的方法,,這種方法在計算機出來以前很多情況下是不可能實現(xiàn)的,,為什么,因為公式涉及了大量的迭代過程,,也就是我想要通過數(shù)據(jù)點求函數(shù)的參數(shù),,沒有解析解能夠直接代入數(shù)據(jù)求得參數(shù),而是通過一點一點的摸索嘗試,,最終得到最小誤差也就是最好擬合,。最具有代表性的就是暴風法,把所有可能的結(jié)果都帶進去,,找到最好的擬合,。然后聰明的人類不想這么魯莽,并且這么無目的地尋找,,于是人們開始研究參數(shù)向什么方向迭代是最好的,,于是便出現(xiàn)了梯度方向等一系列方法。 有最速下降法,、Newton 法,、GaussNewton(GN)法、Levenberg-Marquardt(LM)算法等,。 沿著導數(shù)方向,,我們的函數(shù)值是逐漸增大的 我們行進的方向和我們的我們行進的方向和我們的梯度方向一致時,函數(shù)增長最快,,方向相反時,,函數(shù)下降最快,。 補充知識: 雅克比Jacobian 矩陣是函數(shù)的一階偏導數(shù)以一定方式排列成的矩陣。W當一個函數(shù)的輸入和輸出都是向量的函數(shù),,把它所有的偏導數(shù)放入一個矩陣,,把包含所有這樣偏導數(shù)的矩陣稱為Jacobian 矩陣。 Hessian矩陣等價于 梯度 的Jacobian矩陣,。雅克比矩陣(Jacobian Matrix)在正運動學中的應用海森 Hessian 矩陣是一個由多變量實值函數(shù)的所有二階偏導數(shù)組成的方塊矩陣 在圖像中應用: 對于可導函數(shù),,當一階導數(shù)為 0,二階導數(shù)不為 0 時,,說明是極值點,。 二階導數(shù)大于 0,是極小值點,;二階導數(shù)小于 0,,是極大值點。邊緣到底有什么特征呢,?如下圖所示,,一個二維平面上的一條直線,圖像的特征具體可以描述為:沿著直線方向,,亮度變化極小,,垂直于直線方向,亮度由暗變亮,,再由亮變暗,,沿著這個方向,亮度變化很大,。我們可以將邊緣圖像分布特征與二次型函數(shù)圖形進行類比,,是不是發(fā)現(xiàn)很相似,我們可以找到兩個方向,,一個方向圖像梯度變化最慢,,另一個方向圖像梯度變化最快。那么圖像中的邊緣特征就與二次型函數(shù)的圖像對應起來了,,其實二次型函數(shù)中的hessian矩陣,,也是通過對二次型函數(shù)進行二階偏導得到的(可以自己求偏導測試下),這就是我們?yōu)槭裁纯梢允褂胔essian矩陣來對邊緣進行檢測以及進行邊緣響應消除,,我想大家應該明白其中的緣由了,。還是那句話,數(shù)學模型其實就是一種反映圖像特征的模型,。 所以Hessian matrix實際上就是多變量情形下的二階導數(shù),,他描述了各方向上灰度梯度變化,這句話應該很好理解了吧,。我們在使用對應點的hessian矩陣求取的特征向量以及對應的特征值,,較大特征值所對應的特征向量是垂直于直線的,,較小特征值對應的特征向量是沿著直線方向的。對于SIFT算法中的邊緣響應的消除可以根據(jù)hessian矩陣進行判定,。 參考鏈接:https://zhuanlan.zhihu.com/p/56598915 7. 特征值 如果說一個向量v是方陣A的特征向量,,將一定可以表示成下面的形式: 這時候λ就被稱為特征向量v對應的特征值,一個矩陣的一組特征向量是一組正交向量,。特征值分解是將一個矩陣分解成下面的形式: 其中Q是這個矩陣A的特征向量組成的矩陣,,Σ是一個對角陣,每一個對角線上的元素就是一個特征值,。 特征值分解可以得到特征值與特征向量,,特征值表示的是這個特征到底有多重要,而特征向量表示這個特征是什么,,可以將每一個特征向量理解為一個線性的子空間,,我們可以利用這些線性的子空間干很多的事情。不過,,特征值分解也有很多的局限,,比如說變換的矩陣必須是方陣。 幾何意義:變換會將對應本征向量方向的向量進行縮放,,縮放的倍數(shù)就是本征值,。 8. 奇異分解 特征值分解是一個提取矩陣特征很不錯的方法,但是它只是對方陣而言的,,在現(xiàn)實的世界中,我們看到的大部分矩陣都不是方陣,,比如說有N個學生,,每個學生有M科成績,這樣形成的一個N * M的矩陣就不可能是方陣,,我們怎樣才能描述這樣普通的矩陣呢的重要特征呢,? 奇異值分解可以用來干這個事情,奇異值分解是一個能適用于任意的矩陣的一種分解的方法: 假設A是一個N * M的矩陣,,那么得到的U是一個N * N的方陣(里面的向量是正交的,,U里面的向量稱為左奇異向量),Σ是一個N * M的矩陣(除了對角線的元素都是0,,對角線上的元素稱為奇異值),,V’(V的轉(zhuǎn)置)是一個N * N的矩陣,里面的向量也是正交的,,V里面的向量稱為右奇異向量)
Mvi= λivi 里的 λi 是拉伸尺度(scalar)。從幾何上看,,*M* 對向量 V*i* 進行了拉伸,,映射變換。V*i* 稱作矩陣 M 的特征向量(eigenvector),,λi 稱作為矩陣*M* 特征值(eigenvalue),。這里有一個非常重要的定理,對稱矩陣*M* 的特征向量是相互正交的,。 它可以將一個比較復雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,,這些小矩陣描述的是矩陣的重要的特性。 奇異值分解的幾何含義為:對于任何的一個矩陣,,我們要找到一組兩兩正交單位向量序列,,使得矩陣作用在此向量序列上后得到新的向量序列保持兩兩正交。 奇異值的計算是一個難題,,是一個O(N^3)的算法,。在單機的情況下當然是沒問題的,matlab在一秒鐘內(nèi)就可以算出1000 * 1000的矩陣的所有奇異值,,但是當矩陣的規(guī)模增長的時候,,計算的復雜度呈3次方增長,就需要并行計算參與了,。 奇異值的直觀應用 圖片壓縮 圖片實際上對應著一個矩陣,,矩陣的大小就是像素大小,比如這張圖對應的矩陣階數(shù)就是450*333,,矩陣上每個元素的數(shù)值對應著像素值,。我們記這個像素矩陣為A 現(xiàn)在我們對矩陣A進行奇異值分解。直觀上,,奇異值分解將矩陣分解成若干個秩一矩陣之和,,用公式表示就是 如果只保留大的奇異值,舍去較小的奇異值,這樣(1)式里的等式自然不再成立,,那會得到怎樣的矩陣——也就是圖像,? 奇異值往往對應著矩陣中隱含的重要信息,且其重要性和奇異值大小正相關,。每個矩陣A都可以表示為一系列秩為1的“小矩陣”之和,,而奇異值則衡量了這些“小矩陣”對于A的權重。 圖像去噪 在圖像處理領域,,奇異值不僅可以應用在數(shù)據(jù)壓縮上,,還可以對圖像去噪。如果一副圖像包含噪聲,,我們有理由相信那些較小的奇異值就是由于噪聲引起的,。當我們強行令這些較小的奇異值為0時,就可以去除圖片中的噪聲,。異值分解還廣泛的用于主成分分析(Principle Component Analysis,,簡稱PCA)和推薦系統(tǒng)(如Netflex的電影推薦系統(tǒng))等。在這些應用領域,,奇異值也有相應的意義. 可以說奇異值分解將一個矩陣原本混合在一起的三種作用效果,,分解出來了。矩陣可以認為是一種線性變換,,一個線性變換的作用可以包含旋轉(zhuǎn),、縮放和投影三種類型的效應。奇異值分解正是對線性變換這三種效應的一個析構(gòu),。而特征值分解其實是對旋轉(zhuǎn)縮放兩種效應的歸并,。(有投影效應的矩陣不是方陣,沒有特征值) 6. 圖像偏導數(shù) 圖像就是一個復雜的曲面,,我們要想得到曲面點的梯度,,就需要對該點求偏導。 求偏導的輸入:附近點的灰度值 求偏導的輸出:一個數(shù)用窗操作,,卷積操作(我不想提卷積操作,因為事實就是一個簡單的相乘相加的數(shù)學公式) 對x求導 2.僅用觀測方程,,人走著走著轉(zhuǎn)了個身,,直接就跟不到了,或者人的姿態(tài)有一點變化,,也跟不上了。(說的是特征檢測算法不是那么理想的情況下)因此我們必須用卡爾曼濾波,,它的主要功能:把我們的狀態(tài)方程和觀測方程結(jié)合起來,,獲得我們的最佳預測值。考慮到我們的預測和測量會由于考慮不周,以及實際環(huán)境問題,,存在各種各樣的噪聲,,導致最終的預測不能精確到一個結(jié)果,而是到了一個區(qū)域(區(qū)域默認符合高斯分布),。這里的協(xié)方差和上面對應,,便是我們的位置和速度的誤差關系,有時候我們是可以通過我們的位置誤差算出我們的速度誤差的,。①狀態(tài)方程X1+狀態(tài)的協(xié)方差H=狀態(tài)的模糊估計 ②觀測方程X2’+觀測的協(xié)方差R=觀測的模糊估計 我們現(xiàn)在有了兩個估計(滿足高斯分布) |
|
來自: mynotebook > 《待分類》