问题标签 [projective-geometry]

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

camera - 将 XY 平面中的点网格从相机坐标转换为真实世界坐标

我正在写一个程序。比如说,我在一张纸上有一个网格点。我固定一端并将纸张向屏幕弯曲,从相机的角度来看,我的形状是梯形。我有每个点的(x,y)相机坐标。有没有一种简单的方法可以将这些(x,y)更改为现实生活中的(x,y),这应该给我一个矩形?如果有帮助,我会预先弯曲原始平板纸的相机/真实 (x,y)。

我已经查看了3D 摄像机坐标到世界坐标(改变基础?)将屏幕坐标从安全摄像机转换到真实世界坐标

0 投票
1 回答
368 浏览

computer-vision - 具有已知内在函数的投影到度量重构

我已经从用同一台相机拍摄的三张图像中对场景进行了投影重建(也就是说,我在投影帧中重建了相机矩阵和点坐标;三个相机矩阵之一是圆锥矩阵 P = [I | 0])。相机内在函数是完全已知的。

如何升级到公制?

0 投票
0 回答
281 浏览

python-2.7 - 投影还是欧几里得 3D 重建?

如果我得到一个欧几里得重建结果或只是一个投影结果,我很难理解。所以首先让我告诉你我做了什么:

我有两个立体图像。这些图像是 SEM 图像并且是偏心倾斜的。倾斜度差为 5°。使用 SURF-correspondences 和 RANSAC,我使用归一化 8 点算法计算基本矩阵。然后对图像进行校正,然后进行密集的立体匹配:

这给了我一个视差图,这个 5x5 矩阵(值范围从 -16 到 16)。我将坏像素屏蔽掉(-17),并使用展平的 disp 数组计算图像的 z 分量。

它是使用三角方程假设平行投影的真实三角剖分的简化形式。使用校准对象计算像素常数。所以我得到了以毫米为单位的高度。视差以像素为单位计算。点云的结果看起来相当不错,但我的所有点都有一个小的恒定倾斜。所以创建的点云(-平面)有一个倾斜角。

我现在的问题是,这个点云是真实的欧几里得坐标还是我有一个投影重建(等于仿射重建?)结果仍然不同于欧几里得结果(欧几里得和投影结果之间的未知变换)?我问的原因是我没有真正的校准矩阵,也没有使用带有相机中心坐标、焦距和图像点坐标的中心投影的真正三角测量方法。

任何建议或文献表示赞赏。:)

提前致以最诚挚的问候和感谢!

0 投票
0 回答
559 浏览

python - 投影深度的法线

我想N(i,j)从深度图计算法线图D(i,j),其中(i,j)描述了 2D 像素位置。这里讨论了这个问题的一个基本案例:使用相邻像素叉积计算深度图像的表面法线

然而,在我的例子中,D(i,j)投影深度:[K|0]通过将每个 3D 点乘以齐次坐标(即, 一个 4D 向量[x,y,z,1].T) 与[K|0]. 在这种情况下,D(i,j)对应于投影命中像素的 3D 点的范数(i,j)

内在相机矩阵由下式给出

其中 fx/fy 是沿 x/y 轴的焦距,而 ox/oy 是沿 x/y 轴的相机偏移量。

鉴于此设置,法线是N(i,j)什么?

0 投票
0 回答
686 浏览

matlab - 投影变换:寻找新的像素位置 MATLAB

我正在使用保护性转换矩阵转换我的图像。我通过执行以下操作来进行转换,其中 a 是 4 个固定点,b 是 4 个移动点。

imwarp然后我使用和我的转换矩阵转换我的图像my_tform,如下所示:

这真的很好用。我遇到的问题是我想知道在转换之前给定像素位置的新像素位置。我需要一些快速代码,因为我会为图像中的每个像素执行此操作。基本上,给定原始图像中的位置(例如(256,256)),变换图像中的新位置是什么?

请参阅下面的示例图像。右边是原始图像,左边是变换后的图像。数据提示在两个图像中是相同的像素,但在不同的位置。我想知道我怎样才能在两者之间穿梭。 改造前后

0 投票
0 回答
39 浏览

computer-vision - 使用三焦张量和三线性约束检测图像中的移动对象

我想使用三焦张量来检测运动物体。但我有一个问题。

我已经知道 3 个图像帧中的 3 个相机投影矩阵(P 矩阵)是什么。

我假设 3 P 矩阵是 [I|0], [I|-1; 0; 0], [I|-2; 0; 0]。

