Matlab-图像分割之大津法(OTSU算法)
大津法(OTSU)是一种确定图像二值化分割阈值的算法,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。
它被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。但是大津法这种全局阈值分割的方法受光照不均的影响较大。
代码实现
P = imread('rice.jpg'); SE = strel('disk', 12); tophat = imtophat(P, SE); % 矫正不均匀光照 level = graythresh(tophat); % 计算阈值 BW = imbinarize(tophat, level); % 转换为二值图 [L,n] = bwlabel(BW, 4); % 对二维二值图像中的连通分量进行标注 n % 统计连通分量的数量 subplot(1,3,1),imshow(P); subplot(1,3,2),imshow(tophat); subplot(1,3,3),imshow(BW);
结果展示