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

相关推荐
穗余1 小时前
什么是模型幻觉?为什么会出现? 模型幻觉是阻碍落地的最重要的原因。
人工智能·机器学习
Angelina_Jolie1 小时前
DCL:动态因果学习,破解跨模态心脏影像分割时空混淆难题
计算机视觉
AI技术控2 小时前
论文解读:AE-TCN-SA——基于自编码器、TCN 与自注意力机制的锂电池内短路诊断方法
人工智能·python·深度学习·算法·机器学习·自然语言处理
吃好睡好便好3 小时前
在Matlab中绘制三维等高线图
开发语言·python·学习·算法·matlab·信息可视化
CCC:CarCrazeCurator3 小时前
DriveGen: 基于扩散 Transformer 的驾驶场景视频生成器
人工智能·机器学习·自动驾驶
Aaron15884 小时前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
Evand J5 小时前
【MATLAB】多无人机编队协同控制与三维航迹规划仿真。障碍物斥力避障,输出编队误差、控制输入、三维轨迹等
开发语言·matlab·无人机
这张生成的图像能检测吗5 小时前
(论文速读)TSSA:令牌统计自注意力机制
人工智能·机器学习·注意力机制·长序列建模·视觉分类
aisifang005 小时前
GPT-Image2去偏见技术新突破
人工智能·算法·机器学习