问题标签 [qhull]

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.

0 投票
2 回答
931 浏览

python - 如何在 scipy.spatial.qhull.Delaunay 中禁用控制台输出异常?

我有数千个点集,我将它们提供给Scipy 的 Delaunay函数以获得一组相应的三角剖分。

如果我的输入点无效,例如。一条线上的所有点或由于某些其他原因,Delaunay 三角剖分失败,它会在控制台中生成一个非常详细的报告,如下面的报告:

QH6154 qhull 精度错误:初始面 1 与内部点共面
ERRONEOUS FACET:
- f1
- 标志:底部简单的 UpperDelaunay 翻转
- 正常:-0.3162 -0.9487 0
- 偏移:5929262
- 顶点:p4(v2)p3(v1)p0 (v0)
- 相邻面:f2 f3 f4

执行时:| qhull d Qbb Qt Qc Qz
为 Qhull 2012.1 2012/02/18 选择的选项:
run-id 231396746 delaunay Qbbound-last Qtriangulate Qcoplanar-keep
Qz-infinity-point _pre-merge _zero-centrum Qinterior-keep Pgood _max
-width 33 Error- roundoff 5.8e-009 _one-merge 4e-008
Visible-distance 1.2e-008 U-coplanar-distance 1.2e-008
Width-outside 2.3e-008 _wide-facet 6.9e-008 qhull

的输入似乎小于3 维,或
计算已溢出。

Qhull 无法从点构造一个清晰的凸单纯形:
- p1(v3): 4.9e+005 6.1e+006 0.00016
- p4(v2): 4.9e+005 6.1e+006 33
- p3(v1): 4.9e+ 005 6.1e+006 0
- p0(v0): 4.9e+005 6.1e+006 0.0009

中心点与刻面共面,或顶点
与相邻刻面共面。最大舍入误差为
计算距离为 5.8e-009。中心点、刻面和
到中心点的距离如下:

中心点 4.9e+005 6.087e+006 8.25

刻面 p4 p3 p0 距离= 0
刻面 p1 p3 p0 距离= 0
刻面 p1 p4 p0 距离= 0
刻面 p1 p4 p3 distance= 0

这些点要么具有最大或最小 x 坐标,要么
他们最大化 k 坐标的行列式。
首先从使坐标最大化的点中选择 试验点 。

每个维度的最小和最大坐标是:
0: 4.9e+005 4.9e+005 差异= 33
1: 6.087e+006 6.087e+006 差异= 11
2: 0 33 差异= 33

如果输入应该是全维的,您有几个选项
可以确定初始单纯形:
- 使用 'QJ' 微调输入并使其全维
- 使用'QbB' 将点缩放到单位立方体
- 使用'QR0' 随机旋转输入以获得不同的最大点
- 使用'Qs' 搜索所有点对于初始单纯形
- 使用“En”指定小于 5.8e-009 的最大舍入误差。
- 使用“T3”跟踪执行以查看每个点的行列式。

如果输入是低维的:
- 使用“QJ”来调整输入并使其全维
- 使用 'Qbk:0Bk:0' 从输入中删除坐标 k。您应该
选择范围最小的坐标。船体将具有
正确的拓扑结构。
- 确定包含点的平面,将点旋转
到坐标平面中,并删除其他坐标。
- 添加一个或多个点以使输入全维度。

根据文档,没有立即选项可以设置Delaunay(...)呼叫以禁止此报告。在相当长的qhull选项列表中,我也没有找到一个选项。

我已经尝试过这里提供的解决方案,但它似乎绕过了它。

有什么办法可以抑制这种情况吗?

0 投票
1 回答
1216 浏览

python - Matlab delaunayn 和 Scipy Delaunay 之间的区别

我正在尝试使用 scipy.spatial.Delaunay 函数复制由 Python 中的 Matlab delaunayn 函数执行的 N 维 Delaunay 三角剖分。然而,虽然 Matlab 函数给了我想要和期望的结果,但 scipy 给了我一些不同的东西。考虑到两者都是 QHull 库的包装器,我觉得这很奇怪。我假设 Matlab 在其调用中隐式设置了不同的参数。我试图在他们两者之间复制的情况可以在Matlab 的文档中找到。

