www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wp2dmngr.m
function out1 = wp2dmngr(option,win_wptool,varargin) %WP2DMNGR Wavelet packets 2-D general manager. % OUT1 = WP2DMNGR(OPTION,WIN_WPTOOL,VARARGIN) % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96. % Last Revision 08-May-2012. % Copyright 1995-2012 The MathWorks, Inc. % Default values. %---------------- default_nbcolors = 255; % Memory Blocks of stored values. %================================ % MB0. %----- n_InfoInit = 'WP2D_InfoInit'; ind_filename = 1; ind_pathname = 2; % MB1. %----- n_param_anal = 'WP2D_Par_Anal'; ind_img_name = 1; ind_wav_name = 2; ind_lev_anal = 3; ind_ent_anal = 4; ind_ent_par = 5; ind_img_size = 6; ind_img_t_name = 7; ind_act_option = 8; ind_thr_val = 9; % MB2. %----- n_wp_utils = 'WP_Utils'; ind_nb_colors = 6; switch option case {'load_img','import_img'} switch option case 'load_img' imgFileType = getimgfiletype; [imgInfos,Img_Anal,map,ok] = utguidiv('load_img',win_wptool, ... imgFileType,getWavMSG('Wavelet:commongui:Load_Image'), ... default_nbcolors); if ~ok, return; end case 'import_img' [imgInfos,Img_Anal,ok] = wtbximport('wp2d'); if ~ok, return; end if isa(Img_Anal,'wptree') wp2dmngr('load_dec',win_wptool,Img_Anal,imgInfos.name); return end map = pink(222); option = 'load_img'; end flagIDX = length(size(Img_Anal))<3; setfigNAME(win_wptool,flagIDX) wtbxappdata('set',win_wptool,... 'Anal_Data_Info',{Img_Anal,imgInfos.name}); % Cleaning. %---------- wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitClean')); wp2dutil('clean',win_wptool,option,''); % Setting Analysis parameters. %----------------------------- NB_ColorsInPal = size(map,1); wmemtool('wmb',win_wptool,n_param_anal, ... ind_act_option,option, ... ind_img_name,imgInfos.name, ... ind_img_t_name,imgInfos.true_name, ... ind_img_size,imgInfos.size ... ); wmemtool('wmb',win_wptool,n_InfoInit, ... ind_filename,imgInfos.filename, ... ind_pathname,imgInfos.pathname ... ); wmemtool('wmb',win_wptool,n_wp_utils, ... ind_nb_colors,NB_ColorsInPal); % Setting GUI values. %-------------------- wp2dutil('set_gui',win_wptool,option,''); if imgInfos.self_map , arg = map; else arg = []; end cbcolmap('set',win_wptool,'pal',{'pink',NB_ColorsInPal,'self',arg}); % Drawing. %--------- wp2ddraw('sig',win_wptool,Img_Anal); % Setting enabled values. %------------------------ wp2dutil('Enable',win_wptool,option); % End waiting. %------------- wwaiting('off',win_wptool); case {'load_dec','import_dec'} switch option case 'load_dec' switch nargin case 2 % Testing file. %-------------- winTitle = getWavMSG('Wavelet:wp1d2dRF:LoadWP2D'); fileMask = {... '*.wp2;*.mat' , 'Decomposition (*.wp2;*.mat)'; '*.*','All Files (*.*)'}; [filename,pathname,ok] = utguidiv('load_wpdec', ... win_wptool,fileMask,winTitle,4); if ~ok, return; end % Loading file. %-------------- load([pathname filename],'-mat'); if ~exist('map','var'), map = pink(default_nbcolors); end if ~exist('data_name','var') , data_name = 'no name'; end if exist('tree_struct','var') , WP_Tree = tree_struct; end %#ok<NODEF> case {3,4} filename = ''; pathname = ''; WP_Tree = varargin{1}; map = pink(default_nbcolors); if nargin>3 data_name = varargin{2}; else data_name = 'input var'; end end case 'import_dec' [ok,S,NV] = wtbximport('decwp2d'); %#ok<NASGU> if ok WP_Tree = S.tree_struct; if isa(WP_Tree,'wptree') order = treeord(WP_Tree); ok = isequal(order,4); else ok = false; end end if ~ok, return; end filename = ''; pathname = ''; if isfield(S,'map'); map = S.map; else map = pink(default_nbcolors); end data_name = S.data_name; option = 'load_dec'; end % Cleaning. %---------- wtbxappdata('del',win_wptool,'Anal_Data_Info'); wp2dutil('clean',win_wptool,option); % Getting Analysis parameters. %----------------------------- [Wav_Name,Ent_Name,Ent_Par,Img_Size] = ... read(WP_Tree,'wavname','entname','entpar','sizes',0); Img_Size = fliplr(Img_Size); Lev_Anal = treedpth(WP_Tree); Img_Name = data_name; NB_ColorsInPal = size(map,1); % Setting Analysis parameters %----------------------------- wmemtool('wmb',win_wptool,n_param_anal, ... ind_act_option,option, ... ind_img_name,Img_Name, ... ind_wav_name,Wav_Name, ... ind_lev_anal,Lev_Anal, ... ind_img_size,Img_Size, ... ind_ent_anal,Ent_Name, ... ind_ent_par,Ent_Par ... ); wmemtool('wmb',win_wptool,n_InfoInit, ... ind_filename,filename, ... ind_pathname,pathname ... ); wmemtool('wmb',win_wptool,n_wp_utils,ind_nb_colors,NB_ColorsInPal); % Writing structures. %---------------------- wtbxappdata('set',win_wptool,'WP_Tree',WP_Tree); wtbxappdata('set',win_wptool,'WP_Tree_Saved',WP_Tree); % Setting GUI values. %-------------------- wp2dutil('set_gui',win_wptool,option); % Setting Initial Colormap. %-------------------------- cbcolmap('set',win_wptool,'pal',{'pink',NB_ColorsInPal,'self',[]}); % Computing Original Signal. %-------------------------- Img_Anal = wprec2(WP_Tree); flagIDX = length(size(Img_Anal))<3; setfigNAME(win_wptool,flagIDX) % Drawing. %--------- wp2ddraw('sig',win_wptool,Img_Anal); % Decomposition drawing %---------------------- wp2ddraw('anal',win_wptool); % Setting enabled values. %------------------------ wp2dutil('Enable',win_wptool,option); % End waiting. %------------- wwaiting('off',win_wptool); case 'demo' % varargin{1} = Img_Name % varargin{2} = Wav_Name % varargin{3} = Lev_Anal % varargin{4} = Ent_Name % varargin{5} = Ent_Par (optional) % varargin{6} = optIMG (optional) %--------------------------------- Img_Name = deblank(varargin{1}); Wav_Name = deblank(varargin{2}); Lev_Anal = varargin{3}; Ent_Name = deblank(varargin{4}); nbIN = length(varargin); if nbIN<5 Ent_Par = []; optIMG = ''; else Ent_Par = varargin{5}; if nbIN<6 , optIMG = ''; else optIMG = varargin{6}; end end % Loading file. %-------------- if any(Img_Name=='.') filename = Img_Name; else filename = [Img_Name '.mat']; end pathname = utguidiv('WTB_DemoPath',filename); [imgInfos,Img_Anal,map,ok] = utguidiv('load_dem2D',win_wptool, ... pathname,filename,default_nbcolors,optIMG); if ~ok, return; end wtbxappdata('set',win_wptool,... 'Anal_Data_Info',{Img_Anal,imgInfos.name}); flagIDX = length(size(Img_Anal))<3; setfigNAME(win_wptool,flagIDX) % Cleaning. %---------- wp2dutil('clean',win_wptool,option); % Setting Analysis parameters %----------------------------- NB_ColorsInPal = size(map,1); wmemtool('wmb',win_wptool,n_param_anal, ... ind_act_option,option, ... ind_img_name,imgInfos.name, ... ind_img_t_name,imgInfos.true_name, ... ind_wav_name,Wav_Name, ... ind_lev_anal,Lev_Anal, ... ind_img_size,imgInfos.size, ... ind_ent_anal,Ent_Name, ... ind_ent_par,Ent_Par ... ); wmemtool('wmb',win_wptool,n_InfoInit, ... ind_filename,imgInfos.filename, ... ind_pathname,imgInfos.pathname ... ); wmemtool('wmb',win_wptool,n_wp_utils, ... ind_nb_colors,NB_ColorsInPal ... ); % Setting GUI values. %-------------------- wp2dutil('set_gui',win_wptool,option); if imgInfos.self_map , arg = map; else arg = []; end cbcolmap('set',win_wptool,'pal',{'pink',NB_ColorsInPal,'self',arg}); % Drawing. %--------- wp2ddraw('sig',win_wptool,Img_Anal); % Calling Analysis. %----------------- wp2dmngr('step2',win_wptool,option); % Setting enabled values. %------------------------ wp2dutil('Enable',win_wptool,option); % End waiting. %------------- wwaiting('off',win_wptool); case 'save_synt' % Getting Synthesized Image. %--------------------------- hdl_node = wpssnode('r_synt',win_wptool); if ~isempty(hdl_node) X = get(hdl_node,'UserData'); else % Reading structures. %-------------------- WP_Tree = wtbxappdata('get',win_wptool,'WP_Tree'); X = wprec2(WP_Tree); end X = round(X); % Saving file. %-------------- [wname,valTHR] = wmemtool('rmb',win_wptool,n_param_anal,... ind_wav_name,ind_thr_val); utguidiv('save_img',getWavMSG('Wavelet:commongui:Sav_Synt_Img'), ... win_wptool,X,'wname',wname,'valTHR',valTHR); case 'save_dec' % Testing file. %-------------- fileMask = {... '*.wp2;*.mat' , 'Decomposition (*.wp2;*.mat)'; '*.*','All Files (*.*)'}; [filename,pathname,ok] = utguidiv('test_save',win_wptool, ... fileMask,getWavMSG('Wavelet:wp1d2dRF:SaveWP2D')); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitSaveDec')); name = strtok(filename,'.'); ext = '.wp2'; filename = [name ext]; % Getting Analysis parameters. %----------------------------- data_name = wmemtool('rmb',win_wptool,n_param_anal,ind_img_name); %#ok<NASGU> tree_struct = wtbxappdata('get',win_wptool,'WP_Tree'); %#ok<NASGU> valTHR = wmemtool('rmb',win_wptool,n_param_anal,ind_thr_val); %#ok<NASGU> map = cbcolmap('get',win_wptool,'self_pal'); if isempty(map) nb_colors = wmemtool('rmb',win_wptool,n_wp_utils,ind_nb_colors); map = pink(nb_colors); %#ok<NASGU> end % Saving file. %------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.wp2'; filename = [name ext]; end saveStr = {'tree_struct','map','data_name','valTHR'}; wwaiting('off',win_wptool); try save([pathname filename],saveStr{:}); catch %#ok<CTCH> errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'exp_wrks' wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitSave')); typeSAVE = varargin{1}; switch typeSAVE case 'sig' hdl_node = wpssnode('r_synt',win_wptool); if ~isempty(hdl_node) x = get(hdl_node,'UserData'); else WP_Tree = wtbxappdata('get',win_wptool,'WP_Tree'); x = wprec(WP_Tree); end wtbxexport(x,'name','sig_2D', ... 'title',getWavMSG('Wavelet:commongui:Syn_Img')); case 'dec' [data_name,valTHR] = wmemtool('rmb',win_wptool,... n_param_anal,ind_img_name,ind_thr_val); tree_struct = wtbxappdata('get',win_wptool,'WP_Tree'); S = struct(... 'tree_struct',tree_struct,... 'data_name',data_name,'valTHR',valTHR); wtbxexport(S,'name','dec_WP2D', ... 'title',getWavMSG('Wavelet:commongui:Str_Decomp')); end wwaiting('off',win_wptool); case 'anal' active_option = wmemtool('rmb',win_wptool,n_param_anal,... ind_act_option); if ~strcmp(active_option,'load_img') % Test for new Analysis. %----------------------- % new = wwaitans(win_wptool,'New Analysis ?'); % if new==0 , return; end % Cleaning. %---------- wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitCompute')); wp2dutil('clean',win_wptool,'load_img','new_anal'); wp2dutil('Enable',win_wptool,'load_img'); else wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitCompute')); wmemtool('wmb',win_wptool,n_param_anal,ind_act_option,'anal'); end % Setting Analysis parameters %----------------------------- [Wav_Name,Lev_Anal] = cbanapar('get',win_wptool,'wav','lev'); [Ent_Name,Ent_Par,err] = utentpar('get',win_wptool,'ent'); if err>0 wwaiting('off',win_wptool); switch err case 1 , msg = getWavMSG('Wavelet:wp1d2dRF:ErrEntPar'); case 2 , msg = getWavMSG('Wavelet:wp1d2dRF:ErrEntNam'); end errargt(mfilename,msg,'msg'); utentpar('set',win_wptool); return end wmemtool('wmb',win_wptool,n_param_anal, ... ind_wav_name,Wav_Name, ... ind_lev_anal,Lev_Anal, ... ind_ent_anal,Ent_Name, ... ind_ent_par,Ent_Par ... ); % Calling Analysis. %------------------ wp2dmngr('step2',win_wptool,option); % Setting enabled values. %------------------------ wp2dutil('Enable',win_wptool,option); % End waiting. %------------- wwaiting('off',win_wptool); case 'step2' % Begin waiting. %--------------- wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitCompute')); % Getting Analysis parameters. %------------------------------ [Wav_Name,Lev_Anal,Img_True_Name,Ent_Name,Ent_Par] = ... wmemtool('rmb',win_wptool,n_param_anal, ... ind_wav_name,ind_lev_anal, ... ind_img_t_name, ... ind_ent_anal,ind_ent_par); active_option = wmemtool('rmb',win_wptool,n_param_anal,ind_act_option); [filename,pathname] = wmemtool('rmb',win_wptool,n_InfoInit, ... ind_filename,ind_pathname); if strcmp(active_option,'demo') || strcmp(active_option,'anal') numopt = 1; elseif strcmp(active_option,'load_dec') numopt = 2; end % Computing. %----------- if numopt==1 try Anal_Data_Info = ... wtbxappdata('get',win_wptool,'Anal_Data_Info'); Img_Anal = Anal_Data_Info{1}; catch %#ok<CTCH> try [fileStruct,err] = wfileinf(pathname,filename); %#ok<ASGLU> catch ME %#ok<NASGU> err = 1; end msg = getWavMSG('Wavelet:moreMSGRF:File_not_found_2',filename); if ~err try load([pathname filename],'-mat'); catch ME %#ok<NASGU> msg = getWavMSG('Wavelet:moreMSGRF:ErrFile',filename); err = 1; end else [X,map,imgFormat,colorType,err] = ... utguidiv('direct_load_img',win_wptool,pathname,filename); %#ok<ASGLU> if err msg = getWavMSG('Wavelet:commongui:ErrLoadFile_2',filename); end end if err wwaiting('off',win_wptool); nam = getWavMSG('Wavelet:commongui:LoadERROR'); errordlg(msg,nam,'modal'); return end Img_Anal = double(eval(Img_True_Name)); end elseif numopt==2 % second time only for load_dec Img_Anal = get(wp2ddraw('r_orig',win_wptool),'CData'); % WP_Tree = wtbxappdata('get',win_wptool,'WP_Tree'); end WP_Tree = wpdec2(Img_Anal,Lev_Anal,Wav_Name,Ent_Name,Ent_Par); % Writing structures. %-------------------- wtbxappdata('set',win_wptool,'WP_Tree',WP_Tree); wtbxappdata('set',win_wptool,'WP_Tree_Saved',WP_Tree); % Decomposition drawing %---------------------- wp2ddraw('anal',win_wptool); % End waiting. %------------- wwaiting('off',win_wptool); case 'comp' mousefrm(0,'watch'); drawnow; wp2dutil('Enable',win_wptool,option); out1 = feval('wp2dcomp','create',win_wptool); case 'deno' mousefrm(0,'watch'); drawnow; wp2dutil('Enable',win_wptool,option); out1 = feval('wp2ddeno','create',win_wptool); case {'return_comp','return_deno'} % varargin{1} = 1 : preserve compression % varargin{1} = 0 : discard compression % varargin{2} = hdl_img (optional) %-------------------------------------- if varargin{1}==1 % Begin waiting. %-------------- wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitDraw')); if strcmp(option,'return_comp') namesig = 'cs'; else namesig = 'ds'; end NB_Col = wmemtool('rmb',win_wptool,n_wp_utils,ind_nb_colors); wpssnode('plot',win_wptool,namesig,2,varargin{2},NB_Col) % End waiting. %------------- wwaiting('off',win_wptool); end wp2dutil('Enable',win_wptool,option); otherwise errargt(mfilename,getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg'); error(message('Wavelet:FunctionArgVal:Invalid_ArgVal')); end %------------------------------------------------- function setfigNAME(fig,flagIDX) if flagIDX figNAME = getWavMSG('Wavelet:wp1d2dRF:NamIndImg'); else figNAME = getWavMSG('Wavelet:wp1d2dRF:NamTrueColImg'); end set(fig,'Name',figNAME); %-------------------------------------------------