问题标签 [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 投票
1 回答
20917 浏览

python - 使用 OpenCV Python 计算相机世界位置

我想计算我的相机在世界坐标中的位置。这应该相当容易,但我没有得到我期望的结果。我相信我已经阅读了有关此主题的所有内容,但我的代码无法正常工作。这就是我所做的:

我有一个相机正在观察一个区域。

1) 我画了一张该地区的地图。

2) 我通过将 4 个图像点与地图上的 4 个点匹配来计算单应性cv2.getPerspectiveTransform

3)H单应性将每个世界坐标转换为相机坐标;这工作正常

4)为了计算相机矩阵,我遵循了这个

5)据此相机的位置应该这样计算:

我得到的坐标完全错误。我猜问题应该出在第 4 步或第 5 步中。我的方法有什么问题?

0 投票
2 回答
2335 浏览

computer-vision - 对姿态估计方法的困惑

我正在尝试从具有 4 个角 = 4 个共面点的平面标记进行姿势估计(实际上 [Edit: 3DOF ] 旋转是我所需要的)。
直到今天,我读到的所有内容都给我留下了深刻的印象,即您将始终计算单应性(例如使用 DLT)并使用各种可用的方法分解该矩阵(Faugeras,Zhang,该分析方法也在这篇文章中描述stackexchange ) 并在必要时使用非线性优化对其进行优化。

第一个小问题:如果这是一种分析方法(简单地从矩阵中取出两列并从中创建一个正交矩阵,从而得到所需的旋转矩阵),有什么可以优化的?我在 Matlab 中尝试过,结果抖动得很厉害,所以我可以清楚地看到结果并不完美甚至不够,但我也不明白为什么要使用 Faugeras 和 Zhang 使用的相当昂贵和复杂的 SVD如果这个简单的方法已经产生了结果。

然后是迭代姿态估计方法,如 Lu 等人的正交迭代 (OI) 算法。或者 Schweighofer 和 Pinz 的鲁棒姿态估计算法,其中甚至没有提到“单应性”这个词。他们所需要的只是一个初始姿态估计,然后对其进行优化(例如,Schweighofer 在 Matlab 中的参考实现使用了 OI 算法,该算法本身使用了一些基于 SVD 的方法)。

我的问题是:到目前为止我读到的所有内容都是'4 分?单应性,单应性,单应性。分解?好吧,棘手的,一般不是唯一的,几种方法。现在这个迭代的世界打开了,我只是无法在脑海中连接这两个世界,我不完全理解它们的关系。我什至无法正确地表达我的问题是什么,我只是希望有人能理解我在哪里。

我会非常感谢一两个提示。

编辑:是否正确地说:平面上的 4 个点及其图像通过单应性相关,即 8 个参数。可以通过使用 Faugeras、Zhang 或直接解决方案计算和分解单应矩阵来找到标记姿势的参数,每种方法都有其缺点。它也可以使用像 OI 或 Schweighofer 算法这样的迭代方法来完成,这些方法在任何时候都不会计算单应矩阵,而只是使用相应的点并且需要初始估计(可以使用来自单应性分解的初始猜测)。

0 投票
3 回答
4231 浏览

matrix - 将梯形中的点位置转换为矩形位置

我试图找出如何将下面绿色梯形内的坐标 Pxy 转换为真实地平面上的等效坐标。

我有房间的确切尺寸,这意味着我可以准确地说出 A、B、C 和 D 在下面显示的那个房间里有多长。我也知道 A、B、C 和 D 在那个绿色三角形中的长度(坐标)。

我已经在阅读有关单应性和矩阵变换的内容,但无法真正理解它。任何将我引导到正确方向的输入将不胜感激。

谢谢!

在此处输入图像描述

0 投票
2 回答
11994 浏览

opencv - How to estimate 2D similarity transformation (linear conformal, nonreflective similarity) in OpenCV?

I'm trying to search a specific object in input images by matching SIFT descriptors and finding the transformation matrix by RANSAC. The object can only be modified in scene by similarity transform in 2D space (scaled, rotated, translated), so I need to estimate 2x2 transform matrix instead of 3x3 homography matrix in 3D space. How can I achieve this in OpenCV?

0 投票
1 回答
2400 浏览

c++ - 多个图像拼接 - 添加第三个图像

我试图在将两个图像拼接在一起后拼接第三个图像,但它似乎不起作用。

为了详细说明,我使用opencv文档( http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html )中给出的代码成功地将两张图像拼接在一起并获得了这张图像。 http://i.stack.imgur.com/gqQjV.jpg

