首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >threshold_multiotsu从不加载

threshold_multiotsu从不加载
EN

Stack Overflow用户
提问于 2020-09-28 21:00:06
回答 2查看 103关注 0票数 0

现在,我正在尝试使用skimage.filters.threshold_multiotsu方法将n个点过滤成k个组。为了找到分割组的阈值,我正在做

代码语言:javascript
复制
arr=np.asarray([93,86,164,234,310,384,461,538,610,167,245,311,394,470,544,620])
thresholds = threshold_multiotsu(arr,classes=8,nbins=32)

即使在等待了一分钟之后,这最终也不会加载。有人想办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-30 01:41:07

尽管编写threshold_multiotsu具有指定任意数量的类的能力,但如果您查看文档中的Notes部分,它将指定复杂度随类数呈指数增长。以下是我对2、3和4个类的计时结果:

代码语言:javascript
复制
In [6]: %timeit threshold_multiotsu(arr, classes=2, nbins=32)
174 µs ± 1.35 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [7]: %timeit threshold_multiotsu(arr, classes=3, nbins=32)
5 ms ± 98.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [8]: %timeit threshold_multiotsu(arr, classes=4, nbins=32)
873 ms ± 10.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

这是留给读者的一个练习,那就是对这三个点进行指数拟合,并计算出classes=8的值,但是如果我们每次大约增加100倍,我就可以得到超过1100天的运行时间。(classes=5还在为我奔波。)

换句话说,threshold_multiotsu是一个错误的工具,如果是k>4的话。我可能会为您试图做的事情提供一个像金丝这样的算法。

票数 1
EN

Stack Overflow用户

发布于 2022-06-01 16:12:08

在三维阵列图像上,使用7个类的skimage.filters.threshold_multiotsu进行otsu阈值分割需要很长的时间。

大幅度减少时间的一个可能的解决办法是对垃圾箱的数量采取行动。默认情况下,该算法要求256个回收箱(即一般灰度图像的默认值)。你可以降低到一个较粗的数字(例如128)。

例如,我在3D阵列图像上运行了带有7个类和128个桶的threshold_multiotsu,即尺寸为182x182x218 (磁共振成像分析的标准模板)的1mm分辨率的MNI152 T1-w模板。在我的桌面计算机上,经过的时间大约是3分钟

原始MNI T1-w模板

基于OTSU方法的7天平分割结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64109555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档