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

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

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函数检测低于某特别阈值的所有亮度低谷。

imextendedmin函数的输出是一个二值(逻辑值)图像。二值图像中重要的是区域的位置而非区域的大小。用imimposemin函数把补图改为只含有那些由imtendedmin函数找到的低谷,并将低谷的像素值变为O(8位图像可能的深谷)。

(6)watershed分割。通过watershed变换,可找出来所有含有强加给最小值的区域。用watershed函数实现watershed分割。watershed函数返回一个标记矩阵,它含有对应于watershed区域的非负数。凡未落入任何watershed区域的像素均被赋予像素值0。用

label2rgb把一个标记矩阵变为一幅图像。

运行结果:

对于改进后的算法,过度分割的现象不明显或者根本觉察不出

分水岭算法原理

所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。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),这样便将一个成员放进到这个区域来了,即容器--集水盆的

基于小波变换的图像边缘检测算法

基于小波变换的图像边缘检测算法仿真实 现 学生姓名:XX 指导教师:xxx 专业班级:电子信息 学号:00000000000 学院:计算机与信息工程学院 二〇一五年五月二十日

摘要 数字图像边缘检测是图像分割、目标区域识别和区域形态提取等图像分析领域中十分重要的基础,是图像识别中提取图像特征一个重要方法。 目前在边缘检测领域已经提出许多算法,但是提出的相关理论和算法仍然存在很多不足之处,在某些情况下仍然无法很有效地检测出目标物的边缘。由于小波变换在时域和频域都具有很好的局部化特征,并且具有多尺度特征,因此,利用多尺度小波进行边缘检测既能得到良好的抑制噪声的能力,又能够保持边缘的完备。 本文就是利用此方法在MATLAB环境下来对数字图像进行边缘的检测。 关键词:小波变换;多尺度;边缘检测

Abstract The boundary detection of digital image is not only the important foundation in the field of image segmentation and target area identification and area shape extraction, but also an important method which extract image feature in image recognition. Right now, there are a lot of algorithms in the field of edge detection, but these algorithms also have a lot of shotucuts, sometimes, they are not very effective to check the boundary of the digital image. Wavelet transform has a good localization characteristic in the time domain and frequency domain and multi-scale features, So, the boundary detection of digital image by using multi-scale wavelet can not only get a good ability to suppress noise, but also to maintain the completeness of the edge. This article is to use this method in the environment of MATLAB to detect the boundary of the digital image. Keywords: wavelet transform; multi-scale; boundary detection.

改进的利用门限的分水岭图像分割算法

