线性参数估计方法之比较 LS、WLS、Ransac LS、LMedS

news/2024/7/21 3:48:40 标签: 图像处理
四种参数估计算法的简单描述:
    LS既是最小方差,以此作为目标函数求解参数估计值的方法称为最小方差估计,SVD分解是目前解决这一问题的最有效手段。
    WLS既是带权重的最小方差,其思想是将每个输入的样本赋予权值,初始时每个样本的权值相等,然后使用所有带权重的样本估计模型的参数,得到参数后,计算每个样本与模型的偏差,再根据偏差决定样本的新权重,偏差越大则权重越小,然后重复模型参数估计与权重更新这个过程,直到样本的带权偏差和收敛为止。
    Ransac是一种随机参数估计算法。Ransac LS从样本中随机抽选出一个样本子集,使用LS对这个子集计算模型参数,然后计算所有样本与该模型的偏差,再使用一个预先设定好的阈值与偏差比较,当偏差小于阈值时,该样本点属于模型内样本点(inliers),否则为模型外样本点(outliers),记录下当前的inliers的个数,然后重复这一过程。每一次重复,都记录当前最佳的模型参数,所谓最佳,既是inliers的个数最多,此时对应的inliers个数为best_ninliers。每次迭代的末尾,都会根据期望的误差率、best_ninliers、总样本个数、当前迭代次数,计算一个迭代结束评判因子,据此决定是否迭代结束。迭代结束后,最佳模型参数就是最终的模型参数估计值。
    LMedS也是一种随机参数估计算法。LMedS也从样本中随机抽选出一个样本子集,使用LS对子集计算模型参数,然后计算所有样本与该模型的偏差。但是与Ransac LS不同的是,LMedS记录的是所有样本中,偏差值居中的那个样本的偏差,称为Med偏差(这也是LMedS中Med的由来),以及本次计算得到的模型参数。由于这一变化,LMedS不需要预先设定阈值来区分inliers和outliers。重复前面的过程N次,从中N个Med偏差中挑选出最小的一个,其对应的模型参数就是最终的模型参数估计值。其中迭代次数N是由样本集子中样本的个数、期望的模型误差、事先估计的样本中outliers的比例所决定。

四种算法的简单分析:
    LS将所有样本参与最后的参数估计计算,不能剔除输入样本中的outliers。这些outliers会给参数估计带来极大的影响,使得估计结果变得很差。
    WLS一定程度上可以削弱outliers对整体的影响,但是WLS有可能陷入局部极值,这与梯度下降法有类似之处。
    Ransac理论上可以剔除outliers的影响,并得到全局最优的参数估计。但是Ransac有两个问题,首先在每次迭代中都要区分inliers和outlieres,因此需要事先设定阈值,当模型具有明显的物理意义时,这个阈值还比较容易设定,但是若模型比较抽象时,这个阈值就不那么容易设定了,而且固定阈值不适用于样本动态变化的应用;第二个问题是,Ransac的迭代次数是运行期决定的,不能预知迭代的确切次数(当然迭代次数的范围是可以预测的)。
    LMedS理论上也可以剔除outliers的影响,并得到全局最优的参数估计,而且客服了Ransac的两个缺点(虽然LMedS也需要实现设定样本中outliers的比例,但这个数字比较容易设定)。但是当outliers在样本中所占比例达到或超过50%时,LMedS就无能为力了!这与LMedS每次迭代记录的是“Med”偏差值有关!

http://www.niftyadmin.cn/n/1002404.html

相关文章

架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)

一、序言 Hadoop是一个技术生态圈,zookeeper是hadoop生态圈里一个非常重要的技术,当我研究学习hadoop的相关技术时候,有两块知识曾经让我十分的困惑,一个是hbase,一个就是zookeeper,hbase的困惑源自于它在颠…

【Android API】Android 4.1 API官方文档详解

原文:http://android.eoe.cn/topic/summary 翻译:【eoeAndroid原创团队】kris、流风而逝、贼寇在何方、snowxwyo、lsy4833406 更新日期:2012-06-28 Android 4.1 (Jelly Bean)发布了,这次发布包含了一些性能及用户体验上面的优化。…

SQL 学习日志03

添加表内容:insert into table_name (字段1,字段2,...) values (值1,值2,....) 查询表内容:select * from table_name select 字段1,字段2 from table_nameselect top 10 * from table_name select * from table_name where 字段值select * from table_…

Wince 5.0 获取U盘描述符

最近由于项目需求,需要获取U盘的描述符。而现有的usb otg驱动中没有提供这样的接口。没有办法,只能自己动手来修改了。本人刚开始接触USB 驱动,在代码的海洋中还比较迷茫。以下代码的实现是公司内一位大牛所作,本人只是借来学习一…

RANSAC LMedS 详细分析

RANSAC的经典步骤是 1. 随机采样 2. 计算模型参数 3. 阈值分类inlier outlier 4. 迭代2. 3.步直至获得符合阈值的最优解 5. 精确优化模型参数(LM算法迭代优化) RANSAC的函数接口 参照opencv来说主要需要3-4个参数(第四个不是必须的&…

Fortran并行计算的一些例子

以下例子来自https://computing.llnl.gov/tutorials/openMP/exercise.html网站 一、打印线程(Hello world) C****************************************************************************** C FILE: omp_hello.f C DESCRIPTION: C OpenMP Example …

LeetCode OJ - Subsets 1 2

这道题的做法,一定得掌握啊!!! elegant & beautiful & concise 下面是AC代码: 1 /**2 * Given a set of distinct integers, S, return all possible subsets.3 * 这道题的做法应该要记住&#…

HDOJ题目分类

模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202…