分水岭算法的改进方法研究

分水岭算法的改进方法研究
分水岭算法的改进方法研究

—4—

分水岭算法的改进方法研究

刁智华1,2,赵春江1,郭新宇1,陆声链1,王秀徽1

(1. 国家农业信息化工程技术研究中心,北京 100097;2. 中国科学技术大学自动化系,合肥 230027)

摘 要:现有分水岭算法对噪声敏感且存在过分割现象。结合当前研究进展,介绍模拟泛洪的分水岭算法和模拟降水的分水岭算法。针对传统算法的缺点,总结4种分水岭算法的改进方法,分析其优缺点并指出未来分水岭算法的研究方向。 关键词:分水岭算法;图像分割;预处理滤波;标记;区域合并

Research on Improved Methods of Watershed Algorithm

DIAO Zhi-hua 1,2, ZHAO Chun-jiang 1, GUO Xin-yu 1, LU Sheng-lian 1, WANG Xiu-hui 1

(1. National Engineering Research Center for Information Technology in Agriculture, Beijing 100097;

2. Department of Automation, University of Science and Technology of China, Hefei 230027)

【Abstract 】Existing watershed algorithm is sensitive to noise and has over-segmentation problem. Based on previous studies and combining with the current progress, this paper introduces watershed algorithm simulating flood and watershed algorithm simulating rain. It sums up four types of improved methods for watershed algorithm according to defects of the traditional algorithms. Problems and further research aspects of improved methods for watershed algorithm are discussed.

【Key words 】watershed algorithm; image segmentation; preprocessing filtering; labeling; region merging

计 算 机 工 程 Computer Engineering 第36卷 第17期

Vol.36 No.17 2010年9月

September 2010

·博士论文·

文章编号:1000—3428(2010)17—0004—03

文献标识码:A

中图分类号:TP391.4

1 概述

分水岭算法作为一种基于区域的图像分割方法,建立在

数学形态学的理论基础之上。20世纪70年代末,Beucher 和Lantuejoul 提出应用分水岭算法进行图像分割,实现了分水岭算法的模拟浸入过程,并成功应用于灰度图像。其后,分水岭算法作为一种经典的图像分割方法被关注。文献[1]提出基于模拟淹没的快速分水岭算法。文献[2]提出一种模拟降水的分水岭分割算法。

但分水岭算法存在如下缺点:(1)对图像中的噪声极敏感。输入图像通常是图像梯度,原始图像中的噪声能直接恶化图像的梯度,易于造成分割轮廓偏移。(2)易于产生过分割。由于受噪声、量化误差以及区域内纹理细节的影响,因此会产生很多局部最小值,在后续分割中将出现大量细小区域。(3)对低对比度图像易丢失重要轮廓。在此情况下,区域边界像素的梯度值也较低,目标的重要轮廓容易丢失。

为了克服传统分水岭算法的缺点,很多学者进行了相关研究,提出了一些改进型分水岭算法,并成功应用到相关领域。Nguyen 等人提出能量最小化的水蛇算法,提高了边界定

位准确度和连续性,但无法解决过分割问题。崔明等提出一种基于区域融合的改进型快速分水岭变换算法,并将改进分水岭变换中获得的多尺度信息作为评价边界强度的指标。陈忠等利用非线性滤波和改进的快速区域合并算法优化分水岭变换得到初始分割结果,实验结果表明该算法能获得良好的分割效果,且极大减少了计算时间。

目前,还没有学者对分水岭算法的改进方法做过综述。本文在借鉴大量前人研究成果的基础上,结合新的研究进展,对为了克服传统分水岭算法的缺点而提出的改进型算法进行综述,从而为分水岭算法的研究提供支持。 2 传统分水岭算法

分水岭算法最初的思想来源于地理学,它把一幅图像想

象成一个立体的地形表面,如图1所示。有关分水岭算法的不同直观理解对应不同的算法实现。

目前较著名且使用较多的有2种算法: (1)自下而上的模拟泛洪的算法[1]; (2)自上而下的模拟降水的算法[2]。

图1 图像三维表示

2.1 模拟泛洪的算法

一片高低起伏的地貌,水从各个局部最低点开始向上漫溢,不同的局部区域会渐渐充满水。随着水面上涨,在各个区域的边缘,从不同的地方漫溢上来的水便会交汇。如果在水面交汇的地方建起大坝隔开水,这片地就被分成了不同的

基金项目:国家“863”计划基金资助项目(2007AA10Z237);北京市自然科学基金资助项目(4081001)

作者简介:刁智华(1964-),男,博士研究生,主研方向:图像处理,模式识别;赵春江,研究员、博士;郭新宇,研究员、博士; 陆声链,助理研究员、博士;王秀徽,博士

收稿日期:2010-04-08 E-mail :zhaocj@https://www.360docs.net/doc/8914830751.html,

区域,分水岭算法中这些区域叫做汇水盆地,区域边缘建起大坝的地方称为分水岭,该过程就是泛洪。模拟泛洪的分水岭算法的工作原理如图2所示。

积水盆

局部极小点局部极小点

图2 模拟泛洪的算法原理

2.2 模拟降水的算法

模拟降水的算法把分水岭算法理解为一种模拟降水的过程:雨水降落在山地表面并顺着地势向下流动,如果水降落在2个不同的点上,最终会流到相同的局部最低点,则这2个点属于同一个区域。只有山脊上的雨水流入周围的区域的概率是一样的。因此,水降落在其上能流入到相同局部最低点的表面形成一个分割区域,山脊就是区域边界,即分水岭。模拟降水的分水岭算法的工作原理如图3所示。

山脊

局部极小点局部极小点

图3 模拟降水的算法原理

从应用的广度来讲,模拟泛洪的分水岭算法比模拟降水的分水岭算法更加通用。但Lin的研究结果表明,如果去除像素访问顺序的影响,2种算法可以得到完全相同的结果,且模拟降水的算法不需要像素的排序过程,可能更快。

3 分水岭算法的改进方法

