首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成RANSAC计算本质矩阵

集成RANSAC计算本质矩阵
EN

Stack Overflow用户
提问于 2017-12-27 16:38:05
回答 1查看 888关注 0票数 0

我用五点算法计算了基本矩阵。我不知道如何将它与ransac集成,因此它给了我一个更好的结果。

这是源代码。https://github.com/lunzhang/openar/blob/master/src/utils/5point/computeEssential.js

目前,我正在考虑计算5个随机点的基本矩阵,然后将基本矩阵转换为基本矩阵,然后使用这个方程x‘’Fx= 0看到误差阈值。但之后我不确定该怎么办。

我如何知道应该将哪些点设置为外列者?如果错误太大,我是否立即将它们设置为副词?根据其他4个点的不同,某一点能产生不同的基本矩阵吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-27 20:43:41

好的,下面是一个简短的解释,用伪代码说明如何将它与ransac集成。基本上,Ransac所做的就是使用数据的子集计算您的模型(这里是必需的),然后查看其他数据是否“满意”该结果。它保存数据集中最高部分“高兴”的结果。

代码语言:javascript
复制
highest_number_of_happy_points=-1;
best_estimated_essential_matrix=Identity;

for iter=1 to max_iter_number:    
    n_pts=get_n_random_pts(P);//get a subset of n points from the set of points P. You can use 5, but you can also use more.

    E=compute_essential(n_pts);

    number_of_happy_points=0;
    for pt in P:
        //we want to know if pt is happy with the computed E
        err=cost_function(pt,E);//for example x^TFx as you propose, or X^TEX with the essential.
        if(err<some_threshold):
            number_of_happy_points+=1; 
    if(number_of_happy_points>highest_number_of_happy_points):
        highest_number_of_happy_points=number_of_happy_points;
        best_estimated_essential_matrix=E;

这应该能起作用。通常,您将some_threshold设置为低值。当然还有更复杂的Ransacs,你可以很容易地通过谷歌找到它们。

在我看来,您使用x^TFx的想法很好。

一旦这个Ransac完成,您将拥有best_estimated_essential_matrix。异常值是指具有大于可选阈值的x^TFx值的异常值。

为了回答你的最后一个问题,是的,一个点可以产生一个不同的矩阵给出4个不同的点,因为它们的空间配置是不同的(你可以有退化的情况)。在理想的情况下,情况不是这样,但是我们总是有噪声,匹配误差等等,所以最终发生的是,你得到的5点方程不会产生与其他5个点完全相同的结果。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47995636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档