问题标签 [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.
matlab - 整流-projective2d
有谁知道这个功能(projective2d)是如何工作的?我有一个纠正代码,我的 Matlab 有这个函数的错误(未定义的函数 'projective2d' 用于类型为'double'的输入参数),但是我认为它应该适用于双输入。另一方面,当我在帮助中搜索它时,没有任何具有此名称的功能。这是我的代码的一部分:
如果有人帮助我,我将不胜感激。
algorithm - Essential Matrix from 8 points algorithm
In „<em>Multiple View Geometry in Computer Vision” R.Hartley,A.Zisserman in chapter 11 - about computation Fundamental Matrix one can read:
„<strong>11.7.3 The calibrated case
In the case of calibrated cameras normalized image coordinates may be used, and the essential matrix E computed instead of the fundamental matrix”</p>
Does it mean – if I have proper Intrinsic Cameras matrices (does it mean calibrated in this case?) I can calculate Essential Matrix directly (using 8 points algorithm) omitting calculating Fundamental Matrix?
And I can get matrices R and T from calculated Essential Matrix to reconstruction 3D model?
Regards,
Artik
3d - 需要帮助进行等距矩形全景图像的正确直线投影
使用下面的算法,当投影平面与赤道相切(equirectangular 图像的中心线)时,投影图像看起来是直线的。
但是当投影平面倾斜时,(py0!=panorama.height/2),线条会扭曲。
下面算法中的最后两条“线”需要“校正”,以便在目标平面的中心线与等矩形图像的中心线不在同一水平线上时调整 px 和/或 py。
我可以计算每个目标像素的法线与球体之间的交点 p,然后使用可用的 C 代码将笛卡尔坐标转换为 long/lat:
但我知道有一种更简单且耗时少得多的方法,涉及调整等距矩形图像(px,py)中的源像素坐标,知道投影平面中心与“球体”相交的经度/纬度(px0,py0)。
你能帮忙吗?
geometry - 创建基于立方体的 3 维游戏
我正在尝试创建一个完全基于完全相同大小的立方体的 3 维游戏。我想学习如何仅使用 2 维游戏库制作自己的 3 维游戏。目前,我正在做的事情是我有一个数组来存储游戏中每个立方体的所有中心的位置。然后,在绘制单个立方体时,我会确定需要绘制立方体的哪 3 个面(因为您不需要绘制立方体的所有 3 个面)。然后,知道立方体所有角的 3 维点,我使用相机位置、相机角度和我正在投影的点将这些点投影到 2 维空间。
现在我真正的问题是:既然我可以绘制单个立方体,我如何绘制多个立方体,考虑到立方体需要按一定的顺序绘制(即需要先绘制更远的立方体,以便立方体离我们更近的出现在离我们很远的立方体的顶部)?给定立方体中心列表及其大小以及相机位置/角度,如何确定首先绘制哪些立方体?
computer-vision - 难以理解极点与斧头的对齐方式
这个问题是在我阅读这篇论文时出现的。目标是估计两个摄像机C 1和C 2的相对姿态,给定五个点对应。
投影平面被视为单位球体,并且选择全局坐标系以使Z G轴连接相机中心。如果我们能找到两个矩阵R 1和R 2 ,问题就解决了,分别将C 1和C 2的内部坐标系映射到前面描述的全局系统(对我来说,听起来这些矩阵只会对齐Z c_1和具有全局Z G轴的摄像机的Z c_2轴)。
这些矩阵以迭代方式计算,并且在每次迭代中,所有点对应关系(v 1 ,v 2 )通过旋转更新,变为(R 1 v 1 ,R 2 v 2 )。
到目前为止,一切都说得通。但后来,作者指出,这些旋转改变了极点的方向(我假设相对于相机 Z 轴),并且“通过旋转单位球体使得 z 轴Z G与极点对齐,即Z G =R 1 e 1 =R 2 e 2旋转点对应(v 1 ,v 2 )与极点e 1 ,e 2 "共面。
对我来说,作为基线的Z G轴始终与核对齐,旋转的核Re不再是核,因为它远离基线。但是上面的引用暗示存在极点不对齐的配置...如您所见,我完全糊涂了...请帮助我理解作者的意思。
homography - 错误的单应变换
最近,我研究了单应变换(它为 2D 点[x,y]->[wx,wy,x] 添加了一个附加维度)和射影几何。
当我尝试将照片 1 的底部转换为新图像的顶部时,结果是错误的。
我称之为错误的原因是照片 1 的底部如预期的那样投影到了新图像的顶部,但照片 1 的顶部投影到了新图像的底部。预计照片 1 的顶部位于图像“外部”(负 y)。
然后,我发现如果我消除对应 w 为正的变换像素,结果可能是正确的。结果如图3。
我不知道如何在数学上或直观地解释为什么 w 的符号会导致不同的结果。我想有时负 w 可能有效或合理。
如果有人想感谢我的帖子,我可以提供我的源代码(matlab)和照片。
谢谢!
matlab - 查找 2 个摄像机之间的变换矩阵
我试图在 Matlab 中找到 2 个摄像头(Kinect RGB 和 IR)之间的投影变换,我已经阅读了几个答案,但它们都使用 OpenCV,此时我可以在 2 个图像(imageRGBPoints
,imageIRPoints
)中找到棋盘点,并且重叠两个图像我得到以下信息:
很明显,两个相机都有不同的视角。搜索后我发现了这个:
我得到了第一张双倍尺寸和小旋转的图像。最后,我尝试了 Mathworks 的本教程,使用 SURF 功能,但我不明白矩阵变换在哪里,我怎样才能适合两个图像?
matlab - 在matlab中使用imtransform在图像和标记的矩形上应用单应性
我正在尝试在图像和标记的矩形上应用投影单应性。我的解决方案适用于所有仿射变换,但在投影变换的情况下,当我在循环中运行它时,系统误差会不断增加。我似乎无法弄清楚原因。快速回答将不胜感激。请查看代码和屏幕截图。谢谢
第一张标有蓝色矩形的图像:
应用单应性后:
delphi - 使用 GLScene 或 OpenGL for Delphi 使纹理适合 4 点多边形/平面
我正在为 Delphi XE2 使用最新的 GLScene 主干,并且我从事过一个 GUI-ish 类型的项目,它使用 3D 而不是 2D 在屏幕上绘制 GUI 元素。
它可以工作,但由于显而易见的原因,图形放置不是像素完美的。
我已经设法映射 3D 视图,以便 TGLSceneViewer 上的 1 个像素在屏幕上或多或少 1 个像素。这对我来说已经足够了。
但是,我放弃了在我的 GUI 中使用 3D 的想法,而是专注于使用 GLScene 进行 2D 图形表示,因为它是 GPU 加速的。
然后我记得在以前的项目中使用了投影变换,我在我的 GUI 中使用了 Graphics32。
通过投影变换,我可以简单地在 3D 空间中绘制点,读取这些点的 3D 坐标,将坐标转换为 2D 坐标并将其应用于 TBitmap32 投影变换参数,中提琴,我的软件中有 3D 功能。
所以,我的问题是:
是否可以在 GLScene 或 OpenGL 中“拉伸”纹理,使纹理适合 4 个点之间或平面内,这样每当我将平面的角移动到新位置时,纹理都会相应地拉伸?
这样我就可以将 GLScene 用于 2D 图形,但需要做一些简单的技巧来使事物看起来像 3D。
下面的链接指向互联网上的图像,这是我正在寻找的视觉表示:http: //i.stack.imgur.com/hDdqa.png
matlab - 未校准的多视图重建深度估计
我正在尝试从 MATLAB 中的一组未校准照片进行 3D 重建。我使用 SIFT 来检测图像之间的特征点和匹配。我想先进行投影重建,然后使用自动校准将其更新为公制。
我知道如何通过计算基本矩阵、相机矩阵和三角测量来估计 2 张图像的 3D 点。现在假设我有 3 个图像,a、b 和 c。我计算图像 a 和 b 的相机矩阵和 3D 点。现在我想通过添加图像 c 来更新结构。我通过使用与图像 c 中的 2D 点匹配的已知 3D 点(从 a 和 b 计算)来估计相机矩阵,因为:
但是,当我重建 b 和 c 之间的 3D 点时,它们不会与来自 a 和 b 的现有 3D 点相加。我假设这是因为我不知道点的正确深度估计(在上面的公式中用s描述)。
使用Sturm 和 Triggs 的分解方法,我可以估计深度并找到结构和运动。但是,为了做到这一点,所有点都必须在所有视图中可见,而我的图像并非如此。如何估计在所有视图中不可见的点的深度?