2007年第12期福建电脑 改进的利用门限的分水岭图像分割算法 李洪军,王继成 (同济大学计算机系上海201804) 【摘要】:分水岭变换的一些优秀的性质使它在许多不同的图像分割应用中非常常用:它简单并且具有直观性,可以并行实现,并且总是产生完整的图像轮廓。然而,它仍然有许多缺点(过度分割,对噪声敏感,难于检查出细结构物体或者低信噪比的结构)。本文提出一种改进的使用门限的分水岭算法来在不同程度上克服分水岭的这些缺陷。我们把该算法应用在三类图片上,一种具有复杂结构,一种具有低对比度,一种有低的信噪比。本文展示了该算法的分割结果,展示了该算法在这几类图片上出色表现。 【关键词】:图像分割,过度分割,基于沉浸的分水岭算法,标记的分水岭算法 1.前言 1.1分水岭变换 分水岭变换是一种流行的图像分割方法,它来自数学形态学领域[1]。我们把灰度图象看作地形表面,让每一点的像素值代表这点的高度。然后考虑雨水降落到该地表,随着水位不断上升,水会从不同的局部最小点形成汇水盆,而分水岭就是阻挡这些汇水盆相互融合的堤坝。一般情况下,分水岭变换计算的是原始图片的梯度图,这样这些分水岭就正好位于梯度变化大的那些点上。 分水岭变换由于它以下的优点被用在图像处理的许多领域:直观,快速并且可以并行计算,总是产生完整的边界,这样就避免了边界连接的后处理。而且,不少研究人员把分水岭嵌入到多尺度框架中[2]。但是分水岭算法还是有一些致命的缺点,下面列出了最重要的几点[2]。 过度分割。由于大部分图像的梯度图都有许许多多的局部最小,所以分水岭变换的结果是无数的小区域边界,这样的结果毫无意义。通常的解决办法是是使用标记的图片来减少局部最小的数量,即使用带标记的分水岭变换[3]。 对噪声的敏感。局部的一些改变会引起分割结果的明显改变,强烈的噪声有时候使得分水岭变换无法找出真正的边界。其中的一个解决办法是使用各向异性的滤波器。 难以准确检测出低对比度的边界。由于对比度低所以使得信噪比高。所以由于前一个原因,对这种图片分水岭变换仍然无法很好的工作。一般的办法仍然是使用带标记的分水岭变换。而V.Grau提出使用基于MRF的分水岭变换对核磁共振脑灰白质的分割效果更好。 即使是这样,在医学图像分割中,比起近年来兴起的snakemodels和levelset方法,分水岭变换由于分水线总是位于梯度变换最剧烈的地方,并且总是产生完整的边界,从而在对比度低的图像分割中显示出了无可比拟的优势。这使得让分水岭变换能更好的工作是非常有意义的。 1.2本文所做的工作概览 我们提出一种改进的分水岭算法,它极大程度上改善了分水岭变换的表现。第2部分给出了算法。2.1部分给出了分水岭变换的定义,2.2部分给出标记分水岭变换的算法描述,2.3部分给出了我们改进的算法描述。第3部分给出我们的分割结果和其他分割方法的分割结果。3.1部分给出了低对比度的图像的分割结果。我们的分割结果明显优于直接的分水岭分割结果。并且与常用的带标记的分水岭算法分割结果做了比较。3.2部分给出了对于复杂结构的分割结果,我们的分割结果与带标记的分水岭变换的比较。3.3部分给出了对于低信噪比的图像分割结果,并且与经过去噪后的分割结果进行了比较,显示出该算法对噪声的稳定性。第4部分给出了结论和展望。 2.算法 2.1离散图像的分水岭变换的定义及算法描述2.1.1离散图像的分水岭变换的定义 对于分水岭变换,目前存在着几种定义,文献[4]对这些定义进行了归纳,整理。我们这里所采用的定义是基于沉浸的分水岭变换(watershedbyimmersion)。 令f:D'N是一幅灰度图象,它的最大和最小灰度值为h_max和h_min。定义一个从h_min到h_max的水位h不断递增的递归过程。在这个过程中每个与不同的局部最小相关的汇水盆地都不断扩展。定义X(h)记做在水位h时候汇水盆地的集合的并。在h+1层,一个连通分量T(h+1)或者是一个新的局部最小,或者是一个已经存在的X(h)中的一个盆地的扩展。对于后者,按邻接关系计算高度为h+1的每一个点与各汇水盆地的距离。如果一个点与两个个以上的盆地等距离,则它不属于任何盆地,否则它属于与它距离最近的盆地。这样从而产生新的X(h+1)。把在高度h出现的局部最小记作MIN(h)。把Y(h+1,X(h))记作高度为h+1同时属于X(h)的点的集合。 定义2.1(基于沉浸的分水岭变换) 分水岭变换[5]Wshed(f)就是X(h_max)的补集: 2.1.2分水岭算法直观描述 整个算法模拟水平面从最低的地理高度逐渐沉浸到最高的地理高度。这时水会逐渐从各个局部最小中涌出,形成不同的汇水盆地。随着水位不断升高,当两个不同的汇水盆地将融合时,我们使用堤坝把两个盆地分开。这个堤坝足够高,即使水位到最高也无法使相邻的盆地的水汇合。当水位涨到最高时,将完全沉浸地表,这时候那些堤坝就是产生的轮廓线。 2.2带标记的分水岭算法描述 引入标记是为了控制过度分割。一个标记是属于一副图像的连通分量。我们需要找到有与重要对象相联系得内部标记,同时也要找到与背景相联系得外部标记。取得内部标记和外部标记,就可以使用imposition技术[5]使梯度图像的局部最小只在这些标记的地方出现。这样所有的局部最小,即汇水盆地的个数就都是已知的。这时再使用分水岭变换,这样就可以避免过度分割。 2.3本文提出的改进的分水岭算法描述 过度分割是由于过多的局部最小而造成。带标记的分水岭算法是用预处理的办法来控制汇水盆地的数量。而本文中的算法则在算法进行的同时,通过融合一些小的,不值得考虑的汇水盆地,从而来控制盆地的数量。当两个盆地即将连通时,标准的分水岭算法就会在他们之间修堤坝来阻挡汇水盆地的相连通。而本文的算法则要进行判断。我们只认为储水量达到一定程度,并且高度达到一定高度的盆地才是我们所要的盆地。不符合这种要求的盆地我们把他们融合给与其相邻的最大的盆地。我们 77

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对Roberts,Sobel,Prewitt,Canny 和Log 及一种改进Sobel等几个微分算子的算法分析以及MATLAB 仿真实验对比,结果表明,Roberts,Sobel 和Prewitt 算子的算法简单,但检测精度不高,Canny 和Log 算子的算法复杂,但检测精度较高,基于Sobel的改进方法具有较好的可调性,可针对不同的图像得到较好的效果,但是边缘较粗糙。在应用中应根据实际情况选择不同的算子。 0 引言 边缘检测是图像分析与识别的第一步,边缘检测在计算机视觉、图像分析等应用中起着重要作用,图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘检测的效果会直接影响图像的分割和识别性能。边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法,本文仅将讨论微分算子法中的几个常用算子法及一个改进Sobel算法。 1 边缘检测

在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标、目标与背景、区域与区域( 包括不同色彩) 之间。边缘表明一个特征区域的终结和另一特征区域的开始。边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。边缘的类型很多,常见的有以下三种: 第一种是阶梯形边缘,其灰度从低跳跃到高; 第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小; 第三种是线性边缘,其灰度呈脉冲跳跃变化。如图1 所示。 (a) 阶梯形边缘(b) 屋顶形边缘 (b) 线性边缘 图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面N 阶导数的不连续性。如果灰度曲面在一个点的N 阶导数是一个Delta 函数,那么就

分水岭算法

解决分水岭算法的过分割问题 班级: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图像分割综述 把图像分解为一些特定的性质相似的部分(区域或对象),并用这些部分对图像进行分析和描述。一幅图像往往包含许多不同类型的区域,如物体、环境和背景等。图像分析的一个重要方法就是用它们作为基本组成成分对图像进行描述。例如为了在气泡室图片中检出质点碰撞形式并判定其发生位置,就要在图像中分割出气泡的轨迹及其端点。为了从输入的文本中识别出一串字符,首先就要把各个字符从背景和其他字符中分离出来。因此把图像分割为若干子图像,并利用各子图像的特性和它们之间的关系描述图像,对于图像识别和解释、物景分析以及图像的分块处理和存储都有很大的意义。 图像分割基本上是对像素进行分类的过程。例如用某个灰度阈值把图像像素分成“黑”和“白”两类,就可以把黑的对象同白的背景区分开。常用的分割方法有灰度等级阈值法、谱和空间分类法、区域生长法和边缘检测法。 灰度等级阈值法在图像只有两种组成部分的情况下,图像灰度的直方图常常呈现两个峰值。用两个峰值之间的谷值所对应的灰度作为阈值,把所有像素灰度大于或等于阈值的作为一类,小于阈值的作为另一类是一种最基本的两类分割方法。实际应用时为了改善分类的可靠性,可以利用某些附加的信息(例如已知两类区域的面积之比)使阈值的选择更加合理。在类别更多的情况下,可以采用多级阈值把各类分割开来(例如确定两个阈值,就可以把细胞图像分割为胞核、胞浆和背景三部分)。类别越多,图像直方图的峰值就越不明显,分割就更为困难。 谱和空间分类法对于彩色和多光谱图像,可以用像素的几种性质(颜色和谱信号)对像素作比较精细的分类。对于黑白图像,用包括像素本身灰度在内的一组局部性质(例如该像素邻域灰级的均值)在多维空间中进行分类。对于一些复杂图像,这种方法比单独的灰度阈值法效果更好。

