问题标签 [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.
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选项列表中,我也没有找到一个选项。
我已经尝试过这里提供的解决方案,但它似乎绕过了它。
有什么办法可以抑制这种情况吗?
python - Matlab delaunayn 和 Scipy Delaunay 之间的区别
我正在尝试使用 scipy.spatial.Delaunay 函数复制由 Python 中的 Matlab delaunayn 函数执行的 N 维 Delaunay 三角剖分。然而,虽然 Matlab 函数给了我想要和期望的结果,但 scipy 给了我一些不同的东西。考虑到两者都是 QHull 库的包装器,我觉得这很奇怪。我假设 Matlab 在其调用中隐式设置了不同的参数。我试图在他们两者之间复制的情况可以在Matlab 的文档中找到。
设置是有一个立方体,中心有一个点,如下所示。我提供的蓝线有助于可视化形状,但它们对这个问题没有任何目的或意义。
我期望的三角剖分产生 12 个单纯形(在 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 维中删除这些。
我想应该解决其他条件,但我保证我的点已经不包含重复项,并且方向条件似乎对我可以辨别的输出没有影响。
python-2.7 - 在 python 中导入 tesseract 时无法安装 qhull
我想从以图像形式存储的一堆表中提取数据-
导入 tesseract 时会提示安装 Qhull(根据文档http://pytesseract.readthedocs.io/en/latest/tutorials.html)
代码 -
我得到以下提示,但我无法正确输入目录 -
我尝试在引号中给出目录,也通过变量,但它一直给我无效目录错误
这应该很简单,但我就是不明白。
提前致谢。
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 中的路径是正确的。
python - 我无法对常规点云进行三角测量
我轻松地镶嵌了两个参数化 3D 表面(都是凸面)。
这些是两个镶嵌参数曲面:
现在,我的意图是将两者合并为一个实体。但我得到了这个:
我正在使用 Qhull 创建 Delaunay 三角剖分,它似乎适用于第一个凸面,但不适用于背面。:(
这是我当前的代码(部分取自 ZivS )
另外,我greedy_projection
从 OpenCV 使用过,但没有任何成功。它只能在不连接它们的情况下执行两个曲面细分。
知道为什么会这样吗?
python - griddata:QH6214 qhull 输入错误:没有足够的点(2)来构造初始单纯形
我正在尝试创建相对稀疏的 EEG 数据(27 个电极)的俯视图热图。我将 EEG 电极的 x,y 笛卡尔坐标转换为极坐标,并尝试将它们映射为这样。每个 x,y 坐标对应一个给定值(如果您想知道:Hurst 指数),我希望该位置周围的颜色与之对应。
我从该页面的工作代码开始,并尝试使其适应我的问题。不幸的是,我的适应不起作用。
这是我的代码:
我收到一个错误:
粗体部分是我想要理解的。当我添加更多点时(即,当我向成为极坐标的列表 X 和 Y 添加更多点时),错误声称需要的点数不断增加,总是比我输入的点数提前两步。
有谁知道如何处理这个问题?
r - 在 3D 散点图中绘制凸包
我在这里使用包“rgl”遵循了关于 3D 可视化的教程
所以我能够用“iris”数据绘制一个 3D 散点图,并在 95% 的数据点周围创建一个椭圆体:
我知道与数据集的其余部分相比,前 50 个数据点属于不同的群体,因此以不同的方式对它们进行着色,并使用两个椭圆体来覆盖它们:
尽管可以清楚地区分两个种群,但椭球体彼此接触。因此,椭球体不是数据点的良好视觉表示。在 2D 绘图中,我更喜欢使用多项式环绕所有数据点,但在 3D 中,类似凸包的东西就足够了,即由三角形区域组成的多面体,每个区域结合三个外部数据点。
我认为使用“几何”包中的 QuickHull 算法的函数 convhulln() 会有所帮助,但我无法使用它。
有人知道如何在 rgl 图中描绘这样的凸包吗?是否也可以使用 plot3D 包来做到这一点,因为这里有一个很棒的教程,我可以用它来用我自己的数据制作一个漂亮的图。
我是“唯一”使用 R 进行科学的生物学家,而不是数学家或 R 程序员,所以请为我解释您的解决方案。非常感谢。
python - 使用 scipy.interpolate.griddata 和 method=nearest 边界外的 fill_value
函数scipy.interpolate.griddata
允许指定关键字fill_value
,文档声明:
用于填充输入点凸包之外的请求点的值。如果未提供,则默认为 nan。 此选项对“最近”方法无效。
但是,在使用2D 数据时,我需要指定fill_value
在边界之外使用。method='nearest'
如何做到这一点?
c++ - ROS catkin项目中链接Qhull C++接口失败
我在让 QHull C++ 接口在 catkin 项目中工作时遇到了一些麻烦。我的项目编译良好,并且我指定了链接器要使用的库,但是它无法链接到以下错误消息。
我已经安装了以下软件包,以获取共享对象和开发文件。
- libqhull-dev
- libqhull-doc
- libqhull7
- 库尔斌
我不知道这是否与问题有关,但查看 libqhull.so 共享对象中没有符号。
有没有人有任何经验让它在 linux 上工作?任何帮助,将不胜感激。
python - 用 Scipy 在凸包上找到一个点的投影
从一组点,我得到凸包scipy.spatial
,Delaunay
或者ConvexHull
(来自 qhull 库)。现在我想将这个凸包外的一个点投影到外壳上(即,外壳上的点与外面的点距离最小)。
这是我到目前为止的代码:
有了图片可能会更容易,我想从凸包外的蓝点获得绿色的 x 和 y 坐标。这个例子是二维的,但我也需要在更高的维度上应用它。谢谢您的帮助。
编辑:问题在这里得到解决,但我无法实现它:https ://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensions