使用分水岭算法分割图像中相互接触的对象

简介: 使用分水岭分割来分离图像中相互接触的对象。分水岭变换通过将图像视为一个曲面,其中亮像素表示较高处,暗像素表示较低处,从而找出图像中的“汇水盆地”和“分水岭脊线”。

​一、前言
使用分水岭分割来分离图像中相互接触的对象。分水岭变换通过将图像视为一个曲面,其中亮像素表示较高处,暗像素表示较低处,从而找出图像中的“汇水盆地”和“分水岭脊线”。
如果您能够标识或“标记”前景对象和背景位置,使用分水岭变换的分割效果会更好。标记控制的分水岭分割遵循以下基本过程。
二、实现步骤
步骤 1:读入彩色图像并将其转换为灰度
1.png

步骤 2:使用梯度幅值作为分割函数
计算梯度幅值。对象边界处的梯度较高,对象内部的梯度较低(大多数情况下)。
2.png

能通过直接对梯度幅值使用分水岭变换来分割图像吗?不能。如果没有额外的预处理,例如以下标记计算,直接使用分水岭变换通常会导致“过度分割”。

步骤 3:标记前景对象
此处可以应用多种过程来找到前景标记,这些标记必须是每个前景对象内部的连通像素斑点。在此示例中,您将使用称为“开运算重构”和“闭运算重构”的形态学方法来“清理”图像。这些运算将在每个对象内创建最大值平面,使用 imregionalmax 可以找出这些最大值。
开运算是先腐蚀后膨胀,而开运算重构是先腐蚀后进行形态学重构。让我们对两者进行比较。首先,使用 imopen 进行开运算。
3.png

接下来,使用 imerode 和 imreconstruct 进行开运算重构。
4.png

在开运算后闭运算可以去除暗点和针状标记。对常规形态学闭运算和闭运算重构进行比较。
5.png

现在使用 imdilate,然后使用 imreconstruct。请注意,您必须对 imreconstruct 的输入和输出进行补充。
6.png

通过比较 Iobrcbr 和 Ioc 可以看到,在去除小瑕疵而不影响对象整体形状方面,基于重构的开运算和闭运算比标准的开运算和闭运算更高效。计算 Iobrcbr 的局部最大值,以获得良好的前景标记。
7.png

为了帮助解释结果,可将前景标记图像叠加在原始图像上。

8.png

请注意,一些大部分被遮挡和遮蔽的对象未被标记,这意味着在最终结果中不会正确分割这些对象。此外,一些对象中的前景标记一直延伸到对象的边缘。这意味着您应清理标记斑点的边缘,然后将它们缩小一点。您可以通过先闭运算再腐蚀来实现这一点。

此过程往往会留下一些必须删除的杂散孤立像素。您可以使用 bwareaopen 来实现这一点,它可以删除像素少于特定数量的所有斑点。
9.png

步骤 4:计算背景标记
现在您需要标记背景。在清理后的图像 Iobrcbr 中,暗像素属于背景,因此您可以首先进行阈值化运算。
10.png

背景像素为黑色,但理想情况下,我们不希望背景标记太靠近我们尝试分割的对象的边缘。我们将通过计算 bw 前景的“影响区骨架”(即 SKIZ)来“精简”背景。通过计算 bw 的距离变换的分水岭变换,然后寻找结果的分水岭脊线 (DL == 0),可以实现这一目标。
11.png

步骤 5:计算分割函数的分水岭变换。
函数 imimposemin 可用于修正图像,使其仅在特定所需位置具有局部最小值。在此处,您可以使用 imimposemin 来修正梯度幅值图像,使其局部最小值只出现在前景和背景标记像素上。最后,计算基于分水岭的分割。

步骤 6:可视化结果
一种可视化方法是在原始图像上叠加前景标记、背景标记和分割的对象边界。您可以根据需要使用膨胀来使某些方面(如对象边界)更明显可见。对象边界位于 L == 0 的位置。二值前景和背景标记缩放为不同整数值,以便对它们分配不同标签。

12.png

此可视化图像说明前景和背景标记的位置如何影响结果。在一些位置,部分被遮挡的较暗对象与其较亮的相邻对象已合并,因为被遮挡的对象没有前景标记。

另一种有用的可视化方法是将标签矩阵显示为彩色图像。标签矩阵,如 watershed 和 bwlabel 生成的矩阵,可通过使用 label2rgb 转换为真彩色图像,以实现可视化目的。

使用透明方式将此伪颜色标签矩阵叠加到原始强度图像上。
13.png

目录
相关文章
|
1月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
62 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
1月前
|
机器学习/深度学习 人工智能 算法
【MM2024】面向 StableDiffusion 的多目标图像编辑算法 VICTORIA
阿里云人工智能平台 PAI 团队与华南理工大学合作在国际多媒体顶级会议 ACM MM2024 上发表 VICTORIA 算法,这是一种面向 StableDiffusion 的多目标图像编辑算法。VICTORIA 通过文本依存关系来修正图像编辑过程中的交叉注意力图,从而确保关系对象的一致性,支持用户通过修改描述性提示一次性编辑多个目标。
|
1月前
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
19 0
|
1月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
|
2月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
4月前
|
机器学习/深度学习 编解码 监控
算法金 | 深度学习图像增强方法总结
**图像增强技术概括** 图像增强聚焦于提升视觉效果和细节,广泛应用于医学、遥感等领域。空间域增强包括直方图均衡化(增强对比度)、对比度拉伸、灰度变换、平滑滤波(均值、中值)和锐化滤波(拉普拉斯、高通)。频率域增强利用傅里叶变换、小波变换,通过高频和低频滤波增强图像特征。现代方法涉及超分辨率重建、深度学习去噪(如CNN、Autoencoder)、图像修复(如GAN)和GANs驱动的多种图像处理任务。
143 14
算法金 | 深度学习图像增强方法总结
|
4月前
|
存储 监控 算法
(六)JVM成神路之GC基础篇:对象存活判定算法、GC算法、STW、GC种类详解
经过前面五个章节的分析后,对于JVM的大部分子系统都已阐述完毕,在本文中则开始对JVM的GC子系统进行全面阐述,GC机制也是JVM的重中之重,调优、监控、面试都逃不开的JVM话题。
126 8
|
3月前
|
算法 前端开发 计算机视觉
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
42 0
|
3月前
|
自然语言处理 并行计算 算法
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
44 0