1. 参考文献
RANSAC 直线拟合算法
2. 算法实现
#include <iostream>
#include <random>
#include <vector>
#include <memory.h>
#include <set>
// Date: 2018-01-09
// Author: HSW
//
// RANSAC 直线拟合算法
// 其他的类似
//
using namespace std;
typedef struct st_Point
{
double x;
double y;
}st_Point;
// 基于RANSAC算法的直线拟合
// pstData: 指向存储数据的指针
// dataCnt: 数据点个数
// lineParameterK: 直线的斜率
// lineParameterB: 直线的截距
// minCnt: 模型(直线)参数估计所需的数据点的个数
// maxIterCnt: 最大迭代次数
// maxErrorThreshold: 最大误差阈值
// consensusCntThreshold: 模型一致性判断准则
// modelMeanError: 模型误差
// 返回值: 返回0表示获取最优模型, 否则表示未获取最优模型
int ransacLiner(st_Point* pstData, int dataCnt, int minCnt, double maxIterCnt, int consensusCntThreshold, double maxErrorThreshod, double& A, double& B, double& C, double& modelMeanError)
{
default_random_engine rng;
uniform_int_distribution<unsigne