基于阈值的图像分割

1. 直方图双峰法(mode 法)

            Prewitt 等人于六十年代中期提出的直方图双峰法(也称 mode 法) 是典型的全局单阈值分割方法。该方法的基本思想是:假设图像中有明显的目标和背景,则其灰度直方图呈双峰分布,当灰度级直方图具有双峰特性时,选取两峰之间的谷对应的灰度级作为阈值。


上图为灰度直方图

算法实现:找到第一个峰值和第二个峰值, 再找到第一和第二个峰值之间的谷值,谷值就是那个阀值了。

2. 固定阈值分割

      确定一个阈值,像素大于这个阈值则为前景,小于这个阈值则为背景。

3. 半阈值分割

复制代码
 1 for (int i = 0; i < nWidth; ++i)
 2 {
 3     for (int j = 0; j < nHigh; ++j)
 4     {
 5         if (Image[i][j] >= 阈值)
 6         {
 7             Image[i][j] = 255;
 8         }
 9         else
10         {
11             Image[i][j] = 0;
12         }
13     }
14 }
复制代码

4. 迭代阈值图像分割

http://topic.csdn.net/u/20080402/10/d3cb6789-fa60-4758-b232-7a89926f07b9.html

迭代法是基于逼近的思想,其步骤如下: 

1. 求出图象的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2; 

2. 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB 

3. 求出新阈值TK+1=(ZO+ZB)/2; 

4. 若TK==TK+1,则所得即为阈值;否则转2,迭代计算。 

我想问下,ZO和ZB怎么求??

 

1. 统计图像灰度直方图

2. 找到最大灰度值ZMAX和最小灰度值ZMIN,并计算T0 =(ZMAX+ZMIN)/2

3. 计算小于T0的所有灰度的均值ZO和大于T0的所有灰度的均值ZB(用直方图求就可以)。

例如,你的直方图从10到250有值,则T0 = 260/2 = 130.

1 ZO = Sum(nHist[i] * i) / Sum(nHist[i]); 10 <= i <= 130
2 BO = Sum(nHist[i] * i) / Sum(nHist[i]); 131 <= i <= 250


5. 自适应阈值图像分割

     在许多情况下,物体和背景的对比度在图象中不是各处一样的,这时很难用统一的一个阈值将物体与背景分开。这时可以根据图象的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图象分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图象分割。

1). 大津法(OTSU)

最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津

法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差

越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部

分差别变小。因此,使类间方差最大的分割意味着错分概率最小。

 

对于图像I(x,y),前景(即目标)和背景的分割阈值记作T, 属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。

 

假设图像的背景较暗,并且图像的大小为M×N,

图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:

1 ω0 = N0/ M×N        (1)
2 ω1 = N1/ M×N        (2)
3 N0 + N1 = M×N       (3)
4 ω0 + ω1 = 1          (4)
5 μ= ω0 * μ0 + ω1 * μ1   (5)
6 g = ω0 (μ0 -μ) ^ 2 + ω1 (μ1 - μ)^2    (6)

将式(5)代入式(6),得到等价公式:

1 g = ω0 ω1 (μ0 - μ1) ^ 2    (7)

采用遍历的方法得到使类间方差最大的阈值T,即为所求。

Otus算法使用的是聚类的思想,即把图像的灰度数按灰度级分成2个部分,使2个部分的之间的灰度值差异最大,每个部分之内的灰度差异最小的,找到这样的一个灰度级t划分。通过方差的计算实现,即方差最小的值对应的t即是理想的划分。

http://hi.baidu.com/cwynamespace/blog/item/896ed529955c61f998250a47.html


2). 均值法

思想很简单,就是把图像分成m*n块子图,求取每一块子图的灰度均值(就是所有像素灰度值之和除以像素点的数量),这个均值就是阈值了。

这种方法明显不比大津法好,因为均值法和大津法都是从图像整体来考虑阈值的,但是大津法找了一个类间方差最大值来求出最佳阈值的;这两种方法子图越多应该分割效果会好一点,但效率可能会变慢。

 

6. 最佳阈值

     阈值的选择需要根据具体问题来确定,一般通过实验来确定。对于给定的图象,可以通过分析直方图的方法确定最佳的阈值,例如当直方图明显呈现双峰情况时,可以选择两个峰值的中点作为最佳阈值。

所谓最佳阈值就是根据一定的方法(例如双峰法),找出图像中目标与背景的分割最佳阈值就是了。方法多种多样,对不同的图片可以有不同的方法(因为不同的图片有不同的特点)。方法是多种多样的,答案是丰富多彩的。

转自:http://blog.csdn.net/bagboy_taobao_com/article/details/5645425

附:OpenCv中实现了三种跟图像分割相关的算法(http://www.cnblogs.com/xrwang/archive/2010/02/28/ImageSegmentation.html)








猜你喜欢

转载自blog.csdn.net/zk_ken/article/details/80419480
今日推荐