In mathematics, the Lehmer mean of a tuple of positive real numbers, named after Derrick Henry Lehmer, [1] 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
holds.
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 =
zipWith (/)
(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. [2]
In mathematics, the Lehmer mean of a tuple of positive real numbers, named after Derrick Henry Lehmer, [1] 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
holds.
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 =
zipWith (/)
(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. [2]