matlab 物体识别_MATLAB图像处理:50:标记控制的分水岭分割

该文介绍了如何使用MATLAB进行物体识别,重点是分水岭分割技术。通过6个步骤详细阐述了从彩色图像转换为灰度,计算分割函数、前景和背景标记,直至最终的分水岭变换和结果可视化的过程。文章强调了标记控制的重要性,以避免过度分割,并提供了形态学操作优化标记的方法。
摘要由CSDN通过智能技术生成

efeded612a45d013e9e867f5828c2e1e.png

本示例说明了如何使用分水岭分割来分离图像中的物体。分水岭变换通过将图像视为亮像素高而暗像素低的表面,在图像中找到“集水盆地”和“分水岭脊线”。

如果您可以识别或“标记”前景物体和背景位置,则使用分水岭变换进行分割会更好。标记控制的分水岭分割遵循以下基本过程:

  1. 计算分割函数。这是一张图像,其暗区是您要分割的物体。
  2. 计算前景标记。这些是每个物体中像素的连通域。
  3. 计算背景标记。这些是不属于任何物体的像素。
  4. 修改分割函数,使其仅在前景和背景标记位置具有最小值。
  5. 计算修改后的分割函数的分水岭变换。

步骤1:读取彩色图像并将其转换为灰度

rgb = imread('pears.png');
I = rgb2gray(rgb);
imshow(I)
​
text(732,501,'Image courtesy of Corel(R)',...
     'FontSize',7,'HorizontalAlignment','right')

f866d5539b7d0e6ebe45dc12d480883e.png

步骤2:使用梯度幅度作为分割函数

计算梯度幅度。梯度在物体边界处较高,而在物体内部的梯度较低(大部分)。

gmag = imgradient(I);
imshow(gmag,[])
title('Gradient Magnitude')

03a2f1bb56721e05cd92b32b5317f445.png

您是否可以直接在梯度幅度上使用分水岭变换对图像进行分割?

L = watershed(gmag);
Lrgb = label2rgb(L);
imshow(Lrgb)
title('Watershed Transform of Gradient Magnitude')

60ccec6e57d1ed8b3cdd24e9e2391925.png

不行。如果不进行其他预处理(例如下面的标记计算),则直接使用分水岭变换通常会导致“过度分割”。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值