判断逻辑:
1)给出一组点。每次任取3个,然后放到calc_parabola_vertex中求二次曲线的参数
2)以矩阵的形式,计算点到曲线的距离;若小于设定值,则算作内点
3)计算内点概率;若大于之前的概率,则更新概率值,曲线参数。
4)迭代n次,重复上面步骤
5)调用函数,画图
注意:关于calc_parabola_vertex()函数求参。 是用的矩阵形式。 参数最后的表达形式跟【最小二乘法-曲线拟合】中的一样。 可参看推导过程
import numpy as npimport pandas as pdimport csvimport matplotlib.pyplot as pltimport random as rnd# Read data fileheaders = ['x', 'y']df = pd.read_csv('D:/python_train/RANSAC/ransac_sample/Reference/data_2.csv', names=headers)# Extracting x and y columnsx = df['x'].valuesy = df['y'].values# Converting string to floatfor dt in range(0, len(x)): x[dt] = float(x[dt]) y[dt] = float(y[dt])plt.plot(x, y, '.')# Method to ge