我有 CT 扫描图像,我想使用 python 或 MATLAB 仅提取(分段)肺部分。
问问题
510 次
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
现在再做一次以取肺。这是我得到的:
如果您需要更多解释,请回复。
于 2021-02-26T08:48:46.827 回答