ImageJ | 图像骨架化分析

文摘   科学   2024-08-30 08:53   上海  

科 / 研 / 图 / 像 / 处 / 理


骨架化(Skeletonization)可以将 二值化的图像缩小为单像素宽的骨架


对于血管、线粒体网络等图像,骨架化后可以计算骨架的分支、交点等参数,从而更好地对图像进行描述。


Fiji 中自带可以进行 2D/3D 骨架化分析的插件 AnalyzeSkeleton,这个插件可以标记出骨架图像中的所有像素/体素,然后计算其所有连接点、分支,并测量它们的平均和最大长度:


https://imagej.net/plugins/analyze-skeleton/


这篇文章会以下图为例,展示怎样计算下图的 分支、交点、最长骨架以及每个分支的平均宽度



图片来源:上海当代艺术博物馆





一、插件安装


Fiji 自带的骨架分析的插件 AnalyzeSkeleton,无需下载。

但 Fiji 不自带 Summarize Skeleton 这个功能,如果需要直接总结骨架结果,需要通过 Update sites 进行安装 Neuroanatomy :




二、插件使用

1、初始设置(Process -> Binary -> Options


这一步是为了避免后续进行二值化时,图像变成 Inverting LUT 的情况。


2、转为8-bit后,二值化图像


Image -> Type -> 8-bitImage -> Adjust -> Threshold


3、骨架化图像(Process -> Binary -> Skeletonize


4、修补骨架(Optional


骨架化对于不连续的二值化信号,会生成断裂的骨架,这时候就需要把断裂的部分自动进行修补:



原理是把骨架化的图像高斯模糊一下,然后重新二值化、骨架化。

这种方法也适用于去除骨架上一些小的 spur


5、分析骨架(Analyze -> Skeleton -> Analyze Skeleton (2D/3D)


这里需要关注的参数,更具体的描述请参照官网:

  • Prune cycle method:

是否修剪骨架中的环结构(把环修剪成树):


  • Elimination of End-points:

是否修剪含有终止点的分支(只保留有多个分支的骨架)


  • Results and Output:输出哪些结果,主要是Show detailed infolabeled skeletons


输出结果:

分支信息(分支长度、起点终点、两点间欧氏距离),骨架中检测到的树的总体信息(分支和分支点数量、分支平均长度等)


标注好的骨架(紫色为分支点,红色为分支),以及最长路径(红色)


6、得到每个分支的ROI


Tagged Skeleton 本质是一个 8-bit 的图像,分支和分支点的灰度值不一样,所以可以通过 Threshold,直接选中分支,并进行二值化:


通过 Analyze -> Analyze Particles,可以得到每个分支的 ROI


这里通过设置 size,滤除了长度少于5个 pixel 的分支。


7、对二值化的图进行距离变换(Process -> Binary -> Distance Map


▲右图加了伪彩


进行距离变换后,每个 pixel 的值,等于 该 pixel 离最近的背景之间的欧氏距离。所以骨架处的值即为半径。


选中 Distance map 的图片,点击 ROI Manager 中的 Measure


Mean即为这一个分支的平均半径,乘以 就是平均直径。

注意

大家记得把 <科研图像处理> 设置为星标哦,避免错过精彩内容:



感谢关注和支持,我们下期见~ 

作者 | Treasure琛
排版 | 小乐喵喵   



往期回顾

◆ Western Blot 条带分析

◆ 荧光强度测量

◆ 比例尺的校准和添加

◆ 细胞分割神器Cellpose(自动计数篇)

◆ 基于ChatGPT快速编程

◆ ImageJ基础篇 | 成像注意事项

◆ 基于阈值分割的自动细胞计数

◆ OpenAI API的使用方法-附Python代码

◆ 利用Segment Anything进行细胞分割

◆ Python读取显微镜图像格式

◆ Python实现3D Slice Viewer

◆ 利用Track-Anything进行细胞追踪



科研图像处理
科研图像处理一站式解决方案,原知乎《ImageJ实用教程》
 最新文章