這是交易。我有多個點(X,Y)形成一個'橢圓形'形狀。從分散點評估/擬合橢圓
我想評估/擬合可能的「最佳」橢圓,並得到它的屬性(a,b,F1,F2),或者只是橢圓的中心。
任何想法/線索,將不勝感激。
吉拉德。
這是交易。我有多個點(X,Y)形成一個'橢圓形'形狀。從分散點評估/擬合橢圓
我想評估/擬合可能的「最佳」橢圓,並得到它的屬性(a,b,F1,F2),或者只是橢圓的中心。
任何想法/線索,將不勝感激。
吉拉德。
有一個Matlab函數fit_ellipse可以完成這項工作。關於橢圓正交距離擬合的方法也有this paper。網頁搜索正交橢圓擬合也可能會出現很多其他資源。
我會解釋我將如何處理這個問題。我會建議爬山的方法。首先計算點的重心作爲起點,並以某種方式爲a和b選擇兩個值(可能爲任意正值)。你需要有一個合適的功能,我建議它(足夠接近)返回的點數趴在一個給定的橢圓:
int fit(x, y, a, b)
int res := 0
for point in points
if point_almost_on_ellipse(x, y, a, b, point)
res = res + 1
end_if
end_for
return res
現在一些step
開始。我會選擇一個足夠大的值來確保elipse的最佳中心距離第一個點永遠不會超過step
。選擇這麼大的價值是沒有必要的,但算法中最慢的部分是接近最佳中心所需的時間,所以我認爲更大的價值更好。
所以現在我們有一些初始點(X,ÿ)的一個和b一些初始值和初始步驟。如果有鄰居優於鄰居,則該算法迭代地選擇當前點的鄰居中的最好鄰居,否則則減少步驟兩次。這裏'最好'的意思是使用擬合函數。 (x,y,a,b),它的鄰居是8: ,y,a + -step,b),(x,y,a,b + -step)(如果結果不夠好,則可以通過對角線增加更多鄰居 - 例如(x + -step,y + a,b)等)。這裏是你如何做到這一點
neighbours = [[-1, 0, 0, 0], [1, 0, 0, 0], [0, -1, 0, 0], [0, 1, 0, 0],
[0, 0, -1, 0], [0, 0, 1, 0], [0, 0, 0, -1], [0, 0, 0, 1]]
iterate (cx, cy, ca, cb, step)
current_fit = fit(cx, cy, ca, cb)
best_neighbour = []
best_fit = current_fit
for neighbour in neighbours
tx = cx + neighbour[0]*step
ty = cx + neighbour[1]*step
ta = ca + neighbour[2]*step
tb = cb + neighbour[3]*step
tfit = fit(tx, ty, ta, tb)
if (tfit > best_fit)
best_fit = tfit
best_neighbour = [tx,ty,ta,tb]
endif
end_for
if best_neighbour.size == 4
cx := best_neighbour[0]
cy := best_neighbour[1]
ca := best_neighbour[2]
cb := best_neighbour[3]
else
step = step * 0.5
end_if
你繼續迭代直到步驟的值越小則給定的閾值(例如1E-6)。我使用僞代碼編寫了所有內容,因爲我不確定要使用哪種語言。
這並不能保證以這種方式找到的答案是最優的,但我相當肯定它會足夠好的近似值。
這是關於hill climbing的文章。
我認爲Wild Magic庫包含一個橢圓擬合函數。有article與方法描述
問題是定義「最好」。你的情況最好?面積最小的橢圓包含n%的點S?
如果根據概率定義「最佳」,則可以簡單地使用點的協方差矩陣,然後計算誤差橢圓。
對於這種「多元高斯分佈」錯誤橢圓然後將含有相應於任何置信區間,你決定點。
許多計算包可以計算協方差,以及相應的特徵值和特徵向量。橢圓的角度是x軸和與最大特徵值對應的特徵向量之間的角度。半軸是特徵值的倒數。
如果你的程序返回的一切歸一化(應該如此),那麼你可以通過什麼因素決定一切相乘獲得α-置信區間。
的橢圓擬合通過提出的方法:
Z. L. Szpak,W. Chojnacki,和A.範登亨格爾。 帶有置信區域的保證橢圓擬合以及中心,軸和方向的不確定性測量。 J. Math。 J. Math。 Imaging Vision,2015.
您可能會感興趣。它們提供了代數和幾何橢圓參數的估計,以及表示參數估計的不確定性的協方差矩陣。它們還提供了一種計算與估計值相關的平面95%置信區域的方法,其允許人們可視化橢圓擬閤中的不確定性。
紙張的打印預覽版可在作者網站(http://cs.adelaide.edu.au/~wojtek/publicationsWC.html)。 該方法的MATLAB實現也可供下載: https://sites.google.com/site/szpakz/source-code/guaranteed-ellipse-fitting-with-a-confidence-region-and-an-uncertainty-measure-for-centre-axes-and-orientation
是否有任何noice? – 2012-02-12 08:51:35
我假設你的意思是噪音。是的,有噪音。 「最佳擬合」橢圓在散佈點上可能沒有單點。 – Gilad 2012-02-12 08:57:16
你想要正交距離擬合嗎?如果不是,那麼錯誤模型是什麼? – 2012-02-12 08:59:05