第12篇:骨架化算法 — 将晶粒边界细化为单像素线条
第12篇:骨架化算法 — 将晶粒边界细化为单像素线条一、为什么需要骨架化?1.1 问题的提出深度学习模型输出的分割结果中,晶粒边界往往是有一定宽度的"粗线"。这是因为:模型预测的不确定性:边界区域的像素概率是渐变的,阈值化后会形成有宽度的区域真实边界的复杂性:实际晶粒边界本身就有一定厚度标注误差:训练数据的人工标注也不可能达到单像素精度但在后续的截线法测量中,我们需要精确知道"边界在哪里"。如果边界是粗的,检测线与边界的交点就会是一个线段而非一个点,这会给交点检测带来困难。1.2 骨架化的核心思想骨架化(Skeletonization),也叫图像细化,是形态学图像处理中的经典操作。它的目标是:将一个连通区域"抽成"单像素宽度的"骨架",同时保持原区域的连通性和拓扑结构。形象地说,就像把一根粗树枝"削"成细木棍,但木棍的长度和分叉结构不变。对于晶粒边界检测来说,骨架化的价值在于:精确性:将粗边界细化为单像素线,交点位置更准确一致性:无论原始边界多粗,处理后都是单像素,测量标准统一拓扑保持:保持边界的连通性,不会出现断裂二、scikit-image 的 skeletonize 算法原理2.1 算法本质:中轴变换骨架化的数学基础是中轴变换(Medial Axis Transform, MAT)。中轴可以理解为:区域内所有与边界至少有两个最近点的点的集合。想象一下,在区域内部同时从所有边界点向内"燃烧",火焰相遇的地方就是中轴(骨架)。2.2 scikit-image 的实现方式scikit-image 的skeletonize函数采用的是张-孙快速并行细化算法(Zhang-Suen thinning algorithm)。这是一种迭代式的形态学算法。算法步骤Zhang-Suen算法通过两次子迭代重复进行,直到没有像素可以被删除:第一次子迭代:标记满足以下所有条件的像素P1进行删除:像素P1是前景(值为1)P1不是端点(8邻域中至少有2个前景像素)P1是简单点(删除后不改变连通性)P2、P4、P6至少有一个是背景P4、P6、P8至少有一个是背景第二次子迭代:类似,但条件4和5改为:4. P2、P4、P8至少有一个是背景5. P2、P6、P8至少有一个是背景其中P2-P8是P1的8邻域像素,按顺时针排列。算法特点并行性:每轮迭代中,所有满足条件的像素同时被标记,然后一起删除收敛性:经过有限次迭代后,不再有像素可删除,算法终止8连通性:保持8邻域连通性三、二值化预处理在进行骨架化之前,需要先对图像进行二值化处理。这是因为骨架化算法要求输入是二值图像(只有0和1两种值)。3.1 为什么需要反相二值化?在GrainServer中,使用的是THRESH_BINARY_INV(反向二值化):_,binary=cv2.threshold(img,128,255,cv2.THRESH_BINARY_INV)代码位置:ImgProcessor/ImgUtils.py:40原因是:模型输出:晶粒边界是白色(255),背景是黑色(0)骨架化约定:scikit-image的skeletonize函数默认处理"前景"区域,即值为1的区域我们的目标:对晶粒边界进行骨架化,所以需要边界是"前景"等等,这里似乎有矛盾。让我们仔细理一理:模型输出中,边界是白色(255),内部是黑色(0)。如果直接做骨架化,应该对白色区域(边界)进行骨架化才对。但为什么用了THRESH_BINARY_INV呢?让我们看完整的代码流程:_,binary=cv2.threshold(img,128,255,cv2.THRESH_BINARY_INV)skeleton=skeletonize

相关新闻

LangChain、Semantic Kernel 与 DSPy:AI 应用开发范式对比

LangChain、Semantic Kernel 与 DSPy:AI 应用开发范式对比

1. 这不是选框架,是选开发范式:为什么开发者在 LangChain、Semantic Kernel 和 DSPy 之间反复横跳最近三个月,我带的三个 AI 应用落地项目,分别用了 LangChain、Semantic Kernel 和 DSPy——不是为了写对比文章,而是客…

