In mathematics, the Lehmer mean of a tuple of positive real numbers, named after Derrick Henry Lehmer, is defined as:
The weighted Lehmer mean with respect to a tuple of positive weights is defined as:
The Lehmer mean is an alternative to power means
for interpolating between minimum and maximum via arithmetic mean and harmonic mean.
The derivative of is non-negative
thus this function is monotonic and the inequality
The derivative of the weighted Lehmer mean is:
Like a power mean, a Lehmer mean serves a non-linear moving average which is shifted towards small signal values for small and emphasizes big signal values for big . Given an efficient implementation of a moving arithmetic mean called
smooth you can implement a moving Lehmer mean according to the following Haskell code.
lehmerSmooth :: Floating a => ([a] -> [a]) -> a -> [a] -> [a]
lehmerSmooth smooth p xs =
(smooth (map (**p) xs))
(smooth (map (**(p-1)) xs))
Gonzalez and Woods call this a "contraharmonic mean filter" described for varying values of p (however, as above, the contraharmonic mean can refer to the specific case ). Their convention is to substitute p with the order of the filter Q:
Q=0 is the arithmetic mean. Positive Q can reduce pepper noise and negative Q can reduce salt noise.