多边形斑点的中心线(二值图像)

2024-01-11

我有一个蠕虫的二进制图像(斑点提取效果很好)。 我有兴趣在斑点(蠕虫)上拟合中心线。

到目前为止,我想出了这个:从多边形开始(在图像中提取斑点的轮廓之后),我应用了 voronoi 计算并丢弃了多边形(蓝色)之外的所有顶点,这给了我可以的黑色中心线进一步用于拟合平滑的中心线。

然而,这种计算一点也不稳健(由于删除了不在多边形内部的 voronoi 顶点?)有人知道获取多边形中心线或斑点对象(二进制图像)中心线的算法工作流程吗? (骨架化?,使用内部边缘的中点对多边形进行三角剖分)

这是一个演示:


我找到了更好的解决方案:

  • 骨架化 http://scikit-image.org/docs/dev/api/skimage.morphology.html#medial-axis二进制斑点
  • 建立graph https://networkx.github.io/通过追踪像素线和分支点来绘制骨架(无循环)
  • 获取从每个端节点到所有其他端节点的所有最短路径,并取最长的一条(大约是 blob 的开头和结尾)
  • 从一个端节点(度=1)到另一端节点的最终路径是蠕虫中线的近似值。

If someone is interested in the solution, I may share a python notebook. end result: green= final midline graph, dark green=final midline

the graph of the skelton

源代码:
这个问题的代码可以在这里找到:https://github.com/gabyx/WormAnalysis https://github.com/gabyx/WormAnalysis(如果你用过请加星标)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多边形斑点的中心线(二值图像) 的相关文章

  • scikit学习逻辑回归方程

    我已经在 iris 数据集上运行了逻辑回归 直到这段代码我才清楚 之后我想形成方程来对测试数据进行评分 该怎么做 我知道我可以使用预测函数对测试进行评分 但是我想查看参数和各自的权重 能否请你帮忙 from sklearn import d
  • Python ImageTk.PhotoImage 使用 alpha 通道缓慢加载 png

    我编写了一个小程序来加载和显示图像 一切正常 直到我到达 示例中的 png 文件 shade png 显示这张小图片需要七七秒 PhotoImage 是否有错误或者我错过了一些 范围 这是我的示例代码 from PIL import Ima
  • Python:用中值替换异常值

    我有一个 python 数据框 其中有一些异常值 如果这些值不存在的话 我想用数据的中值替换它们 id Age 10236 766105 11993 288 9337 205 38189 88 35555 82 39443 75 10762
  • BeautifulSoup 不适用于某些网站

    我有这个脚本 import urrlib2 from bs4 import BeautifulSoup url http www shoptop ru page urllib2 urlopen url read soup Beautiful
  • swig char ** 作为指向 char * 的指针

    我在使用 swig 和 char 作为指向变量 char 的指针时遇到问题 而不是作为 char 的列表 我找不到将指针包装到 char 的方法 目的是将连接的结果写入指针引用的 char 中 以下是我的代码 文件指针 cpp includ
  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • django/whitenoise 存储后端导致错误

    我在调试关闭时在 heroku 上运行 django 应用程序时遇到了 500 错误 使用 rollbar 了解发生错误的原因后 它报告了以下内容 ValueError The file media img 1 jpg could not
  • 使用 selenium 在 python 中切换到弹出窗口

    如何在下面的 selenium 程序中切换到弹出窗口 我已经查找了所有可能的解决方案 但无法解决它们 请帮忙 from selenium import webdriver from splinter import Browser from
  • 如何在 pySpark 数据框中添加行 ID [重复]

    这个问题在这里已经有答案了 我有一个 csv 文件 我在 pyspark 中将其转换为 DataFrame df 经过一番改造后 我想在 df 中添加一列 这应该是简单的行 ID 从 0 或 1 开始到 N 我将 df 转换为 rdd 并使
  • 如何在 Google App Engine 中为模型定义唯一属性?

    我需要一些独特的属性 我怎样才能实现这个目标 有没有类似的东西unique True 我正在使用适用于 Python 的 Google App Engine Google 提供了执行此操作的函数 http code google com a
  • Python - 在先前已在全局范围内查找的函数内重新分配名称

    为什么我在下面的第三个代码中出现错误 但在前两个代码中却没有出现错误 我使用的是 Python 3 6 0 Anaconda 4 3 1 64 位 Jupyter Code 1 c 100 def fib c 20 a c print a
  • seaborn 未在定义的子图中绘制

    我正在尝试用这段代码并排绘制两个图表 fig ax1 ax2 plt subplots 1 2 sns displot x X train Age hue y train ax ax1 sns displot x X train Fare
  • 如何在 PySide/PyQt 中制作一个位于屏幕中央的小部件?

    这段代码有效 但我想知道是否有更简单的方法 def center self qr self frameGeometry cp gui QDesktopWidget availableGeometry center qr moveCenter
  • python 中使用 scipy 截断正态分布

    我正在尝试使用截断正态分布scipy在Python3 我想做一些简单的事情 绘制以 0 5 为中心 范围从 0 到 1 的截断法线的 pdf 我有以下代码行 from scipy import truncnorm import matplo
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • 带参数的 Python 列表过滤

    python中有没有一种方法可以在列表上调用过滤器 其中过滤函数在调用期间绑定了许多参数 例如有没有办法做这样的事情 gt gt def foo a b c return a lt b and b lt c gt gt myList 1 2
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem
  • FileAllowed 不显示错误消息

    我正在使用 WTForms 我正在对文件上传应用验证 并将其限制为仅 jpg png 和 pdf 格式 但是 如果我输入不正确 则不会出现错误消息 我按照这个教程https flask wtf readthedocs io en stabl
  • 是否有比 .apply() 更慢或更受控制的替代方案?

    所以这似乎是一个奇怪的问题 但我有一只熊猫DataFrame其中包含地址 我想对其进行地理编码 以便获得纬度和经度 我有可以使用的代码 apply 感谢这个非常有帮助的线程 使用 geopy pandas 的新列坐标 https stack

