- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为 ArUco 进行相机标定有多重要?如果我不校准相机怎么办?如果我使用其他相机的校准数据怎么办?如果相机焦点发生变化,是否需要重新校准?为消费者应用进行校准的实用方法是什么?
最佳答案
在回答您的问题之前,让我介绍一些与相机校准相关的通用概念。相机是捕捉 3D 世界并将其投影为 2D 图像的传感器。这是相机执行的从 3D 到 2D 的转换。正在关注OpenCV doc 是了解此过程如何工作以及其中涉及的相机参数的很好引用。您可以在以下 document 中找到详细的 AruCo 文档.
一般来说,各大图书馆使用的相机模型都是针孔模型。在此模型的简化形式中(不考虑径向畸变),相机变换使用以下等式表示(来自 OpenCV 文档):
下图(来自 OpenCV 文档)说明了整个投影过程:
总结:
P_im = K・R・T ・P_world
地点:
现在,让我们一一解答您的问题:
How important it is to do camera calibration for ArUco?
相机校准在 ArUco(或任何其他 AR 库)中很重要,因为您需要知道相机如何将 3D 世界映射到 2D 世界,以便您可以将增强对象投影到物理世界。
What if I dont calibrate the camera?
相机标定是获取相机参数的过程:内参和外参。第一个通常是固定的,取决于相机的物理参数,除非你改变一些参数作为焦点。在这种情况下,您必须重新计算它们。否则,如果您使用的是具有固定焦距的相机,那么您只需计算一次。
第二个取决于相机在世界中的位置/方向。每次移动相机时,RT 矩阵都会发生变化,您必须重新计算它们。在这里,当 ArUco 等库派上用场时,因为使用标记,您可以自动获取这些值。
简而言之,如果您不计算相机,您将无法将物体转换到物理世界中的确切位置(这对于 AR 至关重要)。
What if I use calibration data from other camera?
这是行不通的,这类似于使用未校准的相机。
Do you need to recalibrate if camera focuses change?
是的,您必须重新计算内在参数,因为在这种情况下焦距会发生变化。
为消费者应用进行校准的实用方法是什么?
这取决于您的应用,但通常您必须提供一些手动重新校准的方法。还有使用一些 3D 图案进行自动校准的方法。
关于opencv - 您需要多长时间为 ArUco 进行相机校准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273439/
我已经完成了标记的姿势估计并获得了 rvec 和 tvec 值。我不知道如何找到它的中心,因为我需要绘制一个需要中心值的圆柱体。 我该怎么做? 最佳答案 标记的 tvec 是标记从原点的平移 (x,y
我正在运行一个 Ubuntu 虚拟机,Python 3.6.1,Anaconda 4.4.0(64 位)。我正在尝试运行 the code on this website .当我尝试使用 导入cv2.
您好,我在使用 aruco 时遇到错误。我只是想从教程中获取一个例子。我按照教程做了一切,但我得到: /home/pi/Programs/markerDetection/markerDetec
我的应用程序接收可以具有 bayer_rggb8 编码的相机图像。我需要将这些图像转换为 bgr8/rgb8/mono8 吗?或者 Aruco 可以检测拜耳编码的 cv::Mat 中的标记吗? 我使用
我正在尝试使用 Aruco 标记找到相机的方向。从旋转矩阵中提取的欧拉角在超过某个点后是不稳定的。随着相机与标记的距离增加,相机的偏航角值就不稳定。标记上的“Z”轴翻转。欧拉角不稳定,每一帧都不一样,
我一直在使用 Python 的 OpenCV 库,使用 ArUco 进行对象跟踪。 目标是获取 ArUco 标记中心的 x/y/z 坐标,以及相对于校准相机的角度。 我能够使用目前的代码在 aruco
我将 ArUco 库与 OpenCV 一起使用(更多信息 here),但我找不到从头开始构建和运行程序的方法。 安装库后,我可以访问不同的示例,但是如果我想创建一个新文件并在其中添加库 header
我一直在尝试使用可以提供纹理的客户摄像头来统一执行AruCo或标记检测,这不是普通摄像头,因此您不能使用该包装随附的常规webcamtexture,我一直在尝试可以想象的一切但这对我不起作用。我已经测
我有两张照片真的很像这个被正确识别为 5x5_250 字典的标记 209 虽然这另一个非常相似但无法识别,它是同一个 5x5_250 字典的标记 207: 而且标记 207 在另一张照片中被识别出来了
我正在使用虚拟工作室创建一个增强现实系统,该系统仅用于检测表面的方向和倾斜度。我是 C++ 的新手,想问问是否有人可以提供有关如何将 aruco 库实现到 visual studio 中的说明。 我已
我有一个用于检测 aruco 标记的程序,我想使用 1 个标记他的姿势从具有多个 aruco ID 的相机图像进行计算。 我有一个 aruco id 为 256、257、258 的板问题是,当看到 a
我是 ArUco 的新手,我在尝试理解输出中的单位时遇到了一些问题: 817=(527.126,235.966) (525.665,210.056) (552.459,208.619) (553.24
我正在尝试使用 OpenCV 4.1.1 和 Aruco 构建一个简单的增强现实应用程序。目标是将图像叠加在标记之上,但图像超出标记的边缘。 我已经校准了我的相机并获得了相机矩阵和畸变系数。通过使用
为 ArUco 进行相机标定有多重要?如果我不校准相机怎么办?如果我使用其他相机的校准数据怎么办?如果相机焦点发生变化,是否需要重新校准?为消费者应用进行校准的实用方法是什么? 最佳答案 在回答您的问
是否可以为 ArUco 训练新的标记?例如,在 ARToolKit 中,可以创建新的标记模式并使用 mk_patt.exe 训练它们,它会生成可用于检测模式的模式文件。是否可以在 ArUco 库中做类
我正在使用 ArUco 标记来校正透视图并计算图像的大小。在此图像中,我知道标记外边缘之间的确切距离,并使用它来计算黑色矩形的大小。 我的问题是 aruco::detectMarkers 并不总能识别
我使用函数cv.aruco.estimatePoseSingleMarkers()来获取rvec和tvec。使用这两个向量如何获得相机相对于 Aruco 标记的姿势? while (True):
我正在尝试计算 aruco 标记和相机之间的精确(3 厘米误差率是可以接受的)距离。我使用 python、opencv 和 aruco。我可以检测到它们(标记端为 0.023 米,即 2.3 厘米)但
我正在使用来自 OpenCV Contrib 的 ChAruCo 标记跟踪。我想跟踪多个板,但创建标记板的机制并不像我期望的那样。 我想象的是有一个字典(比如说,DICT_4X4_50)使用字典中不同
引用原文question ,当使用相对较大的长度标记(例如 0.65m)时,相机的位姿精度是否会提高? 最佳答案 使用单个标记会出现原题中描述的所有问题,无论标记的大小如何。如果你按比例因子 F 放大
我是一名优秀的程序员,十分优秀!