擬合的權重函數


直線的擬合是幾何基元的擬合基礎部分。平常我們表示平面上一條直線用

y=ux+v

此時,u-v平面上每個點(u,v)都可以唯一對應一條x-y平面上的一條直線。

對於直線y=ux+v可以轉換成v=y-ux,可見,這條直線上每個點都對應着u-v平面上的一條直線,這些直線會相交於(u,v)點,利用這個性質可以檢測共線點。實際上,上述的變化被稱為Hough變換。

對於實際的應用中,由於y=ux+v並不是能表示所有的直線(如u=∞時,x=c直線無法表示)。此時,有一種直線的黑塞范式

αr+βc+γ=0

令α²+β²=1(拉格朗日算子),則點(r,c)到該直線的舉例可直接用αr+βc+γ得到。

通過一些列的點(ri,ci),i=1,……n來擬合一條直線,可以通過最小二乘法得到,即對這些點到直線的舉例的平方和進行最小化。

ε²=∑(αr+βc+γ)²

約束條件(α²+β²=1)。

以上這種方法對於大的離群值不足夠魯棒。這里離群值就是指與正確擬合出來直線偏差很大的點,魯棒指這個你和方法對這些允許偏差之外的可行性,比如如果擬合算法對離群值的影響可以見到最小甚至消除離群值的影響,此時算法的魯棒性就好。而最小平方擬合對於大的離群值明顯不夠魯棒,因為離群點對擬合直線的影響和一般點對擬合直線的影響是相同的,從而會引起擬合直線的不准確。為了減少這些遠離點(離群點)的影響,可以為每個點引入權重ωi,最小化過程變為

ε²=∑ωi*(αr+βc+γ)²-λ*(α²+β²-1)*n

引入權重ωi之后,又有新的問題出現了,那就是怎么定義這權重呢?(每個點的權重該如何定義)。這里的解決方法是使用多次迭代。

用多次迭代來擬合直線,第一次迭代中使用權重ωi=1.,i=1,……n,即執行一個標准的直線擬合先擬合出一條近似直線,並通過此計算出點到線的距離δi。應用權重函數ω(δ)來定義后續的迭代權重。

權重函數也有很多種,最常用的有兩種:Huber權重函數和Tukey權重函數。

權重函數就是定義削波值來定義那些點會被視為離群值,由此可以削弱離群值的權重。利用這種方法,迭代中的初始擬合直線仍然是標准的最小平方和擬合,給出的結果是被離群值干擾的,所以權重函數不僅會削弱離群值,也可能丟掉一些正常值。對此,還需要有其他的魯棒擬合方法。RANSAC(the random sample consensus)算法就是這樣一組算法。

RANSAC算法的核心就是通過隨機選擇最少數量的點(直線為兩點)來構造一個解(擬合),然后檢查存在多少與此解相一致的點。如此不斷重復,直到點的一致率達到一定的值(如99%),選擇一直點數量最大的解作為擬合結果。

通過對直線擬合的學習,圓和橢圓的擬合基本也是類似的思路。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM