From: Filip W. <fi...@ft...> - 2006-06-10 08:15:42
|
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 |