天天看點

pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解

pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解

第二課 2D單應求解

1. 問題描述與提出

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射影幾何與變換

中我們提出了2D的射影矩陣

pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解

pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解

的矩陣,除去一個比例因子,是以有8個自由度,嚴格意義上來說需要4個不完全共線的點求解,這四個點求解出來的是精确解,稱為最小配置解。

但是因為點的測量是帶有噪聲的(不可能選取到完全對應的無偏差的對應點),是以一般情況下我們需要選取四組對應點或線面求取精确解,或者通過選取大于四組對應點或線,通過最小化代價函數來求解最優解。

2. 直接線性變換(DLT)算法求解精确解

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單應求解
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單應求解

的 1維零空間。

Extend:

  1. 零空間就是齊次線性方程組
    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. pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解
    中的第三行可由第一行和第二行線性加成,但是若選取的對應點中存在理想點即
    pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解
    pcl把3dmesh 映射成2維_【百川小課堂】第2課—2D單應求解
    中的第一行和第二行将退化為單個方程。
  3. 同樣可以用線或其他實體來求解,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單應求解
完全對應。
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