computer-vision - 如果两个图像之间的变换已知,则找到相机位置之间的变换

标签 computer-vision css-position camera-calibration matlab-cvst vision

我得到了两幅建筑物的图像。我知道这两个图像之间的变换,并且我也知道第一个相机位置相对于某个坐标系的坐标,如何获取第二个图像的相机坐标相同的坐标。我没有得到任何其他信息。

最佳答案

如果您有两个图像,那么您可以执行以下步骤来生成第二个相机的坐标:

  1. 提取每张图像的特征点(以及描述符)(您可以使用 SIFT 特征)
  2. 匹配两幅图像的特征点(可以使用flann库或暴力匹配)。这些匹配对中的每一个都是连接点。
  3. 您可以使用连接点来计算一个摄像机与另一个摄像机之间的相对位置。(您可以使用 5 点方法,但此方法至少需要 5 个连接点 - related paper)。
  4. 使用第一个摄像头位置的相对方向(在第 3 步中生成)来计算第二个摄像头的位置。

但是你需要一些相机信息,比如内在函数来准确执行步骤4,如果你没有这样的信息,有一些方法可以估计它们(比如估计相机的内在函数)

实际上每个步骤所需的实现可以在非常流行的库中找到,例如 opencv 和 libmv(两者都是用 C、C++ 实现的),但它们可能没有这些方法的 matlab 包装器,如果您愿意,您可以找到它们。

注意:通过使用此解决方案,您无法使用之前计算的图像转换结果。

关于computer-vision - 如果两个图像之间的变换已知,则找到相机位置之间的变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890613/

相关文章:

python - 霍夫圆检测: Blurring the image before calling hough circle algorithm?

html - 溢出 y 错误 :scroll and position:absolute in Chrome

css - 绝对位置给 parent 没有高度

html - 如何打破两个定位的顶部元素?

c++ - OpenCV 在 JPEG 图像和 EXIF 方向上的意外相机校准结果

c - 寻找与英特尔 IPP 进行 FFT 卷积的工作示例

python-2.7 - 如何使用 “cv2.createTrackbar()”函数调整流视频帧的大小?

c# - 如何将检测到的边缘合并到 Emgu CV 中的颜色捕获

Kinect v2 : Spatial resolution/depth resolution/camera calibration

opencv - 立体相机校准与使用 OpenCV 的两个单相机校准之间的差异