一个 3D 点 X 投影在 3 个图像帧上。这个 3D 点移动(最后一个数字是齐次值):(0, 0, 1, 1), (1, 0, 1, 1), (2, 0, 1, 1)

所以它被投影在 x(0, 0, 1), x'(0, 0, 1), x''(0, 0, 1) 上。

我用 x、x'、x'' 计算了三焦张量(T1、T2、T3)和三线性约束输出。T1, T2, T3 是 [-1, 0, 0; 0, 0, 0; 0, 0, 0], [0, 1, 0; -2, 0, 0; 0, 0, 0], [0, 0, 1; 0, 0, 0; -2, 0, 0]。

点 X 移动,但三线性约束的输出为 0(3x3 矩阵),它未被检测为移动对象。

我做错了什么?请帮助...我需要你的帮助.... TT

0 投票
0 回答
127 浏览

rotation - 使用 DLT 算法查找焦距,Matlab 论文实现

我正在尝试在 matlab 中实现这篇论文:

使用来自单个图像的五点对应关系的基于几何的相机校准

现在,我想我已经正确地找到了相机位置,而我仍然对旋转矩阵持怀疑态度,并且无法理解如何应用 DLT 算法来找到焦距。我不明白如何实现该算法。既然焦距只是一个参数,其他参数都是已知的,那么应该怎么形成DLT矩阵呢?

这是我的代码,以及我使用的图像。

来自 GitHub 的代码

如果有人可以研究它,或建议一种使用 DLT 的方法,我们将不胜感激。为了使它起作用,我发现焦距好像论文的方程 [5] 和 [6] 形成了一个线性系统。

0 投票
0 回答
63 浏览

opencv - 寻找能够移动的物体的距离

我是计算机视觉的新手。我正在尝试解决一个我觉得有趣的问题。我的目标是拍摄 2 张​​可以自由移动的物体(如球)的照片。然后比较两张图片,看看球的高度是否上升了。我已经研究了寻找距离/高度的例子,但是它总是与一个固定距离的物体。我研究了射影几何/其他编程库,但是,我最终比找到方向更困惑。我不确定我需要查看哪种类型的资源。任何建议都会很棒!

0 投票
1 回答
132 浏览

image-processing - 在给定 2d 投影和已知多边形尺寸的情况下重建 3D 非平面多边形

我有一个非平面对象,它有 9 个点,在 3D 中具有已知尺寸,即所有边的长度都是已知的。现在给定这个形状的 2D 投影,我想重建它的 3D 模型。我基本上想在现实世界中检索这个对象的形状,即 3D 中不同边之间的角度。例如:给定表格每个部分的所有尺寸和 2D 图像,我正在尝试重建其 3D 模型。

在此处输入图像描述

到目前为止,我已经阅读了有关单应性、透视变换、procrustes 和基本/基本矩阵的内容,但还没有找到适用于此的解决方案。我是新手,所以可能错过了一些东西。这方面的任何方向都会非常有帮助。

0 投票
1 回答
170 浏览

python - 使用交叉比率的点投影在特定阈值后完全错误

我正在尝试一个计算机视觉项目来确定足球图像中发生的投影变换。我检测消失点,获得 2 个点匹配,并根据交叉比率计算从模型场点到图像点的投影。这对几乎所有点都非常有效,但对于点(位于相机后面),投影完全错误。你知道为什么以及如何解决这个问题吗?

它基于文章Fast 2D model-to-image registration using vanishing points for sports video analysis,我使用第 3 页给出的投影函数。我也尝试使用不同的方法计算结果(即基于交叉点),但是结果是一样的:

在此处输入图像描述

应该有一条底部的场线,但那条线被投射到右边很远的地方。

我还尝试使用小数来查看它是否是负溢出错误,但这对我来说没有多大意义,因为在 Wolfram Alpha 上进行测试时也出现了相同的结果。

假设消失点是

两场比赛是:

如图所示,这些几乎适用于所有点。然而,左下点完全关闭并获得图像坐标 [ 4.36108177e+04, -1.13418258e+04]这发生在从(312,1597); 因为(312,1597)结果就是[-2.34989787e+08, 6.87155603e+07]它应该在的地方。

为什么它一直移动到4000?如果我计算了相机矩阵然后点在相机后面,这也许是有道理的。但是由于我所做的实际上类似于单应性估计(2D 映射),所以我无法理解这一点。但是,我对此的了解肯定是有限的。

编辑:这可能与投影平面的拓扑结构以及它不可定向(环绕)有关吗?我的拓扑学知识不应该是……