wpyrBand.m 873 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. % RES = wpyrBand(PYR, INDICES, LEVEL, BAND)
  2. %
  3. % Access a subband from a separable QMF/wavelet pyramid.
  4. %
  5. % LEVEL (optional, default=1) indicates the scale (finest = 1,
  6. % coarsest = wpyrHt(INDICES)).
  7. %
  8. % BAND (optional, default=1) indicates which subband (1=horizontal,
  9. % 2=vertical, 3=diagonal).
  10. % Eero Simoncelli, 6/96.
  11. function im = wpyrBand(pyr,pind,level,band)
  12. if (exist('level') ~= 1)
  13. level = 1;
  14. end
  15. if (exist('band') ~= 1)
  16. band = 1;
  17. end
  18. if ((pind(1,1) == 1) | (pind(1,2) ==1))
  19. nbands = 1;
  20. else
  21. nbands = 3;
  22. end
  23. if ((band > nbands) | (band < 1))
  24. error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands));
  25. end
  26. maxLev = wpyrHt(pind);
  27. if ((level > maxLev) | (level < 1))
  28. error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev));
  29. end
  30. band = band + nbands*(level-1);
  31. im = pyrBand(pyr,pind,band);