6.4 自动阈值分割方法:otsu大津法

 

 

一、大津法介绍

与迭代法类似的是,大津阈值法。

大津法也叫最大类间方差法。是1979年日本大津提出的。也是通过计算出一个阈值,然后使用这个阈值对图像进行分割。这个方法的阈值也是自动计算出来的。

 

 

当取最佳阈值时,类间方差最大。

 

大津法就是遍历所有可能的阈值,看看那个阈值得到的类间方差最大。

 

 

二、函数

在opencv中,还是使用cv2.threshold()来实现Otsu算法。

 

t, otsu = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)

 

与固定的阈值分割的不同在于:

1. 参数type多了一个"<

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Otsu是一种经典的图像阈值分割,主要思想是寻找图像的最佳阈值,使得分割后的两部分类内方差最小,类间方差最大。 以下是Otsu的基本步骤: 1.计算图像的直方图,即统计每个像素值出现的次数。 2.对每个像素值,计算其出现的概率。 3.对每个像素值,计算其和0像素值之间的类间方差。 4.找到使类间方差最大的阈值,即为图像的最佳阈值。 5.将图像按照最佳阈值进行二值化处理,得到分割后的图像。 下面是Python实现代码: ```python import numpy as np from PIL import Image def otsu_threshold(img_path): # 读入图像 img = np.array(Image.open(img_path).convert('L')) # 计算直方图和像素总数 hist, bins = np.histogram(img, bins=256) total_pixels = img.shape[0] * img.shape[1] # 计算每个像素值出现的概率和平均灰度值 probabilities = hist / total_pixels mean_gray = np.sum(bins[:-1] * probabilities) # 初始化最佳阈值和最大类间方差 best_threshold = 0 max_variance = 0 # 遍历所有可能的阈值 for threshold in range(256): # 计算类内和类间方差 w0 = np.sum(probabilities[:threshold]) w1 = np.sum(probabilities[threshold:]) if w0 == 0 or w1 == 0: continue mean0 = np.sum(bins[:threshold] * probabilities[:threshold]) / w0 mean1 = np.sum(bins[threshold:] * probabilities[threshold:]) / w1 variance = w0 * w1 * (mean0 - mean1) ** 2 # 更新最佳阈值和最大类间方差 if variance > max_variance: best_threshold = threshold max_variance = variance # 二值化处理 img_binary = np.zeros_like(img) img_binary[img > best_threshold] = 255 # 返回二值化后的图像和最佳阈值 return img_binary, best_threshold # 测试代码 if __name__ == '__main__': img_path = 'test.jpg' img_binary, best_threshold = otsu_threshold(img_path) print('Best threshold:', best_threshold) Image.fromarray(img_binary).show() ``` 注意:在计算类内和类间方差时,需要判断分母是否为0,以避免出现除数为0的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值