【问题标题】:Replace numbers below threshold # in numpy array with zeroes用零替换numpy数组中低于阈值#的数字
【发布时间】:2015-10-29 22:07:06
【问题描述】:

所以我有一个非常大的 Numpy 数组 (2560x1920)。它实际上来自一张灰度图片,其中每个像素都有一个从 0 到 1 的数字,表示其亮度。

我正在尝试用零替换低于阈值(例如 0.5)的所有值。 这可能是一项简单的任务,但我是 Numpy 的初学者,我已经四处搜索,但仍然无法弄清楚。

这是我尝试过的,我知道它错了......

for x in np.nditer(Image):
    if x < .5:
        x == 0

plt.imshow(Image, cmap=plt.cm.gray)
plt.show()

它只是输出普通图像而不改变任何东西。

数组也看起来像这样(明显缩写):

[[ 0.24565263  0.24565263  0.24902149 ...,  0.27528678  0.27265316
   0.27606536]
 [ 0.24565263  0.24565263  0.24902149 ...,  0.27870309  0.27606536
   0.27948296]
 [ 0.24228902  0.24228902  0.24565263 ...,  0.28212482  0.27948296
   0.282906  ]
 ..., 
 [ 0.29706944  0.29706944  0.29706944 ...,  0.17470162  0.17144636
   0.17144636]
 [ 0.29362457  0.29362457  0.29362457 ...,  0.17144636  0.16495056
   0.16170998]
 [ 0.2901852   0.2901852   0.2901852  ...,  0.16819602  0.16170998
   0.15847427]]

【问题讨论】:

    标签: python python-3.x numpy


    【解决方案1】:

    numpy 的内置索引可用于替换元素。可以这样做:

    Image[Image<0.5] = 0
    

    【讨论】:

      【解决方案2】:

      我带着建议从未来回来了。

      上述方法非常适用于简单的全局阈值。 我发布此答案是为了警告说,像这样的非自适应阈值可能过于幼稚,具体取决于您的应用程序。

      如果不适应图像的平均亮度或其他质量,当您分析在不同条件下拍摄的多张照片时,您的输出将不一致。

      对此有更准确的方法,但它们稍微复杂一些。 Scikit-Image 让这一切变得简单。

      最流行的方法之一是 Otsu 的(我不能说哪种方法对每种情况最准确,我还没有进行足够的研究)。 https://en.wikipedia.org/wiki/Otsu%27s_method

      Scikit-Image 在其模块中内置了此算法和其他一些算法。

      使用这种方法,上述问题的答案就这么简单:

      import matplotlib.pyplot as plt
      from skimage.filters import threshold_otsu
      
      thresh = threshold_otsu(Image)
      binary = Image > thresh
      
      plt.imshow(Image, cmap=plt.cm.gray)
      plt.show()
      

      在此处阅读示例: http://scikit-image.org/docs/dev/auto_examples/plot_otsu.html

      关于这里的用法: http://scikit-image.org/docs/dev/api/skimage.filters.html?highlight=local%20otsu

      【讨论】:

        猜你喜欢
        • 2013-06-08
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2013-12-21
        • 2015-03-02
        • 1970-01-01
        • 2020-11-21
        • 2017-07-10
        相关资源
        最近更新 更多