设置是有一个立方体,中心有一个点,如下所示。我提供的蓝线有助于可视化形状,但它们对这个问题没有任何目的或意义。

一个中心有一个点的立方体

我期望的三角剖分产生 12 个单纯形(在 Matlab 示例中列出),如下所示。

Matlab的三角剖分

然而,这个 python 等价物会产生“额外的”单纯形。

返回的变量simp应该是一个 M x N 数组,其中 M 是找到的单纯形数(在我的情况下应该是 12),N 是单纯形中的点数。在这种情况下,每个单纯形应该是一个四面体,即 N 为 4。

但我发现 M 实际上是 18 并且额外的 6 个单纯形不是四面体,而是立方体的 6 个面。

这里发生了什么?如何将返回的单纯形限制为仅是四面体?我用这个简单的案例来演示这个问题,所以我想要一个不是针对这个问题量身定制的解决方案。

编辑

感谢 Amro 的回答,我能够弄清楚这一点,并且我可以在 Matlab 和 Scipy 之间得到一个简单的匹配。有两个因素在起作用。首先,正如所指出的,Matlab 和 Scipy 使用不同的 QHull 选项。其次,QHull 返回体积为零的单纯形。Matlab 删除了这些,Scipy 没有。这在上面的示例中很明显,因为所有 6 个额外的单纯形都是立方体的零体积共面面。可以使用以下代码在 N 维中删除这些。

我想应该解决其他条件,但我保证我的点已经不包含重复项,并且方向条件似乎对我可以辨别的输出没有影响。

0 投票
2 回答
2603 浏览

python-2.7 - 在 python 中导入 tesseract 时无法安装 qhull

我想从以图像形式存储的一堆表中提取数据-

