[GRASS-dev] r.neighbors modification
glynn at gclements.plus.com
Thu Nov 23 23:12:52 EST 2006
> > > > r.mfilter ?
> > >
> > > that looks good, but as far as I understood it, it is not possible
> > > to conduct statistics on this filter (beside divisor), is it?
> > I don't think that you can compute anything except for sum and mean
> > using r.mfilter.
By "anything", I mean that these are the only "standard" aggregates
(those offered by r.neighbors) which can be computed.
> is this an inherent limitation of the method, or has it just not been
> coded yet?
The former. The result is just a weighted sum of the cells in the
window, so you are limited to linear functions.
An all-ones matrix with a divisor of one gives the sum, while an
all-ones matrix with a divisor equal to the number of ones gives the
All of the other standard aggregates have some kind of non-linearity.
Variance and standard deviation can be implemented using two passes of
each of r.mfilter and r.mapcalc, e.g.:
r.mfilter input=foo output=foo.sum filter=sum.txt
r.mapcalc "foo.sq = foo^2"
r.mfilter input=foo.sq output=foo.sumsq filter=sum.txt
r.mapcalc "foo.var = (foo.sumsq - foo.sum^2/$N)/$N ; foo.sdev = sqrt(foo.var)"
> it would be nice to have a powerful r.mfilter (not as grand as
> r.mapcalc, but more customizable than just sum+mean.
There isn't really any "obvious" intermediate level between the linear
filters which are already available in r.mfilter and the arbitrary
expressions offered by r.mapcalc.
E.g. I can't think of any enhancement which would allow you to
implement median/minimum/maximum filters.
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev