首页 > 行业资讯 > 【图像分割】基于全局阈值、otsu、自适应阈值多种算法实现图像分割含Matlab源码

【图像分割】基于全局阈值、otsu、自适应阈值多种算法实现图像分割含Matlab源码

时间:2022-07-21 来源: 浏览:

【图像分割】基于全局阈值、otsu、自适应阈值多种算法实现图像分割含Matlab源码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #图像处理matlab源码 763个

1 简介

重点讨论了图像分割法中的阈值研究法,包括全局阈值法和自适应阈值法.对全局阈值算法中的人工选择法,迭代式阈值选择法,最大类间方差法以及自适应算法中的分水岭算法进行了重点分析,用Matlab进行实现并给出了实验结果。

阈值分割方法是一种常见的区域并行技术,原理上利用1 个或者多个阈值对像素点的灰度直方图进行区分,将其分成几个不同的类,得到的像素灰度值在同一类的属于同一个物体。由于直接利用灰度直方图可以简化计算的部分,因此,选取一个适合的阈值就显得尤为重要。想要找到合适的阈值就离不开一个准则函数 [3]。而在实际的研究中,选择合适的阈值并不容易,影响阈值设定的主要因素有光的亮度以及噪声。随着研究的进步,逐步发展了几种解决上述问题的办法,应用比较广泛的有自适应阈值法、最大熵法、类间阈值法以及模糊阈值法等。并且为了保证准确性,至少会采用 2 种或者更多方法来确定阈值。首先把想要处理的原始 图像假设为 f(x,y),阈值分割的主要任务就是将原始的输入函数转 化成输出函数 g(x,y),

得到的函数 g(x,y)的图像是二值图像,利用原图 f(x, y)与阈值 p 比较之后,就能得到分割以后的图像。在现在的研究中,阈值分割算法的核心就是找出最合适的阈值,基于此可以分为人工选择法和自动选择法,要选择的就是阈值,人工选择法就是在通过人的肉眼分析图像的直方图时,根据经验判断合适的阈值。但是在没有人工干预的情况下,就需要采用自动选择法,这也是在特殊环境下利用专业领域的专业知识来进行判断的。

2 部分代码

function y = isrgb(x) %ISRGB Return true for RGB image. % FLAG = ISRGB(A) returns 1 if A is an RGB truecolor image and % 0 otherwise. % % ISRGB uses these criteria to determine if A is an RGB image: % % - If A is of class double, all values must be in the range % [ 0 , 1 ], and A must be M- by -N- by -3. % % - If A is of class uint8 or uint16, A must be M- by -N- by -3. % % Note that a four-dimensional array that contains multiple RGB % images returns 0 , not 1. % % Class Support % ------------- % A can be of class uint8, uint16, or double. If A is of % class logical it is considered not to be RGB. % % See also ISBW, ISGRAY, ISIND. % Copyright 1993 -2003 The MathWorks, Inc. % $Revision: 1.15 .4 .2 $ $ Date : 2003 / 08 / 23 05 : 52 : 55 $ wid = sprintf( ’Images:%s:obsoleteFunction’ ,mfilename); str1= sprintf(’%s is obsolete and may be removed in the future.’,mfilename); str2 = ’See product release notes for more information. ’; warning(wid,’ %s %s ’,str1,str2); y = size(x,3)==3; if y if isa(x, ’ logical ’) y = false; elseif isa(x, ’ double ’) % At first just test a small chunk to get a possible quick negative m = size(x,1); n = size(x,2); chunk = x(1:min(m,10),1:min(n,10),:); y = (min(chunk(:))>=0 && max(chunk(:))<=1); % If the chunk is an RGB image, test the whole image if y y = (min(x(:))>=0 && max(x(:))<=1); end end end

3 仿真结果

4 参考文献

[1]李小琦. 基于Matlab的图像阈值分割算法研究[J]. 软件导刊, 2014, 13(12):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