标签: triangulation

OpenCV从一个三角形变形到另一个三角形

我想将OpenCV Mat中的一个三角形映射到另一个三角形,非常像warpAffine(在这里检查),但是对于三角形而不是四边形,以便在delaunay三角剖分中使用它.

我知道一个人可以使用面具,但我想知道是否有更好的解决方案.

最好的问候,丹尼尔

opencv triangulation affinetransform warp

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

三角带三角剖分

我想将三角形​​条带的顶点转换为独立三角形,以便我可以使用 OpenGL 的GL_TRIANGLES原始类型绘制它们。

但是,以下两个代码都不起作用,我不明白为什么:

for(int i = 0; i < triangleStripVertices.size() - 2; i++) {
    triangleVertices.add(triangleStripVertices.get(i));
    triangleVertices.add(triangleStripVertices.get(i + 1));
    triangleVertices.add(triangleStripVertices.get(i + 2));
}
Run Code Online (Sandbox Code Playgroud)

而这个也不起作用:

for(int i = 0; i < triangleStripVertices.size() - 2; i++) {
    if(i % 2 == 1) {
        triangleVertices.add(triangleStripVertices.get(i));
        triangleVertices.add(triangleStripVertices.get(i + 2));
        triangleVertices.add(triangleStripVertices.get(i + 1));         
    } else {
        triangleVertices.add(triangleStripVertices.get(i));
        triangleVertices.add(triangleStripVertices.get(i + 1));
        triangleVertices.add(triangleStripVertices.get(i + 2));
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

损坏的输出如下所示:

损坏的输出

java android 2d opengl-es triangulation

0
推荐指数
1
解决办法
1211
查看次数

使用 Metal 和 Swift 3 渲染快速变化的任意大小的网格

我正在尝试以设备允许的速度将随机网格渲染到 MTKView .. 我发现的几乎所有金属示例都展示了如何绘制仅定义一次缓冲区大小(即固定)的几何图形:

let dataSize = vertexCount * MemoryLayout<VertexWithColor>.size // size of the vertex data in bytes
let vertexBuffer: MTLBuffer = device!.makeBuffer(bytes: verticesWithColorArray, length: dataSize, options: []) // create a new buffer on the GPU
Run Code Online (Sandbox Code Playgroud)

目标是最终在给定一些点云输入的情况下动态生成网格。我已将绘图设置为通过点击触发,如下所示:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first  {
      let touchPoint = touch.location(in: view)
      print ("...touch \(touchPoint)")

      autoreleasepool {
        delaunayView.setupTriangles()
        delaunayView.renderTriangles()
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

我可以用新的三角形刷新屏幕,只要我不要太频繁地点击。但是,如果我点击太快(比如双击),应用程序会崩溃并显示以下错误:

[CAMetalLayerDrawable texture] should not be called after presenting the drawable.
Run Code Online (Sandbox Code Playgroud)

性能显然与绘制的三角形数量有关。除了让应用程序稳定运行之外,同样重要的问题是,我怎样才能最好地利用 GPU …

frame-rate triangulation render-to-texture metal swift3

0
推荐指数
1
解决办法
842
查看次数

给定校正图像的视差图,如何计算真实深度?

我已经为给定的校正立体对计算了视差图!我可以使用公式计算我的深度

z = (baseline * focal) / (disparity * p)
Run Code Online (Sandbox Code Playgroud)

让我们假设基线、焦距和像素常数 p 是已知的,并且我对两个图像使用了相同的相机。现在我的视差可能在 -32..128[pixel] 的范围内。当我使用上面的公式时,对于我的 0 视差值,我将得到无穷大/除以零。当我将视差值移动到 1..161 时,我选择了任意视差值的范围,这是一个问题,因为函数 1/disparity 将在 1..161 或 100..260 处给出完全不同的值间距这甚至不是线性的。所以我什至不会得到(线性)尺度的重建,因为尺度变化是非线性的。

我如何确定我的视差必须位于哪个区域才能使用上述公式进行度量重建?或者根本不可能用上述公式和校正后的图像以度量方式重建某些东西?如果是这样,为什么?

(我知道我可以重新投影到我的未校正图像并进行三角测量,但我特别想知道为什么或如果上面的公式不可能。感谢任何可以帮助我的人!)

computer-vision triangulation disparity-mapping depth 3d-reconstruction

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