针对传统分水岭算法对噪声敏感、容易产生过分割等缺点,并结合自身的研究需求,很多学者提出了相应的改进型分水岭算法,达到了很好的实验效果。一些学者将分水岭算法与其他方法相融合,为解决项目中遇到的实际问题提供了思路。在初始分割时尽量抑制噪声和细密纹理的影响,同时保留重要轮廓,合理降低区域数量,避免区域合并或减小合并难度和复杂度,成为解决传统分水岭算法问题的根本途径。就目前的研究进展而言,在解决传统分水岭算法的缺点方面,相关的改进方法可以归纳为4种:预处理滤波,标记,区域合并和其他方法。

3.1 预处理滤波

应用传统分水岭算法时,由于图像本身的噪声影响和量化误差的影响,会在本该形成一个被大边缘包围的区域内,分割出许多小区域,由于下一步的梯度信息对噪声较敏感,因此将造成在真正的边缘里混进许多虚假边缘,即过分割现象。为了避免产生过分割现象,可以采用预处理滤波的方法,在图像应用分水岭算法处理前滤除图像噪声。

很多学者在使用预处理滤波方法改善传统分水岭算法缺点方面进行了研究,做出了有益尝试,取得了很好的实验效果。康维等人先使用形态学滤波的方法来滤除原图中离散的细胞核点以及细胞核中的孔洞,然后将分水岭算法应用于重叠细胞的分割,结果表明算法能提取理想的细胞组织边界。文献[3]使用各向异性滤波和形态学滤波来处理遥感图像,并和分水岭算法一起用于自动橄榄树检测,实验结果表明该算法有效,可解决分水岭算法的过分割问题。潘婷婷等针对卫星图像中道路的基本特征以及道路信息提取的难点,提出一种改进的分水岭算法。在算法中为了避免过分割问题,运用高通滤波器对原始图像进行去噪和平滑,取得了很好的效果。姬宝金等人针对过分割问题,在图像预处理过程中先对图像进行中值滤波来消除部分噪声,并对原始图像的梯度图进行开闭重建运算,在保留区域重要轮廓的同时去除了噪声和图像细节。

3.2 标记

分水岭算法对图像的变化高度敏感,图像含有噪声和其他因素(如梯度局部不规则性)常会导致过度分割,使希望得到的轮廓被大量不相关轮廓所淹没。一种有效的解决方案是采用标记的方法与分水岭算法相结合。首先使用强制最小值算法确定梯度图像中目标区域最小值点,将抽取的标记强制性地作为梯度图像地极小值,以此来修改梯度图像。然后对修改后的梯度图像应用分水岭算法,完成图像分割。

一些学者在标记分水岭算法方面做了相关改进,并将其应用于实际项目中,取得了一定成绩。Meyer等人给出一种基于标记的分水岭算法,它有效地避免了过分割现象,但在自动标记方面存在明显缺点,且分割边界的精度随标记数量的增多而减小。

文献[1]提出的分水岭算法实际上是一种经典区域标记方法,算法建立在测地距离的概念基础之上。王鑫等人先利用小波变换产生多分辨率图像,然后对最低分辨率图像采用基于标记的分水岭分割,得到初始的分割区域,最后利用区域标记和小波反变换,得到高分辨率图像的分水岭分割结果,较好地解决了分水岭变换方法中的过分割问题。

文献[4]针对传统分水岭分割算法对噪声敏感和易于产生过分割的问题,提出一种基于开闭二次重建和非线性处理的分水岭图像分割方案。在像素连通关系的基础上,研究了一种改进的分水岭标记算法进行分割,并给出具体实现流程。仿真实验结果说明,该方案能抑制传统算法中的过分割,且边缘定位准确。Trieu等人采用基于标记的并行分水岭算法,并将其应用于实时图像分割系统中。实验结果表明,对于一个512×512的图像来说,该算法在实时应用中的速度足够快。

文献[5]为实现医学临床显微图像自动快速分析,先将二值化后的图像进行距离变换,然后采用快速灰度重建算法重建距离变换后的图像,最终用分水岭算法分割变换图像,有效避免了为防止过分割而提取分水岭标记点过分依赖于图像先验知识的缺陷,实现了自动探测目标细胞并分割重叠细胞。实验结果表明,将该算法应用于临床细胞图像的分割是可行的。本文将标记与分水岭算法相结合,在淹没过程中采用四连通法进行生长,用于小麦病害叶片以及病斑的分割,能得到准确的边界信息,取得了很好的效果。

3.3 区域合并

在应用传统分水岭算法进行图像分割时,由于各种原因产生的过分割情况会导致分割的区域更多更小,因此可以采用区域合并的方法来改善过分割现象,即根据某个准则反复地对相邻或相近的区域做合并操作。但由于区域合并本身非

—5—

常耗时,因此影响了其应用推广,需要在合并准则和快速性方面作相关改进。

学者们在区域合并方面做了很多尝试性工作,并针对区域合并本身的缺点进行了改进,取得了较好效果。尤鸿霞等人将分水岭算法与区域合并相结合,应用于虹膜图像的分割,在分割图像的过度分割部分进行区域合并。实验结果表明,该方法在虹膜分割中能减少过度分割现象,可以得到精确、封闭的虹膜边缘。刘海宾等人采用相似区域合并的方法来解决过分割现象,使得图像区域明显减少,达到了分割要求。Harrisk等人提出对分水岭分割所得区域进行区域融合,是一种有效的改进方法,但由于初始分水岭分割所得区域数目往往很大,因此融合过程计算量极大。杨海峰结合图像灰度、边缘信息与信息熵,改进了基于地形学距离的分水岭算法。根据最大熵准则停止合并过程,获取最终的分割结果。魏光杏等人将模糊关系与模糊C均值聚类算法相结合,利用模糊关系合并相似区域,有效克服了分水岭算法的过分割问题,极大提高了图像分割质量。杨卫莉等人采用蚁群算法在分割区域间进行聚类合并,消除了分水岭算法带来的过分割现象。

3.4 其他方法

在解决传统分水岭算法带来的过分割现象时,一些学者将链码、小波变换、图论、能量驱动等其他技术与分水岭算法相结合,对分水岭算法进行改进,在算法鲁棒性、适应性以及降低时间和空间复杂度方面取得了很好的效果。孙涵等人为了快速准确地进行图像分割,借鉴图像处理中常用的链码思想,提出了基于链码的分水岭变换算法。

