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

matlab - 如何在MATLAB或其他中通过分水岭解决过度分割的全白细胞

如图,我想通过分水岭算法分离相邻的单元格,但结果显示过度分割。我如何使用 imimposemin() 来解决这个问题。谢谢!

结果

输入带宽

0 投票
1 回答
293 浏览

android - 二进制图像中的 FindContours 和 CountObject

有人可以帮我解决吗?我有一个使用分水岭分割处理的二进制图像,我的问题是,如何在图像中找到轮廓和计数对象?

0 投票
3 回答
74 浏览

matlab - 从分割输出构建训练图像的最有效方法是什么?

我想从分水岭变换输出中制作训练图像,以便在每个单元格中都有一个图像片段。我怎样才能以最有效的方式做到这一点?

更多细节:假设L是分水岭分割的输出:

  • 0 是背景
  • 1 是段号 1,2 是段号 2,依此类推。

我想用两个图像构建一个单元格,每个图像都包含一个段:

我知道我可以使用一些 for 循环和 if 条件来做到这一点,但是我需要一个具有最佳计算成本的解决方案。也许 Matlab 有这个任务的内置函数?

0 投票
4 回答
855 浏览

c# - 从图像中确定气泡大小的算法

我正在寻找一种从下图中隔离气泡的好方法。我正在使用 Visual Studio 2015 和 C#。

我听说过分水岭方法,并相信它可能是一个很好的解决方案。

我尝试实现此处找到的代码解决方案:分水岭图像分割

我没有取得太大的成功。该解决方案无法找到函数,例如:FilterGrayToGray。

有谁知道这样做的好方法?

图像示例

0 投票
1 回答
284 浏览

matlab - 修剪图像片段的剩余部分

正如您在下图中看到的,在我的一些分割结果中(通过分水岭变换方法完成的分割),还有一些剩余部分。我想以某种方式裁剪图像,以便只保留矩形。此操作仅基于矩形形状,与强度级别无关。

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

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

0 投票
2 回答
663 浏览

image-processing - 如何拆分和合并错误分割的区域

我已经对聚集细胞的图片进行了分水岭分割。似乎有许多细胞簇没有被充分分割或根本没有分割。也有单个单元格被过度分割。我可以使用哪些方法来合并过度分割的单个单元格并进一步拆分未分割的单元格簇?

编辑:确定单元格是否被过度分割或分割不足的标准将通过确定单元格的面积是否在正常大小单元格的某个平均范围内来完成。我不确定这是否是个好主意。任何帮助将不胜感激,谢谢。

如果有帮助,这是结果的图片。 在此处输入图像描述

0 投票
0 回答
1131 浏览

python - 通过 Python 在 OpenCV 中使用 inpaint 函数在分水岭中插入破碎的河流数据

背景

通过激光雷达收集的栅格文件记录了流域的地形。为了正确模拟分水岭,河流必须看起来是连续的,没有任何中断或中断。如下图所示,栅格文件中的道路看起来像中断河流的水坝

流域内正在考虑的特定区域

客观的

这些河流断裂是主要问题,我正在尝试但未能消除它们。

方法

通过 Python,我使用了 OpenCV 库中的各种工具和预构建函数。我在这种方法中使用的主要函数是 cv2.inpaint 函数。这个函数接收一个图像文件和一个掩码文件,并在掩码文件像素不为零的地方插入原始图像。

这里的主要步骤是通过检测河流中断处的角落来确定我所做的掩码文件。掩码文件将指导 inpaint 函数根据周围像素中的图案填充像素。

问题

我的问题是,这发生在各个方向,而我要求它仅从河流本身推断像素数据。下图显示了有缺陷的结果:inpaint 有效,但它也考虑了来自河外的数据。

修复结果

如果您愿意提供帮助,这是我的代码:

0 投票
2 回答
15138 浏览

python - OpenCV Python中的距离变换自动将CV_8UC3转换为CV_32SC1,创建一个断言错误

我正在尝试按照教程将分水岭算法应用于图像:OpenCv WaterShed Docs。我之前在灰度图像上应用了高斯滤波和形态变换后的 Otsu 阈值处理,以根据代码提高图像质量:

根据代码应用距离变换作为分水岭算法的第一阶段:

创建错误:

其中正在尝试将 8 位 3 通道图像转换为 32 位单通道图像。我如何防止这种情况,但又可以使用距离变换?

0 投票
1 回答
592 浏览

c++ - 分水岭算法后提取轮廓

我有一个图像,我在其上应用了分水岭算法并获得了满意的结果。我已经使用 OpenCV 和 C++ 来获得结果。现在,我该如何提取分段部分并最好将它们保存为轮廓?

0 投票
0 回答
1067 浏览

python - 如何使用 OpenCV 和 Python 检测和修复连接/重叠的字母(OCR 分割)?

对于 OCR 程序,我在分割连接或重叠的文本时遇到问题。我正在处理 Times New Roman 字体。在这种字体中,fb、fh、fi、fj、fk、fl 等字母在顶部相互连接。(见下图)。这主要出现在衬线字体中。

Times New Roman字体中加入的字母和分水岭算法的结果: 在此处输入图像描述

显然,轮廓检测会给这两个字母一个单一的分割。所以,我尝试了分水岭算法。正如您在上图中看到的,它确实检测到了重叠,但我发现了另一个问题本身。字母“f”的薄部分也被分成另一个部分,但我想要整个“f”。我知道这是因为我使用的标记。(见下文)

我用于分水岭的标记:

在此处输入图像描述

另外,有谁知道如何检测字母是否重叠,以便我可以将分水岭算法仅应用于重叠部分。

那么如何解决这个问题呢?我是否使用正确的方法,即分水岭来解决这个问题?有谁知道更好的解决方案?