最近看一些文档发现,关于采用最小二乘法拟合直线,很多文章习惯性的将矩阵空间拓展成多维的空间,阅读理解起来都有很大的不便性,本人在图像处理实际应用中,都是二维空间的,故只做了二维空间内的理解,个人理解如下:
(1)所求的直线方程可以理解如下: Y = aX + b;
假设有已知的n个样本 (Xi, Yi);根据(Xi, Yi),求直线方程的系数:a、b
(2)假设求出了(a,b);在验证的时候,需要将样本代入拟合的方程,对于每个变量,都会有对应的误差值(Ei);对于每个样本,都可以写成如下形式:
Yi = aXi + b + ei; 条件:Q = min{ ∑ei²},
当Q满足时,可以保证整体的样本失真误差最小,虽然有个别的样本的误差值会偏大,我觉得可以在验证阶段可以排除;得到的解(a,b)为最优解.
故求(a,b)最优解, 就是求函数:Q = ∑(a*Xi + b -Yi)² 的最小值;
由于 Q(a,b) 为凸函数,当Q对于 a,b 方向上的偏导为 0时,求得的解为最优解;
Q在a,b 方向上的偏导、和结果如下图
根据图中所示,(Xi, Yi)都是已知量,故可求出 a、b
于是所拟合的直线就求出来了。
(3)验证阶段
在实际的采样计算中,由于个别样本并不在直线上;比如我们实际应用中,先是求出可能是边上的点的坐标,然后根据这些点拟合直线;故初次求得直线系数后,需要对样本进行置信度判断,故在实际的拟合直线过程中,需要设定置信区间,便于求出直线方程后,找到在置信区间内的样本,进行优化,得到(a’, b’);
那么,在AOI中,可否,根据所求直线,找到满足一定梯度的边缘点,根据这些点的误差,来判断是否有缺陷呢?个人觉得可以尝试研究研究。后续补充自己愚见。
(4)相关代码的实现就不写了。