OTSU大津法对图像二值化
OTSU算法
(1)原理:
对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于背景的像素个数占整幅图像像素个数的比例记为ω0,其平均灰度μ0;前景像素个数占整幅图像像素个数的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。
可以将图像理解成255个图层,每一层分布了不同的像素,这些像素垂直叠加合成了一张完整的灰度图。
假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数(即背景像素个数)记作N0,像素灰度大于阈值T的像素个数(即前景像素个数)记作N1,则有:
ω0=N0/ M×N (1)
ω1=N1/ M×N (2)
N0+N1=M×N (3)
ω0+ω1=1 (4)
μ=ω0*μ0+ω1*μ1 (5)
公式(5)的推导:
类间方差公式: g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6) (数学理论依据?)
ω0相当于前景像素数所占权重
ω1相当于背景像素数所占权重
公式(6)的化简:
将式(5)代入式(6),得到等价公式:
g=ω0ω1(μ0-μ1)^2 (7)
μ0是前景像素灰度平均值(第1类)。
μ1是背景像素灰度平均值(第2类)。
ω0相当于前景像素数所占权重
ω1相当于背景像素数所占权重
公式(7)就是类间方差(inter-class variance)。
采用遍历的方法得到使类间方差g取最大值的阈值T,即为所求。
将公式(5)带入(6)即可得到公式(7)。
(2)matlab函数:
matlab中函数graythresh既是使用大津法求得分割阈值T。用法如下:
T = graythresh(img);
BW = im2bw(img,T);
参考链接:https://zhuanlan.zhihu.com/p/34112446
另一个参考链接:https://blog.csdn.net/liyuanbhu/article/details/49387483
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理