问题标签 [camera-calibration]
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 图像,我希望以像素为单位确定棋盘(或单个正方形)的宽度/高度。
我有一个垂直对准地面的相机,确保与下面的表面完全齐平。我正在使用相机来确定连续帧之间的平移(使用傅立叶相位相关成功实现),目前我的结果返回以像素为单位的平移,但是我想使用类似于校准的技术,我将相机移动到棋盘平放在地面上,以相对于我的图像高度和宽度自动确定棋盘的大小(以像素为单位)。
以毫米为单位知道棋盘的大小,然后我可以将像素单位转换为以毫米为单位的现实世界单位,即,1 个像素将代表与地面上相机高度成比例的距离。这将允许我以像素为单位的转换转换为以毫米为单位的转换,每次我改变相机的高度时都重新校准。
实现这一目标的推荐方法是什么?当然,它一定比单相机 2D 校准更简单。
c++ - 用于 3D 重建的 OpenCV 未校准相机校正
我正在运行 OpenCV 2.4.2。
我的项目包括一个 3D 人脸识别。
我正在尝试从未经校准的相机拍摄的一对图像创建一个 3D 模型。
我的目标是获得一些用于识别过程的 3D 特征。
我正在尝试校准和校正相机,但没有得到好的结果。
我做了这些步骤:
- 从 2 张图像中提取 SURF 特征
- 发现 2 个图像特征之间的对应关系
- 计算基本矩阵感谢
findFundamentalMat
- 用于
stereoRectifyUncalibrated
获取单应矩阵 warpPerspective
与第一个图像和第一个单应矩阵一起使用以查看结果。
我得到了一个非常糟糕的结果,我现在不知道该怎么办......
那个算法对吗?有什么建议吗?
我可以使用什么样的 3D 功能来获得更好的人脸识别?
这里是校准代码:
opencv - 如何解释校准结果(OpenCV)
我用棋盘进行了校准(我以毫米为单位定义了角的大小)。现在,校准(矩阵旋转平移)的结果是否以 mm 为单位?
opencv - OpenCV中相机校准期间的错误
我正在使用opencv进行相机校准。我正在使用“烹饪书编程”中给出的相同代码。
我正在用智能手机拍摄棋盘的照片。然后我正在使用 opencv 程序为我进行相机校准。当我有非常大的棋盘时,程序只适用于一组图像。它不适用于其他图像集,并且我收到运行时错误“断言失败
我不知道我的代码出了什么问题。代码如下:-
在相机校准类中,它成功打开图像,但在 findChessboardCorners 行上失败。. .
请帮助我。一个示例棋盘图像如下。该算法在第一张图像上无法找到角点。. . . :-
matlab - 相机标定MATLAB工具箱
我必须重新投影我的 3D 点(我已经有来自 Bundler 的数据)。
我在 MATLAB 中使用相机校准工具箱来获取相机的内在参数。我从 27 张图像中得到了这样的输出(棋盘;图像是从不同角度拍摄的)。
注:数值误差约为标准偏差的三倍(供参考)。
我想知道数值误差,即焦距误差 +- [23.13283 22.92478] 、主点误差等。这些误差数字实际代表什么以及它们的影响是什么?
像素误差真的很小。
到目前为止,我使用上述数据中的以下矩阵进行重新投影:
K=[ 2104.11696 0 969.15779; 0 2101.75357 771.30555;0 0 1]
上面的矩阵“K”对我来说似乎是正确的。如果我做错了什么,请纠正我...
将等待您的回复。
c++ - opencv findchessboardcorners 断言失败
我正在尝试在 Windows 7 + MinGW 环境中使用 OpenCV 2.4.2 检测用于相机校准的棋盘图案。
调用 findChessboard() 函数时出现断言失败。只有当棋盘出现在摄像机的视野中时,才会发生断言。
OpenCV 错误:setSize 中的断言失败 (s >= 0),文件 C:\opencv\modules\core\src\matrix.cpp,第 115 行
我也尝试了 sample\cpp\calibration.exe 并在那里得到相同的结果。示例源代码可以在这里找到:
查看第 468-469 行:
我自己的代码如下所示:
如上所述,控制永远不会到达 cout 语句。findChessboardCorners 没有找到任何东西(返回 false)或断言(当检测到棋盘图案时)。
opencv - 在 opencv 中使用自动对焦网络摄像头进行立体设置
我确实有一个带有两个网络摄像头的立体声设置。问题是,如果这些相机拥有自动对焦技术,会不会有任何问题。如果是,请详细说明问题及其解决方案。
这对相机校准有影响吗?
opencv - opencv给出相机姿势 - rvec和tvec - 坐标系不匹配
我需要找到相机的姿势(旋转矩阵+平移向量),为此我正在使用cv2.solvePnP()
,但我从照片中得到的结果不匹配。
为了调试,我(使用 numpy)创建了一个“调试 3d 场景”,由一些对象点(正方形的四个角)、一些相机点(焦点、主点和虚拟投影平面的四个角)和参数组成(焦距,初始方向)。
然后,我通过乘以三个轴旋转矩阵来构造一个通用旋转矩阵,将这个通用旋转应用于相机(numpy.dot()
),将对象点投影到虚拟投影平面(线平面相交算法),并计算平面内二维坐标(点线距离)到投影平面轴。
这样做之后(通过旋转矩阵将对象点指向图像点),我将图像点和对象点输入cv2.Rodrigues(cv2.solvePnP(...))
并得到一个与我使用的矩阵“不太相同”的矩阵,只是因为转置和一些具有相反信号的元素(负与正) ,尊重这种关系:
虽然旋转矩阵不匹配是“可解决的”这个黑客,但翻译向量给出的坐标对我来说没有意义。
我怀疑我的 3D 模型(惯用手、轴方向、旋转顺序)与 opencv 使用的模型不匹配:
- 我使用类似OpenGL的坐标系(X向右增加,Y向上增加,Z向观察者增加;
- 我以对我更有意义的顺序应用了旋转(所有右手,首先围绕全局 Z,然后围绕全局 X,然后围绕全局 Y);
- 图像平面位于物体和相机焦点之间(虚拟投影平面,而不是真实/CCD);
- 我的图像平面(虚拟 CCD)的原点是左下角(Xpix 向右增加,Ypx 向上增加。
我的问题是:
鉴于旋转矩阵的项是相同的,只是转置并且在某些术语中具有不同的信号,我是否可能混淆了一些openCV
约定(用手习惯、旋转顺序、轴方向)?我怎样才能发现是哪一个?
另外,有没有办法将我的手工翻译向量与返回的 tvec 联系起来solvePnP
?(当然,理想情况下,最好首先使坐标系匹配)。
任何帮助都将受到欢迎!
opencv - 如何验证网络摄像头校准的正确性?
我对相机校准技术完全陌生……我正在使用 OpenCV 棋盘技术……我正在使用 Quantum 的网络摄像头……
这是我的观察和步骤..
- 我保持每个国际象棋正方形边 = 3.5 厘米。它是一个 7 x 5 棋盘,内有6 x 4 个角。我在距网络摄像头 1 到 1.5 m 的距离处总共拍摄了 10 张不同视图/姿势的图像。
我正在按照Bradski的Learning OpenCV中的 C 代码进行校准。我的校准代码是
/li>在调用此函数之前,我将沿固有矩阵的对角线的第一个和第二个元素设为一个,以保持焦距比恒定并使用
CV_CALIB_FIX_ASPECT_RATIO
随着棋盘距离的变化,和
fx
几乎等于1。当我改变距离时,和的值在200到400之间。和在300到700之间。fy
fx:fy
cx
cy
fx
fy
目前我已经把所有的失真系数都归零了,因为我没有得到包括失真系数在内的好结果。我的原始图像看起来比未失真的图像帅!
我是否正确进行校准?CV_CALIB_FIX_ASPECT_RATIO
我应该使用除?之外的任何其他选项。如果是,是哪一个?
android - 在android中校准相机
1.有没有办法在android中获取相机的校准矩阵(仅使用Android API)?
2.我可以从API找到焦距和视角。这些足以计算相机矩阵吗?