问题标签 [homography]

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.

0 投票
2 回答
12807 浏览

opencv - 如何使用 OpenCV 获取 Homography 矩阵(拼接 2 个图像)

我正在 Visual Studio 2012 中研究 OpenCV,我试图让 Homography 矩阵在 opencv 中缝合 2 个图像,所以我真的不知道要遵循的步骤:

在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
1573 浏览

opencv - ORB 特征检测器

我正在使用 Open CV 开发一个减少 Marker 的增强现实项目。目前我正在使用 ORB 来检测特征并增强 3D 对象。到目前为止,模型的增强效果很好,但增强并不像预期的那样平滑。增强的 3D 模型很紧张。

有哪些可能的细化方法将导致帧之间的平滑相机姿态估计。

先感谢您。

0 投票
2 回答
11163 浏览

c++ - findHomography 返回的 mask 参数的值代表什么?

我将findHomographyOpenCV 的功能与 RANSAC 方法一起使用,以找到将与一组关键点链接的两个图像相关联的单应性。

主要问题是我无法在任何地方找到函数输出的掩码矩阵的值。

我知道的唯一信息是 0 值是异常值,非零值是异常值。但这意味着内部值是什么?有人知道吗?

我调用的一段代码findHomography

0 投票
2 回答
1170 浏览

opencv - 使用 OpenCV 手动标记对应点的图像配准

  1. 我有一个尺寸为 300x300的已处理二进制图像。此处理后的图像包含很少的对象(人或车辆)。

处理过的二值图像

  1. 我还有另一个640x480 维度的相同场景的RGB 图像。它取自不同的位置

在此处输入图像描述

注意:两个相机不一样

我可以使用背景减法在第一张图像中检测到某种程度的对象。我想检测第二张图像中的相应对象。我经历了opencv函数

所有这些功能都需要两个图像中的对应点(坐标)

在第一张二值图像中,我只有对象存在的信息,它没有与第二张图像(RGB)完全相似的特征。

我认为传统的特征匹配来确定可用于估计变换参数的相应控制点是不可行的,因为我认为我无法确定和匹配来自二进制和 RGB 图像的特征(对吗??)。

如果我错了,我可以取什么特征,我应该如何进行特征匹配,找到对应点,估计转换参数。

我尝试了更多手动标记来估计转换参数的解决方案(如果我错了请纠正我)

注意:两台摄像机都没有移动。

  • 已处理图像中对象周围的手动标记矩形(二进制)
  • 记下矩形的坐标
  • 手动标记第二个 RGB 图像中对象周围的矩形
  • 记下矩形的坐标
  • 对第一个二进制和第二个 RGB 图像的不同样本重复上述步骤

现在我有大约 20 个对应点,我在函数中将它们用作:

findHomography(src_pts, dst_pts, 0) ;

所以一旦我在第一张图片中检测到一个物体,

  • 我在它周围画了一个边界框,

  • 使用上面找到的变换变换顶点的坐标,

  • 最后在第二个 RGB 图像中绘制一个框,转换后的坐标为顶点

    但这并没有将第二个 RGB 图像中的框标记在人/对象上。相反,它被绘制在其他地方。虽然我拿了几张二值和RGB的样本图像,并使用了几个对应点来估计变换参数,但似乎它们不够准确..

CV_RANSAC 和 CV_LMEDS 选项的含义是什么,ransacReprojecThreshold 以及如何使用它们?

我的方法好吗...我应该修改/做什么以使注册准确?

可以使用任何替代方法吗?

0 投票
3 回答
16338 浏览

opencv - What is the difference between the fundamental, essential and homography matrices?

I have two images that are taken from different positions. The 2nd camera is located to the right, up and backward with respect to 1st camera.

So I think there is a perspective transformation between the two views and not just an affine transform since cameras are at relatively different depths. Am I right?

I have a few corresponding points between the two images. I think of using these corresponding points to determine the transformation of each pixel from the 1st to the 2nd image.

I am confused by the functions findFundamentalMat and findHomography. Both return a 3x3 matrix. What is the difference between the two?

Is there any condition required/prerequisite to use them (when to use them)?

