标签: triangulation

使网格四面化

我正在寻找一种接收3d表面网格的算法(即由三维三角形组成,这些三角形是某些流形的离散化)并在网格体积内生成四面体.

也就是说,我希望3d相当于这个2d问题:给定一个闭合曲线,对它的内部进行三角测量.

如果不清楚,我很抱歉,这是我能想到解释它的最佳方式.

对于第二种情况,有三角形.对于3d情况,我找不到.

mesh triangulation tetrahedra

9
推荐指数
1
解决办法
293
查看次数

OpenCV中的摄像机坐标系如何定位?

我试图从两个视图的三角测量中得到一个点的3D坐标.我不确定我的结果是否正确.

例如,我不确定坐标的符号是否正确,因为我不确定相机框架是如何定向的.

z轴正面是进入或退出图像平面?而x和y?他们遵循右手规则吗?

在此先感谢您的澄清!

opencv computer-vision triangulation

9
推荐指数
1
解决办法
2万
查看次数

射频三角测量(定位)

我想知道是否有可能通过使用无线电波以某种方式三角测量(或以其他方式)获得移动物体在定义区域内的位置,比如200m x 200m.我一直在寻找一些收发器,范围不应该是不可能的(预算并不重要).我需要什么?那里有一些阅读材料吗?

我想到的是在定义区域周围放置一些"天线",收听来自移动物体的射频信号 - 然后以某种方式计算物体到天线的距离,这样就可以得到物体的确切位置通过组合来自所有天线的数据.

这有点可能吗,有人关心我指向正确的方向吗?非常感谢你们.

编辑:忘记提到准确性不必如此精确,可能~15厘米?

arduino radio triangulation

9
推荐指数
1
解决办法
2万
查看次数

计算建筑物内的距离

我开始考虑创建一个可以在公司大楼内使用的Android应用程序,以确定你所在的房间.显然我认为GPS和网络位置不够准确,无法实现这一目标.(更不用说内部GPS信号的不稳定性)我简要地看了一下通过加速度计计算距离,但它显然是高度不稳定的并且留下了很大的误差.我也考虑过某种来自路由器的三角测量,但你遇到了墙壁/微波和各种其他可能扰乱信号强度的问题.有没有人有任何可能的想法或方向尝试?

gps android accelerometer geolocation triangulation

8
推荐指数
1
解决办法
6926
查看次数

多边形三角剖分为OpenGL ES的三角形条带

我正在寻找一种快速多边形三角剖分算法,可以将不太复杂的2D凹面多边形(无孔)三角剖分成三角形条带,准备发送到OpenGL ES进行绘图GL_TRIANGLE_STRIP.

我知道一些算法,但我找不到符合我需求的算法:

我正在开发的平台是:iOS,OpenGL ES 2.0,cocos2d 2.0.

任何人都可以帮我这样的算法吗?或者非常感谢任何其他建议.

algorithm triangulation cocos2d-iphone opengl-es-2.0 gl-triangle-strip

8
推荐指数
1
解决办法
2万
查看次数

如何从calibrateCamera()返回值中获取相机投影矩阵

我试图为三角测量过程获得一个3x4相机矩阵,但calibrateCamera()只返回3x34x1矩阵.

如何从这些矩阵中获取3x4

提前致谢!!

opencv triangulation camera-calibration

8
推荐指数
1
解决办法
2万
查看次数

如何在Boost中对多边形进行三角测量?

使用Boost对多边形进行三角测量的最佳方法是什么?

我使用Boost.polygon.

我目前的算法:

  1. 从我的多边形顶点计算voronoï图.

  2. 为每个单元格边创建一个有向多边形边(这将为每个单元格边创建两个有向多边形边)

  3. 迭代所有创建的边以创建三角形(不是微不足道的)

更好的解决方案?

编辑:我刚刚意识到可能以特殊方式遍历单元格直接创建三角形(3个相邻单元格创建一个三角形).

c++ boost polygon triangulation boost-polygon

8
推荐指数
1
解决办法
3061
查看次数

从三角测量推断

假设我们有五个顶点:

X = [0 1;
     2 1;
     4 1;
     1 0;
     3 0];
Run Code Online (Sandbox Code Playgroud)

三角测量:

T = [1 4 2;
     4 5 2;
     5 3 2];
Run Code Online (Sandbox Code Playgroud)

和顶点上定义的函数值:

Fx = [1;
      2;
      3;
      4;
     -5];
Run Code Online (Sandbox Code Playgroud)

然后我们可以通过使用重心坐标轻松计算三角形内任何点的函数值.对于P = [1 .5]位于第一个三角形中的点,重心坐标为B = [.25 .5 .25],因此函数的计算结果为Fxi = 1/4 + 4/2 + 2/4 = 2.75.

