问题标签 [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 回答
71844 浏览

opencv - 如何在 OpenCV 中定义分水岭的标记?

我正在使用 OpenCV 为 Android 写作。我正在使用标记控制的分水岭分割类似于下面的图像,而无需用户手动标记图像。我打算使用区域最大值作为标记。

minMaxLoc()会给我价值,但我怎样才能将它限制在我感兴趣的斑点上?我可以利用来自findContours()或 cvBlob blobs 的结果来限制 ROI 并将最大值应用于每个 blob 吗?

输入图像

0 投票
3 回答
26120 浏览

c++ - 分水岭分割opencv xcode

我现在正在从 opencv 代码书(OpenCV 2 Computer Vision Application Programming Cookbook)中学习代码:第 5 章,使用分水岭分割图像,第 131 页。

这是我的主要代码:

但是,它不起作用。如何初始化二进制图像?我怎样才能使这个分段代码工作?

我对这本书的这一部分不是很清楚。提前致谢!

0 投票
1 回答
1539 浏览

matlab - 如何在分水岭图像分割中使用 Kinect 深度数据

我有来自 Kinect 的 RGB 和深度图像作为 png 格式。我正在尝试将深度数据与分水岭分割一起使用,但我不知道如何结合这两种数据并获得更准确的结果。我检查了一些论文,但我不理解结果或找不到专门为分水岭算法编写的解决方案。如何将深度数据作为分割过程的参考点?

我正在使用 MatLab 的图像处理工具箱。

图片来自 Nathan Silberman 等。al. 在Silberman 网站上的数据库

一个示例 RGB 图像及其对应的深度文件如下所示(注意深度图像,原本是二进制图像,被转换为 uint8): RGB 图像 深度图像(转换为 uint8)

更新:我尝试通过获取每个通道(红色、绿色、蓝色和深度)并计算它们的权重,从 RGB 源与深度数据一起创建加权灰度图像;然后包括与每个相应像素的权重相乘的值。但是得到的灰度图像并没有显着改善结果。它并不比仅基于 RGB 的分割好。如果我遵循这种方法,我还能做什么?或者,我怎样才能看到深度数据的影响?

0 投票
2 回答
7601 浏览

opencv - Image Segmentation for Color Analysis in OpenCV

I am working on a project that requires me to:

Look at images that contain relatively well-defined objects, e.g.

enter image description here

and pick out the color of n-most (it's generic, could be 1,2,3, etc...) prominent objects in some space (whether it be RGB, HSV, whatever) and return it.

I am looking into ways to segment images like this into the independent objects. Once that's done, I'm under the impression that it won't be particularly difficult to find the contours of the segments and analyze them for average or centroid color, etc...

I looked briefly into the Watershed algorithm, which seems like it could work, but I was unsure of how to generate the marker image for an indeterminate number of blobs.

What's the best way to segment such an image, and if it's using Watershed, what's the best way to generate the corresponding marker image of integers?

0 投票
4 回答
3981 浏览

c++ - OpenCV:在 C++ 中将 CV_8UC3 图像转换为 CV_32S1 图像

我需要将具有 3 个通道的 CV_8U 图像转换为必须是单通道 CV_32S 的图像。但是当我尝试这样做时,我得到的图像全是黑色的。我不明白为什么我的代码不起作用。

我正在处理灰度图像,这就是为什么我将 3 通道图像拆分为单通道图像的矢量,然后只处理第一个通道。

先感谢您。

0 投票
1 回答
801 浏览

c++ - 分水岭分割后提取对象

我已经使用分水岭算法分割了我的图像,结果非常令人满意。现在,我想提取和存储已分割的内容,但我真的不知道该怎么做。

请问各位有什么想法吗?

谢谢你。

0 投票
1 回答
26954 浏览

c++ - 使用 Watershed 在 C++ 中进行 OpenCV 图像分割

嗨,我目前正在编写一个基本的 C++ 应用程序,使用 OpenCV 库从背景中分割图像的主题。应用程序读取图像文件并使用分水岭算法根据在边缘周围找到的数据和在图像中心找到的数据生成掩码。

(首先,我创建了一个整体值为 -1 的图像对象。然后我在一个值为 1 的空图像周围创建了一个边框。然后我在图像的中心大致创建了一个矩形,其值为2.边框和矩形没有接触。)

我尝试使用生成的掩码在原始图像和自动生成的掩码之间使用按位与从图像中删除数据。

我是用 C++ 编写的,如果有人能快速查看我的代码,我将不胜感激。我能找到的唯一类似的例子是使用 Python 的原生 OpenCV 绑定。

样本面具:http: //i.imgur.com/a0SUwy3.png

示例图片:http: //i.imgur.com/FQywu6P.png

0 投票
2 回答
3906 浏览

ios - cvWatershed 中不支持的格式或格式组合(仅支持 8 位、3 通道输入图像)

嗨,我是图像分割的新手,我正在尝试使用给定的代码来获取前景对象,但出现错误,例如“cvWatershed 中不支持的格式或格式组合(仅支持 8 位、3 通道输入图像)”

// cv::namedWindow("Markers"); // cv::imshow("标记", 标记);

// cv::Mat result1; result1.convertTo(result1,CV_8U);

我尝试通过调试并在线出错

提前致谢

0 投票
1 回答
1661 浏览

opencv - (OpenCV) 流域的快速邻接矩阵计算

我想知道是否有比我在下面所做的更快的方法来计算分水岭图像的区域邻接矩阵。

输入:具有从 1 到 N 标记的 N 个区域的分水岭图像。

输出:这 N 个区域的邻接矩阵。

1. 对于每个区域,计算对应的掩码,并将所有掩码放入一个向量中:

2.定义一个函数来检查两个区域是否相邻:

3.计算邻接矩阵M:如果第i个区域和第j个区域相邻,则M[i][j] = M[j][i] =1,否则等于0。

0 投票
0 回答
625 浏览

android - android openCV分水岭

我使用此代码从图像中提取中心段,但我的代码无法正常工作并将输入垫作为输出返回