问题标签 [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 投票
1 回答
1092 浏览

c - 使用鼠标单击来检测opencv中的轮廓

我在图像中有各种轮廓/片段。现在我使用键盘输入要从图像中提取的段(如下所示)

在此处输入图像描述

将粉红色区域视为段 1,将白色区域视为段 2。我使用键盘输入要提取的段(1 或 2)。在绘制轮廓时,我得到

在此处输入图像描述

我已将每个段的颜色保存在一个数组中,并使用该数组来提取特定的段。

现在我想知道是否可以使用鼠标单击来识别段/轮廓,这样我就可以绘制多个轮廓并使用鼠标识别段,而不是使用键盘输入段号。

0 投票
1 回答
886 浏览

matlab - 如何解决分水岭中的过度分割

我的输入图像是

在此处输入图像描述

输出图像是

在此处输入图像描述

预期的输出是这样的

在此处输入图像描述

可以看出,一些类似椭圆的结构与矩形合并。此外,我无法将每个标签分开以获得椭圆使用的算法是分水岭

最终开启代码:

0 投票
2 回答
1727 浏览

c++ - 在 opencv 中的 imwrite 给出了一个黑白图像

我用 C API 写了一个分水岭分割的代码。现在我将所有这些转换为 C++。所以,cvsaveimage 变成了 imwrite。但是当我使用 imwrite 时,我得到的只是一个黑色图像。

这是代码:-

我要保存的原始图像在 wshed 中。我从网上看到建议我们需要将其转换为 16 位或更高位,以便 imwrite 正确保存它。如你所见,我试过了。但是使用 imshow 时 wshed 图像可以正确显示。img0 是灰色图像/黑白,而 wshed 图像是彩色的。有什么帮助吗?

编辑-我将第 4 行更改为

0 投票
0 回答
169 浏览

opencv - OpenCV 分水岭结果出乎意料

我正在用一些样本测试分水岭 OpenCV 3.0 的实现,我得到了奇怪的结果,或者至少是我没想到的。

我正在应用以下内容:

读取输入图像

输入图像

应用 Otsu 二值化来区分前景和背景

获取要用作标记的连接点

运行分水岭

结果 结果(蓝线)与我的预期(红线)略有不同

0 投票
1 回答
361 浏览

objective-c - 在 Objective-C 中实现分水岭分割

我即将制作一个用于图像处理的 OS X 应用程序。我需要在 Objective-c 中实现分水岭分割算法,我发现了一些 opencv c++ 代码片段,但我对 c++ 不熟悉,因此很难使其功能齐全。

任何帮助将不胜感激。

0 投票
1 回答
335 浏览

java - Android 分水岭 OpenCV

我的问题如何在 Android Watershed OpenCv 上计算图像中的对象?

0 投票
1 回答
660 浏览

c++ - ITK 上标记过滤器的形态分水岭

我正在尝试使用 ITK 的库创建用于图像分割的管道。但是,当我应用 itkMorphologicalWatershedFromMarkersFilter 时,结果是一个空白图像(只有 1 的二进制图像)。

有谁知道如何正确应用此过滤器?

我的输入图像应该是图像的梯度,而标记图像应该是在同一图像上应用分水岭滤波器的结果。

输入图像

标记图像

这是过滤器的声明和应用:

此外,这是此过滤器文档的链接,来自 itk.org:

http://www.itk.org/Doxygen48/html/classitk_1_1MorphologicalWatershedFromMarkersImageFilter.html#a20e3b8de42219606ba759e822be0aaa2

太感谢了!!

0 投票
0 回答
573 浏览

matlab - 使用具有深度矩阵的 OpenCV 分水岭算法

目前我正在使用 ToF 相机并收到距离图像(矩阵)。我可以使用 Matlab 分水岭函数来查找图像中的所有山谷。

现在我正在尝试使用 OpenCV 分水岭函数,但它使用 RGB 图像作为输入。我尝试将其转换为 RGB 图像(从灰度到 255,然后复制到 MxNx3-Matrix),但我得到了错误的结果。

OpenCV中的深度图像是否有一些分水岭功能?谢谢。

在 Matlab 中比较 Matlab 分水岭与 cv.watershed: https ://gist.github.com/amroamroamro/6423064ee20ad1a3d4de93ad7d68d8f5

垫文件:https ://www.dropbox.com/s/6whxuz111vu4ulp/watershedExample.mat?dl=0

0 投票
0 回答
1789 浏览

python - opencv 2.4.8上的connectedComponents错误

我正在使用分水岭算法进行图像分割(分割前景和背景),我收到以下错误:

AttributeError:“模块”对象没有属性“连接组件”

该算法可以在以下位置找到: http: //opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_watershed/py_watershed.html#image-segmentation-with-watershed-algorithm问题出在connectedComponents上. 我正在使用 openCv 2.4.8

我很感激任何帮助。

0 投票
1 回答
785 浏览

algorithm - 在 Matlab 中实现自适应分水岭分割

我想在 Matlab 中实现“自适应分水岭分割”。该算法有六个步骤。输入是图(a),结果是图(d)。请您帮我检查一下我的代码是否有错误,我不知道如何实现第六步。太感谢了!

输入图像

结果图片

加载图像:

Step 1:计算每个(x,y)处的D(x,y),得到二值图像的欧几里得距离图,并将M(x,y)的每个值赋值为0。

Step 2:使用高斯滤波器对距离图进行平滑,合并相邻的最大值,如果D(x,y)是局部最大值,则将M(x,y)设为1,然后得到距离图的标记图。

Step3:逐像素扫描标记图。如果 M(x0,y0) 为 1,则在其半径为 D(x ,y ) 的邻域中寻找虚假最大值。当 M(x,y) 等于 1 且 sqr((x − x0)^2 + (y − y0)^2 ) ≤ D(x0, y0) ,如果 D(x,y) < D(x0,y0),则将 M(x,y) 设置为 0。

第4步:

计算距离图的倒数,局部极大值变成局部极小值。

第 5 步:

通过常规分水岭算法根据标记对距离图进行分割,得到二值图像的分割。

步骤 6:通过用直线连接分水岭线的末端并沿直线重新分类像素来拉直分水岭线。

我不知道如何实现这一步