实验结果表明,新算法具有较低的时间和空间复杂度,且变换结果更有利于后续图像理解。陈州徽等人提出在小波多分辨率域中使用分水岭算法对图像进行区域分割和融合的新方法,实验结果表明,该方法可以减少存在噪声时的过分割现象。冯林等人将分水岭算法与图论相融合,提出一种新的图像分割方法。结合分水岭变换得到的小区域的灰度和空间信息,从全局角度用规一化分割方法在区域之间进行分割,可以消除过分割现象。

文献[6]针对传统分水岭算法在分割过程中较少用到边界特征信息、图像的过分割问题比较突出等缺点,提出利用能量驱动的分水岭算法,并将其应用到人脑MRI(Magnetic Resonance Imaging)中的海马分割。多套MRI海马的分割结果表明,该算法可应用于海马等复杂结构的分割。张鲲等人提出一种顺序无关的改进分水岭图像分割算法,为了减少顺序无关分水岭算法中的脊线标记RIDGE的数量,引入像素的湖最小值作为附加地形特征来消除不确定性,同时,为了解决分水岭算法的过分割问题,引入落差来控制分割区域的形成过程,取得了很好的实验结果。

目前,在上述4种分水岭算法的改进方法中,标记方法和区域合并方法被学者广泛采用,对消除图像处理过程中遇到的过分割以及对噪声敏感的现象取得了很好的效果,并已应用在一些实际系统中。而预处理滤波方法作为一种辅助而非改变算法本身的方法,没有从根本上解决传统分水岭算法的缺点,较少被学者使用。将链码、小波变换、图论、能量驱动等其他技术与分水岭算法相结合的方法则为分水岭算法的研究提供了思路,拓宽了研究方向。4 存在的问题及研究方向

分水岭算法作为图像分割中一种经典有效的方法,因为具有边缘定位准确、运算简单等优点,所以在图像分割算法中越来越得到人们的重视。研究者们在传统分水岭算法的改进方法及其与其他方法的结合上做了大量工作,提出了很多实用的改进型算法,使分水岭算法得到广泛应用和极大发展,目前已成为图像分割领域最活跃的研究主题之一。但分水岭算法在实际应用中还存在很多需要改善的地方,其改进方法目前存在的问题以及未来的研究方向可以归纳为以下几点:

(1)处理时间长一直是应用分水岭算法的瓶颈,当需要处理的图片尺寸过大时,运算速度较慢。特别是应用标记或区域合并等改进算法时,由于在操作过程中需要进行标记和多重的区域合并,使得运算复杂度增加,加大了处理时间,因此不适合应用在输入为大尺寸图像的实时处理系统中。

(2)目前虽然对分水岭算法的改进方法进行了一些尝试,但是对于如何使用这些改进方法还没有统一的标准,没有一种通用的方法适合所有应用需求。

(3)对于诸多改进方法,没有一个评价标准来衡量何种方法是项目实际需要的最好方法,不利于选择分水岭算法的改进方法。

(4)有待进一步研究预处理滤波和其他方法在解决过分割问题上的效果,将其他更有效的方法和技术与分水岭算法相结合,以解决项目实际应用中遇到的问题。

(5)目前分水岭算法和理论多用于灰度图像,如何将分水岭算法及其改进方法应用于彩色图像,是未来的研究方向。

5 结束语

综上所述,未来分水岭算法的研究方向包括如何选择合适的改进方法、制定选择改进方法的评价标准、研究其他更有效的解决过分割问题的方法和技术,进而从根本上提高算法的处理速度,并结合分水岭算法的最新应用进展,将其应用到各种图像处理领域。

参考文献

[1] Vincent L, Soille P. Watersheds in Digital Spaces: An Efficient

Algorithm Based on Immersion Simulations[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1991, 13(6): 583- 598.

[2] Smet P D, Pires R L. Implementation and Analysis of an Optimized

Rain Falling Watershed Algorithm[C]//Proc. of SPIE’00. San Diego, CA, USA: [s. n.], 2000: 759-766.

[3] Karantzalos K, Argialas D. Improving Edge Detection and

Watershed Segmentation with Anisotropic Diffusion and Morphological Levellings[J]. International Journal of Remote Sensing, 2006, 27(24): 5427-5434.

[4] 杨文明, 陈国斌, 沈晔湖, 等. 一种基于分水岭变换的图像分割

方案[J]. 浙江大学学报: 工学版, 2006, 40(9): 1503-1510.

[5] 丛培盛, 孙建忠. 分水岭算法分割显微图像中重叠细胞[J]. 中国

图象图形学报, 2006, 11(12): 1781-1784.

[6] 鲁向, 芦勤, 罗述谦. 基于能量驱动的分水岭算法在MRI海

马图像分割中的应用[J]. 计算机辅助设计与图形学学报, 2008, 20(6): 748-752.

编辑陈晖

—6—

分水岭算法原理

所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。WatershedAlgorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是我们可爱的分水岭(watershed)。为了得到一个相对集中的集水盆,那么让水涨到都接近周围的最高的山顶就可以了,再涨就要漏水到邻居了,而邻居,嘿嘿,水质不同诶,会混淆自我的。那么这样的话,我们就可以用来获取边界高度大,中间灰阶小的物体区域了,它就是集水盆。浸水法,就是先通过一个适当小的阈值得到起点,即集水盆的底;然后是向周围淹没也就是浸水的过程,直到得到分水岭。当然如果我们要一直淹没到山顶,即是一直处理到图像灰阶最高片,那么,当中就会出现筑坝的情况,不同的集水盆在这里想相遇了,我们要洁身自爱,到这里为止,因为都碰到边界了。不再上山。构筑属于自己的分水岭。在计算机图形学中,可利用灰度表征地貌高。图像中我们可以利用灰度高与地貌高的相似性来研究图像的灰度在空间上的变化。这是空域分析,比如还可以通过各种形式的梯度计算以得到算法的输入,进行浸水处理。分水岭具有很强的边缘检测能力,对微弱的边缘也有较好的效果。为会么这么说呢?为什么有很强的边缘检测能力,而又能得到相对集中的连通的集水盆?现实中很好办,我们在往凹地加水的时候,直到它涨到这一块紧凑的山岭边缘就不加了;但是如果有一条小山沟存在,那没办法,在初始阈值分割的时候,也就是山沟与集水盆有同样的极小值,而且它们之间是以这个高度一直连接的。那没关系,我们将它连通。在图像上呢?如何实现? 看看算法,算法思想是这样的: 首先准备好山和初始的水。这山就是我们的初始图像了,比如用自然获取的图像的梯度来表征山地的每一点的高度吧;而初始的水就是在阈值记为Thre底下,所有的低于这个高度的整个山地都加水,直到这个阈值Thre高度。从而有三个初始量:unsignedchar**Ori_image、 char**Seed_image和int**Label_image。最后一个是为最终的结果做准备的。当然要做好初始化,比如,Ori_image赋值为原图像(256色灰度图)的梯度值,Seed_image则是初始状态下有水的置位,无水的复位,而Label_image则全初始化为0,最终得到的是各点对应的区域号。接下来是考虑将已加的水进行记录,记录成连通的区域,也就是看看有多少个互不相关的集水盆,有五个,那么我们就涨出五个湖,而且尽可能的高,只要大家想到不溢出。在算法上,有多少个连通的区域就记录成多少个数据结构,功夫就在于如何将这些连通的区域连接成一块,并由一个数据结构来表达了。很好,我们准备用一个向量容器来实现初始保存,保存所有标记区域种子队列的数组,里面放的是种子队列的指针vque,而且这个队列是由一系列属于同一个区域的图像点组成,我们来自一个集水盆:);其保存方式是这样的:queue *pque=newqueue[256];(pque),这样便将一个成员放进到这个区域来了,即容器--集水盆的

otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见otsu论文,或冈萨雷斯著名的数字图像处理那本书 这里给出程序流程: 1、计算直方图并归一化histogram 2、计算图像灰度均值avgValue. 3、计算直方图的零阶w[i]和一级矩u[i] 4、计算并找到最大的类间方差(between-class variance) variance[i]=(avgValue*w[i]-u[i])*(avgValue*w[i]-u[i])/(w[i]*(1-w[i])) 对应此最大方差的灰度值即为要找的阈值 5、用找到的阈值二值化图像 我在代码中做了一些优化,所以算法描述的某些地方跟程序并不一致 otsu代码,先找阈值,继而二值化 // implementation of otsu algorithm // author: onezeros(@https://www.360docs.net/doc/8914830751.html,) // reference: Rafael C. Gonzalez. Digital Image Processing Using MATLAB void cvThresholdOtsu(IplImage* src, IplImage* dst) { int height=src->height; int width=src->width; //histogram float histogram[256]= {0}; for(int i=0; iimageData+src->widthStep*i; for(int j=0; j

差分进化算法及应用研究

湖南大学 硕士学位论文 差分进化算法及应用研究 姓名:吴亮红 申请学位级别:硕士 专业:控制理论与控制工程指导教师:王耀南 20070310

硕士学位论文 摘要 论文首先介绍了智能优化算法的产生对现代优化技术的重要影响,阐述了智能优化算法的研究和发展对现代优化技术和工程实践应用的必要性,归纳总结了智能优化算法的主要特点,简要介绍了智能优化算法的主要研究内容及应用领域。 对差分进化算法的原理进行了详细的介绍,给出了差分进化算法的伪代码。针对混合整数非线性规划问题的特点,在差分进化算法的变异操作中加入取整运算,提出了一种适合于求解各种混合整数非线性规划问题的改进差分进化算法。同时,采用时变交叉概率因子的方法以提高算法的全局搜索能力和收敛速率。用四个典型测试函数进行了实验研究,实验结果表明,改进的差分进化算法用于求解混合整数非线性规划问题时收敛速度快,精度高,鲁棒性强。 采用非固定多段映射罚函数法处理问题的约束条件,提出了一种用改进差分进化算法求解非线性约束优化问题的新方法。结合差分进化算法两种不同变异方式的特点,引入模拟退火策略,使算法在搜索的初始阶段有较强的全局搜索能力,而在后阶段有较强的局部搜索能力,以提高算法的全局收敛性和收敛速率。用几个典型Benchmarks函数进行了测试,实验结果表明,该方法全局搜索能力强,鲁棒性好,精度高,收敛速度快,是一种求解非线性约束优化问题的有效方法。 为保持所求得的多目标优化问题Pareto最优解的多样性,提出了一种精英保留和根据目标函数值进行排序的多目标优化差分进化算法。对排序策略中目标函数的选择方式进行了分析和比较,并提出了一种确定进化过程中求得的精英解是否进入Pareto最优解集的阈值确定方法。用多个经典测试函数进行了实验分析,并与NSGA-Ⅱ算法进行了比较。实验结果表明,本文方法收敛到问题的Pareto前沿效果良好,获得解的散布范围广,能有效保持所求得的Pareto最优解的多样性。 提出了一种新的基于群体适应度方差自适应二次变异的差分进化算法。该算法在运行过程中根据群体适应度方差的大小,增加一种新的变异算子对最优个体和部分其它个体同时进行变异操作,以提高种群多样性,增强差分进化算法跳出局部最优解的能力。对几种典型Benchmarks函数进行了测试,实验结果表明,该方法能有效避免早熟收敛,显著提高算法的全局搜索能力。提出了将该改进算法用来整定不完全微分PID控制器最优或近似最优参数的新方法。为克服频域中常用的积分性能指标如IAE,ISE和ITSE的不足,提出了一种新的时域性能指标对控制器性能进行测试和评价。用三个典型的控制系统对提出的ASMDE-PID控制器进行了测试。实验结果表明,该方法实现容易,收敛性能稳定,计算效率高。与ZN,GA和ASA方法相比,DE在提高系统单位阶跃响应性能方面效率更高,鲁棒性更强。 为了提高差分进化算法的全局搜索能力和收敛速率,提出了一种双群体伪并行差分

Otsu算法(大律法或最大类间方差法)

Otsu算法(大律法或最大类间方差法) 一、Otsu最大类间方差法原理 利用阈值将原图像分成前景,背景两个图象。 前景:用n1,csum,m1来表示在当前阈值下的前景的点数,质量矩,平均灰度 后景:用n2, sum-csum,m2来表示在当前阈值下的背景的点数,质量矩,平均灰度 当取最佳阈值时,背景应该与前景差别最大,关键在于如何选择衡量差别的标准,而在otsu算法中这个衡量差别的标准就是最大类间方差(英文简称otsu,这也就是这个算法名字的来源),在本程序中类间方差用sb表示,最大类间方差用fmax 关于最大类间方差法(otsu)的性能: 类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。 当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。 最大类间方差法(otsu)的公式推导: 记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。 则图像的总平均灰度为:u=w0*u0+w1*u1。 前景和背景图象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式为方差公式。 可参照概率论课本上面的g的公式也就是下面程序中的sb的表达式。当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度t是最佳阈值sb = w1*w2*(u1-u0)*(u0-u1) 算法实现1: unsafe public int GetThreshValue(Bitmap image) { BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.WriteOnly, image.PixelFormat); byte* pt = (byte*)bd.Scan0; int[] pixelNum = new int[256]; //图象直方图,共256个点 byte color; byte* pline; int n, n1, n2; int total; //total为总和,累计值 double m1, m2, sum, csum, fmax, sb; //sb为类间方差,fmax存储最大方差值 int k, t, q; int threshValue = 1; // 阈值 int step = 1; switch (image.PixelFormat) { case PixelFormat.Format24bppRgb: step = 3; break; case PixelFormat.Format32bppArgb: step = 4; break; case PixelFormat.Format8bppIndexed: step = 1; break; } //生成直方图 for (int i = 0; i < image.Height; i++) { pline = pt + i * bd.Stride; for (int j = 0; j < image.Width; j++) { color = *(pline + j * step); //返回各个点的颜色,以RGB表示 pixelNum[color]++; //相应的直方图加1 } } //直方图平滑化

分水岭算法

解决分水岭算法的过分割问题 班级:020751 学号:02075087 姓名:刘恺

摘要针对基于分水岭变换的分割算法通常存在过分割现象,提出了一种新的分割算法,采用形态学的运算去除噪声及背景像素的影响,搜索区域极大值点,将分割定位于目标图像,从而达到很好的分割效果,方法从消除过分割及区域轮廓定位等方面均具有很好的分割效果。 关检词图像分割,分水岭变换,数学形态学 Abstract The article is based on watershed algorithm, proposed a method of image segmentation, adopted the morphology arithmetic to eliminate the effect of noise and background pixel, search for the max point in each area, let segmentation orientate as target image, could reach very good segment effect. The method can efficiently eliminate over-segmentation, and hold the position of region contours without evident bias. Key words image segmentation, watershed transform ,mathematical morphology 1.1图像分割综述 把图像分解为一些特定的性质相似的部分(区域或对象),并用这些部分对图像进行分析和描述。一幅图像往往包含许多不同类型的区域,如物体、环境和背景等。图像分析的一个重要方法就是用它们作为基本组成成分对图像进行描述。例如为了在气泡室图片中检出质点碰撞形式并判定其发生位置,就要在图像中分割出气泡的轨迹及其端点。为了从输入的文本中识别出一串字符,首先就要把各个字符从背景和其他字符中分离出来。因此把图像分割为若干子图像,并利用各子图像的特性和它们之间的关系描述图像,对于图像识别和解释、物景分析以及图像的分块处理和存储都有很大的意义。 图像分割基本上是对像素进行分类的过程。例如用某个灰度阈值把图像像素分成“黑”和“白”两类,就可以把黑的对象同白的背景区分开。常用的分割方法有灰度等级阈值法、谱和空间分类法、区域生长法和边缘检测法。 灰度等级阈值法在图像只有两种组成部分的情况下,图像灰度的直方图常常呈现两个峰值。用两个峰值之间的谷值所对应的灰度作为阈值,把所有像素灰度大于或等于阈值的作为一类,小于阈值的作为另一类是一种最基本的两类分割方法。实际应用时为了改善分类的可靠性,可以利用某些附加的信息(例如已知两类区域的面积之比)使阈值的选择更加合理。在类别更多的情况下,可以采用多级阈值把各类分割开来(例如确定两个阈值,就可以把细胞图像分割为胞核、胞浆和背景三部分)。类别越多,图像直方图的峰值就越不明显,分割就更为困难。 谱和空间分类法对于彩色和多光谱图像,可以用像素的几种性质(颜色和谱信号)对像素作比较精细的分类。对于黑白图像,用包括像素本身灰度在内的一组局部性质(例如该像素邻域灰级的均值)在多维空间中进行分类。对于一些复杂图像,这种方法比单独的灰度阈值法效果更好。

基于TSP的改进差分进化算法

龙源期刊网 https://www.360docs.net/doc/8914830751.html, 基于TSP的改进差分进化算法 作者:朱宇航伏楠 来源:《硅谷》2012年第17期 摘要: 针对TSP问题,提出一种改进的差分进化算法:利用贪心算法产生初始种群,定义特有的编码匹配函数进行变异操作,排序法修复变异个体,并采用顺序交叉,在变异操作之后,加入新的选择机制,防止交叉操作破坏变异出的优良个体,实验结果表明改进后的差分进化算法能够高效地解决TSP问题,体现良好的优化性能。 关键词: 差分进化算法;TSP;进化算法 0 引言 差分进化算法(DE:Differential Evolution)是一种模拟自然进化法则的仿生智能计算方法,在解决复杂的全局优化问题方面,DE的性能更加优秀,过程也更为简单,受控参数少[1],但由于DE 特有的差分操作的限制,DE被成功应用的领域多集中在连续优化领域,在离散优化领域的应用还相对较少[2]。 TSP(旅行商问题)作为典型的离散优化问题,是解决很多实际问题的最终转化形式,同时也是著名的NP难题,在短时间内求出其最优解非常困难,现有解法[3-4]在求解中都各有缺点.因此,研究将DE经过必要的改进后应用于TSP的求解具有重要意义。 1 改进DE算法 1.1 编码及匹配函数 适应度定义为:负的路径长度,使得路径长度越短,适应度值越大。 1.2 贪婪初始化 为提高初始种群的质量,采用贪婪的初始化方法.对于初始种群的每个个体,产生方法如下: step1:初始化待走城市列表List为包含所有城市的列表; step2:随机选择一个城市A作为起点,并将此点作为当前城市T,从List中移除; step3:从List中选择距离城市T最近的城市作为新的当前城市T,并将T从List中移除; step4:判断List是否为空,若是,则结束;若否,则转step3。