导入 tesseract 时会提示安装 Qhull(根据文档http://pytesseract.readthedocs.io/en/latest/tutorials.html

代码 -

我得到以下提示,但我无法正确输入目录 -

我尝试在引号中给出目录,也通过变量,但它一直给我无效目录错误

这应该很简单,但我就是不明白。

提前致谢。

0 投票
1 回答
1141 浏览

java - 处理找不到库

我尝试根据此处给出的说明在 Linux 和 Mac 上的 Processing 2.2.1 和 3.2.1 中从 jar 文件(例如quickhull3d )导入

我的目录结构看起来像这样

../Processing/Sketchbook/libraries/quickhull3d/library/quickhull3d.jar

Processing IDE 首选项将速写本位置设置为 ../Processing/Sketchbook

在我的 .pde 文件中,我有开头行

我得到了错误:

没有找到 quickhull3d 库的库必须安装在“sketchbook”文件夹内名为“libraries”的文件夹中。

注意:我已经看到这个问题在这里和处理论坛上被反复问过,并且尽我所能告诉我,我正在按照书面说明进行操作。在尝试运行草图之前我已经重新启动了 IDE,并且我还尝试将 quickhull3d.jar 复制到 /mysketch/code,如果您要将文件拖放到它上面,这是手动执行 IDE 会执行的操作。

跟进:经过进一步调查,问题似乎是 .jar 文件本身没有指向 xyz.class 文件的正确位置,所以我相信这可能是罪魁祸首。此外,我发现ComputationalGeometry贡献的 Processing 库包含 QuickHull3d,无需我手动安装它。将来,我会确保 .jar 中的路径是正确的。

0 投票
1 回答
271 浏览

python - 我无法对常规点云进行三角测量

我轻松地镶嵌了两个参数化 3D 表面(都是凸面)。

这些是两个镶嵌参数曲面:

在此处输入图像描述

现在,我的意图是将两者合并为一个实体。但我得到了这个:

在此处输入图像描述 在此处输入图像描述

我正在使用 Qhull 创建 Delaunay 三角剖分,它似乎适用于第一个凸面,但不适用于背面。:(

这是我当前的代码(部分取自 ZivS )

另外,我greedy_projection从 OpenCV 使用过,但没有任何成功。它只能在不连接它们的情况下执行两个曲面细分。

知道为什么会这样吗?

0 投票
1 回答
5334 浏览

python - griddata:QH6214 qhull 输入错误:没有足够的点(2)来构造初始单纯形

我正在尝试创建相对稀疏的 EEG 数据(27 个电极)的俯视图热图。我将 EEG 电极的 x,y 笛卡尔坐标转换为极坐标,并尝试将它们映射为这样。每个 x,y 坐标对应一个给定值(如果您想知道:Hurst 指数),我希望该位置周围的颜色与之对应。

我从该页面的工作代码开始,并尝试使其适应我的问题。不幸的是,我的适应不起作用。

这是我的代码:

我收到一个错误:

粗体部分是我想要理解的。当我添加更多点时(即,当我向成为极坐标的列表 X 和 Y 添加更多点时),错误声称需要的点数不断增加,总是比我输入的点数提前两步。

有谁知道如何处理这个问题?

0 投票
1 回答
2002 浏览

r - 在 3D 散点图中绘制凸包

我在这里使用包“rgl”遵循了关于 3D 可视化的教程

所以我能够用“iris”数据绘制一个 3D 散点图,并在 95% 的数据点周围创建一个椭圆体:

我知道与数据集的其余部分相比,前 50 个数据点属于不同的群体,因此以不同的方式对它们进行着色,并使用两个椭圆体来覆盖它们:

尽管可以清楚地区分两个种群,但椭球体彼此接触。因此,椭球体不是数据点的良好视觉表示。在 2D 绘图中,我更喜欢使用多项式环绕所有数据点,但在 3D 中,类似凸包的东西就足够了,即由三角形区域组成的多面体,每个区域结合三个外部数据点。

我认为使用“几何”包中的 QuickHull 算法的函数 convhulln() 会有所帮助,但我无法使用它。

有人知道如何在 rgl 图中描绘这样的凸包吗?是否也可以使用 plot3D 包来做到这一点,因为这里有一个很棒的教程我可以用它来用我自己的数据制作一个漂亮的图。

我是“唯一”使用 R 进行科学的生物学家,而不是数学家或 R 程序员,所以请为我解释您的解决方案。非常感谢。

0 投票
1 回答
5569 浏览

python - 使用 scipy.interpolate.griddata 和 method=nearest 边界外的 fill_value

函数scipy.interpolate.griddata允许指定关键字fill_value,文档声明:

用于填充输入点凸包之外的请求点的值。如果未提供,则默认为 nan。 此选项对“最近”方法无效。

但是,在使用2D 数据时,我需要指定fill_value在边界之外使用。method='nearest'如何做到这一点?

0 投票
1 回答
663 浏览

c++ - ROS catkin项目中链接Qhull C++接口失败

我在让 QHull C++ 接口在 catkin 项目中工作时遇到了一些麻烦。我的项目编译良好,并且我指定了链接器要使用的库,但是它无法链接到以下错误消息。

我已经安装了以下软件包,以获取共享对象和开发文件。

  • libqhull-dev
  • libqhull-doc
  • libqhull7
  • 库尔斌

我不知道这是否与问题有关,但查看 libqhull.so 共享对象中没有符号。

有没有人有任何经验让它在 linux 上工作?任何帮助,将不胜感激。

0 投票
2 回答
3404 浏览

python - 用 Scipy 在凸包上找到一个点的投影

从一组点,我得到凸包scipy.spatialDelaunay或者ConvexHull(来自 qhull 库)。现在我想将这个凸包外的一个点投影到外壳上(即,外壳上的点与外面的点距离最小)。

这是我到目前为止的代码:

有了图片可能会更容易,我想从凸包外的蓝点获得绿色的 x 和 y 坐标。这个例子是二维的,但我也需要在更高的维度上应用它。谢谢您的帮助。

凸壳和点以绿色获得

编辑:问题在这里得到解决,但我无法实现它:https ://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensions