所以我有一个非常大的Numpy数组(2560x1920)。它实际上来自一张灰度图片,每个像素都有一个0-1之间的数字,表示它的亮度。在
我试图用零替换所有低于阈值(比如0.5)的值。 这可能是一个简单的任务,但我是一个新手与纽比,我搜索了周围,仍然没有找到它。在
这是我所尝试的,我知道这是错误的。。。在
for x in np.nditer(Image):
if x < .5:
x == 0
plt.imshow(Image, cmap=plt.cm.gray)
plt.show()
它只输出正常图像而不改变任何东西。在
数组也类似于这样(明显缩写):
^{pr2}$
有numpy的内置索引,可以用来替换元素。这可以通过以下方式实现:
我带着建议从未来回来。在
上述方法对于一个简单的全局阈值非常有效。 我发布这个答案是为了警告非自适应阈值,像这样,可能太天真了,这取决于您的应用程序。在
如果不适应图像的平均亮度或其他质量,如果要分析在不同条件下拍摄的多张照片,输出将不一致。在
有更精确的方法来解决这个问题,但它们稍微复杂一点。Scikit图像使这一切变得简单。在
最流行的方法之一是大津的(我不能说哪种方法对每种情况都是最准确的,我还没有进行足够的研究)。 https://en.wikipedia.org/wiki/Otsu%27s_method
Scikit Image在它们的模块中内置了这个和其他一些算法。在
使用这种方法,对上述问题的答案很简单:
请阅读以下示例: http://scikit-image.org/docs/dev/auto_examples/plot_otsu.html
关于这里的用法: http://scikit-image.org/docs/dev/api/skimage.filters.html?highlight=local%20otsu
相关问题 更多 >
编程相关推荐