分水岭算法

%******************************************************** %直接对梯度图像进行分水岭变换 rgb = imread('');%读取原图像 I = rgb2gray(rgb);%转化为灰度图像 imshow(I),title('原始灰度图像') hy = fspecial('sobel');%sobel算子 hx = hy'; Iy = imfilter(double(I), hy, 'replicate');%滤波求y方向边缘Ix = imfilter(double(I), hx, 'replicate');%滤波求x方向边缘gradmag = sqrt(Ix.^2 + Iy.^2);%求模 L = watershed(gradmag);%直接应用分水岭算法 Ig=L==0; figure; imshow(Ig), %显示分割后的图像边界 title('梯度图像的分水岭变换边界(Ig)') %******************************************************** %通过对图像进行一系列预处理,解决过分割问题 se = strel('disk', 20);%圆形结构元素 Io = imopen(I, se);%形态学开操作 figure; subplot(121) imshow(Io), %显示执行开操作后的图像 title('开操作(Io)') Ie = imerode(I, se);%对图像进行腐蚀 Iobr = imreconstruct(Ie, I);%形态学重建 subplot(122); imshow(Iobr), %显示重建后的图像 title('腐蚀后形态学重建(Iobr)') Ioc = imclose(Io, se);%形态学关操作 figure; subplot(121) imshow(Ioc), %显示关操作后的图像 title('关操作(Ioc)') Iobrd = imdilate(Iobr, se);%对图像进行膨胀 Iobrcbr = imreconstruct(imcomplement(Iobrd), ... imcomplement(Iobr));%形态学重建 Iobrcbr = imcomplement(Iobrcbr);%图像求反 subplot(122); imshow(Iobrcbr), %显示重建求反后的图像 title('膨胀后形态学重建求反(Iobrcbr)') fgm = imregionalmax(Iobrcbr);%局部极大值 figure; imshow(fgm), %显示重建后局部极大值图像 title('重建后局部极大值图像(fgm)') I2 = I; I2(fgm) = 255;%局部极大值处像素值设置为255 figure; imshow(I2), %在原图上显示极大值区域 title('图上显示极大值区域(I2)') se2 = strel(ones(5,5));%结构元素 fgm2 = imclose(fgm, se2);%关操作

最大类间方差法(otsu)的原理

