- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用概述的基于 Voronoi 图的方法 here找到根图像的二进制掩模的中线。我使用的 Python 代码或多或少与描述的完全一样:
import skimage.morphology as morphology
WHITE = 255
image_bool = binary_mask == WHITE
d = morphology.disk(2)
img = morphology.binary_closing(image_bool, selem=d)
skeleton = morphology.medial_axis(img)
然后是绘图:我将骨架化图像输入到 buildTree 中,如用户 Gabriel 的 iPython 笔记本中所述: https://github.com/gabyx/WormAnalysis/blob/master/SkeletonTest/Skeletonize.ipynb
一般来说,这会产生很好的结果。但是,该方法有时会以两种不同的方式失败:
1) 图并不总是延伸根的整个长度:
2)图表有时“过早”连接到沿着根轮廓的点,该点可能看起来是最长的路径,但显然不符合我所说的“中线”。对于各种不同的多边形形状都会发生这种情况:
最后一个案例是一个人造面具——我的实际根部没有一个完全平坦的尖端——但我认为它很好地代表了问题。
对 Voronoi 图有更深入了解的人是否有任何关于如何解决这些问题的提示,同时仍然保留这种通用方法。
谢谢!
最佳答案
这两个问题都是中轴、Voronoi 方法的“特征”。
中轴上的点具有与两个或多个边界等距离的属性。这是因为中轴点是 Voronoi 点,或双 Delaunay 三角剖分中心。这意味着有一个以该圆心为中心的圆,整个圆都在边界内,穿过三个边界点。至少当边界离散化进入无穷大时会出现这种情况。由于边界没有无限多个点,因此该方法是您观察到的问题的近似方法。
1) 圆弧的中轴是一个点。这个结果还是不错的。如果形状以非常干净的弧结束,则中轴“停止”在弧部分的中轴点上。这可以从 Skeletonize page 上不同方法的比较中看出。 .
2) 两条线的中轴穿过角平分线。这意味着如果边界上有更多的“角”,就会有更多的轴“手指”进入这些角。就像正方形的中轴是X形一样。如果您使用 WormAnalysis 方法(您提到的),则仅提取轴上的最长路径。这对蠕虫有好处,但不适用于一般情况。一般情况下,最好通过移除覆盖一小部分边界的部件来清洁轴。就像主题 2) 的第一张图片一样,有一个轴部分向上。这部分是边界左上角小角的中轴。边界上那个角的左侧是具有小中轴的弧形部分。由于采用最长的路径,因此采用了覆盖边界的一小部分的长“手指”,但覆盖了边界的较大部分的中轴的较小部分被省略了。
关于python - 使用 Voronoi 图查找多边形的中线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436517/
我有一个让我想起 Voronoi 的问题,但我希望我的变体能让我避免使用 Voronoi 算法,并更快地写一些东西。 这是我在 Paint 中制作的一个可怕的图像来说明我的问题: 假设我有一个 map
上午下午 或晚上。 # Reproducible data df % filter(years == i) # # plot % filter(years == i)
我正在生成一个简单的 2D Voronoi 曲面分割,使用 scipy.spatial.Voronoi功能。我使用点的随机二维分布(参见下面的 MCVE)。 我需要一种方法来遍历每个定义的区域(由 s
我现在花了很多时间试图从 scipy.spatial.Voronoi 图中获取边,但无济于事。这是主要文档: http://docs.scipy.org/doc/scipy-dev/reference
我正在使用 voronoi 镶嵌。我有不同的多边形代表分割中的区域。 下面的点用于绘制图中的曲面分割。 tessdata [,1] [,2] 1 -0.4960583 -0.35
我有一个可折叠的力导向布局,我从 here 中引用了它. 我修改了代码,在图中的每个节点后面添加了 Voronoi 单元。目前,它看起来像是在工作,因为我可以看到 Voronoi 单元格根据折叠状态出
我创建了一个无法正常工作的 voronoi 代码。 我真的想不出错误!!! 我调用的函数是: void Voronoi( const int NbPoints, const int h
给定 voronoi 边列表,如何在合理的时间内获得每个单元格的质心?请注意,我只有 Voronoi 图的边,但我必须确定质心。 Voronoi 图是给定 Delaunay 三角剖分构造的,因此三角剖
到目前为止,我有一个程序采用一组随机点、站点,并围绕这些点形成适当的 Voronoi 图,表示为角和边的图形。它还为我提供了 Delaunay 三角剖分作为另一个以所有站点为节点的图形(尽管我不知道这
我正在寻找一种简单的(如果存在的话)算法来查找球体表面上一组点的 Voronoi 图。源代码会很棒。我是 Delphi 人(是的,我知道...),但我也吃 C 代码。 最佳答案 2016 年 7 月更
我需要生成一个 Voronoi diagram围绕多边形内部的凹(非凸)。我在网上找过方法,但我一直无法弄清楚如何做到这一点。基本上,我生成点的凸包,计算对偶点并在这些点之间构建边缘网络。然而,当遇到
我正在尝试使用 scipy.spatial.Voronoi 计算 Voronoi 图每个区域的确切边界,前提是所有点都在预定义的多边形内。例如,使用此 documentation 中的示例. 如果我需
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我正在使用 Voronoi 图进行图像处理 ( procedurally generated stippling )。 为了做到这一点,我需要创建一个元组(x,y 像素位置)列表(coords_wit
我有两个 geopandas 数据框 dfMd 和 centers。 dfMd 由多边形组成,而 centers 由点组成。 Here文件的链接。 f,ax=plt.subplots() dfMd.p
我正在使用 scipy.spatial用于 Voronoi 图的可视化。但是,这里使用的距离度量是欧几里得 (L2)。我正在我的 Voronoi 图上寻找一种曼哈顿 (L1) 度量方式。有没有一种简单
据我了解,R 缺少一种方法来以空间独占的方式缓冲多边形,以保留相邻多边形的拓扑结构。所以我正在试验一种生成原始多边形顶点的 voronoi 多边形的方法。除了 voronoi 生成中的明显错误外,结果
我一直在尝试为各州创建自定义区域。我想通过使用点的影响区域来填充状态图。 下图代表了我一直在尝试的东西。左图显示了点,我只想像右图一样填充所有区域。我使用了 Voronoi/Thiesen,但它在区域
我想弄清楚如何为两个不同的点绘制 Voronoi 图。 有人可以帮我吗。 谢谢 最佳答案 如我的图片所示,你应该只连接你的点,然后画一条穿过中心的线,与该线段正交。 关于draw - 如何绘制两个不同
我正在尝试在固定地理区域内为一组点创建 Voronoi 多边形(又名 Dirichlet 镶嵌或泰森多边形)。但是,我无法在 R 中找到一种将多边形绑定(bind)在 map 边界内的方法。我的主要目
我是一名优秀的程序员,十分优秀!