基于matlab的自适应阈值法图像分割

1 原理

自适应阈值法图像分割的原理是基于图像的局部统计信息来确定每个像素的阈值。这种方法通过将图像划分为多个小区域,并根据每个区域的统计结果计算出相应的阈值。这样做的好处是能够在不同的光照条件下自动调整阈值,从而更好地适应不同图像的分割需求。

本文采用的是自适应阈值法的一种常见实现方式:大津阈值法(OTSU方法),也被称为最大类间方差法。以下是该方法的基本原理和公式:

1.1 原理
  1. 图像灰度化:首先,将输入的彩色图像转换为灰度图像。
  2. 计算灰度直方图:统计灰度图像中每个灰度级出现的频率,得到灰度直方图。
  3. 确定最佳阈值:通过遍历所有可能的灰度级,计算前景和背景之间的类间方差。使类间方差最大的灰度级被选作最佳阈值。
  4. 二值化:使用最佳阈值将灰度图像转换为二值图像,即前景(目标)和背景。
1.2 公式

设图像包含(L)个灰度等级,灰度值为(i)的像素点的个数为(N_i),像素点的总个数为:

灰度值为(i)的像素点的概率为:

图像的灰度均值为:

使用阈值(T)将图像分为目标(c_0)和背景(c_1)两类,则(w_0(T))和(w_1(T))分别表示阈值为(T)时,(c_0)和(c_1)发生的概率,即:

(c_0)和(c_1)的均值为:


类间方差(\sigma_B^2(T))表示直方图中阈值为(T)的类间方差,定义为:

通过遍历所有可能的灰度级,找到使最大的T,即为最佳阈值。

1.3 总结

自适应阈值法图像分割通过计算图像的局部统计信息来确定每个像素的阈值,从而能够在不同的光照条件下自动调整阈值,提高图像分割的准确性和鲁棒性。大津阈值法(OTSU方法)是自适应阈值法的一种常见实现方式,它基于最大类间方差原理来确定最佳阈值。

2 代码

Matlab 复制代码
%% 阈值分割法  
% 读取图像    
I = imread('test.jpg');    % 确保图片路径正确  
% 如果图像是彩色的,先转换为灰度图  
if size(I, 3) == 3  
    I = rgb2gray(I);  
end  
  
% 显示原图像    
subplot(1,3,1);imshow(I);    
subplot(1,3,2);imhist(I);     
  
% 使用Otsu's方法计算阈值  
T = graythresh(I);  % 返回的T是一个0到1之间的值,表示归一化阈值  
T_scaled = round(T * 255);  % 将归一化阈值转换为0到255之间的整数阈值  
T_scaled
% 使用阈值进行图像分割  
BW = imbinarize(I, T_scaled / 255);  % 使用imbinarize函数直接进行阈值分割  
% 或者,如果您想手动实现,可以像之前那样使用循环  
% 但通常建议使用imbinarize,因为它更快且更易于阅读  
  
% 显示分割后的图像    
subplot(1,3,3);    
imshow(BW);  

3 运行结果

相关推荐
我要见SA姐139 分钟前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Martina_03212 小时前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节
Zzj_tju2 小时前
智能体该向哪段经验学习?Routed CL 在混合任务中探索记忆分流
人工智能·深度学习·机器学习·语言模型
I Am a robert girl4 小时前
推理时刻的精确性:当模型开始“证明“而不是“拟合“
神经网络·机器学习·ai论文·泛化能力·生成机制·分布外泛化·模型表示
原子延迟4 小时前
Smallpdf免费次数用完了(2026),4款工具避坑
图像处理·人工智能·计算机视觉
Keep_Trying_Go6 小时前
Consistent-Point半监督人群计数算法详解
人工智能·深度学习·算法·计算机视觉·人群计数
在所不辞兄6 小时前
【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究
人工智能·深度学习·神经网络·算法·机器学习·1024程序员节
大雾的小屋6 小时前
卷积神经网络原理解析:从1989年手写邮编识别到现代计算机视觉
人工智能·计算机视觉·cnn
城南皮卡丘8 小时前
苹果果实成熟度检测数据集 4195张+YOLO格式
深度学习·yolo·目标检测·计算机视觉·数据集
Dovis(誓平步青云)11 小时前
拖动关键帧角色就抽动,动画编辑器怎样补齐中间状态
开发语言·前端·javascript·机器学习·编辑器