计算机视觉之分组和拟合

为什么要有拟合?(对已有图像信息的整合)
对在低级视觉中利用局部特征提取得到的边缘点可能形成的全局形状的拟合。

1.特征点所属的拟合模型
2.确定模型样子
3.确定总的拟合模型个数

Hough transform
确定拟合对象的参数
做法:
用cell表示模型参数的取值,判断特征点是否在该参数(cell的坐标系表示参数取值)确定的模型上,若在则cell值加1,最终cell中票数最高的cell所表示的参数为拟合模型的参数。
举个例子,如何根据一堆点来确定直线:
设置合适的步长,取多个p和theta,对于每个点计算是否在在这里插入图片描述
若在,则为该参数值加1

四个直线拟合常用方法:
1.最小二乘法
最小化目标函数来求参数
在这里插入图片描述
2.上面方法利用的垂直距离,无法计算垂直于x轴的直线,于是有了总体最小二乘法,ax+by+c表示的是点到直线的距离,最小化目标函数求直线的参数:
在这里插入图片描述3.M估计
最小二乘法对外点很敏感,外点的存在使得直线拟合出现偏差,因为最小二乘法中残差是以平方表示,M估计通过改变目标函数,使得一定范围内的点的残差以平方表示,超出范围的点的残差以常数表示,这样就避免了外点的对目标函数的影响。
下面sigma表示拟合直线是点的范围,sigma太大,外点对拟合产生影响,sigma太小,拟合直线不准确。u表示残差
在这里插入图片描述不同sigma对拟合结果的影响:
在这里插入图片描述4.最小二乘法(中值)
用所有点计算得到的中值残差来表示模型的好坏(不用所有点的残差求和来表示),也抛去了外点的影响
n个待拟合点,从中随机取出p个,求拟合直线,计算p个点到直线的残差,取中值作为评估模型好坏的标准。重复取p个点计算残差,直到残差很小或者达到迭代次数。最小残差对应直线参数就是所拟合直线的参数。

5.RANSAC
上面几个方法是通过改变目标函数,这个方法是不断加入点到拟合直线上。
主要思想:取一个子集(越小越好),拟合出一条直线,对其余的点逐个判断到拟合直线的距离,小于设定的距离值,则为将该点加入该直线中,并记录在直线上的点的个数。不断重复,取子集,拟合直线。最终根据在直线上的点个数小于设定的阈值来剔除部分拟合直线,最终根据更新后的点集来拟合直线,比较残差,残差最小直线参数是要求解的。
在这里插入图片描述

三个拟合多个直线(曲线)模型:
1.Incremental line fitting
已知边缘曲线,点是连续分布:
分为曲线点List 、直线点List 、直线List,对于拟合直线,一旦下一个点不匹配该直线,将该点退回到曲线点List,最终形成多个直线
在这里插入图片描述2.k-means
点是离散的,前提是假设出k条直线(可以是随机的),为每个点分配所属的直线(可以根据点到直线距离远近),分配后的点集再重新拟合直线
在这里插入图片描述3.概率模型

寻找好模型之如何折腾已有的训练数据尽可能找到好的模型(k-fold和分为不同比例训练集+测试集):
最小化训练集上的biased和测试集的variance,自由度越高,biased值越小,但variance值越大。
将训练集分为训练和验证,以不同比例不断划分训练集,来寻找最好的模型。
K-fold Cross-Validation:
训练集划分为k份,第i做测试,其余做训练,寻找最好的模型。

运动分割:
光流法:描述在两张图像在像素平面像素速度大小和方向变化,为了求出在两个方向的速度大小,提出了三个假设:
1.同一个像素点的像素值不变
2.不发生大的偏移
3.邻域一致性,即邻域的像素点也满足(u,v)
利用假设1可得到,但此时一个方程有u,v两个未知数,无法求得u,v
在这里插入图片描述
利用第三个假设,假设考虑邻域的25个像素点
在这里插入图片描述希望能求u和v,先判断是否可解:
计算矩阵的特征值,若两个特征值都很大,则u和v可解。

猜你喜欢

转载自blog.csdn.net/m0_37937932/article/details/85945045