图像边缘检测算法体验步骤

图像边缘检测算法体验步骤 图像边缘检测算法体验步骤(Photoshop,Matlab)1. 确定你的电脑上已经安装了Photoshop和Matlab2. 使用手机或其他任何方式,获得一张彩色图像(任何格式),建议图像颜色丰富,分辨率比较高,具有比较明显的图像边界(卡通图像,风景图像,桌面图像)3. 将图像保存到一个能够找到的目录中,例如img文件夹(路径上没有汉字)4. 启动Photoshop,打开img文件夹中的图像5. 在工具箱中选择“矩形选择”工具,到图面上选择一个区域(如果分辨率比较高,建议不要太大,否则计算过程比较长)6. 点击下拉菜单【文件】-【新建】,新建一个与矩形选择框同样尺寸的Photoshop图像,不要求保存该图像7. 将该彩色图像转换为亮度图像,即点击下拉菜单【图像】-【模式】-【灰度】,如提示是否合并,选择“Yes”8. 将该单色的亮度图像另存为Windows的BMP文件,点击下拉菜单【文件】-【存储为】,在“存储为”窗口中,为该文件起一个名字,例如test1(保存为test1.bmp)9. 启动Matlab,将当期路径(Current Directory)定位到图像文件夹,例如这里的img文件夹10. 使用imread命令读入该图像,在命令行输入:>> f = imread(test1.bmp);11. 在Matlab中显示该图像,在命令行输入:>> figure, imshow(f)12. 然后,分别使用Matlab图像工具箱中的Edge函数,分别使用Sobel算法,高斯-拉普拉斯(Log)算法和Canny算法得到的边缘图像:在命令行输入:>> g_sobel = edge(f, sobel, 0.05); >> g_log = edge(f, log, 0.003, 2.25); >> g_canny = edge(f, canny, [0.04 0.10], 1.5);13 得到边缘图像计算结果后,显示这些边缘图像: >> figure, imshow(g_sobel) >> figure, imshow(g_log) >> figure, imshow(g_canny)14 可以用不同的图像做对比,后续课程解释算法后,可以变换不同的阈值,得到不同的边缘图像

数字图像处理中的边缘检测技术

课程设计报告 设计题目:数字图像处理中的边缘检测技术学院: 专业: 班级:学号: 学生姓名: 电子邮件: 时间:年月 成绩: 指导教师:

数字图像处理中的边缘检测技术课程设计报告I 目录 1 前言:查阅相关文献资料,了解和掌握基本原理、方法和研究现状,以及实际应用的背景意义 (1) 1.1理论背景 (1) 1.2图像边缘检测技术研究的目的和意义 (1) 1.3国内外研究现状分析 (2) 1.4常用边缘检测方法的基本原理 (3) 2 小波变换和小波包的边缘检测、基于数学形态学的边缘检测法算法原理 (7) 2.1 小波边缘检测的原理 (7) 2.2 数学形态学的边缘检测方法的原理 (7) 3 算法实现部分:程序设计的流程图及其描述 (9) 3.1 小波变换的多尺度边缘检测程序设计算法流程图 (9) 3.2 数学形态学的边缘检测方法程序设计算法描述 (10) 4实验部分:对所给的原始图像进行对比实验,给出相应的实验数据和处理结果 (11) 5分析及结论:对实验结果进行分析比较,最后得出相应的结论 (15) 参考文献 (17) 附录:代码 (18)

