问题标签 [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.
camera - 将 XY 平面中的点网格从相机坐标转换为真实世界坐标
我正在写一个程序。比如说,我在一张纸上有一个网格点。我固定一端并将纸张向屏幕弯曲,从相机的角度来看,我的形状是梯形。我有每个点的(x,y)相机坐标。有没有一种简单的方法可以将这些(x,y)更改为现实生活中的(x,y),这应该给我一个矩形?如果有帮助,我会预先弯曲原始平板纸的相机/真实 (x,y)。
computer-vision - 具有已知内在函数的投影到度量重构
我已经从用同一台相机拍摄的三张图像中对场景进行了投影重建(也就是说,我在投影帧中重建了相机矩阵和点坐标;三个相机矩阵之一是圆锥矩阵 P = [I | 0])。相机内在函数是完全已知的。
如何升级到公制?
python-2.7 - 投影还是欧几里得 3D 重建?
如果我得到一个欧几里得重建结果或只是一个投影结果,我很难理解。所以首先让我告诉你我做了什么:
我有两个立体图像。这些图像是 SEM 图像并且是偏心倾斜的。倾斜度差为 5°。使用 SURF-correspondences 和 RANSAC,我使用归一化 8 点算法计算基本矩阵。然后对图像进行校正,然后进行密集的立体匹配:
这给了我一个视差图,这个 5x5 矩阵(值范围从 -16 到 16)。我将坏像素屏蔽掉(-17),并使用展平的 disp 数组计算图像的 z 分量。
它是使用三角方程假设平行投影的真实三角剖分的简化形式。使用校准对象计算像素常数。所以我得到了以毫米为单位的高度。视差以像素为单位计算。点云的结果看起来相当不错,但我的所有点都有一个小的恒定倾斜。所以创建的点云(-平面)有一个倾斜角。
我现在的问题是,这个点云是真实的欧几里得坐标还是我有一个投影重建(等于仿射重建?)结果仍然不同于欧几里得结果(欧几里得和投影结果之间的未知变换)?我问的原因是我没有真正的校准矩阵,也没有使用带有相机中心坐标、焦距和图像点坐标的中心投影的真正三角测量方法。
任何建议或文献表示赞赏。:)
提前致以最诚挚的问候和感谢!
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)
什么?
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
rotation - 使用 DLT 算法查找焦距,Matlab 论文实现
我正在尝试在 matlab 中实现这篇论文:
现在,我想我已经正确地找到了相机位置,而我仍然对旋转矩阵持怀疑态度,并且无法理解如何应用 DLT 算法来找到焦距。我不明白如何实现该算法。既然焦距只是一个参数,其他参数都是已知的,那么应该怎么形成DLT矩阵呢?
这是我的代码,以及我使用的图像。
如果有人可以研究它,或建议一种使用 DLT 的方法,我们将不胜感激。为了使它起作用,我发现焦距好像论文的方程 [5] 和 [6] 形成了一个线性系统。
opencv - 寻找能够移动的物体的距离
我是计算机视觉的新手。我正在尝试解决一个我觉得有趣的问题。我的目标是拍摄 2 张可以自由移动的物体(如球)的照片。然后比较两张图片,看看球的高度是否上升了。我已经研究了寻找距离/高度的例子,但是它总是与一个固定距离的物体。我研究了射影几何/其他编程库,但是,我最终比找到方向更困惑。我不确定我需要查看哪种类型的资源。任何建议都会很棒!
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 映射),所以我无法理解这一点。但是,我对此的了解肯定是有限的。
编辑:这可能与投影平面的拓扑结构以及它不可定向(环绕)有关吗?我的拓扑学知识不应该是……