otsu 双阈值 图像分割

本文介绍了Otsu双阈值图像分割的理论,并提供了MATLAB实现的代码示例,通过平滑滤波和灰度直方图进行图像处理,展示处理结果。
摘要由CSDN通过智能技术生成

otsu 双阈值算法 图像分割

理论

网上有很多博客都写了理论,但是很少有代码 就算有也是opencv c++的代码
所以贴一个自己写的matlab版本
otsu理论的话, 看冈萨雷斯的《数字图像处理》 第10.3.6节 多阈值处理
看完书,按照书上的理论来写的

MATLAB代码

otsu 双阈值函数:



function [t1,t2]=DoubleOtsuThresh(img)
%
%  Otsu 双阈值求解
%  输入 图像img,输出 最优阈值t1和t2(归一化,范围在[0,1])
%
%


BinsNum = 256;  
hist = imhist(img,BinsNum);   
p = hist / sum(hist);          % 直方图的概率密度函数
mG= sum(p .* (1:BinsNum)');     % 全局均值

P1 = cumsum(p);                 % 概率分布
m1 = cumsum(p .* (1:BinsNum)')./P1; % 256*1  每个阈值的前景平均灰度

% 根据算法理论,从k2+1累加到L-1,可以先倒着累加再翻转回来
P3= cumsum(flip(p));          
m3 = cumsum(flip(p) .* flip(1:BinsNum)')./P3;
P3=flip(P3);
P3=[P3(2:end) ;0];             %P3的索引用k2,则P3(1)实际上是从p(2)加到p(256),所以要移动一个
                               %移动后也用不到P3<
Otsu阈值分割算法是一种基于聚类思想的图像分割算法,它通过计算图像的灰度直方图来确定两个阈值,将图像的灰度级别分成三个部分。该算法的目标是使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,从而实现最佳的图像分割效果。 在Otsu算法中,首先需要计算图像的灰度直方图,然后根据计算得到的直方图,使用Otsu公式计算出两个阈值。公式中的g是类间方差,w0、w1、w2分别代表各部分的权重,u0、u1、u2分别代表各部分的平均灰度值,u表示整个图像的平均灰度值。当g取得最大值时,就可以确定出两个阈值,进而实现阈值分割Otsu算法的优点是计算简单,不受图像亮度和对比度的影响,因此被认为是图像分割阈值选取的最佳算法。它能够自动选取最适合的阈值进行二值化处理,从而实现图像的自动分割。然而,为了执行Otsu算法,需要先计算图像的灰度直方图,这是算法的一个前提条件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Otsu阈值分割详解](https://blog.csdn.net/Protinx/article/details/127574112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MATLAB--数字图像处理 Otsu算法(阈值)](https://blog.csdn.net/weixin_44225182/article/details/102768578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值