如何解决threshold_multiotsu永远不会加载
现在我正在尝试使用skimage.filters.threshold_multiotsu
方法将n个点过滤到k个组中。要找到将组划分的阈值,我正在做
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)
即使经过一分钟的等待,它最终也永远不会加载。有人有解决这个问题的想法吗?
解决方法
尽管threshold_multiotsu
可以指定任意数量的类,但是如果您查看documentation中的“ Notes”部分,它会指定复杂度随类的数量呈指数增长。这是我针对2、3和4个班级的计时结果:
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
仍在为我运行。)
换句话说,如果k> 4,threshold_multiotsu
对您来说是错误的工具。我可能会建议您使用kmeans之类的算法来解决您的问题!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。