一、基础知识
把图像划分成若干个特定的、具有独特性质的区域,并提取其中感兴趣目标的基数和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像素赋予相同的编号。
1998年以来,人工神经网络识别技术已经引起了广泛的关注,并且应用于图像分割。基于神经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数,然后用决策函数对像素进行分类来达到分割的目的。这种方法需要大量的训练数据。神经网络存在巨量的连接,容易引入空间信息,能较好地解决图像中的噪声和不均匀问题。
二、阈值分割
灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像到输出图像
的如下变换:
其中,为阈值,
为点
的像素值,
为分割后的图像。阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。阈值包括全局阈值、自适应阈值、最佳阈值等等。
1、全局阈值
全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('coin.png',0)
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in xrange(6):
plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
2、自适应阈值
对于光照不均的图像,全局阈值方法显得苍白无力。自适应阈值应运而生,就是根据桐乡不同区域的亮度分布不同,计算其局部的阈值。通过计算某个邻域(局部)的均值、中值、高斯加权平均(高斯滤波)来确定阈值。
3、最佳阈值(Otsu)
阈值处理可视为一种统计决策理论问题,其目的是在把像素分给两个或多个组(也成为分类)的过程中引入的平均误差最小。这一问题已知有一个精致的闭合形式的解,称为贝叶斯决策规则。该解仅以两个参数为基础:即每一类的灰度级的概率密度函数(PDF)和在给定应用中每一类出现的概率。遗憾的是估计PDF并不容易,通常采取假定一个PDF形式的可行方法来简化该问题,例如,假设它们是高斯函数。即便采用了简化,用这些假设求解的过程也可能是复杂的,并且对实际应用也不总是合适的。
三、区域分割
1、区域生长法
(1)介绍
区域生长法,是基于区域的图像分割方法。该算法从“种子”开始,即选取一个或一组像素点作为算法的起点,从种子出发判断邻近点是否满足算法定义的相似性准则。若满足则将邻近点归入同一区域,并将其作为新的种子重新“生长”,直至不再有新的点归入区域,算法分割结束。算法定义的相似性准则需要根据具体的情况而定,通常是根据图像的灰度值、矩、纹理等。
(2)应用场景
没有先验知识可以利用时,可以取得最佳的性能,可以用来分割比较复杂的图像。
(3)缺点
空间和时间开销都比较大;通常会造成过度分割。
2、分水岭分割
分水岭分割,其思想是,将一幅图像看成一个地形图,灰度值对应地形的高度,高灰度值对应于山峰,低灰度值对应于山谷。水朝地势低的地方流动,直到局部低洼处,即盆地。最终所有的水都处于不同的盆地,盆地之间的山脊成为分水岭。