问题标签 [extrinsic-parameters]

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 投票
1 回答
2533 浏览

opencv - 如何使用opencv找到具有内在和外在参数的点的3d位置

我想用opencv找到一个点的位置。我使用 cvCalibrateCamera2 校准了两个相机。所以我知道内在和外在参数。我读到使用已知的内在和外在参数,我可以通过三角测量轻松重建 3d。opencv 中是否有实现此功能的功能。我认为 cvProjectPoint2 可能有用,但我不明白到底是什么。那么我如何找到一个点的 3d 位置。

谢谢。

0 投票
0 回答
1945 浏览

matlab - 2D Homography 的内在和外在参数

我有一个图像。我有(例如,15 个)2d 投影点(x[pixel],y[pixel])和相应的(X,Y,Z)(m)。所有点都在同一平面上。

3D 点转换为 2D

Xtrans=X./Z;Ytrans=Y./Z; Ztrans=0;

现在我已经按照 Hartley 和 Zisserman 给出的归一化直接线性变换算法计算了 2d 单应性(H3*3=[...];)。

我想获得 intransic 和 extransic 参数。我找不到解决此问题的任何链接和代码。有人可以指导我。问候

0 投票
2 回答
10986 浏览

matlab - 如何根据已知的内在和外在参数在 Matlab 中进行透视校正?

我正在使用 Matlab 使用Jean-Yves Bouget 的相机校准工具箱进行相机校准。我有校准过程中的所有相机参数。当我使用不在校准集中的新图像时,我可以得到它的变换方程,例如 Xc=R*X+T,其中 X 是世界框架中校准装置(平面)的 3D 点,Xc 是它的坐标相机框架。换句话说,我拥有一切(外在参数和内在参数)。

我想要做的是对此图像执行透视校正,即我希望它移除任何透视并看到校准装置不失真(它是一个棋盘)。

Matlab 的新计算机视觉工具箱有一个对象,它对图像执行透视变换,给定一个 3X3 矩阵 H。问题是,我无法从已知的内在和外在参数计算这个矩阵!

0 投票
2 回答
7910 浏览

math - 如何根据相机校准数据绘制相机和图像位置?

我有相机的内在和外在参数。外部是一个带有旋转和平移的 4 x 4 矩阵。

我有下面的示例数据,每张相机图像我都有一个。

我想绘制Matlab 校准工具包页面 相机居中上给出的图像,或者以世界为中心 但是我无法弄清楚如何绘制这两个图像的数学。

我唯一的线索来自这个页面http://en.wikipedia.org/wiki/Camera_resectioning。这告诉我可以通过 C = − R` 找到相机位置。吨

知道如何完成这项任务吗?

0 投票
1 回答
2706 浏览

opencv - OpenCV 校准参数和立体相机的 3d 点变换

我有 4 个 ps3eye 相机。我已经使用棋盘图案的OpenCV库的cvStereoCalibrate()函数校准了camera1和camera2,方法是找到角点并将它们的3d坐标传递给这个函数。

此外,我还使用camera2和camera3查看的另一组棋盘图像校准了camera2和camera3。

使用相同的方法,我校准了 camera3 和 camera4。

所以现在我有了camera1和camera2的外在参数和内在参数,camera2和camera3的外在参数和内在参数,以及camera3和camera4的外在参数和内在参数。

其中外部参数是旋转和平移矩阵,内部参数是焦距和主点矩阵。

现在假设有一个 3d 点(世界坐标)(而且我知道如何从立体相机中找到 3d 坐标),它被 camera3 和 camera4 查看,而 camera1 和 camera2 没有看到。

我的问题是:你如何获取camera3和camera4查看的这个3d世界坐标点,并使用旋转、平移、焦点和主点参数相对于camera1和camera2的世界坐标系对其进行转换?

0 投票
1 回答
3047 浏览

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]])

0 投票
3 回答
3881 浏览

computer-vision - 如何计算一台摄像机相对于第二台摄像机的外参?

我已经针对某个世界坐标系校准了 2 个相机。我知道它们每个相对于世界框架的旋转矩阵和平移向量。从这些矩阵如何计算一个相机相对于另一个相机的旋转矩阵和平移向量?

请提供任何帮助或建议。谢谢!

0 投票
3 回答
6405 浏览

opengl - 使用opencv确定外部相机到带有世界空间对象的opengl

我正在使用opencv和openframeworks(即opengl)从图像(以及后来的几个用于三角测量的图像)计算相机(世界变换和投影矩阵)。

