问题标签 [watershed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1251 浏览

matlab - 分水岭 - 灰度图像中的局部最小值

我有一组灰度图像,需要在其中找到局部最小值。我正在 Matlab 中编写代码,并且正在寻找有关如何构建算法的建议:我需要计算梯度还是可以只使用该watershed函数?

这是我用来进行第一次分析的代码(下图):

在此处输入图像描述

直观地说,我希望在箭头指向的像素中找到区域最小值:
在此处输入图像描述

0 投票
0 回答
70 浏览

c++ - IRM 图像的分水岭

我想应用一种分割算法(由标记分水岭)。我在这段代码中有问题。它仅适用于一张图片 (lena.jpg)

我想将它与 irm 图像一起使用,但它不起作用。

我认为问题在于图像 RGB 和灰色。


0 投票
1 回答
521 浏览

image - 如何有效地为该显微图像创建 BW 蒙版?

所以有些背景。我的任务是编写一个 matlab 程序来计算可见光显微图像中酵母细胞的数量。为此,我认为第一步将是细胞分割。在获得真正的实验图像集之前,我开发了一种算法,使用了一个利用watershed的测试图像集。看起来像这样:

原始图像

分水岭的第一步是为单元生成 BW 掩码。然后我会生成一个 bwdist 图像,其中包含从 BW 掩码生成的强加局部最小值。有了它,我可以轻松生成分水岭。

BW 掩码 从 BW 掩码生成的局部最小掩码 在此处输入图像描述

如您所见,我的算法依赖于成功生成 BW 掩码。因为我需要从中生成 bwdist 图像和标记。最初,我按照以下步骤生成 BW 掩码:

  1. 生成图像的局部标准差sdImage = stdfilt(grayImage, one(9))

标准过滤器

  1. 使用 BW 阈值生成初始 BW 掩码binaryImage = sdImage < 8;

初始 BW 滤波器

  1. 使用imclearborder清除背景。使用其他一些代码将边框上的单元格添加回来。

最终 BW 掩码


背景完成。这是我的问题


但是今天我收到了新的真实数据集。图像分辨率要小得多,光照条件与测试图像集不同。颜色深度也小得多。这些使我的算法毫无用处。就这个:

新图像集

使用stdfilt未能生成良好的干净图像。相反,它会生成这样的东西(注意:我已经调整了stdfilt的参数函数和 BW 阈值的参数,以下是我能得到的最佳结果):

新的标准过滤结果

如您所见,细胞中心有一些亮像素,它们不需要比膜更暗。这导致 bw 阈值生成如下内容:

新的 bw 阈值

bw 阈值处理后的新 bw 图像具有不完整的膜或分段的细胞中心,使它们不适合其他步骤。

我最近才开始图像处理,不知道应该如何进行。如果您有想法,请帮助我!谢谢!

为了您的方便,我附上了一个来自 Dropbox 的链接,用于获取图片的子集

0 投票
2 回答
2884 浏览

c++ - OpenCV 分水岭分割遗漏了一些对象

我的代码与本教程相同。当我看到使用后的结果图像时cv::watershed(),有一个我想找出的对象(右上角),但它不见了。使用后图像中确实有六个标记cv::drawContours()。这是否正常,因为存在分水岭算法的不准确性?

这是我的代码的一部分:

原图:

在此处输入图像描述

之后的结果watershed

在此处输入图像描述

您可以在此处找到原始图像、中间图像和结果图像:

特定过程后的结果图像

0 投票
2 回答
936 浏览

matlab - 在matlab中分水岭分割后提取叶子

在我应用分水岭分割后,我想从图像中提取剩余的叶子,我只想得到没有像 image-2 这样的背景。请你帮帮我。非常感谢。我还在下面附上了我的代码。我是stackoverflow的新手,因此我不允许发布图像。我在mathworks中问过同样的问题,如果你愿意的话,你可以从那里检查图像。

提前非常感谢。

http://www.mathworks.com/matlabcentral/answers/237106-extracting-leaf-from-background

图一:分水岭分割后(彩色版):

image-2:要成为的图像;

我的代码:

0 投票
1 回答
765 浏览

c++ - 分水岭算法后边界框和圆圈过多

使用分水岭后,我无法找到边界框和圆圈。我已经使用Opencv 2 Computer Vision Application Programming Cookbook book for watershed algorithm 和opencv.org example 来创建边界框和圆圈。

我的问题是我的对象有太多的框和圆圈。另外,为什么要为图像添加边框?

我正在使用 OpenCV 2.4.11 和 Visual Studio Express 2013。

这是我的代码:

这是 header.h 文件:

玩具.png: 玩具.png

分水岭.png: 分水岭.png

轮廓.png: 轮廓.png

谢谢你。

0 投票
2 回答
2307 浏览

python - 试图改进我在 OpenCV 中的道路分割程序

我正在尝试制作一个能够识别场景中的道路并继续使用形态过滤和分水岭算法的程序。但是,该程序会产生平庸或糟糕的结果。如果道路占据了大部分场景,它似乎还可以(通过不够好)。然而在其他图片中,事实证明天空被分割了(云的分水岭)。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我试图看看我是否可以进行更多的图像处理以改善结果,但这是我迄今为止最好的,不知道如何继续改进我的程序。

如何改进我的程序?

代码:

0 投票
2 回答
931 浏览

c++ - 如何绘制每个分割对象的轮廓

我应用分水岭分割来检测触摸物体,这样做效果很好。现在,我想画出每个物体的轮廓,这样我就可以得到它们的长度、面积、矩等。但是分割结果中的物体仍然是感人的。所以,我没有画出每一个的轮廓。如何绘制每个对象的轮廓?

源图像: 在此处输入图像描述

分水岭结果: 在此处输入图像描述

0 投票
1 回答
430 浏览

c++ - 如何在 OpenCV 中分割分水岭分割的标签?

我在 OpenCV 中做了一个分水岭分割,但我想分割这些片段。我考虑过根据每个段的 RGB 值来拆分它。因为不同段的 RGB 值会有所不同。但我似乎无法找到如何做到这一点。任何人都知道如何根据 RGB 值进行这种拆分?或者任何其他分割分水岭段的方法?

我想要的是将两个不同的颜色区域(这张照片中的棕色和粉红色)分成两个图像或窗口。

0 投票
1 回答
170 浏览

c - cvWatershed 不支持的格式或格式组合

我正在使用 C on Code::Blocks 中的 OpenCV 2.4.11,特别是通过 O'Reilly 的《Learning OpenCV》一书。关于分水岭算法的部分有点短,所以我想我会玩一下它,看看它是如何工作的。但是,每次调用该函数时,都会出现以下错误:

OpenCV 错误:cvWatershed 中不支持的格式或格式组合(仅支持 32 位、1 通道输出图像)

到目前为止,我的程序非常简单:

我已经尝试将标记和 markmat 作为 cvWatershed 的第二个参数,以及其他一些东西(特别是标记上绘制有 markingstemp 的轮廓的标记),但每次我得到同样的错误。谁能告诉我我做错了什么?