问题标签 [pose-estimation]
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.
python - 使用外部姿态估计来改进静止标记轮廓跟踪
假设我有一组传感器,可以让我估算出相对于某个固定矩形标记的姿势。因此,我可以估计标记的轮廓在相机图像中的样子。我如何使用它来更好地检测轮廓?
我试图克服的问题是,有时,标记被遮挡,可能是被一条穿过它的线所遮挡。因此,我留下了两个轮廓,如果合并,将产生标记。我尝试打开和关闭以尝试解决问题,但它对不同类型的照明并不可靠。
我正在考虑的一种方法是使用预测的轮廓,并使用图像的梯度执行局部卷积,以找到我的真实姿势。
有什么想法或建议吗?
c++ - 平面三角形的solvePNP
我有一个非常简单的任务:获取平面三角形的欧拉角。图案看起来像这样
所以,算法:
1)从网络摄像头获取图像——完成
2)转换为灰度、过滤器等——完成
3)获取所有连接组件的质心,并过滤它们——完成。看起来像这样。红色圆圈描述三角形顶点的质心。
代码很简单,但这里是:
4)然后我调用solvePNP来获取旋转和平移向量
m_origin被声明为std::vector<cv::Point3f> m_origin;
并用值填充(以 mm 为单位)
m_imagePoints被声明为std::vector<cv::Point2f> m_imagePoints;
并包含质心的像素坐标(第二个屏幕上的红色圆圈)。
我尝试了什么但对我没有帮助:
1) 在 m_cameraMatrix、m_distMatrix、m_rvec、m_tvec 中使用了 double 和 float 类型
2) 重新排列 m_origin 中的点
3)用solvePnPRansac和它的输入参数玩
4) 使用 pnp 方法:迭代和 epnp
5) useExtrinsicGuess=true - 它有帮助,但有时解决方案会“卡住”并给出完全错误的值(旋转向量中的千度)
我有几个问题:
1)原点和图像点的顺序重要吗?正如这里提到的,有时确实如此,但那是一年前的事了。
2)除了使用solvePnP之外,我的任务可以通过其他方式解决吗?
谢谢。将不胜感激任何帮助!
opencv3.0 - opecv Aruco 标记姿势估计
我正在尝试使用 aruco 标记并估计单个标记的姿势。有时我会得到非常大的值
有没有人遇到过这个问题?
camera - 姿态估计:判断旋转和变换矩阵是否正确
最近,我正在努力解决单个相机的姿势估计问题。我在图像上有一些 3D 点和相应的 2D 点。然后我使用solvePnP来获取旋转和平移向量。问题是,如何确定向量是否是正确的结果?
现在我使用一种间接的方式来做到这一点:
我使用旋转矩阵、平移向量和某个点的世界 3D 坐标来获得该点在 Camera 系统中的坐标。那么我所要做的就是确定坐标是否合理。我想我知道相机系统的 x、y 和 z 轴的方向。
- 相机中心是相机系统的起源吗?
- 现在考虑该点的 x 分量。x是否等于相机与世界空间中Camera x轴方向上的点的距离(符号可以通过该点放置在相机的哪一侧来确定)?
下图在世界空间中,而描绘的轴在相机系统中。
我的 rvec 和 tvec 结果似乎对与错。对于一个指定的点,z 值似乎是合理的,我的意思是,如果这个点在 z 方向上距离相机大约一米,那么 z 值大约是 1。但是对于 x 和 y,根据位置点我认为 x 和 y 应该是积极的,但他们是消极的。更重要的是,在原始图像中检测到的图案是这样的:
但是使用相机系统中计算的点坐标和相机内在参数,我得到这样的图像:
目标保持其模式。但它从右下角移动到左上角。我不明白为什么。
covariance - 基于外观的全局定位的不确定性估计
为了将位置识别算法集成到贝叶斯框架中,我们必须估计由协方差矩阵表示的不确定性。地点识别算法包含一个带有地理标记图像的数据库,对于某个查询,它返回最佳匹配图像j
和全局坐标。估计返回图像中不确定性的最佳方法是什么j
?
c++ - 从相机到物体的距离.. 纠错
我正在估计从相机到棋盘的距离。但是,只要我远离模式,误差就会线性增加。这正常吗?我该如何纠正这个错误?
我使用一个简单的线性方程纠正了这个错误,它可以工作,但它并不像我认为的那样依赖于相机参数,所以纠正将是稳健的:error = 72.51+distNorme*0.0278;
我使用 OpenCV 和我的相机参数按照这些步骤计算与棋盘的距离:
1-找到ChessboardCorners
2-解决即插即用
3- ->与solvePnP给出的平移向量的距离
当我有更好的跟踪模式时,我也会有兴趣纠正旋转和平移错误
c++ - 位姿优化的高斯牛顿实现错误
我正在使用高斯牛顿方法的修改版本来使用 OpenCV 改进姿势估计。未修改的代码可以在这里找到:http: //people.rennes.inria.fr/Eric.Marchand/pose-estimation/tutorial-pose-gauss-newton-opencv.html
相应论文中概述了这种方法的详细信息:
Marchand、Eric、Hideaki Uchiyama 和 Fabien Spindler。“增强现实的姿势估计:动手调查。” IEEE 可视化和计算机图形学交易 22.12 (2016): 2633-2651。
可在此处找到 PDF:https ://hal.inria.fr/hal-01246370/document
相关部分(第 4 页和第 5 页)截屏如下:
这是我所做的。首先,我(希望)“纠正”了一些错误:(a)dt
并且dR
可以通过引用传递给exponential_map()
(即使cv::Mat
本质上是一个指针)。(b) 每个 2x6 雅可比矩阵的最后一个条目J.at<double>(i*2+1,5)
, 是-x[i].y
但应该是-x[i].x
。(c) 我也尝试过使用不同的投影公式。具体来说,包括焦距和主点:
这是我正在使用的相关代码的全部内容(控制从 optimizePose3() 开始):
即使我使用给定的函数,它也不会产生正确的结果。我的初始姿势估计非常接近最优,但是当我尝试运行程序时,该方法需要很长时间才能收敛——当它收敛时,结果非常错误。我不确定可能出了什么问题,而且我没有想法。我相信我的内点实际上是内点(它们是使用 M 估计器选择的)。我已经将指数映射的结果与其他实现的结果进行了比较,他们似乎同意。
那么,这个用于姿势优化的 gauss-newton 实现中的错误在哪里?对于任何愿意伸出援手的人,我都尽量让事情变得简单。让我知道是否还有我可以提供的信息。任何帮助将不胜感激。谢谢。
matlab - 使用 n 点的姿态估计的稳定性
我正在使用棋盘来估计它和相机之间的平移向量。首先,计算相机的内在参数,然后使用从棋盘上检测到的 n 个点估计平移向量。
我发现了一个很奇怪的现象:在棋盘中使用的点越多,平移向量就越准确稳定,而距离越远,这种现象就越明显。例如,棋盘中的方格是1cm*1cm,距离为3m时,使用25个点估计平移向量准确,而使用最小4个点估计不准确且不稳定。但是,当距离为0.6m时,使用4点和25点估计平移向量的结果是相似的,都是准确的。
如何解释这种现象(理论上)?稳定的估计结果与距离、点数有什么关系?
谢谢。
matlab - 如何使用四个点计算相机的旋转矩阵和平移向量
从 3D 物体到 2D 图像平面的透视变换为:
其中 A 是已知的相机参数。
在 Matlab 中,我们可以使用“外在”函数来计算 R 和 T 给定四个对应的图像点和世界点:[u v]
和[X Y]
。
但是,有 13 个变量(包括s
),我们这里只有 12 个方程。(顺便说一句,我设置Z = 0
了,这是对的吗?或者Z
可以是任何值?)。我如何计算s
和?它的数学过程是什么?R
T