首页 文章

如何使用OpenCV的分水岭变换实现过度分割?

提问于
浏览
1

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

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

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

The original image to the left, the markers in the middle (about 740), resulting segmentation to the right (only 255 regions)

1 回答

  • 0

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

    在您的情况下,您可以这样做:

    • 查找所有本地最小值

    • 选择N个本地最小值

    • 申请分水岭

    • 将结果/边界存储到累加器中

    • 重复步骤2,3和4 M次

    • 保持累加器中至少有X%X票数的边界 .

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

相关问题