1前言 查阅相关文献资料,了解和掌握基本原理、方法和研究现状,以及实际应用的背景意义 1.1 理论背景 图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。图像处理方法有光学方法和电子学方法。从20世纪60年代起随着电子计算机和计算技术的不断提高和普及,数字图像处理进入了高速发展时期,而数字图像处理就是利用数字计算机或其它的硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用性。 图像处理在遥感技术,医学领域,安全领域,工业生产中有着广泛的应用,其中在医学应用中的超声、核磁共振和CT等技术,安全领域的模式识别技术,工业中的无损检测技术尤其引人注目。 计算机进行图像处理一般有两个目的:(1)产生更适合人观察和识别的图像。 (2)希望能由计算机自动识别和理解图像。数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域的重要基础,图像处理和分析的第一步往往就是边缘检测。 物体的边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的部分,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的分界处。图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。根据灰度变化的特点,图像边缘可分为阶跃型、房顶型和凸缘型。 1.2 图像边缘检测技术研究的目的和意义 数字图像处理是伴随着计算机发展起来的一门新兴学科,随着计算机硬件、软件的高度发展,数字图像处理也在生活中的各个领域得到了广泛的应用。边缘检测技术是图像处理和计算机视觉等领域最基本的技术,如何快速、精确的提取图像边缘信息一直是国内外研究的热点,然而边缘检测也是图像处理中的一个难题。 首先要研究图像边缘检测,就要先研究图像去噪和图像锐化。前者是为了得到飞更真实的图像,排除外界的干扰,后者则是为我们的边缘检测提供图像特征更加明显的图片,即加大图像特征。两者虽然在图像处理中都有重要地位,但本次研究主要是针对图像边缘检测的研究,我们最终所要达到的目的是为了处理速

分水岭算法

%******************************************************** %直接对梯度图像进行分水岭变换 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);%关操作

实验三图像分割与边缘检测

数字图像处理实验报告 学生姓名王真颖 学生学号L0902150101 指导教师梁毅雄 专业班级计算机科学与技术1501 完成日期2017年11月06日

计算机科学与技术系信息科学与工程学院

目录 实验一.................................................................................................. 错误!未定义书签。 一、实验目的.................................................................................................... 错误!未定义书签。 二、实验基本原理 ........................................................................................... 错误!未定义书签。 三、实验内容与要求....................................................................................... 错误!未定义书签。 四、实验结果与分析....................................................................................... 错误!未定义书签。实验总结............................................................................................... 错误!未定义书签。参考资料.. (3) 实验一图像分割与边缘检测 一.实验目的 1. 理解图像分割的基本概念; 2. 理解图像边缘提取的基本概念; 3. 掌握进行边缘提取的基本方法;

图像处理中的标记分水岭分割算法

图像处理中的标记分水岭分割算法 如果图像中的目标物体是连接在一起的,则分割起来会更困难,分水岭分割算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一幅“地形图”,其中亮度比较强的区域像素值较大,而比较暗的区域像素值较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。 直接应用分水岭分割算法的效果往往并不好,如果在图像中对前景对象和背景对象进行标注区别,再应用分水岭算法会取得较好的分割效果。有很多图像处理工具箱函数可以用到,如fspecial、imfilter、watershed、lable2rgb、imopen、imclose、imreconstruct、imcomplement、imregionalmax、bwareaopen、graythresh、和imimposemin函数等。 下面进行一个例子,步骤如下。 1、读取图像并求其边界,代码如下。 rgb = imread('');%读取原图像 I = rgb2gray(rgb);%转化为灰度图像 figure; subplot(121)%显示灰度图像 imshow(I) text(732,501,'Image courtesy of Corel',... 'FontSize',7,'HorizontalAlignment','right') 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);%求模 subplot(122); imshow(gradmag,[]), %显示梯度 title('Gradient magnitude (gradmag)') 在这一步骤中,首先读取一套真彩色图像,然后把真色图像转化为灰度图像,结果如图所示:

