这个问题也是别人问我的, 我思考了一些时间, 希望抛砖引玉, 得到更好的方法.
问题是这样的: 有一些离散的点, 在坐标系中把它们拟合成一条曲线, 其中有一段看上去很像是直线, 现在要求出这段"直线"的起始坐标和结束坐标, 并把这条线的方程求出来. 如下图:
从图中可以用肉眼看出标注的那一段近似一条直线, 问题是如果通过程序求出来.
我的想法
我的想法是这样的, 假设这条线是存在的, 那么这条线里的点, 它们相邻两两之间Y之差应该是"相似"的, 具体相似要什么程度, 需要有一个"允许误差值". 在这个允许误差值下, 尽可能多的把这条曲线上连续的点拉拢到一条直线上, 最后根据这些点用最小二乘法就可以求得直线方程了.
获取这些连续的点:
static List<Point> GetSequential(List<Point&