史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

分水岭变换技术支持的问题万博1manbetx

电话万博1manbetx支持在本周来自客户尝试使用分水岭部分图片:

起诉书称分水岭没有产生良好的分割。

今天我想介绍如何使用分水岭段这一形象。一路上我会解释的区别分水岭变换分水岭分割

首先,我们先试着打电话分水岭,看看会发生什么。

url =“https://blogs.mathworks.com/images/steve/2013/blobs.png”;bw = imread (url);L =分水岭(bw);Lrgb = label2rgb (L);imshow (Lrgb)

当我看到这个结果,我很迷惑。然后我意识到发生了什么。让我用imfuse显示这两个图片放在一起,放大一个blob。

Lrgb imshow (imfuse (bw))轴(15 155][10 175)

你看,分水岭变换总是给你一个分水岭地区每一个局部最小值(或区域最小)的形象。这些黑色的小“噪声点”是局部最小值,所以有一个流域周边地区。

即使我们填补这些漏洞,只是用分水岭变换本身不会产生细分客户正在寻求。带给我我的观点关于分水岭分割和分水岭变换之间的区别。分水岭分割指的是一个家庭的算法基于在分水岭变换。除了非常特殊的情况下,分水岭变换本身并不是一个完整的分割方法。

几年前,我写了一个MathWorks通讯文章称分水岭变换:图像分割策略。值得回顾的为了复习基础知识。这篇文章的中心思想是:

使用分水岭变换分割背后的关键是:改变你的图像到另一个图像的汇水盆地的对象你想确定。

对于这样的一个图像,由近乎圆形的、动人的斑点。距离变换可以用于生成一个图像的“汇水盆地是你想要的对象来确定。”

但去距离变换之前,让我们来清理噪音。这个函数bwareaopen可以用来删除很小的点。删除他们在前台,我们补充图像调用之前和之后bwareaopen

bw2 = ~ bwareaopen (~ bw, 10);imshow (bw2)
D = -bwdist (~ bw);imshow (D, [])

现在我们开始的地方。其次,计算的分水岭变换D

Ld =分水岭(D);imshow (label2rgb (Ld))

分水岭脊线,白色,对应Ld = = 0。让我们用这些脊线通过改变相应的二进制图像像素分割成背景。

bw2 = bw;bw2 (Ld = = 0) = 0;imshow (bw2)

“原始”分水岭变换闻名“oversegment”形象的倾向。原因是我上面提到的:每一个局部最小值,无论多小,成为一个集水盆地。常见的把戏,然后,在watershed-based分割方法是使用过滤微小的局部最小值imextendedmin然后修改距离变换,没有最小值出现在过滤掉的位置。这就是所谓的“强制最小值”,是通过这个函数实现的imimposemin

下面的调用imextendedmin理想情况下应该产生小点,大致中间的细胞分割。我将使用imshowpair将原始图像上的面具。

掩码= imextendedmin (D, 2);imshowpair (bw,面具,“混合”)

冲刺阶段,现在。修改距离变换所以它只有最小值在所需的位置,然后重复上面的步骤分水岭。

D2 = imimposemin (D,面具);Ld2 =分水岭(D2);bw3 = bw;bw3 (Ld2 = = 0) = 0;imshow (bw3)

就是这样!看我的通讯的文章为其他使用分水岭变换对图像分割的想法。




发表与MATLAB®R2013b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。