问题标签 [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.
machine-learning - prosac算法实现细节、意义和重要性
我知道 Prosac 算法是 Ransac 算法的修改版本,它根据数据点的质量进行采样。但是,我无法理解算法实现的细节。具体来说,我无法理解第 1 步和第 2 步中的两个“如果”。为什么它们在算法中意味着什么,它们的重要性是什么?
参考:
与 PROSAC 匹配——渐进式样本共识http://cmp.felk.cvut.cz/~matas/papers/chum-prosac-cvpr05.pdf
c++ - pcl::RANSAC 分割,获取云中的所有平面?
我有一个点云库功能,可以检测点云中最大的平面。这很好用。现在,我想扩展此功能以分割云中的每个平面并将这些点复制到新的云(例如,房间地板上有一个球体的场景将给我地板和墙壁,但不是球体,因为它不是平面的)。如何扩展以下代码以获取所有飞机,而不仅仅是最大的飞机?(运行时间是这里的一个因素,所以我不希望只是在循环中运行相同的代码,每次都剥离新的最大平面)
image - 仿射变换和 RANSAC:如何计算内点数?
我有 2 张图像,我正在使用 SIFT 来查找匹配的特征。我通过阈值选择了最佳匹配。这样做之后,我尝试使用 RANSAC 来有效地确定两张图片之间的仿射变换矩阵。
根据我对过程的理解(以及互联网上的十亿张幻灯片):
选择 3 个随机对应(计算仿射变换所需的最小值)。
估计 A。
计算内点。
对 N 次试验执行此操作,并选择产生最少内点的 A。
我如何具体计算内点数?
不幸的是,所有示例都集中在回归上(例如找到 2 个点并通过它们拟合一条线,然后根据一些距离进行计数。但在这种情况下,我们谈论的是 3 个对应关系,“线”在这里没有意义。
我在某处读到我们可以使用高斯对噪声进行建模,但我想知道如何进行。
c++ - PCL:SACSegmentationFromNormals 不起作用
我对 PCL 结构 SACSegmentationFromNormals 有疑问。我想用 C++ 做一个圆柱体分割。类似的平面分割工作得很好,但在这里我收到错误消息:
“PCL::SACSegmentationFromNormals::initSACModell 输入数据未给出!无法继续。”
我正在使用 PointXYZRGBA 和 pcl::Normals。有人有想法吗?到目前为止,这是我的代码:
我使用以下库(如果您想知道):
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的参数?
c++ - 3-D 平面过滤 EVD RANSAC ......我哪里出错了?
背景
对于计算机视觉任务,我的任务是实施 RANSAC 以将平面拟合到给定的一组点,并使用特征值分解通过共识模型过滤输入的点列表。
我花了几天时间尝试调整我的代码,以在一组输入测试数据上实现正确的平面过滤行为。你所有的算法迷,这个是给你的。
我的实现使用 ROS 数据结构(Point32)的向量作为输入,但这对于手头的问题是透明的。
我做了什么
当我测试预期的平面过滤行为(正确消除异常值 >95-99% 的时间)时,我看到在我的实现中我只消除异常值并提取测试点云的主平面 ~30-40%时间。其他时候,我过滤了一个~有点~符合预期模型的平面,但在共识模型中留下了很多明显的异常值。这完全有效的事实表明我正在做一些正确的事情,而有些事情是错误的。
我已经将我的常数(距离阈值、最大迭代次数、估计的点拟合百分比)调整到伦敦并返回,我只看到共识模型中的微小差异。
实施(长)
来自维基百科的伪代码供参考:
我的实现和维基百科伪代码之间的唯一区别如下:
我的猜测是,我需要做一些相关的事情,将 (closest_eval) 与一些哨兵值进行比较,以获得与倾向于适合模型的平面的法线相对应的预期最小特征值。但是,这在课堂上没有涉及,我不知道从哪里开始找出问题所在。
python - 使用 scikit-image 的 ransac 进行稳健的极线几何估计
skimage.measure.ransac
在估计一对图像的基本矩阵时,我无法实现稳健的性能。与 OpenCV 的findFundamentalMatrix
.
我在同一组关键点上运行 skimage 和 opencv 的 ransac,并使用(我假设是)等效参数。我使用与OpenCV python tutorials相同的图像对。
这是我的演示脚本:
和输出:
我使用从不同随机种子中获得的内点的方差之和作为鲁棒性的度量。
我希望这个数字非常接近于零,因为真正强大的 ransac 应该收敛到相同的模型,而与它的随机初始化无关。
我怎样才能使 skimage 的ransac
行为像 opencv 一样健壮?
我的代码主要基于:
后期编辑:我最后也在 skimage 邮件列表上问了这个问题,结果发现不一致可能是由每个库中计算模型错误的不同方式引起的。
这没有回答我原来的问题,所以我没有将其标记为已解决,但是我发现它足够令人满意,我停止了进一步的追求。
对于任何感兴趣的人,邮件列表中的 Johannes 建议重新实现残差计算FundamentalMatrixTransform
以使用点到极线距离而不是 Sampson 误差应该是朝着正确方向迈出的一步。