2026/7/9 17:23:15 阅读更多 →
Vim插件管理进阶指南:VAM实战配置与深度解析

Vim插件管理进阶指南:VAM实战配置与深度解析

Vim插件管理进阶指南:VAM实战配置与深度解析 【免费下载链接】vim-addon-manager manage and install vim plugins (including their dependencies) in a sane way. If you have any trouble contact me. Usually I reply within 24 hours 项目地址: https://gitc…

2026/7/9 17:23:15 阅读更多 →
CST使用TE101和TE301腔模式带宽增强高增益全金属滤波槽天线阵列

CST使用TE101和TE301腔模式带宽增强高增益全金属滤波槽天线阵列

作者 | 魏云飞 Filter Designer 3D是CST中用于三维滤波器设置的模块,新版本在功能方面做了不少提升,使用更方便高效。下面我们就一一看看新版本里面给我们提供了哪些新的功能。 1. 丰富了常用的滤波器类型,增加了低通滤波器和高通滤波器。在…

2026/7/9 17:23:15 阅读更多 →

最新新闻

免费开源的 Home Assistant OS:打造强大智能家居控制器,轻松控制各类设备!

免费开源的 Home Assistant OS:打造强大智能家居控制器,轻松控制各类设备!

ZDNET 核心要点 Home Assistant OS 是一款开源控制器,能按需控制众多智能设备,且该操作系统免费,可安装在闲置电脑上。 智能家居实用,能带来自动化、降低电费、提升住所安全性。但人们会思考家究竟有多智能,是否拥有分…

2026/7/9 18:13:48 阅读更多 →
Cursor官方食谱深度解析:Vibe Coding与Agent模式工程实践指南

Cursor官方食谱深度解析:Vibe Coding与Agent模式工程实践指南

1. 这不是又一个“AI编程工具测评”,而是Cursor官方团队亲手写给真实开发者的操作手册3.3K星的Cursor官方食谱仓库,我第一次点开时以为是营销噱头——毕竟现在满屏都是“5分钟用AI写出完整项目”的标题党。但当我真正花三天时间逐行读完那30多个.md文件&…

2026/7/9 18:09:47 阅读更多 →
AI Agent 工程实践(01):AI Engineering OS 整体架构设计

AI Agent 工程实践(01):AI Engineering OS 整体架构设计

系列导航 上一篇:AI Agent 工程实践(00):为什么我要构建 AI Engineering OS 本文是 AI Agent 工程实践 系列的第 01 篇。 1发布时间:2026-07-08 标签:AI Agent|LLM|架构设计&…

2026/7/9 18:09:47 阅读更多 →
5分钟学会鼠标悬停翻译:让你的浏览器变身多语言助手 [特殊字符]

5分钟学会鼠标悬停翻译:让你的浏览器变身多语言助手 [特殊字符]

5分钟学会鼠标悬停翻译:让你的浏览器变身多语言助手 🚀 【免费下载链接】MouseTooltipTranslator Mouseover Translate Any Language At Once - Chrome Extension: PDF Translator, EBOOK, EPUB, OCR, TTS, NETFLIX, YOUTUBE DUAL SUBTITLES, GOOGLE DOC…

2026/7/9 18:05:45 阅读更多 →
国外驾照换中国驾照翻译怎么办?小白看完不迷糊

国外驾照换中国驾照翻译怎么办?小白看完不迷糊

摘要:境外驾照换国内驾照可以在线上小程序和线下车管所核验,翻译件长期有效,换证业务需在入境合规期限内完成,整体办结1-3天。问题1:驾照翻译到底什么时候用?翻译是换证硬性前置材料,仅用于车管…

2026/7/9 18:05:45 阅读更多 →
C# 枚举 Flags 特性:从权限系统到游戏状态管理的 5 个应用场景

C# 枚举 Flags 特性:从权限系统到游戏状态管理的 5 个应用场景

C# 枚举 Flags 特性:从权限系统到游戏状态管理的 5 个应用场景 在 C# 开发中,枚举(Enum)是一种常见的数据类型,用于表示一组命名的常量。然而,当我们需要处理可以组合的多个状态或选项时,普通的…

2026/7/9 18:05:45 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