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

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

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

目录
相关文章
|
2月前
|
编解码 算法
改进SIFT算法实现光学图像和SAR图像配准
改进SIFT算法实现光学图像和SAR图像配准
|
21天前
|
存储 监控 算法
基于文化优化算法图像量化(Matlab代码实现)
基于文化优化算法图像量化(Matlab代码实现)
|
13天前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
3月前
|
机器学习/深度学习 监控 算法
基于单尺度Retinex和多尺度Retinex的图像增强算法实现
基于单尺度Retinex(SSR)和多尺度Retinex(MSR)的图像增强算法实现
187 1
|
3月前
|
存储 算法 数据安全/隐私保护
基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证
本项目基于FPGA实现图像运动模糊算法,包含横向与纵向模糊处理流程。使用Vivado 2019.2与MATLAB 2022A,通过一维卷积模拟点扩散函数,完成图像退化处理,并可在MATLAB中预览效果。
|
3月前
|
监控 算法 决策智能
基于盲源分离与贝叶斯非局部均值的图像降噪算法
基于盲源分离与贝叶斯非局部均值的图像降噪算法
84 0
|
4月前
|
算法 数据安全/隐私保护
基于混沌加密的遥感图像加密算法matlab仿真
本项目实现了一种基于混沌加密的遥感图像加密算法MATLAB仿真(测试版本:MATLAB2022A)。通过Logistic映射与Baker映射生成混沌序列,对遥感图像进行加密和解密处理。程序分析了加解密后图像的直方图、像素相关性、信息熵及解密图像质量等指标。结果显示,加密图像具有良好的随机性和安全性,能有效保护遥感图像中的敏感信息。该算法适用于军事、环境监测等领域,具备加密速度快、密钥空间大、安全性高的特点。
|
4月前
|
存储 算法 数据安全/隐私保护
基于DNA算法的遥感图像加解密matlab仿真
本程序基于DNA算法实现遥感图像加密与解密,利用DNA分子双螺旋结构和碱基配对规则完成信息编码。主要步骤包括图像预处理、DNA编码、DNA操作(杂交、酶切、连接)及密钥生成管理。通过直方图、相关性、熵和解密后图像质量分析验证效果。程序在MATLAB2022A版本运行,具有高效性和安全性,但需解决操作准确性与密钥管理复杂性等挑战。
|
6月前
|
算法 安全 数据安全/隐私保护
基于AES的遥感图像加密算法matlab仿真
本程序基于MATLAB 2022a实现,采用AES算法对遥感图像进行加密与解密。主要步骤包括:将彩色图像灰度化并重置大小为256×256像素,通过AES的字节替换、行移位、列混合及轮密钥加等操作完成加密,随后进行解密并验证图像质量(如PSNR值)。实验结果展示了原图、加密图和解密图,分析了图像直方图、相关性及熵的变化,确保加密安全性与解密后图像质量。该方法适用于保护遥感图像中的敏感信息,在军事、环境监测等领域具有重要应用价值。
204 35
|
8月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。

热门文章

最新文章