medians

This plugin implements several median-type filters



Written by Marko Cebokli,  jan 2013,  and released under GNU GPL



RELEASE NOTES

** feb 2013
Version 0.1
"pre-alpha" (throw it out and see what happens... :-)



INTRODUCTION

Median is a quite popular non-linear filter in image processing.
Most often it is used to remove impulsive noise, like
"salt & pepper" noise, "dead" and "hot" pixels, dirt on film, etc.
This is because it behaves kind of "inversely" compared to
linear denoisers. The more a bad pixel stands out from the
surrounding area, the bigger residual it will leave with a linear
filter - but the more probably it will be eliminated by the median.

The down side is that the median operation is quite slow. As an
order-statistic filter, it is similar to sorting, that must be
done for each pixel.
So, I searched the web for fast median algorithms. For the small
medians, I use [1], with some small modifications for a further
slight improvement in speed.
For the "Variable size" median I use [2].
I have implemented the compound filters (ArceBI, ML3D, ML3dEX)
according to the formulas given in [3].
For more info on median filtering see
http://en.wikipedia.org/wiki/Median_filter



IMPLEMENTED ALGORITHMS

Cross5:
Median of the pixel with its top, bottom, left and right neighbor.

Square3x3:
Median of the pixel with the surrounding 8 pixels. (3x3 box)

Bilevel:
First, make cross5 median, then make median of the pixel with its
four diagonal neighbors, and finally take the median of the pixel
and the two previously calculated medians.
Slightly better preserves detail than the simple medians above.

Diamond3x3:
Takes median of the pixel with 12 neighboring pixels arranged in a
diamond pattern.

Square5x5:
Median of the pixel with the 5x5 surrounding box.

Temp3:
Temporal only median of three frames. Can be used to reduce
single frame time-impulsive noise like photoflash.
Delays the video by 1 frame.

Temp5:
Temporal only median of five frames. Can be used to reduce
double frame time-impulsive noise, but the artifacts on fast moving
objects are stronger than with temp3.
Delays the video by 2 frames.

ArceBI:
Spatio-temporal multilevel median, as described by Arce. See [3].
Delays the video by 1 frame.

ML3D:
Spatio-temporal multilevel median, as described by Alp. See [3].
Delays the video by 1 frame.

ML3dEX:
Spatio-temporal multilevel median. Further development of ML3D
by Kokaram, see [3].
Delays the video by 1 frame.

VarSize:
Simple spatial only median in a user selected size square box
around each pixel.
The effect could be described as "quasi edge preserving, corner
rounding, small stuff eliminator".
Or maybe just an "artsy blur".



PARAMETERS:

Type:
selects one of the eleven algorithms

Size:
Only active when "VarSize" type is selected. Determines the
size of the square area over which the median is taken.



REFERENCES

[1] http://ndevilla.free.fr/median/median/src/optmed.c

[2]  Simon Perreault, Patrick Hebert: Median filtering in
  constant time
  http://nomis80.org/ctmf.pdf
  http://nomis80.org/ctmf.html

[3]  Anil Christopher Kokaram: Motion Picture Restoration
  phd dissertation