随机推荐

  • 如何在Hibernate中设置只读列?

    我不知道如何在 Hibernate 中强制只读列 我想将 idgroup 设置为只读列 即使我设置了insertable false and updatable false 在 hibernate SQL 中我可以读到 Hibernate
  • Firebird 全局临时表(GTT),触摸其他表吗?

    我有一个 Firebird 数据库 v 2 5 由于失去支持 我不允许在数据库中创建过程 视图或表 我的观点太长了 Too many Contexts of Relation Procedure Views Maximum allowed
  • 将 WebGL 非连续线渲染为单个对象

    我有多个 WebGL 线要渲染 它们都具有相同的渲染风格 因此 为了提高性能 我想在一次绘制调用中将它们全部渲染为单个对象 但问题是这些线路并不全部相互连接 请参阅此处的示例 http jsfiddle net b6jgS 6 http j
  • 在 C++ 中打包嵌套结构

    使用 Visual Studio 2017 以下给出 struct AAA 15 bytes double d short s char a1 char a2 char a3 char s4 char s5 struct BBB AAA d
  • 为什么异常处理不好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Google 的 Go 语言没有例外作为设计选择 而 Linux 名人 Linus 则称例外为垃圾 为什么 异常使编写代码变得非常容易 其中抛出
  • 如何在 C# 中获取下一个(或上一个)枚举值

    我有一个枚举 其定义如下 public enum eRat A 0 B 3 C 5 D 8 所以给定值eRat B 我想要得到下一个 即eRat C 我看到的解决方案是 没有范围检查 Array a Enum GetValues typeo
  • 如何使用 Salt Stack 执行多个命令?

    我尝试添加 mypack pkg installed pkgs mercurial git cmd run name mkdir p opt mypack cmd run hg pull u R opt mypack hg clone R
  • 为什么 FileInfo 显示额外的文件扩展名?

    我在为下载器创建文件下载列表时遇到问题 并且收到无法解释的 文件不存在 返回 我的 avi 文件返回 但 exe 和 txt 文件不存在 现在 通过拉入整个目录并检查文件内容 我发现我的 exe 文件显示 exe exe 我的 txt 文件
  • 检测 gtk.treeview 中的列何时调整大小

    当列的大小发生变化时 我可以捕获什么信号来检测gtk TreeView 我似乎无法在文档中找到它 gtk TreeViewColumn http library gnome org devel pygtk stable class gtkt
  • aarch64 是否有不可缓存(=缓存旁路)加载或存储指令?

    在sparc架构中 有一个ASI 地址空间指示符 被传递给加载 存储指令 因此如果ASI为0x20 则像IO访问一样绕过缓存 即使内存范围在页表中设置为可缓存 缓存也会被绕过 这有时非常方便 例如使用变量在核心之间同步时等 aarch64架
  • 用 R 绘制漂亮的饼图

    假设我有这个简单的数据 mydata lt data frame group c A B 0 AB FR c 20 32 32 16 如果我想从此数据框创建饼图 我可以这样做 with mydata pie FR labels paste0
  • 如何在rmarkdown上添加水印图片?

    我正在搜索并尝试将图像作为水印添加到 rmarkdown pdf 我正在使用render函数生成 PDF 并看到 usepackage draftwatermark 和这个问题 rmarkdown 中的水印 https stackoverf
  • 是否有适用于 .NET Compact Framework(Windows Mobile 6.1、SQLServerCE)的免费 ORM?

    看来我找到了一个不错的商业变体 http www llblgen com defaultgeneric aspx 但我正在寻找免费的 有人知道一些吗 怎么样OpenNETCF ORM http orm codeplex com 它是免费的
  • 如何在移动设备上强制桌面视图?

    如何使用 Bootstrap 在移动设备上强制显示桌面视图 我已经尝试修复viewport宽度为1024 但仍然不起作用 有什么建议吗 您只需要设置Viewport 而不是这个 响应式版本 看看这里 应该可以解决你的问题 SO bootst
  • 使用 Bash 将一大块文本回显到文件中 [重复]

    这个问题在这里已经有答案了 我需要运行一个 Bash 脚本 该脚本可以将 300 行 Groovy 脚本回显到 tmp 文件 最好的方法是什么 我当前的解决方法是将脚本文件放在网上并下载 使用heredoc语法将其他脚本嵌入到shell脚本
  • 为什么我的 rvm 不允许我切换到替代 Ruby?

    Ubuntu 已经安装了 Ruby 1 8 7 然后我安装了rvm并用它安装了Ruby 1 9 2 这是我想要使用的版本 但是 ruby v 始终返回 1 8 7 如何让 rvm 使用 Ruby 1 9 2 bxu vm bxu rvm u
  • 强类型枚举中范围解析背后的基本原理

    在强类型枚举中无条件要求显式范围解析背后的基本原理是什么 N2347 解释了与老式枚举的区别 老式枚举缺乏隐式转换 指定存储类型的能力 并且没有在周围范围内注入名称 如 C 03 它继承了 C 换句话说 写enum E1 a b c 正如C
  • 调用 LoadLibrary() 时静默捕获窗口错误弹出窗口

    调用 LoadLibrary 时是否可以静默捕获诸如 无法在动态链接库 xxx 中找到过程入口点 xxx 之类的错误弹出窗口 您可以通过调用来抑制错误弹出窗口设置错误模式 http msdn microsoft com en us libr
  • 如何查看 git 上创建多个文件的日期?

    我想查看指定目录上所有文件的 git 创建日期 添加它们的首次提交日期 我将把我的解决方案分成几个步骤 获取存储库中所有文件的列表 git ls files 这将返回存储库中所有文件的相对路径列表 获取给定文件第一次提交的 SHA 1 gi
  • 多边形斑点的中心线(二值图像)

    我有一个蠕虫的二进制图像 斑点提取效果很好 我有兴趣在斑点 蠕虫 上拟合中心线 到目前为止 我想出了这个 从多边形开始 在图像中提取斑点的轮廓之后 我应用了 voronoi 计算并丢弃了多边形 蓝色 之外的所有顶点 这给了我可以的黑色中心线