[SciPy-User] moving window (2D) correlation coefficient
Vincent Schut
schut@sarvision...
Wed Feb 10 09:45:41 CST 2010
Hi,
I need to calculate the correlation coefficient of a (simultaneously)
moving window over 2 images, such that the resulting pixel x,y (center
of the window) is the corrcoef((a 5x5 window around x,y for image A), (a
5x5 window around x,y for image B)).
Currently, I just loop over y, x, and then call corrcoef for each x,y
window. Would there be a better way, other than converting the loop to
cython?
For clarity (or not), the relevant part from my code:
for y in range(d500shape[2]):
for x in range(d500shape[3]):
if valid500[d,y,x]:
window = spectral500Bordered[d,:,y:y+5, x:x+5].reshape(7, -1)
for b in range(5):
nonzeroMask = (window[0] > 0)
b01corr[0,b,y,x] =
numpy.corrcoef(window[0][nonzeroMask], window[b+2][nonzeroMask])[0,1]
b01corr[1,b,y,x] =
numpy.corrcoef(window[1][nonzeroMask], window[b+2][nonzeroMask])[0,1]
forget the 'if valid500' and 'nonzeroMask', those are to prevent
calculating pixels that don't need to be calculated, and to feed only
valid pixels from the window into corrcoef
spectral500Bordered is essentially a [d dates, 7 images, ysize, xsize]
array. I work per date (d), then calculate the corrcoef for images[0]
versus images[2:], and for images[1] versus images[2:]
Thanks,
Vincent.
More information about the SciPy-User
mailing list