[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Re: STANDARD DEVIATON*From*: Alex Schuster <alex(at)pet.mpin-koeln.mpg.de>*Date*: Tue, 01 Aug 2000 14:40:32 +0200*Newsgroups*: comp.lang.idl-pvwave*Organization*: Regional Computing Center, University of Cologne*References*: <3986B6E9.48105613@met.ed.ac.uk>*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:20570

Ben Marriage wrote: > I want to calculate the standard deviation of a 3x3 pixel area for each > element of a satellite image (5000x2000 pixels). At the moment I use for > loops to scan through the image and then use the built-in IDL standard > deviation routines. I've tried to speed this up with the use of > convolution and whatnot but never seemed to solve the problem. Does > anyone know of a simple and elegant (read "quick") method of doing this > without using loops? Without loops yes, elegant, well yes of course, but quick I don't know? Our fastest SUN takes 8.5 seconds for a dist( 5000, 2000 ). How fast was your routine using convolution, and how fast should it be? For some 3x3 pixels x_i (and a mean of x_mean), the standard deviation is s = 1/9 * sqrt( sum( (x_i-x_mean)^2 ) ). img=img-smooth(img,3) does the inner subtraction of the x_means, img=img^2 squares each element, convol( img, k ) sums them all up Then qrt(img)/9 gives the result. function foo, img, width return, sqrt( convol( ( img - smooth( img, width ) )^2, $ fltarr( width, width ) + 1.0 ) ) / width^2 end Alex -- Alex Schuster Wonko@weird.cologne.de PGP Key available alex@pet.mpin-koeln.mpg.de

**Follow-Ups**:**Re: STANDARD DEVIATON***From:*Benno Puetz

**References**:**STANDARD DEVIATON***From:*Ben Marriage

- Prev by Date:
**STANDARD DEVIATON** - Next by Date:
**Re: STANDARD DEVIATON** - Prev by thread:
**STANDARD DEVIATON** - Next by thread:
**Re: STANDARD DEVIATON** - Index(es):