将一个摄像机视图中的 2D 点投影到同一场景的另一个摄像机视图中相应的 2D 点

2024-02-10

我在带有两个摄像机的多视图场景中使用 C++ 中的 open cv。我有两个相机的内在和外在参数。

我想将视图 1 中的 (X,Y) 点映射到第二个视图中的同一点。我有点不确定应该如何使用内在矩阵和外在矩阵,以便将点转换为 3D 世界,并最终在视图 2 中得到新的 2D 点。


如果没有一些附加信息,(通常)不可能在一个图像中获取 2D 坐标并将其映射到另一个 2D 坐标。

主要问题是左图像中的单个点将映射到右图像中的一条线(极线)。因为深度是一个自由参数,所以有无限多个可能的对应位置。其次,这一点完全有可能不存在在右图中,即它被遮挡。最后,可能很难准确确定哪个点是正确的对应关系,例如如果场景中没有纹理或者包含大量重复特征。

虽然基本矩阵(你从中得到cv::StereoCalibrate无论如何)给你每个相机中的点之间的约束:x'Fx = 0,对于给定的x'将会有一整个家庭x's 将满足方程。

一些可能的解决方案如下:

  1. 您知道一幅图像中 2D 点的 3D 位置。假设 3D 点位于公共坐标系中,您只需使用cv::projectPoints与您想要投影到的其他相机的校准参数。

  2. 您可以使用 SIFT 或 ORB 等进行一些稀疏特征检测和匹配。然后,您可以计算单应性以将点从一幅图像映射到另一幅图像。这对物体是飞机做出了一些假设。如果你谷歌全景单应性,有很多讲座幻灯片详细介绍了这一点。

  3. 您校准相机,执行极线校正(cv::StereoRectify, cv::initUndistortRectifyMap, cv::remap),然后通过立体匹配器运行它们。输出是一个视差图,它完全满足您的需求:从一个相机到另一个相机的每像素映射。那是,left[y,x] = right[y, x+disparity_map[y,x]].

(1) 是迄今为止最简单的,但您不太可能已经掌握该信息。 (2) 通常是可行的并且可能是合适的,并且正如另一位评论者指出的那样,如果平面性假设失败,则效果会很差。 (3) 是一般(理想)解决方案,但有其自身的缺点,并且依赖于图像是否适合密集匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将一个摄像机视图中的 2D 点投影到同一场景的另一个摄像机视图中相应的 2D 点 的相关文章

  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • 当我将鼠标移到 Mat 关键字上时,Visual Studio 2017 冻结(OpenCv 3.4.1)

    我想在 Visual Studio 2017 中开发 openCv 项目 我下载了 opencv 预构建库并进行了必要的设置 那是 1 我添加了系统路径 build x64 vc14 bin 2 在 Visual Studio 中的项目属性
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 仅获取图像中的外部轮廓

    我有这段代码 可以在图像中绘制轮廓 但我只需要外部轮廓 import cv2 import numpy as np camino C Users Usuario Documents Deteccion de Objetos 123 jpg
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • OpenCV 2.2 和多 CPU - opencv_haartraining.exe 是多线程的吗?

    我在 VS 2010 上构建了 OpenCV 2 2 启用了 TBB 3 支持 我确保所有项目都有正确的 tbb lib 目录 并将 tbb lib 列为依赖项 通过隐藏 tbb dll 进行验证 果然 haartraining exe 抱
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • 查找具有不同强度/亮度的相似图像

    假设我有如下图像 我可以选择什么来比较两个图像之间的相似度 显然它们是相同的图像 只是亮度不同 我找不到任何可行的方法 目前我最好的选择是训练 cnn 或自动编码器并比较输出的特征向量 但这似乎有点矫枉过正 任何提示将不胜感激 相当强大的工
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre

