医学图像处理_医学图像处理案例(二十)——医学图像处理案例代码详解

在前面分享的医学图像处理案例中,给出了很多具体案例,但有些读者还是渴望可以深入分享案例代码详解。那么今天我将从骨骼分割,气管分割,肺组织分割,血管分割这四个具体案例来详细讲解如何来实现。 1、骨骼分割代码详解 1.1、采用固定阈值分割,一般骨骼的HU值在300以上,但是发现心脏和主动脉的HU值与一些骨骼的HU比较接近,所以我们设置固定阈值为100,把骨骼和心脏及主动脉都分割出来。

a47aa1d88635df1771cf2297b211e3e1.png

1.2、 首先采用形态学开操作,将骨骼和心脏和主动脉连接的部分断开,然后再取最大连通域可以得到粗略的心脏和主动脉图像。

d8e2f0335b10526fa488b11ef34f6df0.png

1.3、 再将步骤1.1的结果与步骤1.2的结果相减。

6fd6e2cbba60c62e743fe4778e68c964.png

1.4、 对步骤1.3的结果求取最大连通域得到骨骼Mask区域。

69e376e97318124512792d7bac0784e9.png

1.5、将得到的Mask图像与原始图像进行逻辑与操作得到最后的气管分割结果图像。

01b791c0f04fb906789305e7de0458d2.png

代码:
def skeletonSegment(pathDicom):    sitk_src = dicomseriesReader(pathDicom)    # 1    sitk_seg = BinaryThreshold(sitk_src, lowervalue=100, uppervalue=3000)    sitk.WriteImage(sitk_seg, 'step1.mha')    # 2    sitk_open = MorphologicalOperation(sitk_seg, kernelsize=2, name='open')    sitk_open = GetLargestConnectedCompont(sitk_open)    sitk.WriteImage(sitk_open, 'step2.mha')    # 3    array_open = sitk.GetArrayFromImage(sitk_open)    array_seg = sitk.GetArrayFromImage(sitk_seg)    array_mask = array_seg - array_open    sitk_mask = sitk.GetImageFromArray(array_mask)    sitk_mask.SetDirection(sitk_seg.GetDirection())    sitk_mask.SetSpacing(sit
  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值