www.pudn.com > nsct_toolbox.rar > nsctrec.m, change:2005-11-03,size:3257b


function x = nsscrec(y, dfilt, pfilt) 
% NSCTREC   Nonsubsampled Contourlet Reconstruction 
% 
%	x = nsscrec(y, [dfilt, pfilt] ) 
% 
% INPUT: 
%   y:  a cell vector of length length(nlevs) + 1, where except y{1} is  
%       the lowpass subband, each cell corresponds to one pyramidal 
%       level and is a cell vector that contains bandpass directional 
%       subbands from the DFB at that level. 
%   dfilt:   
%       a string, filter name for the directional decomposition step. 
%       It is optional with default value 'dmaxflat7'. See dfilters.m for all 
%       available filters. 
%   pfilt:   
%       a string, filter name for the pyramidal decomposition step. 
%       It is optional with default value 'maxflat'. See atrousfilters.m for  
%       all available filters.  
% 
% OUTPUT: 
%   x:       
%       a matrix, reconstructed image 
% 
% See also: ATROUSFILTERS, DFILTERS, NSCTDEC, NSFBREC, NSDFBREC 
 
% 
% HISTORY: 
%     02/17/04 Created by Jianping Zhou. 
%     08/07/04 Modified by Jianping Zhou. Incorporte the fast implementation  
%              of convolution algorithm by Jason Laska. 
%     08/30/04 Modified by Arthur. L. Cunha, added more pyramid filters. 
%     10/17/04 Modified by Arthur. L. Cunha, replaced periodic with symmetric extension 
%     01/24/05 Modified by Jianping Zhou, changed function names and corrected a bug.  
%     10/31/05 Modified by Arthur L Cunha, corrected a bug in the pyramid decomposition (a wrong index) 
 
 
% Check input 
if ~exist('dfilt', 'var') 
    dfilt = 'dmaxflat7' ; 
end; 
 
if ~exist('pfilt', 'var') 
    pfilt = 'maxflat' ;  
end; 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Get fan filters, parallelogram filters, and pyramid filters 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Get the directional filters for the critically sampled DFB. 
filters = cell(4) ; 
[h1, h2] = dfilters(dfilt, 'r'); 
% A scale is required for the nonsubsampled case. 
h1 = h1./sqrt(2) ; 
h2 = h2./sqrt(2) ; 
 
% Generate the first-level fan filters by modulations. 
filters{1} = modulate2(h1, 'c'); 
filters{2} = modulate2(h2, 'c');  
 
% Obtain the parallelogram filters from the diamond filters 
[filters{3}, filters{4}] = parafilters( h1, h2 ) ; 
 
% Currently only one filter by Arthur Cunha 
% It has been normalized. 
[h1, h2, g1, g2] = atrousfilters(pfilt) ;  
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Nonsubsampled Contourlet transform with tree structure filter banks 
% Nonsubsampled pyramids make multiresolution decomposition. 
% Nonsubsampled directional filter banks make directional decomposition. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
n = length(y) - 1; 
xlo = y{1}; 
nIndex = n-1; 
for i=1:n 
     
    % Process the detail subbands 
    if iscell( y{i+1} ) 
        % Nonsubsampled DFB reconstruction 
        xhi = nsdfbrec( y{i+1}, filters );  
    else 
        % No DFB decomposition, copy directly 
        xhi = y{i+1}; 
    end 
                  
    % Nonsubsampled Pyramid reconstruction 
    x = nsfbrec(xlo, xhi, g1, g2, nIndex);             
         
    % Prepare for the next level 
    xlo = x ; 
    nIndex = nIndex -1;      
end