[Numpy-discussion] adaptive thresholding: get adacent cells for each pixel

Alex Liberzon alex.liberzon at gmail.com
Sat Jun 10 13:19:15 EDT 2006

Not sure, but my Google desktop search of "medfilt" (the name of
Matlab function) brought me to:

info_signal.py - N-dimensional order filter. medfilt -N-dimensional
median filter

If it's true, then it is the 2D median filter.

Regarding the neighbouring cells, I found the iterator on 2D ranges on
the O'Reily Cookbook by Simon Wittber very useful for my PyPIV
(Particle Image Velocimetry, which works by correlation of 2D blocks
of two successive images):


def blocks(size, box=(1,1)):
    Iterate over a 2D range in 2D increments.
    Returns a 4 element tuple of top left and bottom right coordinates.
    box = list(box)
    pos = [0,0]
    yield tuple(pos + box)
    while True:
        if pos[0] >= size[0]-box[0]:
            pos[0] = 0
            pos[1] += box[1]
            if pos[1] >= size[1]:
                raise StopIteration
            pos[0] += box[0]
        topleft = pos
        bottomright = [min(x[1]+x[0],x[2]) for x in zip(pos,box,size)]
        yield tuple(topleft + bottomright)

if __name__ == "__main__":
    for c in blocks((100,100),(99,10)):
        print c
    for c in blocks((10,10)):
        print c


More information about the NumPy-Discussion mailing list