median.c 767 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // See LICENSE for license details.
  2. //**************************************************************************
  3. // Median filter (c version)
  4. //--------------------------------------------------------------------------
  5. void median( int n, int input[], int results[] )
  6. {
  7. int A, B, C, i;
  8. // Zero the ends
  9. results[0] = 0;
  10. results[n-1] = 0;
  11. // Do the filter
  12. for ( i = 1; i < (n-1); i++ ) {
  13. A = input[i-1];
  14. B = input[i];
  15. C = input[i+1];
  16. if ( A < B ) {
  17. if ( B < C )
  18. results[i] = B;
  19. else if ( C < A )
  20. results[i] = A;
  21. else
  22. results[i] = C;
  23. }
  24. else {
  25. if ( A < C )
  26. results[i] = A;
  27. else if ( C < B )
  28. results[i] = B;
  29. else
  30. results[i] = C;
  31. }
  32. }
  33. }