隨機抽樣一致,這個算法,我以前一直都沒有理解透徹。只知道可以用來直線擬合,網上大多數中文博客也都是寫直線擬合的,但是用來匹配二維特征的時候,總還是沒弄明白。
基本概念參考 http://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html
寫得已經夠清楚了。
現在我來說說它在匹配特征時候的應用。
————————————————————————————————————————————
假如我有兩組數據,M和T,其中T是由M經過一個旋轉和一個平移得來的。
T=R*T+t
R=[cos(sita) -sin(sita); sin(sita) cos(sita)]
t=[tx;ty]
我現在已經大概知道了M的每組數與T的每組數據的對應關系 match,
match=[1 2; 3 4;5 6;……]
意思是:M的第1個 對應T的第2個;
M的第3個 對應T的第4個;
其中有一些對應錯了。並且我不知道這個模型是啥。
我現在要做的,就是對這些東東進行ransac算法,找出這些錯誤的對應 outlier ,找到其中正確的對應,並求出這個模型 R 、t
————————————————————————————————————————————
算法如下
1. 從match 里面,隨機找出n組(n>=2,因為是三個未知數 sita tx ty,每組數可以列倆方程,所以四個方程已經夠求三個未知數了)
2. 對這n組,求出R t, 具體方法可以使用svd法求剛體最小二乘轉置 http://blog.csdn.net/kfqcome/article/details/9358853
3. 對這個求出來的R t,應用到T上,得到T';結合match,找出T’中,不靠譜的(自己設一個閾值),就是outliers,靠譜的inliers
4. 對inliers的點,如2一樣,求出新的R t
5. 評價這個模型,比如再進行一下3,求出inlier,inlier數目作為評價標准;或者inlier對M的誤差作為標准。如果這個模型好 R_best=R t_best=t
6.重復以上過程k次,最后的R_best t_best就是結果了。
—————————————————————————————————————————————
就這樣,可能哪里理解的不對,以后再改吧。目前來看,效果還是不錯的。