随机推荐

  • 如何修复因不允许的用户代理而导致的功能受损?

    我正在构建一个网络浏览器 最近在尝试使用我的 Google 帐户在网站上登录时遇到错误 这很奇怪 因为我检查了我的应用程序和 Safari 的用户代理 它们都是相同的 有什么建议么 UPDATE WKWebView 在自定义 UIView
  • 如何设置 AsyncStorage 的过期日期 - React Native

    我正在使用 React Native 异步存储 它效果很好 但在某些情况下 我必须设置数据的到期日期并刷新我检查的存储 异步存储文档 https facebook github io react native docs asyncstora
  • 将 jquery 验证添加到 kendo ui 元素

    我已经查看了很多关于此的帖子 并且当我添加以下内容时它确实验证了我的字段 validator setDefaults ignore 我仍然缺少的部分是添加input validation error类来通知用户 它对于我的其他输入元素 非剑
  • 通过 Windows 批处理文件将长命令拆分为多行

    如何在批处理文件中将长命令拆分为多行 您可以使用插入符号分隔长行 只要您记住插入符号及其后面的换行符已被完全删除即可 因此 如果需要在换行处插入一个空格 请添加一个空格 下面详细介绍一下 https stackoverflow com a
  • 地图 std::map< std::string, Stock*> &stocks 上的模板参数无效

    我有声明 或类似声明 std map lt std string Stock gt stocks 贯穿我的代码 Eclipse 不喜欢这样并产生 无效模板参数 错误 库存声明为 class Stock public Stock std st
  • 可编辑组合框文本滚动

    我有一个可编辑的 wpf 组合框 当我输入比其长度长的内容而不是滚动到最后一个字符时 文本将脱离控制并且不可见 有没有什么办法解决这一问题
  • 应用程序在 Android 2.2 (Froyo) 中根本无法启动

    在最近的 Froyo 更新之前 我的应用程序一直运行正常 安装 Android 2 2 SDK 后 我可以编译我的代码 没有任何错误 但是 当我运行它时 它只是强制关闭 这是日志 05 23 10 15 13 463 DEBUG Andro
  • 我可以列出几个键来执行相同的操作吗? [AHK]

    AHK允许绑定按键 就是我们a z每当按下 a 时 都会触发 z 如果我想在按下 a b 或 c 时触发 z 怎么办 我显然可以重复我的代码 a z b z c z 我可能可以使用 Gosub 像 a Gosub abc b Gosub a
  • 列表可以改变吗? [复制]

    这个问题在这里已经有答案了 当我输入以下代码时 x 1 2 4 print x print x id x x 2 5 3 print x print x id x 它给出的输出为 1 2 4 x 47606160 2 5 3 x 47578
  • ActionbarSherlock:长按操作项会显示 Toast?

    长按操作项时 操作项下方会显示不带文本的 Toast 我可以禁用Toast 感谢您 如果您省略标题或指定操作项应与文本一起显示 则长按将不会出现 否则 吐司会添加每个操作项代表的内容的说明
  • 如何理解Process.Threads.Count结果?这个变量显示什么?

    让我们编写简单的控制台应用程序 调试模式 static void Main string args Process p Process GetCurrentProcess IList
  • Django / Python:捕获 MySQL IntegrityError

    在 Django Python 中 如何捕获特定的 mySQL 错误 IntegrityError try cursor execute sql except IntegrityError do something 不确定我应该导入什么以及
  • CSS3 性能?向左动画或平移X

    在我制作的 HTML5 CSS3 演示中 我主要使用 CSS 过渡来提高性能 我想知道我的 UI 例如 当前 JQuery 根据鼠标位置操纵容器 Div 的 LEFT 属性 我应该使用transform translateX tx 反而 或
  • Entity Framework Core 禁用 .Include() 函数中信息的递归检索

    该数据库包含表 Machines Wheels Characteristics 和 Pilot 汽车的 1 条记录包括 1 条关于 Pilot 的记录 4 条关于车轮和几个特性的记录 在我的模型类中 它看起来像这样 public class
  • HTTP 状态代码是否正在进行?

    我有一个看起来像这样的端点 得到 v1 资源正在创建 状态 如果该资源的加载 创建正在进行但尚未完成 是否有首选的 HTTP 状态代码返回 超过 200 响应正文解释 正在进行中 如果不是 那么在标头或响应正文中返回 正在进行 状态的最佳方
  • 在pygame中朝鼠标方向射击子弹

    我只是不明白为什么我的子弹不起作用 我做了一个项目符号类 如下 class Bullet def init self self x player x self y player y self height 7 self width 2 se
  • 自签名CA和自签名证书之间的区别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不清楚 CA 密钥和证书之间的区别 CA 密钥不就是一个证书吗 让我尝试用一 个例子来澄清 我有一个客户端和一个服务器 我只是想验证我与
  • Kivy 应用程序无法在 Android 上运行

    我想使用 kivy 在 Android 上用 Python 编写简单的应用程序 遗憾的是 当我启动示例代码时 我只看到启动屏幕 几秒钟后应用程序完成工作 调试存在一个巨大的问题 因为 Linux Mint 上的 adb 无法检测到我的设备
  • 函数分析问题 - Visual Studio 2010 Ultimate

    我正在尝试分析我的应用程序以监视重构之前和之后函数的效果 我对我的申请进行了分析 并查看了摘要 我注意到Hot Path http msdn microsoft com en us library ms182398 aspx列表没有提到我使
  • 将一个摄像机视图中的 2D 点投影到同一场景的另一个摄像机视图中相应的 2D 点

    我在带有两个摄像机的多视图场景中使用 C 中的 open cv 我有两个相机的内在和外在参数 我想将视图 1 中的 X Y 点映射到第二个视图中的同一点 我有点不确定应该如何使用内在矩阵和外在矩阵 以便将点转换为 3D 世界 并最终在视图