Which one to use to transform points from 1st image to 2nd image? In the 3x3 matrices, which the functions return, do they include the rotation and translation between the two image frames?

From Wikipedia, I read that the fundamental matrix is a relation between corresponding image points. In an SO answer here, it is said the essential matrix E is required to get corresponding points. But I do not have the internal camera matrix to calculate E. I just have the two images.

How should I proceed to determine the corresponding point?

0 投票
2 回答
6267 浏览

image - MATLAB中图像拼接的单应矩阵

我一直在尝试通过使用从 2 个图像中手动选择的对应点来计算 matlab 中的单应矩阵。到目前为止,这是我的代码:

这没有给出正确的 H 矩阵。我通过

bla 矩阵应该等于点矩阵,但不是。我究竟做错了什么?

0 投票
1 回答
2756 浏览

opencv - OpenCV:对不同的图像大小使用单应性

我使用 OpenCV 的 findHomography 计算图像的单应矩阵,然后使用 warpPerspective 函数扭曲图像。现在我想对图像的缩放版本使用相同的单应矩阵(缩放版本具有相同的纵横比,并且图像围绕它的中心进行缩放)。这个问题类似于“ opencv 更新单应矩阵以适应两倍大小的图像”,这似乎没有正确的答案。

是否可以将比例因子应用于现有的单应矩阵?

问候

0 投票
1 回答
2434 浏览

opencv - OpenCV 2.4.3 - 在裁剪图像上具有反向单应性的 warpPerspective

使用 SURF 在场景中查找参考图像时,我想裁剪场景中找到的对象,并使用 warpPerspective 和反向单应矩阵将其“拉直”。

意思是,假设我有这个 SURF 结果:
在此处输入图像描述

现在,我想裁剪场景中找到的对象:
在此处输入图像描述

并使用反向单应矩阵仅使用 warpPerspective 来“拉直”裁剪后的图像。我的目标是得到一张图像,大致上只包含对象,以及原始场景中的一些失真剩余部分(因为裁剪不是 100% 单独的对象)。

裁剪找到的对象,找到单应矩阵并将其反转很简单。问题是,我似乎无法理解 warpPerspective 的结果。似乎生成的图像仅包含裁剪图像的一小部分,并且尺寸非常大。
在研究 warpPerspective 时,我发现由于过程的性质,生成的图像非常大,但我似乎无法理解如何正确执行此操作。好像我只是不太了解这个过程。我是否需要对原始(未裁剪)图像进行 warpPerspective 并裁剪“拉直”对象?

有什么建议吗?

0 投票
1 回答
307 浏览

image-processing - 从单应性中去除极端失真

我有一张从任意相机角度拍摄的棋盘的照片。我找到了对应于形成棋盘格网格的两组线的两个消失点。从这两个消失点,我计算从棋盘平面到图像平面的单应性。

然后我应用逆单应性从顶视图重新渲染棋盘。但是,对于某些图像,重新渲染的顶视图非常大。也就是说,由于相机角度,逆单应性将图像的某些部分(即非常接近消失点之一的图像区域)拉伸到非常大。

这占用了不必要的大量内存,并且大部分高度拉伸的区域都是我不需要的东西。因此,在应用逆单应性时,我想避免渲染图像的高度拉伸区域。有什么好方法可以做到这一点?

(我在 MATLAB 中编码)

0 投票
1 回答
1409 浏览

opencv - 查找投影矩阵

首先,我想为我糟糕的英语道歉。

我是 OpenCV 和虚拟现实的新手。我试图找出图像处理的理论,但对我来说缺少一些要点。我了解到投影矩阵是将 3D 点转换为 2D 的矩阵。我对吗?基本矩阵为我提供了有关两个相机之间旋转的信息,基本矩阵提供了有关一个图像中的像素与另一图像中的像素之间的关系的信息。单应矩阵将两个图像中像素的坐标联系起来(正确吗?)。基本矩阵和单应矩阵有什么区别?

我需要所有这些矩阵来获得投影矩阵吗?我是这些新手,所以如果可以的话,请试着简单地解释一下。谢谢你的帮助。