一、图像分割包括以下三种思路:
A)基于灰度级的不连续性来查找区域间的边界;(Edge Detect)(霍夫变换和边缘检测)
B)基于像素属性的分布的相似性(如亮度值)得阈值;(graythresh)
C)直接寻找区域的分割技术;(Region Grow ,暂不讨论)
对应B又可以分为1.全局阈值法(Otsu、最大熵法)2.局部阈值法(Bernsen)3.动态阈值法。
需要进一步说明的是全局阈值法采用同一个灰度值作为分割门限对整幅图进行处理,特别对直方图分布呈双峰态的图像分割效果好。局部阈值法根据不同的待处理点及周围一定区域范围内像素点的灰度特征计算出不同的局部分割阈值,适用于照明不均匀,噪声干扰明显或图像灰度多级分布的情况。
二、全局阈值法以Otsu(小日本 大津展之 提出的)法较为常用,其实是将统计学的概念运用到图像处理中的一次成功的结合。所以Otsu法的本质是选择最大化组间方差对应的阈值。
下面是Otsu 推导过程:
实际处理过程中,变换初始阈值t的值,当判别函数达到最大值时,对应的t的数值就是我们要求的全局阈值。
Matlab 中对应的函数为graythresh;
三、局部阈值法
针对于图像照明不均匀的问题,可以采用先将图像进行预处理后在做全局阈值处理,也可以适用局部变化的阈值函数对图像进行阈值处理。
对于前者有一个有趣的概念就是“顶帽变换”,所谓的顶帽变换就是指从原图像中减去开运算后的图像。
下面为Matlab对顶帽变换的过程截图。
图a,为原始图像,图像中可以明显看出图像底部亮度比上部的整体亮度低,从图b的直方图可以看出,原始图像属于多级分布,若直接使用全局阈值法进行分割, Otsu法计算的阈值为131,如图c中底部的目标被丢失,所以要对原始图像进行顶帽变换,首先对原始图像做开运算,开运算的结构元素的大到可以刚好将目标擦去即可如图d,从图d可以看出,正是我们想要的背景图,用原始图像减去开运算后的图像得到图e,图e的亮度分布为双峰态如图f,适合做全局阈值处理,所以使用全局阈值处理得到图g.
(图 a)
(图 b)
(图 c) (图 d)
(图 e) (图 f)
(图 g)
上述处理等同于使用局部变化函数的阈值函数T(x,y)对f(x,y)进行阈值处理:
g(x,y) =1 if f(x,y)>=T(x,y)
g(x,y) =0 if f(x,y)
其中T(x,y) =fo(x,y)+To;
fo(x,y)是f(x,y)的形态开运算,常数To是对fo(x,y)应用函数graythresh后的结果。
网友评论