问题标签 [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.
opencv - 使用 opencv 棋盘进行多 Kinect 校准
我正在使用 opencv2.4.6 和 kinect sdk 进行多 kinect 校准。从 kinects 获取图像数据后,我将它们转换为 opencv 图像,并遵循一些教程,例如 RGBDemo,并使用以下管道:
我认为我的角位置是正确的,因为我使用 drawChessboardCorners 并且没有发现错误。经过所有这些步骤,我得到了一个旋转矩阵和平移向量。当我对从 kinect 获得的点云进行这些转换时,我发现它们没有对齐。
不知道为什么。我不认为这与图像的顺序有关。无论我将变换应用于哪个点云,我都无法获得正确的对齐方式。我猜的唯一原因是opencv函数的参数。
谢谢关注!!!
8-20 编辑:虽然没有人回答我,但我得到一个可能的原因:点云是基于像素的,而我从 opencv 得到的矩阵是基于米的。我已将点云更改为米,但这也不好。我发现我得到的矩阵可能是正确的。所以我怀疑我的显示功能可能有问题。如果我找到答案,我会发布结论。
8-21 编辑:我找到了原因。我在opencv和opengl之间的区别上犯了一个错误。现在矩阵可以对齐两个点云,但不是很完美。
opencv - opencv - 生成巨大的校准模式
我们需要一个外部尺寸约为 600 mm x 600 mm 的校准图案。
我尝试使用可以在 OpenCV 发行版的 docs 文件夹中找到的 python 脚本,但它不会生成这种大小的 svg。它在没有错误消息的情况下停止并且不写入 svg 文件。
所以我想自己创建模式并想了解“规则”:
- 使用不同的行数和列数会更好吗?
- 一个好的校准图案需要多少圈?
- 相对于外部尺寸,我应该使用哪个半径?
- 圆圈之间需要多少间距?
- 外圈和整个图案的边框之间需要多少间距?
因为我不能打印这种尺寸的图案并且必须支付打印费用,我需要知道规则并且不能尝试很多不同的东西。
谢谢!
opencv - 使用部分帧图像的 OpenCV 相机校准
我正在使用能够抓取 2592x1944 像素图像的工业相机。为了提高图像处理速度,我设置了一个较小的 AOI(感兴趣的区域/区域),例如,从 100,100 开始的 2200x1400 像素的区域,请注意 AOI 的中心可能与全帧的中心不匹配。现在我在这个 AOI 设置下抓取一些棋盘图案的图像,并将它们传递给 OpenCV 函数 findChessboardCorners 和 calibrateCamera。在相同的AOI设置下,它能否识别出真实的帧中心并输出正确的相机参数,使图像不失真?
python - 将 CSV 转换为 XML
我目前正在尝试使水文模型(HBV-light)的输入文件与外部校准软件(PEST)兼容。HBV-light 要求它的输入文件是 XML 格式,而 PEST 只能读取文本文件。我的问题与编写一个脚本有关,该脚本将自动将 PEST 编写的参数集(以 CSV 格式)转换为 HBV-light 可以读取的 XML 文件。
这是一个可以由 PEST 编写的文本文件的简短示例:
这就是我尝试组织 XML 文件的方式:
我没有太多的编程经验,但这是我到目前为止编写的python代码:
我可以编写 A 组(或特别是 CathmentParameters),但未编写 B 组部分。不知道该怎么办!
camera-calibration - 解释相机校准矩阵
我在解释http://www.cvg.reading.ac.uk/PETS2001/pets2001-cameracalib.html#dataset2上的相机校准数据时遇到问题 ,想知道是否有人可以提供帮助。基本上我理解了这个例子,当我尝试计算 3D 对象的 2D 图像坐标时,它可以正常工作。我得到的二维坐标在图像边界内,这很好。
问题是当我尝试将工作应用于其他矩阵时。为了让您深入了解,这些校准矩阵适用于在以下位置找到的视频
例如考虑 Dataset 2 Camera 2 的变换矩阵:
根据数据集顶部的说明,第一步是将矩阵求逆得到:
然后以世界坐标中的点 x = (0,0,0) 为例。
现在这个答案显然是不正确的,因为答案应该在图像边界内。事实上,当我尝试在我的程序中使用这些信息时,3D 世界中地平面上的点被错误地转换为 2D 图像坐标。
如果有人能就如何正确应用工作提供任何想法,我将不胜感激。
谢谢,
opencv - 在实时视频捕获应用程序中使用相机校准参数
所以,我正在从一个便宜的 USB 网络摄像头捕捉视频。然后我从这个提要计算光流。我终于将这些optic-flow measurements
用于(monocular
)机器人导航。我已经校准了我的相机,并将intrinsic
和distortion
参数放在两个单独的xml
文件中。
我的问题是,我现在如何在我的视频捕获代码中使用这些参数。如果有人可以请使用 a 来展示它code/pueudo-code
,那将非常有帮助。
javascript - 相机校准 - Tsai 的算法 javascript three.js 实现
我正在尝试为 three.js 应用程序构建相机校准功能,并且可以在一些帮助下做很多事情。
我在 3d 场景中有一个几何图形,假设这个例子是一个立方体。由于此对象和场景存在于 3d 中,因此立方体的所有属性都是已知的。
我也有几何的物理副本。
我想要的是拍一张物理几何的照片,并在 x 和 y 的图像上标记 4+ 个点。这些点对应于 3d 几何图形中的 4+ 个点。
使用这些点相关性,我希望能够计算出相机与照片中几何体的方向,然后将虚拟相机与 three.js 场景中的 3d 几何体进行匹配。
我研究了使用 JS-aruco 或 JSARToolkit 等 AR 库的可能性。但是这些系统需要一个标记,而我的系统需要更少的标记。用户将选择图像上的 4 个(或更多)点。
我一直在做一些研究,并确定 Tsai 的相机对齐算法应该适合我的需求。
虽然我对 javascript 和 three.js 有很好的了解,但我的线性代数并不是最好的,因此在将算法转换为 javascript 时遇到了问题。
如果有人可以给我一些指示,或者能够以javascript方式解释蔡的算法过程,我将非常感激。
opencv - 使用 Opencv 进行广角镜头校准
我正在使用广角镜头(178º Diagonal FOV),我正在尝试使用 Opencv Calibration 模块对其进行正确校准。所有的检测和校准过程都运行良好,但结果很差。
我尝试了许多不同的配置:
- 不同的图像集
- 不同的径向系数数:2,3,4,5 甚至 6.(CV_CALIB_FIX_K1,...,CV_CALIB_FIX_K6 )
- 将主点和切线畸变固定为 0 (CV_CALIB_FIX_ASPECT_RATIO, CV_CALIB_FIX_PRINCIPAL_POINT)
- 使用预期焦距作为初始相机矩阵。(CV_CALIB_USE_INTRINSIC_GUESS)
我能得到的最好的是:
关于如何获得良好校准的任何想法?您认为同时使用两种校准模式,还是使用圆形网格作为校准模式会有所帮助?
我在 opencv 3.0 中看到添加了薄棱镜系数。我还没有尝试过,但我认为不会有什么不同,对吧?编辑:检查过......什么都没有
opencv - OpenCV:移动单摄像头的旋转矩阵和平移向量
我有一个校准的(内在参数)相机。稍后,我需要用它从一个物体上拍摄不同的照片。它们将用于重新投影图像的某些点。
一个关键步骤是计算旋转矩阵和平移向量,使用同一对象的 2 个图像。我是图像处理的新手,我不知道该怎么做。任何信息,将不胜感激。
谢谢!
ios - Apple 的 iPhone 磁力计校准工作正常吗?
我目前正在开发一个 iPhone 应用程序(在 iPhone 5、iOS 7、Xcode 5 上),它需要非常准确地确定当前的态度。CMDeviceMotion 的“态度”并不能满足这些要求,因为苹果的传感器融合算法似乎过于依赖漂移相当快的陀螺仪(根据我的经验)。这就是为什么我决定读出裸露的传感器数据,然后我想自己将其结合到传感器融合算法中。
当询问磁力计数据时,有两种可能性:
通过 CMMotionManager 中的 CMMagnetometerData
通过 CMDeviceMotion 中的 CMCalibratedMagneticField,Apple 说
此属性返回的 CMCalibratedMagneticField 为您提供了设备附近的总磁场,没有设备偏差。与 CMMagnetometer 类的磁场属性不同,这些值反映了地球磁场加上周围磁场,减去设备偏置。
原则上(2.)正是我想要的。
如果磁力计数据正确校准,则有一个非常简单的测试。为简单起见,可以将自己限制在两个维度上。当设备仰卧时,B_x^2 + B_y^2 的组合必须是常数,与设备指向的方向无关。它必须正好等于地球磁场的水平分量(假设设备附近没有其他磁场)。因此,当将位于其背面的设备进行 360 度转动时,B_x 上的测量数据 B_y 应该显示一个圆圈。有关详细信息,请参见此处。
现在重点:CMCalibratedMagneticField 的数据不会导致圆圈!
有人对此有解释吗?或者有谁知道,CMCalibratedMagneticField 是如何产生的?在执行设备的“八字形”运动时,磁力计是否从上方链接的意义上进行校准,或者该运动有什么好处?
顺便提一句。为什么“八形”运动而不是围绕它的三个轴翻转设备,这将允许按照上面链接中的描述进行校准?
对于这个问题的任何澄清,我将非常高兴......谢谢!