-1

我有 CT 扫描图像,我想使用 python 或 MATLAB 仅提取(分段)肺部分。

在此处输入图像描述

4

2 回答 2

1

在 MATLAB 中对我有用的解决方案是Hill Climbing algorithm。这是它的MATLAB 实现。它使用无监督机器学习算法:k-means。您将需要根据您的要求尝试不同数量的段。请参见下面的示例:

从 MATLAB Central下载上述代码(文件HillClimbingSegment.m和)并将其放置在您的工作区中。RGB2Lab.m然后你可以这样分割:

image_path = 'CT.jpg';
segmented_img = HillClimbingSegment(image_path,4);

其中第二行 ( 4) 中的第二个参数是所需段的数量。

在此处输入图像描述

在我的图像中,仅使用 4 个片段,可以观察到右肺的异常,但右肺顶部的另一个器官与肺合并。使用 7 段,将其分开。使用 7-9 段可提供最佳视图。超过 9 会导致混乱。

于 2021-02-14T08:57:42.457 回答
0

我建议您将 png 转换为 NIfTI 文件 (nii),然后使用 python。对于转换,您可以使用它:Convert .png files to .nii (NiFti files)

之后,您可以加载图像使用

nii = nibabel.load(path to the nifti file)

获取 numpy 数组

np_array = nii.get_fdata()

通过 -500 到 2000 之间的过滤阈值从 nifti 文件中分割所有身体。身体内外的所有空气都将是 1-身体分割。

然后取最大的连通分量,从分割中去掉(也就是比肺大的外界空气)

air_seg = skimage.measure.label(air_seg)
largest_connected_air = air_seg == numpy.argmax(nump.bincount(air_seg.flat)[1:]) + 1

现在再做一次以取肺。这是我得到的:

3D 肺

如果您需要更多解释,请回复。

于 2021-02-26T08:48:46.827 回答