但是,我很难看出如何推断这个表面.我们可以找到最接近的三角形并从中推断出来.问题是这会导致不连续的功能.考虑例如点P = [2 2].根据三角形1,其值为-0.5,而根据三角形3,其值为9.5.

是否有"标准"或普遍接受的方法从分段线性函数中推断出来?任何指向现有材料的指针也非常赞赏.

triangulation piecewise extrapolation

8
推荐指数
1
解决办法
540
查看次数

最快的带孔洞的三角剖分算法?

我正在为RTS游戏寻找路径,我正在从游戏网格构建导航网格.

我编写了一个类似于Marching Squares的算法,它可以创建并简化地图中可步行和不可行走区域之间的边界.现在我有一个仅由边缘组成的"网格".我需要对此网格进行三角测量,以便最终的三角剖分包含初始边,然后我可以删除不可移动的区域以在导航网格中创建孔.例如,我需要这样做......

在此输入图像描述

三角形代表地图的可行走区域.这些洞代表了不可穿越的地区,如山脉或建筑物.网格可以被认为是2D,因为高度是无关紧要的.这显然是一个非常简化的案例.游戏中的导航网格将由数千个顶点和许多洞组成,但我可以将其分解为更小的块以进行动态更新.

我已经研究了受约束的Delaunay三角剖分算法,该算法首先创建点的Delaunay三角剖分,然后移除与受约束边相交的任何三角形,然后重新三角化移除的三角形.

对我来说,这似乎有点多余.我的网格不需要是Delaunay,它完全由约束边组成,所以如果可能的话,我想跳过额外的三角剖分.有更好的算法吗?我看了看,只能找到受约束的Delaunay算法.或者也许我错了,受约束的Delaunay算法最好?

我之前已经完成了从头开始的导航网格路径查找,但从未必须自己生成导航网格.三角测量算法对我来说是新的.任何见解?

navigation algorithm mesh triangulation

7
推荐指数
1
解决办法
3370
查看次数

如何使用OpenCV triangulatePoints

我正在努力让OpenCV triangulatePoints功能起作用.我正在使用从光流生成的点匹配功能.我正在使用一个移动相机的两个连续帧/位置.

目前这些是我的步骤:

给出了内在函数,看起来像人们期望的那样:

2.6551e+003  0.           1.0379e+003
0.           2.6608e+003  5.5033e+002
0.           0.           1.
Run Code Online (Sandbox Code Playgroud)

然后,我基于(高度精确的)GPS和相对于GPS的摄像机位置计算两个外部矩阵([R | t]).请注意,GPS数据使用荷兰周围的笛卡尔坐标系,该坐标系使用米作为单位(因此不需要奇怪的lat/lng数学运算).这产生以下矩阵:

相机外在矩阵

接下来,我简单地删除这些矩阵的底行并将它们与内在矩阵相乘以得到投影矩阵:

projectionMat = intrinsics * extrinsics;
Run Code Online (Sandbox Code Playgroud)

这导致:

投影矩阵

我的图像点只包含第一组的所有像素坐标,

(0, 0)...(1080, 1920)
Run Code Online (Sandbox Code Playgroud)

和所有像素坐标+他们计算的第二组光流.

(0 + flowY0, 0 + flowX0)...(1080 + flowYN, 1920 + flowXN)
Run Code Online (Sandbox Code Playgroud)

为了计算3D点,我将图像点(以OpenCV期望的格式)和投影矩阵提供给triangulatePoints函数:

cv::triangulatePoints(projectionMat1, projectionMat2, imagePoints1, imagePoints2, outputPoints);
Run Code Online (Sandbox Code Playgroud)

最后,我将outputPoints齐次坐标转换为它们的第四个坐标(w)并删除该坐标.

我最终得到的是一些奇怪的锥形点云:

输出1

现在我已经尝试了我能想到的每种调整组合(反转矩阵,改变X/Y/Z顺序,反转X/Y/Z轴,改变乘法顺序......),但是一切都会产生类似奇怪的结果.确实给我带来更好结果的一件事就是将光流值乘以0.01.这导致以下点云:

输出2

这仍然不是很完美(远离相机的区域看起来非常弯曲),但更像我期望的那样.

我想知道是否有人能发现我做错了什么.我的矩阵看起来不错吗?输出我是否与某个问题有关?

我非常肯定的是,它与GPS或光流无关,因为我测试了多个帧,它们都产生相同类型的输出.我真的认为它与三角测量本身有关.

c++ opencv triangulation

7
推荐指数
1
解决办法
1652
查看次数