肺部图像分割

  • Post author:
  • Post category:其他


作业:肺部分割

一、作业内容与要求

采用机器视觉的方法对肺部图像进行分割,把肺部的主要区域分割出来。要求分析说明分割处理的方法,说明具体实施的每一个步骤,并编程实现(附上代码)分割算法,获得分割后的结果。

二、肺部分割实现

2.1 肺部分割实现过程步骤如图2-1所示

在这里插入图片描述

2-1 肺部分割实现过程

2.2 导入肺部图片

用Opencv库中imread函数导入图像,并且用numpy做了图像通道转换,如图2-2所示

在这里插入图片描述

2-2 图像导入

2.3 图片二值化

由于肺部与周围组织颜色对比明显,所以我考虑通过KMeans聚类的方法找到f肺部区域和非肺区域的阈值,实现图片二值化。

2.3.1 标准化查看数值分布

对图像进行数值分布标准化可以加速聚类,并且提高聚类的效果,具体实现方法如图2-3所示

在这里插入图片描述

2-3 数值分布标准化

图像标准化后可以查看图像灰度分布的直方图,代码见项目文件中的standardized_distribution.py文件,运行结果如图2-4所示。

在这里插入图片描述

2-4 图像灰度分布直方图

2.3.2 KMeans聚类区分肺部区域

在这里插入图片描述

2-5 二值化实现步骤

对图像二值化的步骤如图2-5所示,先对裁剪出肺部的主要区域,对主要区域拉长为一维的numpy数组,再进行KMeans聚类。聚类生成两簇,一类是骨骼和血管,一类是肺部区域,再由两簇的中心计算平均值得到阈值,通过阈值产生二值图像。实现代码如图2-6所示

在这里插入图片描述

2-5 KMeans 生成二值图像

2.4 腐蚀和膨胀操作

腐蚀和膨胀是形态学图像处理的中的理论,简单说腐蚀是对原图中的白色部分腐蚀,操作目的在于去除微小的白色粒状噪声;膨胀是对白色部分的扩张,操作目的是去除黑色的噪声,再本次任务中是为了将肺泡上的血管变为高亮,把他们当作肺部组织。两个操作组合后,有“先腐蚀后膨胀”,“先膨胀后腐蚀”两种操作,本次任务是“先腐蚀,后膨胀”,又叫开运算,是用OpenCV实现的,实现代码如图2-7所示。

在这里插入图片描述

2-7 腐蚀和膨胀

2.5 提取肺部mask

使用图像处理库Skimage中measure模块中的labels给图像连通区域打上标签和regionprops方法获得图像的连通区域。由于肺部位置是固定的,所以可以根据限制大致坐标来确定肺部区域。进而可以得到肺部的标签,得到肺部标签还得进行一次膨胀操作,以填满并扩张肺部区域,从而得到肺部mask,实现代码如图2-8所示

在这里插入图片描述

2-8 提取肺部mask

2.6 打印和保存图像

由得到的mask,与原图做乘操作就可以得到分割区域图像。我分别打印了原图灰度图像,标签图像,mask图像以及分割区域图像,打印图像如图2-8所示

在这里插入图片描述

2-8 分割结果图像

打印和保存代码如图2-10所示

在这里插入图片描述



版权声明:本文为m0_47135641原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。