就opencv而言,“平面图”变成了世界中心为0,0,0的对象(即棋盘)。世界/地面位置是已知的,因此我需要获取投影信息(失真系数、fov 等)和相机的外部坐标。

二维输入坐标

我已将这些平面图点的视图位置映射到规范化视图空间中的 2D 图像([0,0] 是左上角。[1,1] 是右下角)。

对象(平面图/世界点)在 xz 平面上,-y 向上,所以我转换为 xy 平面(这里不确定 z-up 是负数还是正数......)因为它需要是平面的

我将 1,1 作为 ImageSize 传递给 calibrateCamera。标志CV_CALIB_FIX_ASPECT_RATIO|V_CALIB_FIX_K4|CV_CALIB_FIX_K5 calibrateCamera运行成功,给我一个低错误(通常在 左右0.003)。

使用calibrationMatrixValues我得到一个合理的 FOV,通常在 50 度左右,所以我很确定内在属性是正确的。

现在来计算相机的外部世界空间变换......我不相信我需要使用solvePnP,因为我只有一个对象(尽管我之前尝试过所有这些并得到相同的结果)

现在我有一个旋转和变换矩阵,但它是主要的列(我相信如果我不转置,对象会完全倾斜,并且上面的代码对我来说看起来主要是列)

使用之前的矩阵的逆将我的飞机交换回我的坐标空间(y 向上)。

不确定我是否需要这样做...当我将飞机放入校准时,我并没有否定它们...

最后,模型视图是相对于相机的对象,我想将其反转为相对于相机的对象(0,0,0)

输出 3D 视图

这导致相机在错误的位置,并且旋转错误。距离不算太远,相机在 Y 平面的右侧,平移也不是很偏,而且我认为这是正确的方向……只是还不正确。油漆绘制的蓝色圆圈是我期望相机所在的位置。

我已经阅读了大量的 SO 答案,文档十几次,但没有找到任何正确的东西,我很确定我已经涵盖了空间转换所需的所有内容,但也许我错过了一些明显的东西? 还是以错误的顺序做某事?

更新 1 - 世界空间平面... 我已将世界空间平面更改为 XY(Z up) 以匹配 openCV 的输入。(gWorldToCalibration 现在是一个单位矩阵)。旋转仍然是错误的,投影输出是一样的,但我认为现在翻译是正确的(它肯定在标记的正确一侧) XY 平面上的 3D 视图

Update2 - 真实图像尺寸 我正在使用进入相机校准的图像尺寸;看到我使用的是标准化的 1,1,但 imageSize 参数是整数,我认为这可能很重要......我猜它是(红色框是投影视图空间点与 z 相交的位置=0 平面)没有任何失真校正,结果如下(唯一改变的是图像大小从 1,1 到 640,480。我也将标准化的输入视图空间坐标乘以 640,480) 在此处输入图像描述 我将尝试添加失真更正,看看它是否完美排列......

0 投票
3 回答
19491 浏览

opencv - 相机姿态估计(OpenCV PnP)

我正在尝试使用我的网络摄像头从具有已知全局位置的四个基准点的图像中获得全局姿态估计。

我检查了许多 stackexchange 问题和一些论文,但似乎无法得到正确的解决方案。我得到的位置数字是可重复的,但绝不与相机移动成线性比例。仅供参考,我正在使用 C++ OpenCV 2.1。

在此链接上显示了我的坐标系和下面使用的测试数据。

到目前为止,有人能看出这些数字有什么问题吗?如果有人将它们签入例如 MatLAB(上面的代码对 m 文件友好),我将不胜感激。

从这一点来看,我不确定如何从 rMat 和 tVec 获得全局姿势。从我在这个问题中读到的内容,从 rMat 和 tVec 获取姿势很简单:

但是,我从其他来源怀疑我读过它并不是那么简单。

要获得相机在现实世界坐标中的位置,我需要做什么? 由于我不确定这是否是一个实现问题(但很可能是一个理论问题),我希望在 OpenCV 中成功使用 solvePnP 函数的人来回答这个问题,尽管也欢迎任何想法!

非常感谢您的宝贵时间。

0 投票
2 回答
3061 浏览

opencv - OpenCV:移动单摄像头的旋转矩阵和平移向量

我有一个校准的(内在参数)相机。稍后,我需要用它从一个物体上拍摄不同的照片。它们将用于重新投影图像的某些点。

一个关键步骤是计算旋转矩阵和平移向量,使用同一对象的 2 个图像。我是图像处理的新手,我不知道该怎么做。任何信息,将不胜感激。

谢谢!