基于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 运行结果

相关推荐
CoovallyAIHub12 分钟前
超越YOLOv8/v11!自研RKM-YOLO为输电线路巡检精度、速度双提升
深度学习·算法·计算机视觉
BagMM1 小时前
FC-CLIP 论文阅读 开放词汇的检测与分割的统一
人工智能·深度学习·计算机视觉
Dev7z10 小时前
基于Matlab图像处理的EAN条码自动识别系统设计与实现
图像处理·人工智能
t1987512810 小时前
基于MATLAB的指纹识别系统完整实现
开发语言·matlab
6***x54511 小时前
C在机器学习中的ML.NET应用
人工智能·机器学习
gihigo199811 小时前
基于MATLAB的IEEE 14节点系统牛顿-拉夫逊潮流算法实现
开发语言·算法·matlab
云纳星辰怀自在11 小时前
MATLAB: m脚本-fixdt数据类型数据范围
matlab·m脚本·fixdt
甄心爱学习12 小时前
数据挖掘-聚类方法
人工智能·算法·机器学习
Dev7z12 小时前
面向公共场所的吸烟行为视觉检测系统研究
人工智能·计算机视觉·视觉检测
橙露13 小时前
视觉检测硬件分析
人工智能·计算机视觉·视觉检测