1

我正在尝试通过使用 Java 中基于标记的 OpenCV 分水岭实现来过度分割图像。

我的想法是搜索所有局部最小值并将其用作标记。不幸的是,分水岭需要一个 CV_8U 类型的矩阵作为标记输入,因此,我不能真正得到超过 255 个标记。

有没有人有解决这个问题的方法或使用 OpenCV 实现过度分割的其他解决方案?

左边的原始图像,中间的标记(大约 740 个),右边的分割结果(只有 255 个区域)

4

1 回答 1

0

随机分水岭可以帮助您解决这个问题。原则是应用多个流域。

在您的情况下,您可以执行以下操作:

  1. 找到所有的局部最小值
  2. 选择 N 个局部最小值
  3. 应用分水岭
  4. 将结果/边界存储到累加器中
  5. 重复步骤 2、3 和 4 M 次
  6. 保留累积器中至少有 M 票 X% 的边界。

另一种解决方案是使用SMIL 库。您可以从 Java 中调用它,并且您确信实现的算法是快速且没有偏差的。

于 2017-01-08T00:22:38.467 回答