[Scipy-tickets] [SciPy] #1282: -1 result of eroding 0s

SciPy Trac scipy-tickets@scipy....
Wed Oct 13 18:31:59 CDT 2010


#1282: -1 result of eroding 0s
----------------------------+-----------------------------------------------
  Reporter:  bshanks        |       Owner:  somebody
      Type:  defect         |      Status:  closed  
  Priority:  normal         |   Milestone:  0.9.0   
 Component:  scipy.ndimage  |     Version:  0.7.0   
Resolution:  invalid        |    Keywords:          
----------------------------+-----------------------------------------------
Changes (by warren.weckesser):

  * status:  new => closed
  * resolution:  => invalid


Comment:

 It is working as designed.  Take a look here:

 http://en.wikipedia.org/wiki/Mathematical_morphology#Grayscale_morphology

 You've given a "structure element" with values; these values are
 subtracted from the values in the image, and then the minimum over the
 kernel (i.e. structure element) is taken.  The behavior that you expected
 is obtained by using a "flat" structure element.   This is the default if
 you simply give the size of the structure element:

 {{{
 In [6]: import numpy as np

 In [7]: from scipy.ndimage.morphology import grey_erosion

 In [8]: grey_erosion(np.zeros((6,6)), size=(5,5))
 Out[8]:
 array([[ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.]])

 In [9]: a = np.zeros((10,10))

 In [10]: a[1:-1,2:] = 1

 In [11]: a
 Out[11]:
 array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

 In [12]: grey_erosion(a, size=(3,3))
 Out[12]:
 array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
 }}}

-- 
Ticket URL: <http://projects.scipy.org/scipy/ticket/1282#comment:2>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.


More information about the Scipy-tickets mailing list