计算机视觉与深度学习实战:以MATLAB、Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.3 程序实现

分水岭算法的主要目标在于找到图像的连通区域并进行分割。在实际处理过程中,如果直接以梯度图像作为输入,则容易受到噪声的干扰,产生多个分割区域;如果对原始图像进行平滑滤波处理后再进行梯度计算,则容易将某些原本独立的相邻区域合成一个区域。当然,这里的区域主要还是指图像内容变化不大或者灰度值相近的连通区域。为了易于调用,本案例将标记分水岭分割算法并封装为子函数。核心代码如下:

在实验期间分别载入右上肺结核图像、正常肺部CT图像进行分水岭算法分割,并自动保存分割结果。核心代码如下:

通过分水岭算法分割正常的肺部CT图像,其实验效果如图6-1~图6-4所示。

图6-1 图像灰度化

图6-2 图像梯度边缘

图6-3 图像二值化

图6-4 分割结果标记

通过分水岭分割右上肺结核的CT图像,其实验效果如图6-5~图6-8所示。

图6-5 图像灰度化

图6-6 图像梯度边缘

图6-7 图像二值化

图6-8 分割结果标记

通过对病变的肺部图像和正常的肺部图像分别进行标记分水岭处理,可得到分割结果并进行彩色标记显示。在实验过程中,为了避免传统分水岭算法所产生的过分割问题,分割函数应用了对梯度图像进行形态学滤波处理的技巧,有效提高了算法的运行效率和准确性。实验表明,采用标记分水岭分割算法对肺部图像进行分割具有良好的效果,能在一定程度上突出病变区域,起到辅助医学诊断的目的,具有一定的使用价值。