问题标签 [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.
python - Python-用camera.Camera类投影一个圆圈
我目前正在用 camera.Camera 类和不同的视角投影一个圆圈。
规格:
- 圆心 -> [0 , 0, 1]
- 相机中心 -> [0, 0, 0](向上看 z 轴)
我使用了 camera.Camera 类,看起来一切都很好,但是当我将 y 轴的视角更改为高于 60 度时,这些点突然形成一个十字。(https://i.stack.imgur.com/GBvDX.png)
在我看来,这是一个代码问题(它应该形成一个椭圆)。还是这是某种投射现象?
这是我的代码:
我是射影几何的新手,我不知道这种行为是预期的还是我的错。
我非常感谢您能提供的任何帮助。
opencv - 透视矩阵中唯一参数的最小数量,用于将线从图像映射到世界
我的问题的最小部分
给定:
- 绿线与红线平行和垂直(在现实世界中)
- 已知两个距离(紫色)
查找:
- 距离 x(米),从第一条绿线和红线的交点到该线上的任意点
2D 案例(已知):
给定图像中的 4 个点,表示在现实世界中具有已知边(米)和角度的多边形,我可以使用 cv2. getPerspectiveTransform() 查找 3x3 变换矩阵并使用 cv2.warpPerspective 查找图像中任意两点之间的实际距离 (m)。所以,我需要 4 个点 = 8 个独立值来找到那个变换。
我的情况:
现在,我不想要二维信息。我只想将图像中的红线映射到代表沿该线的实际长度的线。直观地说,似乎只有 2 个独立的值就足够了。我可以画更多的绿线,沿着红线获得更多的距离。应该够了吧?
我怎样才能做到这一点?映射在 2D 中似乎不是线性的(消失点可能映射到无穷大)。所以,我可能需要一个 3x3 矩阵。但是这 9 个值中有多少是独立的?
computer-vision - 不同相机视图之间的映射
我在 Blender 中有一个校准的(虚拟)相机,可以查看大致平面的物体。我从第一个相机姿势 P0 制作图像并将相机移动到新姿势 P1。所以我有两个视图的 4x4 相机矩阵,我可以从中计算相机之间的转换,如下所示。我也知道内在矩阵 K。使用这些,我想将 P0 图像中的点映射到从 P1 看到的新图像(当然,我有要比较的基本事实,因为我可以在相机完成后在 Blender 中渲染移至 P1)。如果我只在 P0 和 P1 之间旋转相机,我可以完美地计算单应性。但是如果有平移,则计算出的单应矩阵不会考虑到这一点。理论说,在计算出 M10 之后,对于平面场景,应该删除最后一行和最后一列。但是,当我检查 M10 时,我看到翻译值在最右边的列中,我将其删除以获得 3x3 单应矩阵 H10。然后,如果没有旋转,H10 等于单位矩阵。这里出了什么问题?
编辑:我知道这些图像是通过单应性相关的,因为给定来自 P0 和 P1 的两个图像,我可以找到一个单应性(通过特征匹配),它可以完美地将 P0 的图像映射到 P1 的图像,即使存在平移相机运动。
computer-vision - 半整数坐标的原因
我正在阅读谷歌的一些投影几何图像变形代码
使用从 0.5 开始的“半整数坐标”的原因是什么?