namedFilter.m 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. % KERNEL = NAMED_FILTER(NAME)
  2. %
  3. % Some standard 1D filter kernels. These are scaled such that
  4. % their L2-norm is 1.0.
  5. %
  6. % binomN - binomial coefficient filter of order N-1
  7. % haar: - Haar wavelet.
  8. % qmf8, qmf12, qmf16 - Symmetric Quadrature Mirror Filters [Johnston80]
  9. % daub2,daub3,daub4 - Daubechies wavelet [Daubechies88].
  10. % qmf5, qmf9, qmf13: - Symmetric Quadrature Mirror Filters [Simoncelli88,Simoncelli90]
  11. %
  12. % See bottom of file for full citations.
  13. % Eero Simoncelli, 6/96.
  14. function [kernel] = named_filter(name)
  15. if strcmp(name(1:min(5,size(name,2))), 'binom')
  16. kernel = sqrt(2) * binomialFilter(str2num(name(6:size(name,2))));
  17. elseif strcmp(name,'qmf5')
  18. kernel = [-0.076103 0.3535534 0.8593118 0.3535534 -0.076103]';
  19. elseif strcmp(name,'qmf9')
  20. kernel = [0.02807382 -0.060944743 -0.073386624 0.41472545 0.7973934 ...
  21. 0.41472545 -0.073386624 -0.060944743 0.02807382]';
  22. elseif strcmp(name,'qmf13')
  23. kernel = [-0.014556438 0.021651438 0.039045125 -0.09800052 ...
  24. -0.057827797 0.42995453 0.7737113 0.42995453 -0.057827797 ...
  25. -0.09800052 0.039045125 0.021651438 -0.014556438]';
  26. elseif strcmp(name,'qmf8')
  27. kernel = sqrt(2) * [0.00938715 -0.07065183 0.06942827 0.4899808 ...
  28. 0.4899808 0.06942827 -0.07065183 0.00938715 ]';
  29. elseif strcmp(name,'qmf12')
  30. kernel = sqrt(2) * [-0.003809699 0.01885659 -0.002710326 -0.08469594 ...
  31. 0.08846992 0.4843894 0.4843894 0.08846992 -0.08469594 -0.002710326 ...
  32. 0.01885659 -0.003809699 ]';
  33. elseif strcmp(name,'qmf16')
  34. kernel = sqrt(2) * [0.001050167 -0.005054526 -0.002589756 0.0276414 -0.009666376 ...
  35. -0.09039223 0.09779817 0.4810284 0.4810284 0.09779817 -0.09039223 -0.009666376 ...
  36. 0.0276414 -0.002589756 -0.005054526 0.001050167 ]';
  37. elseif strcmp(name,'haar')
  38. kernel = [1 1]' / sqrt(2);
  39. elseif strcmp(name,'daub2')
  40. kernel = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551]';
  41. elseif strcmp(name,'daub3')
  42. kernel = [0.332670552950 0.806891509311 0.459877502118 -0.135011020010 ...
  43. -0.085441273882 0.035226291882]';
  44. elseif strcmp(name,'daub4')
  45. kernel = [0.230377813309 0.714846570553 0.630880767930 -0.027983769417 ...
  46. -0.187034811719 0.030841381836 0.032883011667 -0.010597401785]';
  47. elseif strcmp(name,'gauss5') % for backward-compatibility
  48. kernel = sqrt(2) * [0.0625 0.25 0.375 0.25 0.0625]';
  49. elseif strcmp(name,'gauss3') % for backward-compatibility
  50. kernel = sqrt(2) * [0.25 0.5 0.25]';
  51. else
  52. error(sprintf('Bad filter name: %s\n',name));
  53. end
  54. % [Johnston80] - J D Johnston, "A filter family designed for use in quadrature
  55. % mirror filter banks", Proc. ICASSP, pp 291-294, 1980.
  56. %
  57. % [Daubechies88] - I Daubechies, "Orthonormal bases of compactly supported wavelets",
  58. % Commun. Pure Appl. Math, vol. 42, pp 909-996, 1988.
  59. %
  60. % [Simoncelli88] - E P Simoncelli, "Orthogonal sub-band image transforms",
  61. % PhD Thesis, MIT Dept. of Elec. Eng. and Comp. Sci. May 1988.
  62. % Also available as: MIT Media Laboratory Vision and Modeling Technical
  63. % Report #100.
  64. %
  65. % [Simoncelli90] - E P Simoncelli and E H Adelson, "Subband image coding",
  66. % Subband Transforms, chapter 4, ed. John W Woods, Kluwer Academic
  67. % Publishers, Norwell, MA, 1990, pp 143--192.