问题标签 [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.
c++ - 如果已知外在参数和内在参数,则从 2D 图像像素获取 3D 坐标
我正在从 tsai algo 进行相机校准。我得到了内在和外在矩阵,但是如何从该信息中重建 3D 坐标?
1) 我可以使用高斯消除来找到 X、Y、Z、W,然后点将是 X/W、Y/W、Z/W 作为齐次系统。
2)我可以使用
OpenCV 文档方法:
据我所知u
,,,,,我可以v
计算R
。t
X,Y,Z
然而,这两种方法最终都会产生不正确的不同结果。
我在做什么错?
c++ - c ++获取世界坐标中的相机位置(opencv)
好的解决了。首先,我将使用 Matlab 工具和 chessboardthingie 来获取内在参数。我将使用 cv::solvePnP()
是的,我使用了搜索,但不幸的是它并没有帮助我很多。
正如标题所说,我必须在现实世界中找到相机坐标。但我也面临一些关于 opencv 命令的问题。到目前为止,我知道图像中的一些点和相应的世界坐标。(已知最坏情况 6 分)
为了获得相机坐标,我想到了使用公式:
transp(x,y,z)= - transp(R)*t ,其中 R 和 t 是外部参数
所以现在我的问题是:如何计算 R 和 t ?我的意思是是否存在解决此问题的 opencv 函数?因为实际上有很多相机校准功能。还是我必须先计算内在参数?
编辑:这是我的意思的功能:http: //opencv.willowgarage.com/documentation/python/calib3d_camera_calibration_and_3d_reconstruction.html#calibratecamera2
但我不知道参数应该是什么样子。如何手动初始化例如 3x6 矩阵,例如 cv::Mat ([[x1] [y1] [z1]] .... [[x6] [y6] [z6]])
opencv - 如何找到增强现实的相机矩阵?
我想在 x,y,z 米 wrt 相机上增加一个虚拟对象。OpenCV 具有相机校准功能,但我不明白我如何准确地给出以米为单位的坐标
我尝试在 Unity 中模拟相机,但没有得到预期的结果。
我将投影矩阵设置如下,并在 z = 2.415 + 0.5 创建一个单位立方体。哪里 2.415 是眼睛和投影平面之间的距离(针孔相机模型) 由于立方体的面位于前剪切平面并且它的尺寸是单位不应该覆盖整个视口吗?
opencv - 基于模型的姿态估计
我想通过使用 opencv 来估计已知 3D 对象的位姿。如果给出了 3D 模型的点及其在图像上的对应点,我可以使用 solvePnP。我的问题是:如何找到已知 3D 模型与其在图像上的投影之间的对应关系?十分感谢
opencv - 从图像点计算 x,y 坐标 (3D)
我的任务是在 3D 坐标系中定位对象。由于我必须获得几乎精确的 X 和 Y 坐标,我决定跟踪一个已知 Z 坐标的颜色标记,该颜色标记将放置在移动对象的顶部,例如这张图片中的橙色球:
首先,我已经完成了相机校准以获取内在参数,然后我使用 cv::solvePnP 来获取旋转和平移向量,如下面的代码所示:
在拥有所有矩阵之后,这个方程可以帮助我将图像点转换为世界坐标:
其中 M 是 cameraMatrix,R - rotationMatrix,t - tvec,s 是未知数。Zconst 表示橙色球所在的高度,在本例中为 285 mm。所以,首先我需要解上一个方程,得到“s”,然后我可以通过选择图像点找出X和Y坐标:
解决这个问题我可以找到变量“s”,使用矩阵中的最后一行,因为 Zconst 是已知的,所以这里是下面的代码:
在此之后,我得到了结果:P = [-2629.5, 1272.6, 285.]
当我将其与测量进行比较时,即:Preal = [-2629.6, 1269.5, 285。]
误差非常小,非常好,但是当我将这个盒子移动到这个房间的边缘时,误差可能是 20-40 毫米,我想改进它。任何人都可以帮助我,你有什么建议吗?
opengl - 使用 2 个摄像头进行头部姿势估计
我正在使用 2 个摄像头进行头部姿势估计项目。对于一个相机系统工作并返回头部相对于每个相机坐标系的旋转矩阵和平移向量。我在 OpenGL 场景中渲染了对象,该对象被旋转和平移以表示头部运动。要显示计算的旋转矩阵和平移向量,我只需使用以下 OpenGL 命令。
其中姿势矩阵是由头部的旋转矩阵和平移向量构造的 OpenGL ModelView 矩阵。
现在我正在尝试为 2 个校准的相机执行此操作。当第一个相机丢失了脸部的轨迹但第二个相机估计了头部姿势时,我会显示相对于第二个相机的旋转和平移,反之亦然。我想显示一个 OpenGL 对象并为这两种情况移动它。为此,我需要将姿势矩阵转移到公共坐标系中。
我知道 2 个相机相对于彼此的相对几何形状。我假设其中一个相机是世界坐标系,我通过将第二个相机的位姿矩阵和第二个相机的校准矩阵相对于第一个相机相乘,将第二个相机的头部姿势矩阵转移到第一个相机的框架。当我将此相乘矩阵加载到 OpenGL ModelView 矩阵中时,我得到了错误的结果。当第一台相机捕捉到人脸时,对象正在向右移动,但对于第二台相机,对象被平移和旋转,并且与第一台相机的情况不同。
可能是什么问题呢?也许OpenGL显示部分是错误的或者?
opencv - 打开 CV Surf 并 FindExtrinsicCameraParams2
是否可以使用 FindExtrinsicCameraParams2 来获取姿势矩阵,而不是使用带有 SURF 特征检测的单应性分解?
opencv - OpenCV::solvePNP() - 断言失败
我试图在 OpenCV 的 solvePNP() 的帮助下获得相机的姿势。
运行我的程序后,我收到以下错误:
我试图搜索如何解决这些错误,但不幸的是我无法解决!
这是我的代码,非常感谢所有评论/帮助:
编辑(一些调试信息):
我逐行调试它。我踏入了所有的功能。我在 SolvePNP(...) 中得到断言失败。当我进入solvePNP函数时,您可以在下面看到我看到的内容。首先它跳过第一个 if 语句 / if(vec.empty()) /,然后进入第二个 if 语句 / if( !copyData ) /,当它执行最后一行 /*datalimit = dataend = datastart + rows *step[0]*/ 跳回到第一个 if 语句并返回 =>,然后我得到 Assertion failed 错误。
opencv - 平面物体单应性计算和位姿估计
我正在尝试在 OpenCV 中实现我自己的 Homography 和 Pose 估计。假设我有一个方形图像作为模型,我想在相机的输入帧中定位它。我的问题是关于如何准备模型数据来计算 Homography。
我做了以下程序:
1-我在两个图像中提取了 3 个对应的集合。
2-解决P3P问题:
a) 使用相机内在参数对输入点进行归一化:
b) 归一化长度以获得单位向量:
c) 通过求解 p3p 并存储在 a、b 和 c 中找到 u 和相机焦点之间的距离。(v 和 w 相同)
d) 计算 3D 坐标:
3-计算单应性
我的问题出现在这里。我应该如何准备和修改p1_model,p2_model and p3_model
以便为 Homography 计算做好准备?
显然 A_Input
是具有归一化日期的 3D 矢量,而p1_model
以像素为单位的 2D 矢量。
解决问题后剩下的内容如下:
a) 为这两个集合找到中心点。
b) 使用这个公式点产品找到 H
4- 使用 H 和 SVD 找到刚性变换