![Page 1: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/1.jpg)
Median Filteringis Equivalentto Sorting
Jukka Suomela · Aalto UniversityTU Berlin · 6 August 2014
![Page 2: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/2.jpg)
Median filter
a.k.a. sliding window median, moving median, running median, rolling median, median smoothing
…input: n elementswindow size: koutput: n−k+1 medians
![Page 3: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/3.jpg)
Median filter• In numerous scientific computing systems:
• R: “runmed” • Mathematica: “MedianFilter” • Matlab: “medfilt1” • Octave: “medfilt1” (signal package) • SciPy: “medfilt1” (scipy.signal module)
![Page 4: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/4.jpg)
Median filter• In numerous scientific computing systems:
• R, Mathematica, Matlab, Octave, SciPy …
• 2D version in image processing: • Photoshop: “Median” filter • Gimp: “Despeckle” filter
![Page 5: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/5.jpg)
![Page 6: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/6.jpg)
Prior work• Trivial:
• compute each median separately • O(nk)
• “Streaming approach”: • maintain a sliding window • O(n log k)
n: input size k: window size
![Page 7: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/7.jpg)
Prior work• “Streaming approach”
• Sliding window data structure, supports operations:
• “find median” • “remove oldest and add new element”
n: input size k: window size
![Page 8: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/8.jpg)
Prior work• Sliding window data structures
for B-bit integers: • histogram with 2B buckets • with linear scanning: O(n2B) • with binary trees: O(nB) • with van Emde Boas trees: O(n log B)
n: input size k: window size
![Page 9: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/9.jpg)
Prior work• General sliding window data structures:
• maxheap-minheap pair: O(n log k) • binary search trees: O(n log k) • finger trees: O(n log k) • doubly-linked lists: O(nk) • sorted arrays: O(nk)
n: input size k: window size
![Page 10: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/10.jpg)
Prior work• Maxheap-minheap pair
• Astola–Campbell (1989)Juhola et al. (1991) Härdle–Steiger (1995) …
• Fast in practice
• Fast in theory, O(n log k) comparisons
n: input size k: window size
![Page 11: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/11.jpg)
Lower bounds• For comparison-based algorithms:
O(n log k) is optimal • Juhola et al. (1991)
Krizanc et al. (2005) …
• Reduction from sorting
n: input size k: window size
![Page 12: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/12.jpg)
State of the art• O(n log k) comparisons is optimal
• known since 1990s • nothing more to do here,
case closed, problem solved
n: input size k: window size
![Page 13: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/13.jpg)
State of the art• O(n log k) comparisons is optimal
• But we also know that O(n log n) comparisons is optimal for sorting in the worst case,yet this is not the full story!
• integer sorting, adaptive sorting,cache-efficient sorting, GPU sorting …
n: input size k: window size
![Page 14: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/14.jpg)
State of the art• And what about implementations…
• R: ≈ O(n log k) • Mathematica: ≈ O(nk) • Matlab: ≈ O(nk) • Octave: ≈ O(nk) • SciPy: ≈ O(nk)
n: input size k: window size
}why?!didn’t we do betteralready in 1980s?
![Page 15: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/15.jpg)
Key idea• Prior work:
• “median filtering is as hard as sorting”
• Could we prove a matching upper bound: • “median filtering is as easy as sorting” ??
![Page 16: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/16.jpg)
Key idea• If we could show that:
• “median filtering is equivalent to sorting”
• Then we could apply everything that we know about sorting here!
• adaptive sorting → adaptive median filter • integer sorting → integer median filter …
![Page 17: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/17.jpg)
Key idea• If we could show that:
• “median filtering is equivalent to sorting”
• Then we could apply everything that we know about sorting here!
• all scientific computing packages know how to sort efficiently
![Page 18: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/18.jpg)
Sorting-basedlower bound• Piecewise sorting: sort n/k blocks of size k
• with comparison sort: O(n log k) optimal
sort sort sort2 6934 857 1
5 8643 972 1
![Page 19: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/19.jpg)
Sorting-basedlower bound
2 6934 857 1
5 8643 972 1
++− − 7 52 ++− − 341 ++− − 869
57 552 341 1 431 86 6 99
median filter
pad with ±∞
![Page 20: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/20.jpg)
Sorting-basedlower bound• Piecewise sorting: sort n/k blocks of size k
• with comparison sort: O(n log k) optimal
• Can be solved with O(1) median filter operations
• and some preprocessing & postprocessing
n: input size k: window size
![Page 21: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/21.jpg)
Sorting-basedmedian filter• Piecewise sorting: sort n/k blocks of size k
• Prior work: • median filter ≈ as hard as piecewise sorting
• This work: • median filter ≈ as easy as piecewise sorting
n: input size k: window size
![Page 22: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/22.jpg)
Sorting-basedmedian filter• High-level idea:
• preprocessing = piecewise sorting • median filtering now possible in linear time!
• Simple and efficient • works very well also in practice
![Page 23: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/23.jpg)
Sorting-basedmedian filter• Prior work:
• median filtering ≈ data structure problem • how to maintain sliding window efficiently?
• This work: • median filtering ≈ algorithm problem • how to preprocess data?
![Page 24: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/24.jpg)
Sorting-based median filter• How does piecewise sorting help?
We only know one median per block…
5 0 3 8 79 2 4 1 6
1 2 4 6 9 0 3 5 7 8
4 ? ? ? ? 5
input
outputsorted blocks
![Page 25: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/25.jpg)
Sorting-based median filter• Basic idea: maintain sorted doubly-linked lists
for each block
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 26: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/26.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
0 3 5 7 8
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
![Page 27: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/27.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 28: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/28.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 29: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/29.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 30: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/30.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 31: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/31.jpg)
Sorting-based median filter• Sliding window = two sorted linked lists
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 32: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/32.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
0 3 5 7 8
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
![Page 33: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/33.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 34: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/34.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 35: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/35.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 36: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/36.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 37: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/37.jpg)
Sorting-based median filter• Maintain “median pointers” for each list
(one of these is the median)
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 38: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/38.jpg)
Sorting-based median filter• Median pointers:
• straightforward in O(1) time per element • cf. merge sort
• Sorted linked lists: • how to insert & delete in O(1) time?
![Page 39: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/39.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
0 3 5 7 8
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
![Page 40: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/40.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 41: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/41.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 42: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/42.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 43: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/43.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 44: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/44.jpg)
Sorting-based median filter• Deletions are easy if we know what to delete:
start with a sorted list + pointers to it
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 45: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/45.jpg)
Sorting-based median filter• Asymmetry:
• deletions from sorted linked lists easy • insertions to sorted linked lists hard
• Reverse time! • insertions become deletions, easy
![Page 46: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/46.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 47: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/47.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 48: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/48.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 49: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/49.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 50: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/50.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 51: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/51.jpg)
Sorting-based median filter• Reverse time: insertions become deletions,
easy to do if we start with a sorted list
0 3 5 7 8
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
![Page 52: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/52.jpg)
Sorting-based median filter• Reverse time
• How does this help? • insertions become deletions, nice • deletions become insertions, bad
• Solution: reverse time again
![Page 53: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/53.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
0 3 5 7 8
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
![Page 54: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/54.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 55: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/55.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 56: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/56.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 57: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/57.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 58: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/58.jpg)
Sorting-based median filter• Reverse time again:
insert = undo deletion
9 2 4 1 6
1 2 4 6 9
5 0 3 8 7
0 3 5 7 8
![Page 59: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/59.jpg)
Sorting-based median filter• Shrinking list: start with a sorted list
• process one element = one deletion
• Growing list: start with a sorted list • first delete each element in reverse order • process one element = undo one deletion
![Page 60: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/60.jpg)
Undo deletions from doubly-linked lists• Knuth (2000): “dancing links”
• Delete: prev[next[i]] ← prev[i] next[prev[i]] ← next[i]
• Undo: prev[next[i]] ← i next[prev[i]] ← i
undo delete
![Page 61: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/61.jpg)
Sorting-based median filter• Preprocessing: piecewise sorting
• Sliding window = sorted doubly-linked lists • shrinking list: easy • growing list: reverse time twice • insert = undo deletion,
easy with dancing links
![Page 62: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/62.jpg)
Sorting-based median filter• Optimal algorithm for any input distribution,
for almost any model of computing • just use optimal sorting algorithm
for this setting • then O(n) time postprocessing suffices
• Matching lower bound
![Page 63: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/63.jpg)
Sorting-based median filter• Easy to implement
• Very fast
![Page 64: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/64.jpg)
def create_array(n): return [None] * n !def sort_block(alpha): pairs = [(alpha[i], i) for i in range(len(alpha))] return [i for v,i in sorted(pairs)] !class Block: def __init__(self, h, alpha): self.k = len(alpha) self.alpha = alpha self.pi = sort_block(alpha) self.prev = create_array(self.k + 1) self.next = create_array(self.k + 1) self.tail = self.k self.init_links() self.m = self.pi[h] self.s = h ! def init_links(self): p = self.tail for i in range(self.k): q = self.pi[i] self.next[p] = q self.prev[q] = p p = q self.next[p] = self.tail self.prev[self.tail] = p ! def unwind(self): for i in range(self.k-1, -1, -1): self.next[self.prev[i]] = self.next[i] self.prev[self.next[i]] = self.prev[i] self.m = self.tail self.s = 0 ! def delete(self, i): self.next[self.prev[i]] = self.next[i] self.prev[self.next[i]] = self.prev[i] if self.is_small(i): self.s -= 1 else: if self.m == i: self.m = self.next[self.m] if self.s > 0: self.m = self.prev[self.m] self.s -= 1
! def undelete(self, i): self.next[self.prev[i]] = i self.prev[self.next[i]] = i if self.is_small(i): self.m = self.prev[self.m] ! def advance(self): self.m = self.next[self.m] self.s += 1 ! def at_end(self): return self.m == self.tail ! def peek(self): return float('Inf') if self.at_end() \ else self.alpha[self.m] ! def get_pair(self, i): return (self.alpha[i], i) ! def is_small(self, i): return self.at_end() or \ self.get_pair(i) < self.get_pair(self.m) !def sort_median(h, b, x): k = 2 * h + 1 B = Block(h, x[0:k]) y = [] y.append(B.peek()) for j in range(1, b): A = B B = Block(h, x[j*k:(j+1)*k]) B.unwind() for i in range(k): A.delete(i) B.undelete(i) if A.s + B.s < h: if A.peek() <= B.peek(): A.advance() else: B.advance() y.append(min(A.peek(), B.peek())) return y
complete Python implementation
![Page 65: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/65.jpg)
100 101 102 103 104
half-window size h
10�2
10�1
100
101
102
103time(secon
ds)
bh = 105
Mathematica
SciPy
Matlab
R, Stuetzle
Octave
MoveMedian
SortMedian.py
TreeMedian
R, Turlach
HeapMedian
SortMedian
![Page 66: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/66.jpg)
100 101 102 103 104 105 106 107 108
half-window size h
0
50
100
150
200
time(seconds)
bh = 108, all generators
HeapMedian
SortMedian
![Page 67: Median Filtering is Equivalent to Sorting › doc › berlin-2014-08-06.pdf · 8/6/2014 · • In numerous scientific computing systems: ... Median filter • In numerous scientific](https://reader030.vdocuments.net/reader030/viewer/2022041110/5f0fe1017e708231d44656a7/html5/thumbnails/67.jpg)
Conclusions• Median filtering ≈ piecewise sorting
• In theory and in practice
• arXiv:1406.1717