www.gusucode.com > wavelet 源码程序 matlab案例代码 > wavelet/datacompressiondemo.m
%% Data Compression using 2D Wavelet Analysis % The purpose of this example is to show how to compress an image using % two-dimensional wavelet analysis. Compression is one of the most % important applications of wavelets. Like de-noising, the compression % procedure contains three steps: % % * Decompose: Choose a wavelet, choose a level N. Compute the wavelet % decomposition of the signal at level N. % % * Threshold detail coefficients: For each level from 1 to N, a threshold % is selected and hard thresholding is applied to the detail coefficients. % % * Reconstruct: Compute wavelet reconstruction using the original % approximation coefficients of level N and the modified detail % coefficients of levels from 1 to N. % % The difference with the de-noising procedure is found in step 2. There % are two compression approaches available: % % * The first consists of taking the wavelet expansion of the signal and % keeping the largest absolute value coefficients. In this case, you can % set a global threshold, a compression performance, or a relative square % norm recovery performance. Thus, only a single parameter needs to be % selected. % % * The second approach consists of applying visually determined % level-dependent thresholds. % Copyright 2012 The MathWorks, Inc. %% Load an Image % Let us examine a real-life example of compression for a given and % unoptimized wavelet choice, to produce a nearly complete square norm % recovery for an image. load woman; % Load original image. image(X) title('Original Image') colormap(map) x = X(100:200,100:200); % Select ROI %% Method 1: Global Thresholding % The compression features of a given wavelet basis are primarily linked to % the relative scarceness of the wavelet domain representation for the % signal. The notion behind compression is based on the concept that the % regular signal component can be accurately approximated using the % following elements: a small number of approximation coefficients (at a % suitably chosen level) and some of the detail coefficients. n = 5; % Decomposition Level w = 'sym8'; % Near symmetric wavelet [c l] = wavedec2(x,n,w); % Multilevel 2-D wavelet decomposition. %% % In this first method, the WDENCMP function performs a compression process % from the wavelet decomposition structure [c,l] of the image. opt = 'gbl'; % Global threshold thr = 20; % Threshold sorh = 'h'; % Hard thresholding keepapp = 1; % Approximation coefficients cannot be thresholded [xd,cxd,lxd,perf0,perfl2] = wdencmp(opt,c,l,w,n,thr,sorh,keepapp); image(x) title('Original Image') colormap(map) figure('Color','white'),image(xd) title('Compressed Image - Global Threshold = 20') colormap(map) %% % L2-norm recovery (%) perf0 %% % Compression score (%) perfl2 %% % The density of the current decomposition sparse matrix is: cxd = sparse(cxd); cxd_density = nnz(cxd)/prod(size(cxd)) %% Method 2: Level-Dependent Thresholding % The WDENCMP function also allows level and orientation-dependent % thresholds. In this case the approximation is kept. The level-dependent % thresholds in the three orientations horizontal, diagonal and vertical % are as follows: opt = 'lvd'; % Level dependent thresholds thr_h = [17 18]; % Horizontal thresholds. thr_d = [19 20]; % Diagonal thresholds. thr_v = [21 22]; % Vertical thresholds. thr = [thr_h ; thr_d ; thr_v]; %% % In this second example, notice that the WDENCMP function performs a % compression process from the image x. [xd2,cxd2,lxd2,perf02,perfl22] = wdencmp(opt,x,w,2,thr,sorh); image(x) title('Original Image') colormap(map) figure('Color','white'),image(xd2) title('Compressed Image - Level-Dependent Thresholding') colormap(map) %% % L2-norm recovery (%) perf02 %% % Compression score (%) perfl22 %% % The density of the current decomposition sparse matrix is: cxd2 = sparse(cxd2); cxd2_density = nnz(cxd2)/prod(size(cxd2)) %% Summary % By using level-dependent thresholding, the density of the wavelet % decomposition was reduced by 3% while improving the L2-norm recovery by % 3%. If the wavelet representation is too dense, similar strategies can be % used in the wavelet packet framework to obtain a sparser representation. % You can then determine the best decomposition with respect to a suitably % selected entropy-like criterion, which corresponds to the selected % purpose (de-noising or compression).