# Re: STANDARD DEVIATON

• Subject: Re: STANDARD DEVIATON
• From: Struan Gray <struan.gray(at)sljus.lu.se>
• Date: 1 Aug 2000 12:56:06 GMT
• Distribution: world
• Newsgroups: comp.lang.idl-pvwave
• Organization: This line intentionally left bland
• References: <3986B6E9.48105613@met.ed.ac.uk>
• Xref: news.doit.wisc.edu comp.lang.idl-pvwave:20571

```Ben Marriage, ben@met.ed.ac.uk writes:

> I want to calculate the standard deviation of a 3x3
> pixel area for each element of a satellite image
>
> Does anyone know of a simple and elegant (read "quick")
> method of doing this without using loops?

You can use a box smooth to do the local averaging and
renormalisation, with variable widths if needed.  If you use the fact
that the s.d. is the square root of the local variance, you'll need to
smooth twice: once when calulating a local mean, and again when
creating the s.d. array.

function imageSD, image

localmean = smooth(float(image), 3, /edge_truncate)
localsd = sqrt((float(image)-temporary(localmean))^^2)
localsd = smooth(temporary(localsd), 3, /edge_truncate)

return, localsd

end

You can set different edge-effects and averaging widths by passing
different parameters to the box smooth function.  The box smooth
normalises by the square of the smoothing width, so if you want to
treat the image as a estimate of a population you'll have to
renormalise - but this is pretty unlikely with image data.

Struan

```