在网上很多地方都可以找到,但是我发觉似乎都是一样,而且一点注释都没有,如果光拿来用当然可以了,可是用一个算法不搞清楚里面的数学是件很遗憾的事情,我把OTSU的代码加上详细的注释,也算是对自己以后继续努力的一个鞭笞吧! 最大类间方差法(otsu)的原理: 阈值将原图象分成前景,背景两个图象。 前景:用n1, csum, m1来表示在当前阈值下的前景的点数,质量矩,平均灰度后景:用n2, sum-csum, m2来表示在当前阈值下的背景的点数,质量矩,平均灰度 当取最佳阈值时,背景应该与前景差别最大,关键在于如何选择衡量差别的标准而在otsu算法中这个衡量差别的标准就是最大类间方差(英文简称otsu,这也就是这个算法名字的来源) 在本程序中类间方差用sb表示,最大类间方差用fmax 关于最大类间方差法(otsu)的性能: 类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。 当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。 最大最大类间方差法(otsu)的公式推导: 记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。 则图像的总平均灰度为:u=w0*u0+w1*u1。 前景和背景图象的方差: g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式为方差公式,可参照概率论课本 上面的g的公式也就是下面程序中的sb的表达式 当方差g最大时,可以认为此时前景和背景差异最大,也就是此时的灰度是最佳阈值 unsafe public int GetThreshValue(Bitmap image) { BitmapData bd = (new Rectangle(0, 0, , , , ; byte* pt = (byte*); int[] pixelNum = new int[256]; //图象直方图,共256个点 byte color; byte* pline; int n, n1, n2; int total; //total为总和,累计值 double m1, m2, sum, csum, fmax, sb; //sb为类间方差,fmax存储最大方差值 int k, t, q; int threshValue = 1; // 阈值 int step = 1; switch { case :

OTSU算法进行图像二值化的实现

实习名称:OTSU算法的实现实习日期:2012年05月25日 得分:指导老师:夏志华 系:计算机专业:网络工程年级:大二 班次: 1 班姓名:学号: 实验名称:OTSU算法进行图像二值化的实现 (一)实验目的 1.熟悉otsu算法的原理 2.掌握otsu算法的应用 (二)基本原理 记t为前景与背景的分割阈值,前景点数占图像比例为W0, 平均值U0; 背景点数占图像比例为W1, 平均值为U1. 图像的内积平均值为:u=W0*U0 + W1*U1.从最小灰度值到最大灰度值遍历t,当t使得值g=W0*(U0-u)2+W1*(U1-u)2最大时t即为分割的最佳阈值。 (三)实验步骤 clear; %清屏 clc; G=imread('Tom.jpg'); %打开图像 subplot(2,2,1); %显示图像位置布局 imshow(G); %显示图像 %axis(‘square’); title('原始图像'); I=rgb2gray(G); %将真彩色G转化为灰度图像 subplot(2,2,2); %显示图像位置布局 imshow(I); %显示原始图像 %axis(‘square’); title('灰度化后图像'); I1=I; [p,q]=size(11); thresh=150; for i=1:p %i取从1到p的值 for j=1:q %j取1到q的值 if I1(i,j)>thresh I1(i,j)=255; else I1(i,j)=0; end end end subplot(2,2,3); imshow(I1); %显示灰度化后的图像

%axis(‘square’); title('固定阀值150二值化后图像'); %%%利用OTSU二值化后图像 Hist =zeros(256); %直方图 dHist = zeros(256); variance = zeros(256); %方差 [m,n]=size(1); PXD=0; %用来遍历阀值%%%%%%%%%%%%%%%%%%%%%求出直方图 for i=1:m for j=1:n Hist(I(i,j)+1)=Hist(I(i,j)+1)+1; end end for i=1:256 %i取从1到256的值 dHist(i)=Hist(i)/(m*n); end for PXD=1:256 %PXD取从1到256的值 w0=0; w1=0, u0=0, u1=0, u=0; %大津阈值 for i=1:PXD u0=u0+(i-1)*dHist(i); w0=w0+dHist(i); %m1=g0/w0; end for i=PXD+1:256 %定义函数i u1=u1+(i-1)*dHist(i); w1=w1+dHist(i); %m2=g1/w1; end u=u0*w0+u1*w1; %图像的总平均灰度 variance(PXD)=w0*(u0-u)^2+w1*(u1-u)^2; %分割的最佳阈值end %%%%%%%%%%%%%%%%%%%% for i=1:m for j=1:n if I(i,j)> PXD-1 I(i,j)=255; else I(i,j)=0; end end end imagBW=I; subplot(2,2,4)

分水岭算法

分水岭算法 所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。分水岭算法(Watershed Algorithm),是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是分水岭(watershed)。 基本内容 分水岭算法的概念及原理 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的 海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成 分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小 值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一 个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分 水岭。 分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个 是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现 淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构 进行判断及标注。

分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即 g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5 式中,f(x,y)表示原始图像,grad{.}表示梯度运算。 分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。 为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。 为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即 g(x,y)=max(grad(f(x,y)),gθ) 式中,gθ表示阈值。 程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。

三年级为什么是分水岭、该如何注意(转班主任老师发言稿)

三年级为什么是分水岭、该如何注意(转班主任老师发言稿) 一、三年级学生变化特点 开学快一个月了,可能家长已经感受到了三年级作为中年段,对孩子的要求有了些许变化,比如作业本变成横条本啦,大作文小作文啦,课堂上语文书作笔记啦,成绩怎么大幅度下滑啦,等等等等,是的,三年级和二年级对孩子学习习惯和能力的要求都有了很大的提高,并且,从近两次的语数测验来看,班上的大多数孩子还没有适应年段的要求,在学习上找到感觉,仍然花着二年级的学习时间来面对三年级的学习任务,我看着有些着急,所以也就借由这次的家长会和家长谈谈新年段您需要关注的内容,(虽然都是老生常谈的)但越是重复的,越是重要。 三年级是一个关键年段,学生的两极分化现象开始出现,有些学生很可能就在这个年段成为了学困生。有人将学生的小学六年学习成绩,比喻为“u”字型,低年级起点较高,中间的三年级是处于最低点,但随着年级的增长,在往后的学习中,成绩又会慢慢地升起,直至最高点。所以说三年级是小学阶段的关键期和转折期。 1、所学知识从简单基础变为复杂多样,所学知识是小学的重要转折点。除了掌握基础知识以外,作业更多的是句与片段的训练,很多题目也没有什么最标准的答案的。这对学生提出了更高的要求,基础必须扎扎实实地掌握,该读的还要读,该抄的还得抄,但同时还要拓展孩子的思维,从不同角度去考虑问题。同时,阅读能力要求也很高。 (这个在后面谈到语文学习时再具体说一说) 2、心理变化特点 三年级的孩子对很多事情都处于好奇,开始有独立性,知道“难为情”了,他怕“丢面子”了,所以各位家长在批评孩子的时候一定要把握好尺度。同时,孩子们的思想从单纯走向了复杂,很倔,不听我们家长的话了。这也是一个非常普遍的现象。三年级正好是他们的一个心理反叛期。这时家长要进行适当的引导和教育。将他们引向一个正确的方向。 3、学生之间出现很大差异,这和习惯存在着很大的关系 (1)首先正是因为孩子学习习惯上的差异,而造成了学习效率的一种差异。好的习惯:上课时专心,作业专注,作业速度很快。坏的习惯:发呆、开小差、说话、神游、拖拉、磨蹭、不交作业 (2)其次家庭的重视程度有差异。敷衍了事(作业、生活习惯、卫生习惯——责任心)说说班上的个别孩子的家长疏于对孩子的管理。 二、培养孩子良好的习惯

图像边缘检测及提取,分水岭算法

1.几种算子图像边缘提取: 程序代码如下: 运行结果: 原图为一堆苹果(彩图),各算子处理后的边缘提取图:

分水岭算法实现: a.直接对图像进行分水岭算法处理 代码如下:(原图还是上题一堆苹果) 运行结果如右图: 很明显,属于过度分割了。下面有改进算法: b.改进算法代码如下: 实现包括下列步骤: (1)读图像。读入图像 (2)对比度最大化。注意到图像中有许多彼此连通的 不同大小的对象。为使通过watershed变换找到的低 谷数目最小,我们使感兴趣的对象的对比度达到最 大。对比度增强的一个常用的技术是综合应用top— hat和bottom—hat变换。 top—hat变换定义为原图像和它的开之差。图像的 开是一与特定结构元素匹配的图像前景部分的集合。 bottom—hat变换定义为在原图像和它的闭之间的 差。图像的闭是一与特定结构元素匹配的图像背景 的集合。 通用的结构元素是正方形,长方形,圆盘,菱 形,球和线。既然图像中我们感兴趣的目标对象看 起来像圆盘,我们用strel函数建立一个半径为15个 像素的圆盘形结构元素。这个圆盘尺度是图像中的 目标对象的平均半径的一个估计。 (3)图像相加减。为使目标对象与分隔它们的间隙之 间的对比达到最大,用“原图top—hat图像+bottom —hat图像”得到增强的结果图。 ( 4)转换感兴趣的对象。调用watershed变换找出图像 的亮度”低谷”,把imcomplement作用 增强过的图像上,将感兴趣的目标对象转换为亮度低谷,得到增强图的补图。 (5)检测亮度低谷。对所得补图运用imextendedmin函数检测低于某特别阈值的所有亮度低谷。

基于分水岭算法的彩色细胞图像分割

基于分水岭算法的彩色细胞图像分割 摘要 随着影像医学的发展,通过对细胞涂片影像的分析,从而对细胞影像进行区分和识别成为重要的研究课题。细胞图像分割是细胞图像分析和识别的重要步骤。图像分割是将图像中具有特殊含义的不同区域区分开来,是图像处理的关键步骤。分割后的子区域互不交叉,每一个区域满足特定性质的一致性。人体细胞种类繁多、形态多样且图像质量也很不相同,而分析应用中对细胞图像分割的质量却要求较高,所以细胞图像的自动分割极为重要且困难很大。 彩色图像与灰度图像相比,信息量更为丰富,而且颜色的描述方法也,较多。很多经典算法只能对二值图像或灰度图像进行运算。为此,关于彩色细胞图像的分割研究成为一个非常活跃的研究领域。本文针对彩色细胞图像经过染色处理的特点,提出了一种彩色细胞图像的分割方法。以快速分水蛉算法为主要分割算法,为了较好地抑制彩色细胞图像背景噪声,选择更符合人类视觉感知的HSI颜色空间,结合自动阈值和色度提出去除图像背景的方法。同时,使用中值滤波和均匀化处理,有效地克服了分水岭算法的过分割现象。针对细胞图像特点改进了区域合并算法。得到了较准确的分割结果。本文首先概括介绍了图像分割的意义及发展现状,概述了当前主要的

图像分割算法。其次,介绍了彩色图像颜色空间和快速分水岭算法的基本思想及实现方法。最后列出了实验流程和实验结果并进行了讨论。关键词:图像分割,HSI颜色空间,分水岭 二.分水岭算法 本章从对分水岭算法的定义出发,对分水岭算法的发展过程中的不同实现方法进行比较,阐明快速分水岭算法的优越特性及实现方法。(一)分水岭算法的定义 分水岭分割的最初算法是针对地形数字高程模型提出的.目前分水岭算法在图像分割领域正得到广泛应用.分水岭算法的定义121J 对一幅二维灰度图像,,Jr的定义域为Dr cZ2,,取离散灰度值【0,N】,将该值视为对应像素点的高度,Ⅳ为一正整数。 用G表示相应的数字格网(以四邻域为例)o图像I中点p和g之间一条长 度为z的路程≯为由点,Pl,?Pt-l,P1)组成的(斗1)元组,有 Po=P,Pl=q,且Vf∈【l,,】,(Pf-I,Pi)∈G (3-2)将路径P的长 度标识为^纠,点p的邻域集标识为: (p):%Q)=p’∈Z2,(DP’)∈ 回(3‘3)图像f在高度矗的一个极小区膨(minimum)定义为由高度值为h的点组成的一连通区域,从该区域肘中的一点出发到达任一高度低 于h的像素点。与极小区M相关联的集水盆地∞砂定义为D。中的一个 点集,其所包含P的特点为:假设一滴水落到该点P上,则该水滴由于重力作用将沿一条最快速下降路径下滑并最终到达极小区

3种不同的分水岭分割方法以及三种方法的比较

程序代码:(代码标记[code]...[/code] ) clear,clc %三种方法进行分水岭分割 %读入图像 filename='Fig1021(a)(small-blobs).tif'; f=imread(filename); Info=imfinfo(filename); if Info.BitDepth>8 f=rgb2gray(f); end figure,mesh(double(f));%显示图像,类似集水盆地 %方法1:一般分水岭分割,从结果可以看出存在过分割问题 b=im2bw(f,graythresh(f));%二值化,注意应保证集水盆地的值较低(为0),否则就要对b取反 d=bwdist(b); %求零值到最近非零值的距离,即集水盆地到分水岭的距离 l=watershed(-d); %matlab自带分水岭算法,l中的零值即为风水岭 w=l==0; %取出边缘 g=b&~w; %用w作为mask从二值图像中取值 figure subplot(2,3,1),imshow(f); subplot(2,3,2),imshow(b); subplot(2,3,3),imshow(d); subplot(2,3,4),imshow(l); subplot(2,3,5),imshow(w); subplot(2,3,6),imshow(g); %方法2:使用梯度的两次分水岭分割,从结果可以看出还存在过分割问题(在方法1的基础上改进)h=fspecial('sobel');%获得纵方向的sobel算子 fd=double(f); g=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);%使用sobel算子进行梯度运算 l=watershed(g);%分水岭运算 wr=l==0; g2=imclose(imopen(g,ones(3,3)),ones(3,3));%进行开闭运算对图像进行平滑 l2=watershed(g2);%再次进行分水岭运算 wr2=l2==0; f2=f; f2(wr2)=255;

