【问题标题】:Why is watershed function from SciKit too slow?为什么 SciKit 的分水岭功能太慢?
【发布时间】:2019-05-13 18:50:35
【问题描述】:

我对 OpenCV、Skimage(SciPy) 和 BoofCV 中的分水岭函数的执行时间进行了比较。尽管 OpenCV 似乎比其他两个快得多(平均时间:10 个样本的 0.0031 秒),但 Skimage 的执行时间差异很大(从 0.03 到 0.554 秒)。我想知道为什么会这样?它不应该是本机python函数吗?

【问题讨论】:

    标签: python time native scikit-image watershed


    【解决方案1】:

    如果没有更多详细信息,很难知道您的特定应用程序运行缓慢的原因。但总的来说,scikit-image 代码不如 OpenCV 优化,但涵盖了更多用例。例如,它可以使用浮点值作为输入,而不仅仅是 uint8,它可以使用 3D 甚至更高维度的图像。

    关于性能:OpenCV 使用高度优化的 C/C++ 编码,而 scikit-image 使用 Cython 编码,Cython 是一种将 Python 代码编译为 C 的混合语言,实现了 C 性能。但是,Cython 中没有几个优化,正如我上面提到的,实际实现的内容存在差异,从而导致性能差异。

    【讨论】:

    • 非常感谢您的回答。我在 OpenCV 和 Scikit-image 中使用完全相同的代码,只需使用 OpenCV 调用分水岭一次(首先我必须将其转换为彩色 RGB 图像),然后使用 scikit-image 调用一次。所以我得到了上面的区别。我知道 scikit 也可以处理 3D 图像,但我想将它与不能处理的 OpenCV 进行比较,所以我受限于 2D 图像。
    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2020-11-12
    • 2012-07-11
    相关资源
    最近更新 更多