[Numpy-discussion] adaptive thresholding: get adacent cells for each pixel (original) (raw)

Filip Wasilewski filip at ftv.pl
Sat Jun 10 04:13:42 EDT 2006


Hi,

I'm just starting with numpy (via scipy) and I'm wanting to perform adaptive thresholding (http://www.cee.hw.ac.uk/hipr/html/adpthrsh.html) on an image. Basically that means that I need to get a threshold for each pixel by examining the pixels around it. In numpy this translates to finding the adjacent cells for each cell (not including the value of the cell we are examining) and getting the mean, or median of those cells.

I've written something that works, but is terribly slow. How would someone with more experience get the adjacent cells for each cell minus the cell being examined?

You can get the mean value of surrounding cells by filtering.

import numpy from scipy import signal im = numpy.ones((10,10), dtype='d') * range(10) fi = numpy.ones((3,3), dtype='d') / 8 fi[1,1]=0 print fi #[[ 0.125 0.125 0.125]

[ 0.125 0. 0.125]

[ 0.125 0.125 0.125]]

signal.convolve2d(im, fi, mode='same', boundary='symm') # or correlate2d in this case

Also check help(signal.convolve2d) for information on various parameters this function takes.

cheers, fw



More information about the NumPy-Discussion mailing list