分水岭算法(完整版)
分水岭 算法
分水岭算法
1. 简介
分水岭算法(Watershed algorithm)是一种图像分割算法,可以将图像中的不同
区域进行分离和标记。它基于图像的灰度值和梯度信息,将图像看作一个地形地貌,并从低处向高处逐渐充满水,直到不同区域之间的水汇聚形成分割线。
该算法最初是由Belknap和Hoggan在1979年提出的,后来被广泛应用于计算机视觉领域,特别是在医学图像处理、目标检测和图像分析等方面。
2. 原理
2.1 灰度变换
在进行分水岭算法之前,需要对原始图像进行灰度变换。这可以通过将彩色图像转换为灰度图像来实现。灰度图像中的每个像素点都代表了原始彩色图像中相应位置的亮度值。
2.2 梯度计算
接下来,需要计算灰度图像中每个像素点的梯度值。梯度表示了亮度变化的速率,可以帮助我们找到不同区域之间的边界。
常用的梯度计算方法有Sobel、Prewitt和Scharr等算子。这些算子对图像进行卷积操作,将每个像素点的梯度计算为其周围像素点的亮度差值。
2.3 标记初始化
在进行分水岭算法之前,需要为每个像素点初始化一个标记值。通常情况下,我们可以将背景区域标记为0,前景区域标记为正整数。
2.4 梯度图像处理
接下来,我们将梯度图像中的每个像素点看作一个地形地貌中的一个位置,并将其灌满水。初始时,所有像素点的水位都是0。
2.5 水汇聚
从灰度最小值开始,逐渐增加水位直到灰度最大值。在每次增加水位时,会发生以下情况: - 当前水位高于某个位置的梯度值时,该位置被认为是不同区域之间的
边界。 - 如果两个不同区域之间存在连接路径,则会发生水汇聚现象。此时需要
分水岭算法的概念及原理
分水岭算法的概念及原理
分水岭算法(Watershed Algorithm)是一种用于图像分割的算法,它基于山脊线(ridge line)和水流的概念,能够将图像中的物体分割出来。该算法的主要原理是将图像看作地形地貌,将亮度视作高程,通过模拟洪水灌溉的过程,将图像分割成多个区域。
分水岭算法的核心思想是:将图像中的亮度极值点视作各个地块的山峰,从这些山峰出发,模拟水流的分布过程,即从高处向低处流动,在流动的过程中形成不同的流域。当水流面临两个流域的交汇区时,就会形成分水岭,从而将图像分割成多个区域。
具体的分水岭算法步骤如下:
1.预处理:将彩色图像转换成灰度图像,并进行平滑处理,以减少噪声的干扰。
2.计算梯度图像:通过计算图像灰度值的梯度来得到梯度图像。梯度较大的地方通常表示物体的边界。
3.标记种子点:选取梯度图像中的极值点作为种子点(山峰),这些点将成为分水岭的起点。
4.洪水灌溉:从种子点开始模拟水流的分布过程。初始化一个标记图像,将种子点周围标记为相应的流域。然后将水从种子点开始向相邻的像素流动,直到遇到另一个流域或已经被标记过。这样不断地灌溉,最终得到一个水流分布图。
6.后处理:将不可靠的区域(通常是细长的、过于小的区域)进行合并,得到最终的分割结果。
总的来说,分水岭算法是一种基于洪水灌溉模拟的图像分割算法,通过模拟水流的分布过程,将图像分割成多个区域,从而准确地分割出物体边界。
分水岭算法步骤
分水岭算法步骤
分水岭算法是一种用于图像分割的算法,其原理是根据图像中不同区域的灰度差异来确定分割点,从而将图像分割成多个区域。下面将详细介绍分水岭算法的步骤。
1. 图像预处理
在使用分水岭算法进行图像分割之前,需要对图像进行预处理。预处理的目的是去除噪声、平滑图像、增强图像的边缘等。常见的预处理方法包括均值滤波、高斯滤波、中值滤波等。
2. 计算梯度图像
梯度图像可以反映图像中不同区域的边缘信息。通过计算图像的梯度,可以得到一个梯度图像,其中每个像素点的灰度值表示该点的梯度强度。常用的方法是使用Sobel算子或Laplacian算子计算图像的梯度。
3. 计算图像的标记
在分水岭算法中,需要将图像的每个像素点标记为前景、背景或未知区域。通常情况下,可以通过用户输入或者阈值分割等方法来得到一个初始的标记图像。
4. 计算距离变换
距离变换是指计算图像中每个像素点到最近的前景区域像素点的距离。通过距离变换,可以得到一个距离图像,其中每个像素点的灰
度值表示该点到最近前景像素点的距离。
5. 寻找种子点
种子点是指位于图像中的一些特殊点,用于标记不同的区域。通常情况下,种子点位于图像的前景和背景之间的边界处。可以通过阈值分割等方法来寻找种子点。
6. 计算分水岭变换
分水岭变换是一种基于图像的梯度和距离变换来确定图像分割的方法。在分水岭变换中,首先将种子点填充到距离图像中,然后通过计算梯度和距离变换来确定分割线的位置,从而将图像分割为多个区域。
7. 后处理
在得到分割后的图像之后,可能会存在一些图像分割不准确或者存在过度分割的问题。因此,需要进行一些后处理的操作,如去除小的区域、合并相邻的区域等,以得到最终的分割结果。
分水岭 算法
分水岭算法
1. 介绍
分水岭算法(Watershed algorithm)是一种图像处理算法,主要用于图像分割。
它以图像中的亮度或颜色信息为基础,将图像划分为不同的区域,从而实现图像的分割与提取。分水岭算法的基本原理是将图像视为地形图,其中亮度或颜色信息类似于地形高度,而分水岭则代表不同的区域。通过模拟水从高处流下,在分水岭相交的地方形成分割线,将图像分成不同的区域。
分水岭算法广泛应用于计算机视觉、图像分析、医学图像处理等领域。它可以用于目标检测、图像分割、图像融合、边缘检测等任务。分水岭算法具有较好的鲁棒性和适应性,对于不同类型的图像都能取得较好的效果。
2. 基本原理
分水岭算法的基本原理可以概括为以下几个步骤:
2.1 灰度化
首先,将彩色图像转换为灰度图像。这是因为分水岭算法主要基于图像的亮度信息进行分割,灰度图像能够更好地表达图像的亮度变化。
2.2 预处理
对灰度图像进行预处理,包括去噪和平滑处理。去噪可以使用各种滤波器,如中值滤波器、高斯滤波器等。平滑处理可以使用图像平滑算法,如均值滤波器、高斯滤波器等。预处理的目的是减少图像中的噪声和不必要的细节,使得后续的分割更加准确。
2.3 计算梯度图像
通过计算图像的梯度,可以得到图像中的边缘信息。常用的梯度算子有Sobel算子、Prewitt算子等。梯度图像可以用来寻找图像中的边缘和区域边界。
2.4 标记种子点
选择一些种子点,作为分水岭的起始点。种子点通常位于图像中的明显边缘或区域边界处。可以手动选择种子点,也可以使用自动选择的方法。
2.5 填充区域
分水岭算法
标记约束分水岭算法
改进的分水岭算法,从先前已经定好的区域开始浸水
防止“过度分割”
电泳凝胶图像与经过标记约束分水岭转变的分割图
分Fra Baidu bibliotek算法流图
分两步: (1)找到标记 (Markers)和判别 函数(function) (2) 通过1的标记 和函数实现算法
分水岭算法
----------形态学图像分割算法
分水岭算法
➢图像分割定义 ➢分割原理 ➢分水岭算法 ➢标记约束分水岭算法 ➢等级分割
图像分割的定义
所谓图像分割是指将图像中具有特殊涵义的不 同区域区分开来,这些区域是互相不交叉的,每 一个区域都满足特定区域的一致性。 常见的分割技术:
阀值分割技术, 微分算子边缘检测 区域增长技术, 聚类分割技术
分水岭算法
定义变量(续)
表示位于平面g(x,y)=n下方的点的集合
表示第n阶段汇水盆地i中点的集合
表示第n阶段汇水盆地被水淹没部分的集合
所有汇水盆地的集合
初始化: C[min1] T[min1] 递归: 根据C[n 1]求得C[n]
递归(续)
遇到新的最小值时,符合条件(a),将q并入C[n 1]构成C[n]; q位于某些局部最小值构成的汇水盆地时, 符合条件(b), 将 q并入C[n 1]构成C[n];当遇到分离全部或部分汇水盆地时, 符合条件(c),在q建水坝.
分水岭 算法
分水岭算法
分水岭算法是一种经典的图像处理和计算机视觉算法,常用于图
像分割任务。它被广泛应用于数字图像处理、目标检测和图像识别等
领域。本文将对分水岭算法进行介绍,并探讨其原理、应用和优缺点。
首先,我们来了解一下分水岭算法的原理。分水岭算法基于图像
的灰度或颜色信息,将图像视为一个地图,其中灰度值或颜色代表地
势高度。该算法的目标是通过在图像上放置一些种子点,然后利用水
流的下降路径模拟水流的流动,最终将图像分割为不同的区域。
在分水岭算法中,首先需要对图像进行预处理,包括去噪和图像
增强等操作。接下来,根据预处理后的图像,构建一个梯度图,表示
图像中的边缘和轮廓信息。然后,根据种子点的位置,通过计算水流
的流动路径,将图像分割成不同的区域。最后,再根据分割结果进行
进一步的后处理,消除不必要的分割和合并相邻的区域,从而得到最
终的图像分割结果。
分水岭算法在图像处理和计算机视觉领域有着广泛的应用。首先,它可以用于图像分割,即将图像划分为具有明显边界的不同区域,以
便进一步对图像进行分析和识别。例如,在医学图像分析中,可以利
用分水岭算法对病变区域进行提取和分割,以辅助医生进行疾病诊断
和治疗。其次,分水岭算法还可以用于图像标记和目标检测。通过在
图像中放置种子点,并模拟水流的流动路径,可以将目标与背景分离,并进行像素级别的标记和识别。例如,在自动驾驶和机器人导航中,
可以利用分水岭算法对道路和障碍物进行分割和检测,以确保车辆的
安全行驶。此外,分水岭算法还可以用于图像修复和图像融合等应用,提高图像质量和视觉效果。
然而,分水岭算法也存在一些局限性和挑战。首先,由于算法本
分水岭算法
分水岭算法
1. 简介
分水岭算法是一种用于图像分割的算法。通过将图像视为
地形地貌,将图像中的每个像素视为一个水滴,从低处开始模拟水的渗透和汇聚过程,最终得到图像中的不同区域。
分水岭算法最初用于地理学中的水文地貌研究,后来被引
入到计算机视觉领域中。它在图像分割、目标检测、图像处理等方面具有广泛的应用。
2. 算法步骤
分水岭算法包含以下几个步骤:
2.1 图像预处理
首先,对原始图像进行预处理,以便更好地进行分水岭算
法的运算。预处理的步骤可以包括灰度化、去噪、平滑滤波等。
2.2 计算图像的梯度
梯度表示图像中每个像素的边缘强度。通过计算图像的梯度,可以找到图像中的边缘和纹理信息。常用的计算梯度的方法包括Sobel、Prewitt等算子。
2.3 寻找图像中的标记点
标记点是分水岭算法中的关键概念,表示图像中的起始点
或分水岭点。标记点的选取对于最终分割结果有很大的影响。通常情况下,可以通过阈值分割、连通区域分析等方法寻找图像中的标记点。
2.4 计算距离变换图
距离变换图是一个将图像中每个像素替换为其与最近标记
点之间距离的图像。通过计算距离变换图,可以评估每个像素到最近标记点的距离。
2.5 计算分水岭线
分水岭线是指图像中的边缘或过渡区域,它将不同的区域
分隔开来。通过计算距离变换图,可以找到图像中的分水岭线。
2.6 执行分水岭漫水算法
最后,执行分水岭漫水算法,将图像中的每个像素与标记点进行比较,并根据像素值和距离变换图进行分割。分水岭漫水算法会将图像中的不同区域分割成若干个连通区域。
3. 算法优缺点
3.1 优点
分水岭算法综述
分水岭算法综述
分水岭算法是图像分割领域中常用的一种算法,它可以将图像分割成不同的区域,每个区域内的像素具有相似的特征。本文将对分水岭算法进行综述,介绍其原理、应用以及优缺点。
一、分水岭算法的原理
分水岭算法的原理源于水在山谷中流动的过程。首先,将图像看作一个地形图,较亮的区域对应山峰,较暗的区域对应山谷。然后,通过在地形图上进行洪水填充,使得水从山峰的高处流向山谷的低处,最终形成水汇聚的区域。这些水汇聚的区域即为图像的分割结果。
分水岭算法的核心是确定图像中的山峰和山谷。为了实现这一点,需要进行图像的预处理。首先,对图像进行灰度化处理,将彩色图像转换为灰度图像。然后,通过应用梯度算子,计算图像中每个像素的梯度值。梯度值较大的像素被认为是山峰,梯度值较小的像素被认为是山谷。
在预处理完成后,可以开始进行分水岭算法的主要步骤。首先,将山峰像素标记为前景,山谷像素标记为背景。然后,将标记的像素区域称为markers。接下来,通过对markers进行洪水填充,将水从山峰处逐渐流向山谷。当水汇聚到一定程度时,会形成分割的边界,即分水岭。
二、分水岭算法的应用
分水岭算法在图像分割领域有广泛的应用。以下是一些常见的应用场景:
1. 医学图像分割:分水岭算法可以用于医学图像的分割,如MRI图像中的肿瘤分割、X射线图像中的骨骼分割等。通过将图像分割成不同的区域,医生可以更好地观察和分析病变部位。
2. 地质勘探:分水岭算法可以用于地质勘探中的岩石分割。通过将地质图像分割成不同的区域,可以更好地识别和分析不同类型的岩石,有助于矿产资源的开发和利用。
分水岭分割算法
分水岭分割算法
分水岭分割算法(WatershedSegmentation)是一种图像分割技术,它把图像中的不同部分分开,如果使用正确的参数,就可以把图像分割成像素级别的部分,从而可以更好地分析和理解图像中每一部分之间的关系。分水岭算法是基于拓扑上的局部连接理论,它能够把图像中通过灰度级值变化连接起来的不同物体分开。分水岭的主要作用是把图像中的物体分割出来,以便进行进一步的分析和计算。
分水岭算法是一种基于灰度图像的图像分割技术,它把图像中的不同部分分开,其主要原理是把图像中的不同物体分离开来,分水岭算法首先把图像分割成几个局部区域,然后使用灰度级值变化来把不同区域分开。
#### 二、分水岭分割算法的工作原理
分水岭分割算法是一种基于图像运算的图像分割技术,它采用最小代价的方式将图像中的不同物体分开,是一种基于拓扑的图像分割方法。具体的工作原理是:
首先,对图像进行梯度变换,从而产生具有较大灰度变化的特征边界,然后将这些特征边界转换为灰度山(Grayscale mountains),灰度山并不只是灰度变化,而是把图像上的每一个像素看作一个小山,这样就可以将相邻像素群聚成一个集合,每个集合就是一个灰度山。
然后,分水岭算法会追踪分水岭(watersheds),分水岭就是把
多个灰度山的边界联系起来的路径,这些路径就像河流一样,从一个山峰流入另一个山峰,如果有多个灰度山,就有多条分水岭,这样就
可以把图像中的不同物体分隔开来。最后,通过对每条分水岭的分析,就可以把图像中的不同物体分开,达到图像分割的目的。
分水岭算法
分水岭算法
分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近(求梯度)的像素点互相连接起来构成一个封闭的轮廓。
一、操作方法
分水岭算法常用的操作步骤:彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线。
二、对灰度图的地形学解释,我们我们考虑三类点:
1. 局部最小值点,该点对应一个盆地的最低点,当我们在盆地里滴一滴水的时候,由于重力作用,水最终会汇聚到该点。注意:可能存在一个最小值面,该平面内的都是最小值点。
2. 盆地的其它位置点,该位置滴的水滴会汇聚到局部最小点。
3. 盆地的边缘点,是该盆地和其它盆地交接点,在该点滴一滴水,会等概率的流向任何一个盆地。
三、分水岭算法
图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值代表高度。其中的灰度值较大的像素连成的线可以看做山脊,也就是分水岭。其中的水就是用于二值化的gray threshold level,二值化阈值可以理解为水平面,比水平面低的区域会被淹没,刚开始用水填充每个孤立的山谷(局部最小值)。
当水平面上升到一定高度时,水就会溢出当前山谷,可以通过在分水岭上修大坝,从而避免两个山谷的水汇集,这样图像就被分成2
个像素集,一个是被水淹没的山谷像素集,一个是分水岭线像素集。最终这些大坝形成的线就对整个图像进行了分区,实现对图像的分割。
四、分水岭算法的整个过程:
1 把梯度图像中的所有像素按照灰度值进行分类,并设定一个测地距离阈值。
分水岭算法解析
分水岭算法解析
分水岭的概念源于水流的概念。我们可以将图像看作是一个地形图,灰度值高的点看作是
山峰,灰度值低的点看作是低谷。水流会从山峰流向低谷,当水流汇聚在一起时就形成了
水坝。在图像中,局部极小值点就相当于低谷,而水坝则表示分割的边界。
分水岭算法的基本原理是将图像看作一个潜在的三维表面,其中横轴和纵轴表示图像的位
置坐标,而高度表示图像的灰度值。算法的过程就是从局部极小值点开始,模拟水流的流动,直到水坝形成,得到图像的分割结果。分水岭算法的主要步骤包括边缘检测、标记局
部极小值点、生成梯度图、将局部极小值点作为种子点进行标记,然后进行泛洪填充,最
后将边界提取出来得到分割结果。
分水岭算法的优点是对图像中的噪音具有一定的鲁棒性,能够处理复杂的图像结构。但是,它也存在一些问题,例如分割结果可能会受到局部极小值点位置的影响,容易产生过分割
或者欠分割的情况。
在本文中,我们将对分水岭算法的原理和实现进行详细的探讨。首先,我们将介绍分水岭
算法的基本原理和步骤,然后详细讨论如何实现这些步骤。最后,我们将通过一个实例来
展示分水岭算法在图像分割中的应用。
2. 分水岭算法的原理及步骤
2.1 基本原理
分水岭算法的基本原理是基于图像的灰度值和梯度来进行像素的分割。它将图像看作是一
个三维表面,其中横轴和纵轴表示图像的位置坐标,而高度表示图像的灰度值。算法的过
程就是模拟水流的流动,从局部极小值点开始,直到水坝形成,得到图像的分割结果。
在图像中,局部极小值点就相当于低谷,而水坝则表示分割的边界。当水流汇聚在一起时,就形成了水坝。因此,分水岭算法的目标就是找到图像中的局部极小值点,并模拟水流的
分水岭算法原理
分水岭算法原理
分水岭算法是一种图像分割的算法,旨在将图像分割成多个不重叠的区域。其原理主要包括以下几个步骤:
1. 将图像转换为灰度图像,并应用滤波操作以去除噪音。
2. 对图像进行二值化处理,将图像分为前景区域和背景区域。
3. 计算图像的梯度,并根据梯度大小确定种子点。
4. 初始化标记图像和队列,将种子点添加到队列中。
5. 迭代地从队列中取出像素点,根据像素点的邻域关系进行扩展。
6. 根据像素点的邻域像素值和标记图像的标签进行更新。
7. 将更新后的像素点添加到队列中。
8. 不断重复步骤5-7,直到队列为空。
9. 根据标记图像中的标签生成最终的分割结果。
分水岭算法的核心思想是将图像视为一个地形图,其像素值可以被看作是地形高度。通过计算图像的梯度,可以确定图像中的梯度谷点,即分水岭线的位置。接着通过对梯度谷点进行扩展和更新,可以将图像分割成多个区域,每个区域代表一个分割结果。
需要注意的是,分水岭算法对图像的初始分割结果非常敏感,且对噪声较为敏感。因此,在实际应用中,通常需要对图像进行预处理和后处理,以提高算法的效果。
分水岭算法详细介绍与应用
分水岭算法详细介绍与应用
分水岭算法(Watershed Algorithm),是一种用于图像分割的算法,主要用于识别图像中不同区域的分界,将不同的图像部件分割开实现分割任务,
可以用于图像分割,对象检测,语义分割,目标检测等应用领域。
它有两个关键步骤:Marker- Controlled Watershed Algorithm 和Region-Growing Watershed Algorithm。
Marker- Controlled Watershed Algorithm 使用标记控制水岭算法来实现图像分割,该算法将图像分割成不同的区域,通过将固定的标记放置在感兴趣的区域的边界上来区分这些区域。它将这个有限的标记视为特殊的水源,并通过将聚类和标记之间的距离(山谷深度)作为一种特殊的权重来进行分割。
Region-Growing Watershed Algorithm 则是一种基于区域的算法,它将图像划分为不同的区域,然后逐渐地将这些区域划分更进一步,最后形成图像分割的结果。
应用场景:
1. 医学图像分割:分水岭算法可用于分割脑部及胸部CT图像,识别出特定部位,可用于肿瘤信息检测等;
2. 目标检测:分水岭算法可用于目标行为分析中,识别出舞蹈等动作;
3. 车牌识别:分水岭算法可与边缘检测相结合,实现车牌的识别;
4. 美容整形:使用分水岭算法用于晶体管(LightSheet)成像中,可以更精确的识别出需要整形的面部特征,比如眼睛、口红、嘴唇等;
5. 地图编辑:使用分水岭算法可以帮助专业人员编辑某个地点的街道图,例如,可以将街道、公园、河流等分割出来;
分水岭算法解析
分水岭算法解析
下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,
能够帮助大家解决实际的问题。文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!
并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日
记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!
Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you
solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!
In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts,
分水岭算法原理
分水岭算法原理
分水岭算法是一种用于图像分割的算法,它基于图像的亮度和灰度分布特点,在图像中找到各个亮度区域的分割线。
算法的原理如下:
1. 首先,将图像转换成灰度图像,并进行图像的预处理操作,如去噪、平滑等,以便更好地提取图像的特征。
2. 对图像进行分割前的初始化操作。为此需要根据图像的灰度分布,寻找到图像的前景和背景的初始估计区域。
3. 基于这个初始估计区域,生成一个距离变换图。距离变换图中,每个像素点的值表示该像素点到最近的前景像素点的距离。
4. 在距离变换图的基础上,根据图像的梯度信息,生成一个梯度图。梯度图中,每个像素点的值表示该像素点到最近的背景像素点的距离。
5. 根据距离变换图和梯度图,生成一个结果图。结果图中,每个像素点的值表示该像素点到前景和背景之间的分水岭的距离。
6. 对结果图进行连通区域分析,将相邻的相同值像素点合并成一个区域。
7. 对区域进行标记,将前景和背景进行分类。
8. 最后,根据标记结果,完成图像的分割。
通过以上步骤,分水岭算法可以在图像中准确地找到各个亮度区域的分割线,实现图像的分割操作。
分水岭算法程序实现过程详解
注 意 : 第 一 轮,把标 记点的 邻居点 放入相 应的优 先级队 列后,先 进先出 的原则 处理队 列中的 像素结 点,找 到一个 非零结 点后,执 行第1,2,3步 ,执 行完第 3步之 后,重新 更新队 列再次 进行扫 描.
下标L表示左,R表示右,T表示上,B表示下,abs表示取绝对值
minmaxabsR-RT , absG-GT, absB-BT,maxabsR-RB, absG-GB, absB-BB,maxabsR-RL, absG-GL, absB-BL,maxabsR-RR, absG-GR, absB-BR
二、传统分水岭算法
传统的分水岭分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图 像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区 域称为集水盆地,而集水盆地的边界则形成分水岭.基于梯度图像的直接分水 岭算法容易导致图像的过分割,产生这一现象的原因主要是由于输入的图像 存在噪声等而产生许多小的集水盆地,从而导致分割后的图像不能将图像中 有意义的区域表示出来.所以必须对分割结果的相似区域进行合并.
优先级队列
Y来自百度文库
0 1 2 3 4 5 6
...
254 255
X
4.递归注水过程,通过扫描0-255高度值队列,从队列0开始,如果找到一个像素结点,则弹出 该结点,并退出扫描.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2 = I; I2(fgm) = 255;%局部极大值处像素值设为255 figure; imshow(I2), %在原图上显示极大值区域 title('原图上的极大值区域(I2)')
se2 = strel(ones(5,5));%结构元素
fgm2 = imclose(fgm, se2);%关操作
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%转化为二值图像 subplot(122); imshow(bw), %显示二值图像 title('开关重建之后的阈值图像')
D = bwdist(bw);%计算距离 DL = watershed(D);%分水岭变换 bgm = DL == 0;%求取分割边界 figure; imshow(bgm), %显示分割后的边界 title('(bgm)分水岭法分割线')
fgm3 = imerode(fgm2, se2);%腐蚀
wk.baidu.com
fgm4 = bwareaopen(fgm3, 20);%开操作
I3 = I;
I3(fgm4) = 255;%前景处设置为255
青
figure; subplot(121)
衣
imshow(I3)%显示修改后的极大值区域
title('修改后的极大值区域')
分水岭分割算法的实现 与分析
青 衣
11053413 李小泷
• 分水岭算法实现步骤:先把图片转化为灰度梯度级图像, 在图像梯度空间内逐渐增加一个灰度阈值,每当它大于一 个局部极大值时,就把当时的二值图像(只区分陆地和水 域,即大于灰度阈值和小于灰度阈值两部分)与前一个时 刻(即灰度阈值上一个值的时刻)的二值图像进行逻辑异或 (XOR)操作,从而确定出灰度局部极大值的位置 。根据所 有灰度局部极大值的位置集合就可确定分水岭。
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');%转 化为伪彩色图像 subplot(122); imshow(Lrgb)%显示伪彩色图 像 title('分水岭伪彩色图像') 青 衣
figure; imshow(I), hold on himage = imshow(Lrgb);%在原图上显示 伪彩色图像 set(himage, 'AlphaData', 0.3); title('原图像上的Lrgb处理')
Watershed是matlab自带的函数,调用这个函 数后可直接应用分水岭分割算法,图像依稀可 以看到物体的轮廓,但效果不佳。
• 为使分水岭分割算法的效果更好,可分别对图像前景和背 景进行标记:本例中使用形态学重建技术对前景对象进行 标记,首先使用开操作,开操作之后可以去掉一些很小的 目标
青 衣
青 衣
rgb = imread('pears.png');%读取原图像 imshow(rgb) title('原图')
I = rgb2gray(rgb);%转化为灰度图像 figure; subplot(121)%显示一行两列第1张 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);%求摸 subplot(122); imshow(gradmag,[]), %显示梯度 title('(gradmag)梯度级')
先做sobel算子用于边缘提取,然后转化为梯度级图像
青 衣
L = watershed(gradmag);%直接应用 分水岭算法 Lrgb = label2rgb(L);%转化为彩色图像 figure; imshow(Lrgb), %显示分割后的 图像 title('分割梯度级图像(Lrgb)')
青 衣
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)')
imcomplement(Iobr));%形态学重建 Iobrcbr = imcomplement(Iobrcbr);%图像求反 subplot(122); imshow(Iobrcbr), %显示重建求反后的 图像 title('重建求反后的图像(Iobrcbr)')
fgm = imregionalmax(Iobrcbr);%局部极大值 figure; imshow(fgm), %显示重建后局部极大值图像 title('重建后局部极大值图像(fgm)')
Ioc = imclose(Io, se);%形态学关操作 figure; subplot(121) imshow(Ioc), %显示关操作后的图像 title('关操作(Ioc)')
青 衣
Iobrd = imdilate(Iobr, se);%对图像进行膨胀 Iobrcbr = imreconstruct(imcomplement(Iobrd), ...
此时再进行分水岭变换并显示得到的效果。
青 衣
gradmag2 = imimposemin(gradmag, bgm | fgm4);%置最小值 L = watershed(gradmag2);%分水岭变换 I4 = I; I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;%前景及边界处置255 figure; subplot(121) imshow(I4)%突出前景及边界 title('突出前景及边界')