问题标签 [ransac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
111 浏览

python - 图像配准 + 带状图像

我目前正在处理图像配准/图像对齐问题。为了说明这个问题,让我们假设图像像素发生了偏移。

目前我尝试了以下方法:

  • 使用 SURF 进行特征提取
  • 应用 Homography + RANSAC

即使那样,由于图像的条带,图像仍存在未对齐的情况。我想解决是否无论如何我们可以纠正图像的条带以以适当的方式对齐。

带状图像 - 像素偏移 在此处输入图像描述

参考图像 在此处输入图像描述

目前我正在使用OpenCV and Python进行分析。

0 投票
1 回答
1886 浏览

matlab - 使用 RANSAC 进行线拟合

我正在做一个图像处理项目,基本上是使用图像处理技术矢量化手绘图像。我在我的项目中使用 RANSAC。我面临的挑战是该算法没有按要求执行最佳拟合,但它使用任意两个随机点并绘制一条连接它们的线,如下图所示。

RANSAC 结果

在此处输入图像描述

在矢量化手绘图像的算法中,我还使用形态运算符进行了灰度缩放、图像阈值化(图像二值化)和骨架化。

我正在为我的项目使用 MATLAB。

以下是我到目前为止所做的代码

0 投票
1 回答
765 浏览

machine-learning - prosac算法实现细节、意义和重要性

我知道 Prosac 算法是 Ransac 算法的修改版本,它根据数据点的质量进行采样。但是,我无法理解算法实现的细节。具体来说,我无法理解第 1 步和第 2 步中的两个“如果”。为什么它们在算法中意味着什么,它们的重要性是什么?

算法

参考:

与 PROSAC 匹配——渐进式样本共识http://cmp.felk.cvut.cz/~matas/papers/chum-prosac-cvpr05.pdf

0 投票
2 回答
13090 浏览

c++ - pcl::RANSAC 分割,获取云中的所有平面?

我有一个点云库功能,可以检测点云中最大的平面。这很好用。现在,我想扩展此功能以分割云中的每个平面并将这些点复制到新的云(例如,房间地板上有一个球体的场景将给我地板和墙壁,但不是球体,因为它不是平面的)。如何扩展以下代码以获取所有飞机,而不仅仅是最大的飞机?(运行时间是这里的一个因素,所以我不希望只是在循环中运行相同的代码,每次都剥离新的最大平面)

0 投票
1 回答
2972 浏览

image - 仿射变换和 RANSAC:如何计算内点数?

我有 2 张图像,我正在使用 SIFT 来查找匹配的特征。我通过阈值选择了最佳匹配。这样做之后,我尝试使用 RANSAC 来有效地确定两张图片之间的仿射变换矩阵。

根据我对过程的理解(以及互联网上的十亿张幻灯片):

  1. 选择 3 个随机对应(计算仿射变换所需的最小值)。

  2. 估计 A。

  3. 计算内点。

对 N 次试验执行此操作,并选择产生最少内点的 A。

我如何具体计算内点数?

不幸的是,所有示例都集中在回归上(例如找到 2 个点并通过它们拟合一条线,然后根据一些距离进行计数。但在这种情况下,我们谈论的是 3 个对应关系,“线”在这里没有意义。

我在某处读到我们可以使用高斯对噪声进行建模,但我想知道如何进行。

0 投票
0 回答
27 浏览

computer-vision - 关于 RANSAC 的论文中可能出现的错误

问题来自

Raguram, R., Chum, O., Pollefeys, M., Matas, J., & Frahm, JM (2013)。Usac:随机样本共识的通用框架。IEEE 模式分析与机器智能汇刊,35(8),2022-38。

在第 2.2.3 节中,它指出:在此处输入图像描述

据我了解,epsilon数据集中内点的比例在此处输入图像描述是否会大于1,谁能帮忙?

0 投票
1 回答
877 浏览

c++ - PCL:SACSegmentationFromNormals 不起作用

我对 PCL 结构 SACSegmentationFromNormals 有疑问。我想用 C++ 做一个圆柱体分割。类似的平面分割工作得很好,但在这里我收到错误消息:

“PCL::SACSegmentationFromNormals::initSACModell 输入数据未给出!无法继续。”

我正在使用 PointXYZRGBA 和 pcl::Normals。有人有想法吗?到目前为止,这是我的代码:

我使用以下库(如果您想知道):

0 投票
0 回答
292 浏览

python - 在 OpenCV 中从具有姿势的棋盘中检索平行平面

我在 Python3 上使用 OpenCV,我想获得一个棋盘角的位置,其尺寸pattern_size在一个平行于我所拥有的棋盘的一个平面上,垂直位移一个特定的值fdz(在棋盘中侧单位)。为了实现这一点,我以这种方式修改了可以在https://docs.opencv.org/3.1.0/d7/d53/tutorial_py_pose.html中找到的姿势算法:

这适用于某些图像(原始图像),而对于其他一些图像则可以: 输出图像。你对这个问题有什么建议吗?我最好的猜测是我还没有完全理解如何cv2.solvePnPRansac工作cv2.projectPoints

编辑

我确实发现问题是由于 RANSAC 算法造成的:在这里您可以看到应用的结果,cv2.solvePnP而不是cv2.solvePnPRansac像以前一样应用于同一图像;但是,这似乎只发生在棋盘和相机法线之间的角度大于某个阈值的情况下,低于该阈值脚本可以正常工作。

但是,使用和不使用 RANSAC 步骤的结果略有不同,因此尝试包含它可能会很有用。你知道为什么会发生这种情况吗?有没有办法控制算法中RANSAC的参数?

0 投票
1 回答
313 浏览

c++ - 3-D 平面过滤 EVD RANSAC ......我哪里出错了?

背景

对于计算机视觉任务,我的任务是实施 RANSAC 以将平面拟合到给定的一组点,并使用特征值分解通过共识模型过滤输入的点列表。

我花了几天时间尝试调整我的代码,以在一组输入测试数据上实现正确的平面过滤行为。你所有的算法迷,这个是给你的。

我的实现使用 ROS 数据结构(Point32)的向量作为输入,但这对于手头的问题是透明的。

我做了什么

当我测试预期的平面过滤行为(正确消除异常值 >95-99% 的时间)时,我看到在我的实现中我只消除异常值并提取测试点云的主平面 ~30-40%时间。其他时候,我过滤了一个~有点~符合预期模型的平面,但在共识模型中留下了很多明显的异常值。这完全有效的事实表明我正在做一些正确的事情,而有些事情是错误的。

我已经将我的常数(距离阈值、最大迭代次数、估计的点拟合百分比)调整到伦敦并返回,我只看到共识模型中的微小差异。

实施(长)

来自维基百科的伪代码供参考:

我的实现和维基百科伪代码之间的唯一区别如下:

我的猜测是,我需要做一些相关的事情,将 (closest_eval) 与一些哨兵值进行比较,以获得与倾向于适合模型的平面的法线相对应的预期最小特征值。但是,这在课堂上没有涉及,我不知道从哪里开始找出问题所在。

0 投票
0 回答
867 浏览

python - 使用 scikit-image 的 ransac 进行稳健的极线几何估计

skimage.measure.ransac在估计一对图像的基本矩阵时,我无法实现稳健的性能。与 OpenCV 的findFundamentalMatrix.

我在同一组关键点上运行 skimage 和 opencv 的 ransac,并使用(我假设是)等效参数。我使用与OpenCV python tutorials相同的图像对。

这是我的演示脚本:

和输出:

我使用从不同随机种子中获得的内点的方差之和作为鲁棒性的度量。

我希望这个数字非常接近于零,因为真正强大的 ransac 应该收敛到相同的模型,而与它的随机初始化无关。

我怎样才能使 skimage 的ransac行为像 opencv 一样健壮?


我的代码主要基于:


后期编辑:我最后也在 skimage 邮件列表上问了这个问题,结果发现不一致可能是由每个库中计算模型错误的不同方式引起的。

这没有回答我原来的问题,所以我没有将其标记为已解决,但是我发现它足够令人满意,我停止了进一步的追求。

对于任何感兴趣的人,邮件列表中的 Johannes 建议重新实现残差计算FundamentalMatrixTransform以使用点到极线距离而不是 Sampson 误差应该是朝着正确方向迈出的一步。