
第二課 2D單應求解
1. 問題描述與提出
2D單應就是給定
中的兩組點集
和
,計算把每一點
映射到
的射影變換,實際一般情況下,點
和
是兩幅圖像(或一張圖像)上的點。
在上一篇
2D射影幾何與變換中我們提出了2D的射影矩陣
是
的矩陣,除去一個比例因子,是以有8個自由度,嚴格意義上來說需要4個不完全共線的點求解,這四個點求解出來的是精确解,稱為最小配置解。
但是因為點的測量是帶有噪聲的(不可能選取到完全對應的無偏差的對應點),是以一般情況下我們需要選取四組對應點或線面求取精确解,或者通過選取大于四組對應點或線,通過最小化代價函數來求解最優解。
2. 直接線性變換(DLT)算法求解精确解
的一種簡單線性方程是
,考慮到這是齊次矢量方程,我們利用
來推出射影變換的簡單線性解。
Explain:
其中矩陣
的第![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 行為![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ,![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ,上述方程可視為![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的形式,其中![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 是![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的矩陣,![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 是由矩陣![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 組成的![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 維矢量。![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 中是隻有 2 個 線性獨立的方程,是以 4 組對應點我們可以得到8組獨立方程求解![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的 1維零空間。
Extend:
- 零空間就是齊次線性方程組 的全部解,維數是
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ,pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 是未知元的個數,pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 是pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的秩。pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 - 中的第三行可由第一行和第二行線性加成,但是若選取的對應點中存在理想點即
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ,pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 中的第一行和第二行将退化為單個方程。pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 - 同樣可以用線或其他實體來求解,2D射影(8dof)變換需求4組點或4組線(每組點或線提供2個限制),3D射影變換(15dof)需要5組點或5組平面(每組點或線提供3個限制)。
3. 代價函數求取最優解
如果給定的對應點或者線大于4組,我們便需要利用最小化代價函數求超定解。
- 代數距離:代價函數就是求解最小化範數 。
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 - 幾何距離:代價函數就是求解 與
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 和pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 與pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的綜合誤差。pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 - 重投影誤差:代價函數就是求解 與
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 和pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 與pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 的綜合誤差。pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解
Explain:和![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 是估計的點,其中![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 完全對應。![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解
4 疊代方法
- 求解線性問題時,采用最小二乘法(求導即可)。
- 求解非線性問題時,采用非線性最小二乘(牛頓法或者LM法,由雅可比矩陣組成的一階或二階梯度求解增量),這種方法把非線性問題轉化為了求增量時候隻需要求解線性問題。
5 随機一緻性(RANSAC)算法
在實際的情況中,存在一些誤差點,最小二乘方法會幹擾單應的生成。我們介紹RANSAC算法,它可以從一組包含“局外點”的觀測資料集中,通過疊代方式估計數學模型的參數。它是一種不确定的算法——它有一定的機率得出一個合理的結果;為了提高機率必須提高疊代次數。
RANSAC比最小二乘的優勢在于,它能去除一些噪聲的幹擾, 如果假定模型與實際的情形一緻, 那麼一般由觀測資料計算的RANSAC模型, 更能接近實際情況, 去除觀測或過程噪聲幹擾。
Example:
對于
![]()
pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解 ,
RANSAC的線性拟合算法步驟大緻如下:
while 最大嘗試次數
從觀測點集中随機取兩點,計算出直線的參數k, t(或者k用向量表示),得出一個候選的直線模型。
計算候選直線與整個點集的比對程度,可以采用統計在直線上(或到直線的距離小于一個門檻值)的點的個數。
保留比對程度最好的直線的參數。
如果本次嘗試比對點的個數占整個點集大部分,超出預期(門檻值),提前結束嘗試。
endwhile
RANSAC的誤差一般用在拟合直線的一個範圍内,在此範圍内點的個數占整個點集比例來衡量。
參考資料: https:// blog.csdn.net/viewcode/ article/details/7828178