• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: Matlab
  • 标签: 小波  matlab  

资源简介

计算小波分解的快速算法,比Matlab自带的wavefilter速度要快很多

资源截图

代码片段和文件信息

function [c s] = wavefast(x n varargin)
%WAVEFAST Perform multi-level 2-dimensional fast wavelet transform.
%   [C L] = WAVEFAST(X N LP HP) performs a 2D N-level FWT of
%   image (or matrix) X with respect to decomposition filters LP and
%   HP.
%
%   [C L] = WAVEFAST(X N WNAME) performs the same operation but
%   fetches filters LP and HP for wavelet WNAME using WAVEFILTER.
%
%   Scale parameter N must be less than or equal to log2 of the
%   maximum image dimension.  Filters LP and HP must be even. To
%   reduce border distortion X is symmetrically extended. That is
%   if X = [c1 c2 c3 ... cn] (in 1D) then its symmetric extension
%   would be [... c3 c2 c1 c1 c2 c3 ... cn cn cn-1 cn-2 ...].
%
%   OUTPUTS:
%     Matrix C is a coefficient decomposition vector:
%
%      C = [ a(n) h(n) v(n) d(n) h(n-1) ... v(1) d(1) ]
%
%     where a h v and d are columnwise vectors containing
%     approximation horizontal vertical and diagonal coefficient
%     matrices respectively.  C has 3n + 1 sections where n is the
%     number of wavelet decompositions. 
%
%     Matrix S is an (n+2) x 2 bookkeeping matrix:
%
%      S = [ sa(n :); sd(n :); sd(n-1 :); ... ; sd(1 :); sx ]
%
%     where sa and sd are approximation and detail size entries.
%
%   See also WAVEBACK and WAVEFILTER.

%   Copyright 2002-2004 R. C. Gonzalez R. E. Woods & S. L. Eddins
%   Digital Image Processing Using MATLAB Prentice-Hall 2004
%   $Revision: 1.5 $  $Date: 2003/10/13 01:14:17 $

% Check the input arguments for reasonableness.
error(nargchk(3 4 nargin));

if nargin == 3
   if ischar(varargin{1})   
      [lp hp] = wavefilter(varargin{1} ‘d‘);
   else 
      error(‘Missing wavelet name.‘);   
   end
else
      lp = varargin{1};     hp = varargin{2};   
end

fl = length(lp);      sx = size(x);

if (ndims(x) ~= 2) | (min(sx) < 2) | ~isreal(x) | ~isnumeric(x)
   error(‘X must be a real numeric matrix.‘);     
end
  
if (ndims(lp) ~= 2) | ~isreal(lp) | ~isnumeric(lp) ...
       | (ndims(hp) ~= 2) | ~isreal(hp) | ~isnumeric(hp) ...
  

评论

共有 条评论