图像边缘检测方法的研究与实现刘法200832800066

图像边缘检测方法的研究与实现刘法200832800066

青岛大学专业课程设计 院系: 自动化学院 专业: 电子信息工程 班级: 08级电子信息工程3班学生姓名: 刘法 指导教师: 王汉萍庄晓东 日期: 2011年12月23日

题目:图像边缘检测方法的研究与实现 一、边缘检测以及相关概念 1.1边缘,边缘检测的介绍 边缘(edge)是指图像局部强度变化最显著的部分.边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础.图像分析和理解的第一步常常是边缘检测(edge detection). 边缘检测是指使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。 在讨论边缘算子之前,首先给出一些术语的定义: 边缘点:图像中具有坐标] ,[j i且处在强度显著变化的位置上的点.边缘段:对应于边缘点坐标] i及其方位 ,边缘的方位可能是梯度角. ,[j 边缘检测器:从图像中抽取边缘(边缘点和边缘段)集合的算法. 轮廓:边缘列表,或是一条表示边缘列表的拟合曲线. 边缘连接:从无序边缘表形成有序边缘表的过程.习惯上边缘的表示采用顺时针方向序. 边缘跟踪:一个用来确定轮廊的图像(指滤波后的图像)搜索过程. 边缘点的坐标可以是边缘位置像素点的行、列整数标号,也可以在子像素分辨率水平上表示.边缘坐标可以在原始图像坐标系上表示,但大多数情况下是在边缘检测滤波器的输出图像的坐标系上表示,因为滤波过程可能导致图像坐标平移或缩放.边缘段可以用像素点尺寸大小的小线段定义,或用具有方位属性的一个点定义.请注意,在实际中,边缘点和边缘段都被称为边缘.边缘连接和边缘跟踪之间的区别在于:边缘连接是把边缘检测器产生的无序边缘集作为输入,输出一个有序边缘集;边缘跟踪则是将一幅图像作为输入,输出一个有序边缘集.另外,边缘检测使用局部信息来决定边缘,而边缘跟踪使用整个图像信息来决定一个像素点是不是边缘. 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函数检测低于某特别阈值的所有亮度低谷。

基于OpenCV的分水岭分割算法的及应用

基于OpenCV的分水岭分割算法的研究及应用 [摘要]本文对基于形态学分水岭算法进行了深入的研究,并针对其存在的过分割问题对分水岭算 法提出改进:使用区域合并方法限制允许出现的区域的数目,这种改进的方法不仅可以很好地抑制 过分割问题,还能有效分割出图像中的感兴趣区域,以达到提取图像有效边缘信息的目的。将此方 法在OpenCV下进行实验,结果表明这种方法可以有效清除干扰噪声及局部极小值,从而得到精确 的分割结果。 [关键词]分水岭算法;过分割;区域合并;OpenCV [中图分类号]TP391.4[文献标识码]A[文章编号]1008-178X(2012)12-0020-03 燕杨1,2,王云吉2 (1.长春师范学院计算机科学与技术学院,吉林长春 130032;2.吉林大学通信工程学院,吉林长春130022) [收稿日期]2012-07-16 [基金项目]吉林省科技发展计划项目青年科研基金(201201112)。 [作者简介]燕杨(1981-),女,吉林长春人,长春师范学院计算机科学与技术学院讲师,博士研究生,从事数字图像处理研究。第31卷第12期 Vol.31No.12长春师范学院学报(自然科学版)JournalofChangchunNormalUniversity(NaturalScience)2012年12月Dec.2012 1分水岭算法简介 分水岭算法是基于形态学的图像分割方法,其分割特点为定位精确和分割图像边缘准确,在图像分割领域得到了广泛的应用。在许多实际情况下,我们要分割图像,但无法从背景图像中获得有用信息。分水岭算法在这方面往往是有效的,该算法可以将图像中的边缘转化为“山脉”,将均匀区域转化为“山谷”以便分隔目标。分水岭算法先计算灰度图像的梯度,让亮度值低的点(山谷)、山脊对应的边缘(山头)同时形成,然后从指定点开始持续“灌注”盆地,直到这些区域链接在一起。这种方法产生的标记可以把各个区域合并到一起,合并后的区域又通过“聚集”的方式进行分割,好像图像被“填充”起来一样。与 指示点相连的盆地就为指示点“所拥有” ,从而得到被分割成相应的标记区域的图像。分水岭算法允许用户来标记目标某个部分为目标,或背景的某个部分为背景。用户也可以通过画一条简单的线,告知分水岭算法把这些点组合起来。分水岭算法就会通过“拥有”边沿定义的山谷来分割图像。 分水岭算法定位精确且分割细致,对微弱的物体边缘响应比较敏感,能确保得到目标区域封闭连续边缘。但物体表面一些细微的灰度变化以及图像中的噪声干扰等因素皆会导致对图像过度分割的产生,从而产生过多无用的边缘信息。 本文在对分水岭算法进行了深入的研究的基础上针对其过分割的问题提出改进:使用区域合并方法限制允许出现的区域的数目,这样不仅可以有效地抑制过分割问题,还能较好地分割出图像中的目标区域,以达到提取图像有效边缘信息的目的。 2原理 2.1分水岭传统方法 分水岭分割方法是基于拓扑理论的形态学分割方法,它的基本概念是将图像看成地形学上被水覆盖的自然地貌,图像中的每一点像素的灰度值表示这一点海拔的高度,其中每一个局部极小值和它所影响的区域称为集水盆,集水盆的边界形成了分水岭[1];其思想和形成可以通过模拟“溢流”的过程来说明:首先,20··

Matlab做图像边缘检测的多种方法

Matlab做图像边缘检测的多种方法 1、用Prewitt算子检测图像的边缘 I = imread('bacteria.BMP'); BW1 = edge(I,'prewitt',0.04); % 0.04为梯度阈值 figure(1); imshow(I); figure(2); imshow(BW1); 2、用不同σ值的LoG算子检测图像的边缘 I = imread('bacteria.BMP'); BW1 = edge(I,'log',0.003); % σ=2 imshow(BW1);title('σ=2') BW1 = edge(I,'log',0.003,3); % σ=3 figure, imshow(BW1);title('σ=3') 3、用Canny算子检测图像的边缘 I = imread('bacteria.BMP'); imshow(I); BW1 = edge(I,'canny',0.2); figure,imshow(BW1); 4、图像的阈值分割 I=imread('blood1.tif'); imhist(I); % 观察灰度直方图,灰度140处有谷,确定阈值T=140 I1=im2bw(I,140/255); % im2bw函数需要将灰度值转换到[0,1]范围内 figure,imshow(I1); 5、用水线阈值法分割图像 afm = imread('afmsurf.tif');figure, imshow(afm); se = strel('disk', 15); Itop = imtophat(afm, se); % 高帽变换 Ibot = imbothat(afm, se); % 低帽变换 figure, imshow(Itop, []); % 高帽变换,体现原始图像的灰度峰值 figure, imshow(Ibot, []); % 低帽变换,体现原始图像的灰度谷值 Ienhance = imsubtract(imadd(Itop, afm), Ibot);% 高帽图像与低帽图像相减,增强图像figure, imshow(Ienhance); Iec = imcomplement(Ienhance); % 进一步增强图像

分水岭算法

分水岭算法 所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。分水岭算法(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算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。

相关文档
最新文档