然后,在大量阅读和 ROI 问题之后,我删除了图像的黑色部分以获得该图像。 在此处输入图像描述

现在,我正在尝试使用相同的代码将第三张图像 ( http://i.stack.imgur.com/nXD86.jpg ) 缝合到此,但缝合不起作用。特征匹配完美。

在此处输入图像描述

但是在执行程序之后,我获得了具有更大黑色区域(由于 ROI)并且没有第三张图像的相同图像。(输出:http: //i.stack.imgur.com/WzZA0.jpg

我认为它与拼接图像末端的黑色小条有关,因此 WarpPerspective 语句不会映射拼接区域。编码 :

warpperspective 的结果给出了黑色图像而不是剩余区域。

有人可以告诉我哪里可能出错以及如何解决吗?谢谢

0 投票
1 回答
17498 浏览

opencv - 图像 3D 旋转 OpenCV

我需要在 x 和 y 轴上执行 2D 图像的 3D 旋转。我读到我必须在 OpenCV 上使用 Homographic 矩阵,但我不知道如何设置矩阵以执行常见的旋转角度。例如 x 轴上的 30 度或 y 轴上的 45°。

我读了这篇文章:Translating and Rotating an Image in 3D using OpenCV。我尝试了不同的 f 值,但它不起作用。

我想知道我必须更改矩阵的哪些参数以及如何更改(公式)。谢谢!

0 投票
2 回答
14605 浏览

opencv - 如何检查获得的单应矩阵是否良好?

这个问题已经被问过了,但我还是不明白。我通过调用cv::findHomography一组点来获得一个单应矩阵。我需要检查它是否相关。
所提出的方法是计算内点的最大重投影误差并将其与阈值进行比较。但是经过这样的过滤后,我不断得到疯狂的变换,对象边界框几乎变成一条直线或一些奇怪的非凸四边形,带有自相交等。
可以使用哪些约束来检查单应矩阵本身是否足够?

0 投票
1 回答
1795 浏览

opencv - 在 OpenCV 上进行抖动校正的图像校正

我有两张来自未校准相机的同一场景的照片。这些照片的角度和比例(缩放)略有不同,我想将它们叠加起来,拒绝任何形式的震动。换句话说,我应该改变它们,使震动变得难以察觉,做一个运动补偿。

我已经尝试使用简单的 SURF(特征)检测器和 Homography,但有时结果并不令人满意。所以我正在考虑尝试图像校正来补偿运动。- 它是否适用于轻微的变化,例如用户摇晃?- 拒绝这 2 帧的抖动真的有效吗?对于更大的图片缓冲区(可能是 10 个)?- 任何人都知道它是否会修复比例差异(图像中的不同缩放)?- 算法到底做了什么?它会将两张图片都转换为第三方向吗?

如果有更好的解决方案,我会很高兴知道 =)

编辑

我的目标不是补偿模糊运动,而是位移本身。例如,在这个文件中,作者通过 Image Rectification 补偿了两个相机之间的角度差异。它实际上是如何工作的?它是否总是创建一个中间图片方向,或者我可以指定其中一张图片保持静止? 在此处输入图像描述

另外,我能否将其应用于许多框架,或者它总是会为我放入的每两个框架找到一个中间方向?

干杯,

0 投票
1 回答
10865 浏览

c# - 如何在 C# 中从 3x3 单应矩阵获取旋转、平移、剪切

我计算了 3x3 单应矩阵,我需要获得旋转、平移、剪切和缩放以将它们用作 windows8 媒体元素属性中的参数?!

0 投票
2 回答
1749 浏览

user-interface - 在 Unity 的 OnGUI 中扭曲 GUI 元素

我正在使用 Unity3D,并且我有一个在 OnGUI 内部调用的函数来布置我的应用程序的各种 gui 组件。通常,标签和按钮都在我提供的某个 Rect 内,它位于屏幕的中心。

没问题...但是,我想要有时渲染完全相同的gui元素,这些元素可以是动态的,因此不只是放入预制纹理中,放入侧面的梯形区域,看起来好像那个gui实际上是在一个平面上,从屏幕中心推开,并轻微旋转。在函数中绘制的所有 gui 按钮仍应正常响应。

我更希望我可以在 GUI.matrix 中指定一些值来将矩形映射到梯形,但我最初的探索似乎表明 gui 元素似乎没有使用同质坐标,并且一切仍然显示为矩形。

有没有办法用 Unity 做到这一点,理想情况下不需要访问专业功能?