分水岭算法

分水岭算法的概念及原理 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。 分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。 分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即 g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5 式中,f(x,y)表示原始图像,grad{.}表示梯度运算。 分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。 为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。 为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即 g(x,y)=max(grad(f(x,y)),gθ) 式中,gθ表示阈值。 程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。 分水岭算法(Watershed Algorithm) 所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。Watershed Algorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是我们可爱的分水岭(watershed)。为了得到一个相对集中的集水盆,那么让水涨到都接近周围的最高

分水岭算法的概念及原理

分水岭算法的概念及原 理 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

分水岭算法WatershedAlgorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中人们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是分水岭(watershed)。为了得到一个相对集中的集水盆,那么让水涨到接近周围最高的山顶就可以了,这样的话,我们就可以用来获取边界灰阶大,中间灰阶小的物体区域了,它就是集水盆。 算法的概念及原理 分水岭分割方法,是一种基于拓扑理论的的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。 分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L.Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排

序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。 变换得到的是输入图像的集水盆图像,集水盆之间的,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即 g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y- 1)]2}0.5 式中,f(x,y)表示原始图像,grad{.}表示梯度运算。 算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,可得到封闭连续的边缘。通过分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。 分水岭算法有时会产生过度分割,为了避免产生这种过度分割,通常可以采用两种处理方法,一是利用先验知识删除无关边缘信息。二是可以修改梯度函数,使得集水盆只响应所探测的目标。 对于通过梯度函数降低低分水岭算法的过度分割,需要对梯度函数进行改进,一个简单的改进方法是对梯度图像进行阈值处理,从而消除像素灰度值的微小变化引起过度分割。即: g(x,y)=max(grad(f(x,y)),gθ) 式中,gθ表示阈值。 程序可采用方法:用限制梯度图像以达到消除的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高

相关文档
最新文档