Schnell Median-Filter in C / C++ für `UINT16` 2D-Array

Weiß jemand eine schnelle median-filter-Algorithmus für 16-bit (unsigned short) arrays in c++?

http://nomis80.org/ctmf.html

Dieser scheint Recht vielversprechend, aber es scheint nur zu arbeiten mit byte-arrays. Weiß jemand, wie es zu ändern, um die Arbeit mit shorts oder einen alternativen Algorithmus?

  • Haben Sie versucht, std::nth_element? Es ist O(n) gegenüber O(n log n) für ein quicksort.
  • Sie wollen nicht, dies zu ändern-Algorithmus, um es mit kurzarbeit, da die Laufzeit pro pixel ist proportional zu 2^n, wobei n die Anzahl der bits, die in der Datentyp verwendet wird. 256 8-bit-arrays ist schon schmerzhaft genug, Sie nicht wollen, zu gehen bis 65536 für 16-bit-arrays. Siehe meine Antwort für einen schnelleren Algorithmus, obwohl es ist O(log r) pro pixel anstelle von O(1).
  • Wenn Sie nicht wollen, zu tun, median-Filterung, die ist, was Sie tun, zum Beispiel in der Bildverarbeitung, wo Sie einen Mittelwert für jeden pixel, sondern wollen einfach nur, um eine zu finden, median, @smoken Kommentar relevant ist.
InformationsquelleAutor user1359341 | 2012-04-26
Schreibe einen Kommentar