图像缩略图

Skeleton3D

版本1.12.0.1(16.7 KB)通过 菲利普Kollmannsberger
计算使用并行中轴变薄任意的二进制体积的三维骨架。

45个下载

更新2018年12月5日

GitHub上查看GitHub上牌照

编者按:此文件被选为MATLAB Central本周的挑选

Skeleton3D:一个3D二进制体积的并行中轴变薄
此代码计算任意三维二进制体积的3D中轴骨骼。这是一个优化的MATLAB实现在[1]中描述的同伦细化算法的。我们开发它来量化细胞过程中骨[2]的网络,但它应该在任何管状或丝状结构的图像的工作。一个例子体积(testvol.mat)被包括在内,与一个示例脚本(Test_Skeleton3D.m)沿。任何意见,更正或建议是非常值得欢迎的。
用法:
的skel = Skeleton3D(bin)中
其中的“bin”是3D二进制图象,而“skel中”只包含骨架的体素生成的图像,或
的skel = Skeleton3D(bin中,掩模)

掩盖在“掩模”所有前景体素从骨架化,例如保留某些结构在图像体积。

对于额外的净化,例如修剪短枝,请用我的Skel2Graph3D包MATLAB的文件交换。

该代码是由ITK执行由汉诺萨沃伊霍曼[3]和斐济/ ImageJ的插件由伊格纳西奥阿尔甘-卡雷拉斯[4]的启发。如果包括这在你自己的工作,请引用我们原来publicaton [2]。

菲利普Kollmannsberger 09/2013
philipk@gmx.net

参考文献:

[1]的Ta-芷李,兰加萨米·L·克什亚普和冲南储
“构建骨骼模型经由3-d内侧表面/轴变薄算法”。
计算机视觉,图形和图像处理,56(6):462-478,1994。

[2] Kollmannsberger,Kerschnitzki等人,
“骨细胞的小世界:在骨lacuno,泪小管网络的连接组学”。
新物理学杂志19:073019,2017年。

[3]http://hdl.handle.net/1926/1292

[4]http://fiji.sc/wiki/index.php/Skeletonize3D

引用作为

Kollmannsberger,Kerschnitzki等人,“骨细胞的小世界:在骨lacuno,泪小管网络的连接组学”。新物理学杂志19:073019,2017年。

评论和评级(26

谁能给我提供了eig3volume功能?

DJ

感谢您精彩的投稿!给我的研究的洞察力。我只有一个问题:由于代码使用中轴变薄,是认为中心线/骨架重合与局部峰值,其中本地峰是指值的阵列中发现由欧几里德距离当3D二进制图像上应用的变换?

杨蒂凡尼

您好,我发现,在3D图像使用简单的拓扑方法是非常有效的,但我在复杂的拓扑结构的血管图像中,提取效果不是很好,会出现判断失误,有什么好的解决办法?

alphinĴ

喜弘,
我如何使用它从一个点云(集密曲线)获得曲线?

马丁DENK

您好菲利普,

在文件p_oct_label.m
您可以根据17两次检查的八分8邻接。
“”“”
IDX =立方体(:,17)== 1;
如果任何(IDX)
立方体(IDX,17)=标签(IDX);
立方体(IDX,:) = p_oct_label(4,标签(IDX),立方体(IDX,:));
结束
“””
我想你可以删除其中之一。

需要多少努力成本产生像面骷髅[1]?

谢谢回答我菲利普,我知道了!现在,我想要做的更多的东西。我有在它的容器的直径大小值的另一个文件(BMP格式),并且是相同的矩阵大小为3D-骨架,我获得的。我的想法是用一种颜色表,其中热值意味着大血管大小和蓝色的小血管大小,颜色的骨架点。任何想法,以帮助我在这个挑战将是greatfull我。谢谢!

谢谢你,菲利普!

@Alex:最简单的方法是计算使用bwdist()在原始卷上的距离变换和乘以与最终骨架的结果。这应该给你存储为像素强度的局部厚度估计的骨架。

@Julien:这听起来像 “skel中” 不是一种逻辑的 - 尝试 “的skel =逻辑(skel中)”,或通过 “cands =零(宽度,高度,深度);” 代替线42。

我有以下的错误使用3D矩阵作为输入和全0和1的出现......你对我怎么能解决这个问题的任何想法?我真的不明白为什么会出现这条消息,因为我的矩阵已经被认为是合乎逻辑的,来自一个CT扫描的片...
利用虚假的“错误
输入以下“喜欢”不是一个逻辑阵列。

误差在Skeleton3D(线42)
cands =假(宽度,高度,深度, '喜欢',skel中);”

有没有一种方法有局部厚度在沿骨架的每个点编码输出的估计?

小玉福

功能很好,谢谢!

我通过合并由大卫·德雷尔前一段时间做了一些bug修复和性能改进更新的代码。

@Eric查德威克:你可以给我一个小的测试数据集或代码,你如何生成的数据?

效果很好,但我有一些奇怪的文物,当我与血管交叉的卷上运行此。我正在处理一个更大的血管系统的扫描,但在3个相交缸练习上。在交叉点处,该函数保留的汽缸的轮廓以及中心线。你知道这可能是为什么?

Sarun

这似乎是一个非常有用的功能!它可以处理的形状像一个圆环(甜甜圈),有洞?

谢谢

露西

要删除短枝,请尝尝我Skel2Graph3D脚本还会在这里FEX。

轻微的方向性偏差可能会导致从该中轴不是唯一体素结构限定,但该错误不应该超过+/- 1体素的事实。

在最后一次更新中,H1线已添加和代码被清理了一下。

菲利普

威廉

是有用的,如果被包括最小分支长度(噪声去除)选项

看起来有点偏置到左方向。也就是说,Skeleton3D(BW)和fliplr(Skeleton3D(fliplr(BW)))不会产生相同的结果

威廉

我有一个MRA容器,我试图找到中心线为,通过Skeleton3D代码运行它似乎并没有从基质分离任何东西。对什么有什么想法回事?

玛丽亚姆

斯文

差不多5颗星。非常有用的工具,但是帮助有点稀疏(有一条H1线会很有用,这样我们就知道参数和输出是什么了),而且看起来函数曾经有全局变量,现在(谢天谢地)被替换了,但是它们的全局名称仍然保留。

由于这是从其他代码端口我敢打赌,它可以在速度场所矢量化,但我发现它有用到目前为止 - 谢谢。

ZQ

更新

1.12.0.1

更新后的基准

1.12.0.0

固定标题

1.11.0.0

挂github上

1.1.0.0

全局变量去除称号,并寻求帮助增加H1线。对于清洗的噪声,如短的文物,请用我的Skel2Graph3D包。

MATLAB版本兼容性
创建与R2010b中
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux的
致谢

启发:Skel2Graph 3D