医学图像分割方法汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
医学图像分割方法汇总
本文主要介绍在医学图像分割方面的几种典型算法,详细介绍每种算法的工作原理,通过对具体的医学图像实验来对比每种方法在分割方面的优点和缺点,分析结果产生的原因,从而在后面的实际应用中选择最合适的算法。
1阈值法分割
1-1 简单阈值分割
简单的阈值处理是图像分割中最为简单基础的一种分割方法。
对于一副灰度图像,使用给定的阈值。
图像中的像素超过这个阈值的一律设置为最大值(对于八位灰度图像,最大值一般为255),像素小于这个阈值的设置为0.下图 1.2是利用五个不同的阈值对脑部图像(图1.1)的分割结果。
(从上到下,从左到右一次使用的阈值分别为最大值的0.1,0.3,0.5,0.7,0.9倍)。
图1.1原始脑部图像
图1.2 使用不同阈值分割后的结果
从实验结果来看,使用简单的阈值分割,过程十分简便,原理简单易懂,但是要是得到比较好的分割结果需要进行多次试验。
1-2 otsu阈值分割法
Otsu阈值分割法又称大津阈值分割法。
它的原理是对图像所有的像素围进行遍历(对8位灰度图像来说呢,就是从0遍历到255),找出合适的T(阈值),把原始图像分割成前景图像和背景图像并且两者之间的类方差最大。
原理:
对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。
图像的总平均灰度记为μ,类间方差记为g。
假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:ω0=N0/ M×N (1)
ω1=N1/ M×N (2)
N0+N1=M×N (3)
ω0+ω1=1 (4)
μ=ω0*μ0+ω1*μ1 (5)
g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6)
将式(5)代入式(6),得到等价公式:
g= ω0ω1(μ0-μ1)^2 (7)这就是类间方差
找出使得g(类方差)的值到达最大的T(值),就是我们需要的结果。
下图1.3是使用otsu阈值分割法对图1.1脑部图像的分割结果。
图1.3 使用ostu阈值分割得到的结果
2 区域生长方法分割
区域生长方法是从被分割对象的种子区域(通常是一个或者多个像素点)开始,在种子区域的相邻像素中寻找与种子区域具有某种给定的相似特征(通常是灰度值)的像素加入种子区域。
并利用新的种子区域重复上述过程,直到种子区域不再扩大。
区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止。
区域生长的好坏决定于 1.初始点(种子点)的选取。
2.生长准则。
3.终止条件。
区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取。
简单来说下三个法则,对出需要分割的图像:1、选取图像中的一点(或者一组点)为种子点(种子点的选取需要具体情况具体分析)。
2、在种子点处进行8邻域或4邻域扩展,判定准则是:如果考虑的像素与种子像素灰度值差的绝对值小于某个门限T,则将该像素包括进种子像素所在的区域。
3、当不再有像素满足加入这个区域的准则时,区域生长停止。
2-1 经典区域生长算法
本算法使用的是一组种子点,种子点的选取一般遵循选取图像中较为明亮的部分,可以使用im2bw函数来选取种子点,通过调整二值化的参数来调整种子点的数目。
然后对种子点的4领域的像素进行判断,符合要求的加入种子点。
重复上述过程知道种子点数目不再变化为止。
实验仍然使用图1.1的脑部图像为样本。
选取两组种子点和两个不同的生长条件。
实验结果如下:
表2-1使用经典区域生长算法使用的参数
图2-1经典区域生长算法的实验结果
从实验结果上来看,对经典的区域生长算法的分割结果影响较大的因素有种种子点
生长准则
4邻域的像素点和种子点绝对值小于10 4邻域的像素点和种子点
绝对值小于15 使用otsu 得到的种子点 图2-1从左到右从上到下第一幅图 图2-1从左到右从上到下
第二幅图
设置像素值大于200为种子点 图2-1从左到右从上到下第三幅图 图2-1从左到右从上到下
第四幅图
设置像素大于220的为种子点 图2-1从左到右从上到下第五幅图 图2-1从左到右从上到下
第六幅图
子点的选取,和生长准则的制约,需要经过多次试验才可能得到满意的结果。
但
是这种方法存在非常明显的缺点,由于算法使用迭代来查找符合条件的种子点,
所以空间和实践的开销很大!
2-2 连接门限阈值处理
这种方法和上面的经典区域生长算法稍微有些不同,在这里可以人为地给出
感兴趣的像素点的上限和下限,在区间的像素是我们感兴趣的,然后对邻域像素
进行判断,是否在感兴趣的区间之中,重复此操作,直到感兴趣的区域不再扩大。
实验结果如下图2-2:
表2-2 连接门限阈值分割才去的参数
种子位置下门限上门限输出图像
(107,69)180 210 图2-2从左到右第二幅图像(60,116)150 180 图2-2从左到右第三幅图像(81,112)210 250 图2-3从左到右第四幅图像
(1)原始脑部头像(2)
(3)(4)
图2-2 使用连接门限阈值处理得到的分割结果
使用连接门限阈值处理分割医学图像的好处是,可以根据需要分割出自己特别感兴趣的那一部分。
但是这种方法非常难以选择种子点,种子点的选取对结果影响非常之大,同时当图像中感兴趣的那部分不连通的时候,分割后的图像往往是不完整的。
2-2 置信连接法分割图像
该算法计算包含在区域的的所有像素的平均值和标准差。
在实验中,人为提供一个因子,用这个因子来乘以标准差来确定感兴趣的围。
算法的流程分为三个步骤:
1):选定种子点
2):测试种子点的相邻像素点是否符合感兴趣的条件,如果符合则包含进感兴趣的区域。
感兴趣的区域不再扩大,结束以一次迭代。
3):使用新得到的感兴趣区域,重新计算像素的亮度值的均值和标准差,重复步骤2.直到感兴趣的区域不再扩大为止。
可以用一个公式来阐述感兴趣的区域:
I(X) ∈[m-f*σ,m+f*σ]
其中m是像素亮度的均值,σ是像素的标准差,f是用户自定义的系数,可以根据效果不同来自动调整。
在本次实验中,我仍然使用和以上实验相同的数据和种子点,实验中选取的f值为2.5(可以适当调节)。
实验结果如下图2-3:
(1)原始脑部头像(2)使用(107,69)种子点的分割结果
(3)使用(60,116)种子点的分割结果 (4)使用(81,112)种子点的分割结果
图2-3使用置信连接法分割图像的结果
从分割结果上看,使用置信连接分割图像效果好坏的关键是种子点的选取和f值的设定,可以多次试验来得到最佳结果。
3 分水岭算法
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。
分水岭的概念和形成可以通过模拟浸入过程来说明。
在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
使用分水岭算法对医学图分割的好处是可以感受到很细微的边缘,由于医学图像部组织一般区别较小,这使得分水岭算法在医学图像领域得到广泛应用。
但是另一方面,由于分水岭算法对图像的边缘信息过于敏感,在具体应用中,经常会出现过度分割的现象。
需要注意的是:实验中,并不是直接对原始的灰度图像应用分水岭算法,而是使用梯度图作为输入图像。
使用分水岭算法进行图像分割的典型流程如下:(1):计算原始图像的梯度。
(2):计算前景标记(这些是每个对象部连接的像素)
(3):计算背景标记(这些不属于任何对象的像素)
(4):对原始的梯度图想进行修改,将前景标记和背景标记设置成局部极小值
(5):对修改后的梯度图像使用分水岭分割
实验结果如下图3-1所示:
(1)原始脑部头像(2)使用标记分水岭算法分割后的图像图3-1 使用标记分水岭算法对脑部头像进行分割的结果
当我们在实验中使用分水岭算法来分割某些细胞图像时,发现直接使用以上算法,会导致黏在一起的细胞没被分割,这时候就得在使用分水岭算法的时候避免过度分割,对于这种情况,采取的一般方法是在基于watershed的图像分割中,使用imextendedmin函数来过滤掉特别小的局部最小,避免过度分割。
本实验中,我使用的实验素材是互相粘连的细胞。
实验结果如下图3-2所示:
(1)互相粘连的细胞图(2)分水岭算法过度分割
(3)去除掉部分极小区域后,使用分水岭算法的结果图3-2 使用去除局部极小的分水岭算法的分割效果图
4 聚类分割算法
以上的几种算法都是需要首先对图像进行观测,缺乏严格的数学衡量。
因此,在现实的图像世界中,以上的几种方法往往会出现错误。
聚类则是在数学定义上更为严格的普适性方法。
具体定义是,假设图像的像素点是许多样本的集合,不同样本之间的相似度用距离(这里的距离有很多种定义,具体看实际应用)来衡量,当两个样本的距离较小时认为两者划分为同一类,反之则为不同的类。
4-1 k-means聚类分割算法
K-means算法是最为经典的基于划分的聚类算法,它的原理也较为简单。
算法的描述如下:
(1)适当选择k个类的初始中心;
(2)在第i次迭代中,对任意一个样本,求其到k各中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的k个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
算法示意图如图4-1所示:
图4-1 k-means聚类过程(两个“x”代表中心点的变化情况)
把k-means应用到图像分割上,最为关键的是k-means算法中关于距离的的定义和关于初始中心的选择。
对于灰度图像而言,强调像素之间的欧氏距离和几何距离毫无意义,所以对于k-means算法实现对图像分割,首要的任务是重新定义k-means算法中的“距离”。
由于图像是一个二维矩阵,这对于选择初始中心点和计算“距离”来说都是不适合的。
在实验中,为了简化计算,我首先将灰度图像I(M*N)转化为一个(M*N,1)的列数组X。
然后把像素之间的“距离”定义为它们的像素的亮度差值。
对于初始中心的选择,采取均匀选取(每隔一定的像素选择一个作为中心),划分的块数通过反复试验来找到最佳分割结果。
在实验中,我选取不同的初始中心点和k-means算法不同的k值,实验中选择的参数如表4-1,分割结果如下图4-2:
表4-1 k-means聚类分割实验中k值和初始中心点参数选择表
初始中心选择
3个划分区域4个划分区域5个划分区域K值选择
图(2)图(3)图(4)
从X中随机选取K
个质心点
图(5)图(6)图(7)
根据X的分布围均
匀的随机生成K个
质心
(1)原始脑部头像(2)
(3)(4)
(5)(6)(7)从实验结果上看,使用k-means进行分割的结果要好于以上的三种分割算法,但是其缺点也比较明显,为了得到最终的分割结果,k-means算法需要经过多次迭代,在时间效率上不如以上的三种算法,另外有可能经过多次迭代,中心点的位置仍然不能收敛,这时候需要就需要设置一定的阈值作为迭代结束条件。