问题标签 [homogenous-transformation]

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 回答
61 浏览

matlab - 在matlab中强制同质输出

作为与图形相关的作业的一部分,我必须求解简单的方程 Ax=b。在这个等式中,A 是已知的 2x3 矩阵,b 是已知的 2x1 向量,x 是未知的 3x1 向量,它必须是齐次的。

现在,我知道标准 MATLAB 解决方案 x = A\b; 然而,这并不强制 x 是齐次的。有没有办法可以强制 x 的第三个元素为 1?

0 投票
1 回答
553 浏览

opengl - 在什么情况下可以省略透视除法?

我想在执行透视除法后恢复同质变换。更具体地说,我正在使用保守光栅化实现基于 GPU 的体素化算法。概述一下,这些是我迄今为止实施的步骤(VS=顶点着色器,GS=几何着色器):

  1. 将模型变换应用于顶点 (VS)。
  2. 对每个顶点 (GS) 的副本应用正交投影变换。
  3. 将视图变换应用于副本 (GS)。
  4. 对副本 (GS) 执行透视分割。
  5. 根据屏幕坐标 (GS) 平移复制的顶点。

接下来,我想从 (3) 恢复视图变换,并使用不同的视图矩阵变换顶点。现在,我的问题是它是否像应用逆视图矩阵一样简单?当我只使用正交投影和仿射(旋转、平移、缩放)变换时,我是否需要担心齐次坐标?在我看来,只有正常的变换我才需要担心它,因为转置的逆不是仿射变换。我既找不到关于这个主题的网络资源也找不到反例,所以我在这里问。

0 投票
1 回答
3499 浏览

3d - 使用单个校准相机从 2D 图像中获取世界坐标

我正在尝试从没有棋盘的单个图像校准我的相机。为此,我使用了以下应用程序 ( http://w3.impa.br/~zang/qtcalib/index.html ),它使用 Tsai 的方法来校准相机。

应用程序返回固有矩阵、旋转矩阵和平移矩阵。

之后,我想从二维图像计算世界坐标。因此,为我的程序提供 2d 坐标 (x,y) 和矩阵(内在、旋转、平移)我想获得 3D 坐标 (X,Y,Z)。

我遵循了一些相关线程的指令(如果已知外在参数和内在参数,则从 2D 图像像素获取 3D 坐标),但结果并不如我所料。另外,我不知道我的起源(0,0,0)在哪里。

我究竟做错了什么?

0 投票
4 回答
12662 浏览

python - 使用 Python 从 3D 中的六个点确定齐次仿射变换矩阵

我得到了三个点的位置:

及其转化的对应物:

仿射变换矩阵的形式为

这样与

你会得到:

假设变换是同质的(仅包含旋转和平移),我如何确定这个变换矩阵?

从 CAD 程序中,我知道矩阵是:

我想知道如何找到它。

0 投票
1 回答
661 浏览

matlab - 从多个视图进行 3D 重建

我有一个计算机视觉问题重建:

我使用未校准的相机拍摄了多个视图(据我所知,fx = fy = f, s=0并且参数不变)

我可以从不同的角度匹配的点都在一个共同的平面上。我还可以从场景中匹配 4 条不同的线(比如说L1,L2,L3,L4

这样:L1 与 L2 平行,L3 与 L4 平行,L1 与 L3(和 L4)正交...

我有足够的视图(9)和足够的点(6 没有 4 行的角)。

我想使用我写的所有信息来减少噪音,并且我被要求用标准化图像(我不知道这意味着什么)计算所有内容以减少数值错误。

还给出了两个匹配点之间的距离。

需要:重构场景(全部6个3D点),重构相机内参(ux,vx,f),重构图像的相机位置

所以。

我研究了8Point 算法,但该算法(如果我理解得很好)它只适用于两个视图,而且更多的是,它不适用于平面上的点

我研究了4Point 算法,它是为放置在同一平面上的点而设计的,但它只需要两个视图(我想使用所有视图)并且不涉及线。然后另一个问题是我不明白如何从 P 重建 R 和 T(如果我很好地理解重建相机的位置,这是基本的)。

我研究了一个迭代模型,你可以在这篇论文中找到:

使用未校准的相机进行 3D 重建

但我无法(我什至不知道它是什么)在 matlab 中执行 4 级分解。

我当然不会要求你给我一个详细的问题解决方案,显然,但我当然想了解至少我应该采取哪种方式以正确的方式解决我的问题,然后我可以谷歌更多,我可以学习更多。

我感谢大家的时间

0 投票
1 回答
250 浏览

computer-vision - 计算机视觉中同质向量的用途是什么?

我是计算机视觉的初学者,我不确定为什么在计算机视觉中使用同质向量?我已经阅读了一些帖子,但我不确定。

0 投票
1 回答
4009 浏览

c++ - 如何使用 OpenCV(在 C++ 中)将齐次点转换为非齐次点

我想转换积分。目前我的代码如下所示:

但我总是收到有关内存位置的异常错误。所以,我假设我的输入类型是错误的,尽管OpenCV 文档说:

  • src - N 维点的输入向量。
  • dst – N-1 维点的输出向量。

听起来我的输入类型没问题。但是在互联网上我只找到了使用cv::Mat类型的示例,但由于时间问题,我想避免在那个阶段进行重组。

我在调试模式下运行我的代码。调用函数时,参数似乎真的很好。然后在输入函数后立即发生错误,但我无法准确弄清楚,因为我无法进入函数代码本身。有谁知道为什么这不起作用?谢谢。

0 投票
1 回答
996 浏览

opengl - 如何在 z=0 平面中将 2D 变换矩阵(用于齐次坐标)转换为 3D?

我有一个用于 2D 齐次坐标的 3x3 变换矩阵:

我想glMultMatrix在 2D 应用程序中将它传递给 OpenGL(使用 ),但 OpenGL 需要 4x4 矩阵作为 3D 齐次坐标。我希望由我的 4x4 矩阵转换的所有坐标都以3x3 矩阵x和.yz=0

我试图解决它。对于一个向量x, y, 1,我最终会得到转换后的向量ax + by + c, dx + ey + f, gx + hy + i,这意味着对于一个向量x, y, 0, 1,我希望得到转换后的向量ax + by + c, dx + ey + f, 0, ?。可以做到这一点的一个矩阵是(据我所知):

它是否正确?它有效吗?我不认为这是唯一能给出我正在寻找的结果的矩阵,但我不太明白第三行和第四行(以及第四列)应该或不应该去什么。

0 投票
0 回答
330 浏览

c# - 单应性转换代码的 c# 实现问题

我正在尝试执行此算法的 ac# 实现

http://www.corrmap.com/features/homography_transformation.php

但结果并不正确。例如,我尝试扭曲此图像: 在此处输入图像描述

它看起来像这样

在此处输入图像描述

这是我的c#实现代码:

我所做的是采用两个形状对象,它们分别代表正方形(原始)和四边形(扭曲)。我将正方形转换为位置 (0,0) 并将其缩放为单位正方形。顺便说一句,这些是正确的坐标点,因为我对相同的数据使用了另外两种转换方法,并且效果很好。然后我使用这种方法转换点。我还使用高斯消元法求解系数,我知道它有效,因为它适用于其他两种方法。

有谁知道可能是什么问题?

谢谢

0 投票
1 回答
86 浏览

opencv - s_i 在 OpenCV findHomography() 函数中代表什么?

文档说明findHomography()此函数估计的转换是:


(来源:opencv.org

为什么有一个s_i?它代表什么?

单应变换不应该是公正的x' = Hx吗?