【问题标题】:Remove points which contains pixels fewer than (N)删除包含少于 (N) 个像素的点
【发布时间】:2013-03-07 23:57:59
【问题描述】:

我尝试了PIL 中的几乎所有过滤器,但都失败了。 scipy 的 numpy 中是否有任何功能可以消除噪音? 像 Matlab() 中的 Bwareaopen() 吗?

例如:

PS:如果有办法把字母填成黑色,我将不胜感激

【问题讨论】:

    标签: python image-processing numpy filter scipy


    【解决方案1】:

    Numpy/Scipy 可以像 Matlab 一样进行形态学运算。

    参见scipy.ndimage.morphology,其中包含binary_opening(),相当于Matlab 的bwareaopen()

    【讨论】:

    • 谢谢,我试试看。
    • binary_opening 好像做了一个结构性开口,和bwareaopen 做的一个区域开口不一样。
    【解决方案2】:

    Numpy/Scipy 解决方案:scipy.ndimage.morphology.binary_opening。更强大的解决方案:使用 scikits-image。

    from skimage import morphology
    cleaned = morphology.remove_small_objects(YOUR_IMAGE, min_size=64, connectivity=2)
    

    http://scikit-image.org/docs/0.9.x/api/skimage.morphology.html#remove-small-objects

    【讨论】:

      【解决方案3】:

      我不认为这是你想要的,但这有效(使用 Opencv(使用 Numpy)):

      import cv2
      
      # load image
      fname = 'Myimage.jpg'
      im = cv2.imread(fname,cv2.COLOR_RGB2GRAY)
      # blur image
      im = cv2.blur(im,(4,4))
      # apply a threshold
      im = cv2.threshold(im, 175 , 250, cv2.THRESH_BINARY)
      im = im[1]
      # show image
      cv2.imshow('',im)
      cv2.waitKey(0)
      

      输出(窗口中的图像):

      您可以使用cv2.imwrite保存图像

      【讨论】:

      • +1 用于演示,但为此使用 openCV 似乎很奇怪; OP 要求提供 numpy/scipy,blurring 和阈值处理完全在这些库的能力范围内。
      • @Junuxx 我知道,但最初我也是这么说的,但他似乎对此没有意见......另外,我可以将该链接添加到我的答案中吗??
      • opencv 没问题,numpy/scipy 会更好。再次感谢您
      猜你喜欢
      • 2011-07-29
      • 2018-06-14
      • 2016-07-10
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多