dguiwp2d.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:9k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = dguiwp2d(varargin)
  2. %DGUIWP2D Demonstrates 2-D wavelet packet GUI tools in the Wavelet Toolbox.
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dguiwp2d', 
  6. %   
  7. %   See also WPDEC2, WPREC2.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  9. %   Last Revision: 03-Feb-2003.
  10. %   Copyright 1995-2004 The MathWorks, Inc.
  11. % $Revision: 1.13.4.2 $
  12. % Initialization and Local functions if necessary.
  13. if nargin>0
  14. action = varargin{1};
  15. switch action
  16.   case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  17.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  18.   case 'getFigParam'
  19. figName  = 'Wavelet GUI Demo: Wavelet Packet 2-D';
  20. showType = 'command';
  21. varargout = {figName,showType};
  22.   case 'slidePROC_Init'
  23. figHandle = varargin{2};
  24.     localPARAM = wtbxappdata('get',figHandle,'localPARAM');
  25.     if ~isempty(localPARAM)
  26.    active_fig = localPARAM{1};
  27.    delete(active_fig);
  28.        wtbxappdata('del',figHandle,'localPARAM');
  29.     end
  30.   case 'slidePROC'
  31.   [figHandle,idxSlide]  = deal(varargin{2:end});
  32.   localPARAM = wtbxappdata('get',figHandle,'localPARAM');
  33.   if isempty(localPARAM)
  34.   active_fig = wp2dtool;
  35.   tag_sli_size = 'Sli_Size';
  36.   tag_sli_pos  = 'Sli_Pos';
  37.   sli_handles  = findobj(active_fig,'style','slider');
  38.   sli_size     = findobj(sli_handles,'Tag',tag_sli_size);
  39.   sli_pos      = findobj(sli_handles,'Tag',tag_sli_pos);
  40.   set([sli_size;sli_pos],'visible','off');
  41.   wp2dmngr('demo',active_fig,'noiswom','sym4',2,'shannon');
  42.   wenamngr('Inactive',active_fig);
  43.   tag_nodlab   = 'Pop_NodLab';
  44.   tag_nodact   = 'Pop_NodAct';
  45.   tag_nodsel   = 'Pus_NodSel';
  46.   tag_pus_full = strvcat(...
  47.   'Pus_Full.1','Pus_Full.2',...
  48.   'Pus_Full.3','Pus_Full.4'...
  49.   );
  50.   tag_axe_t_lin = 'Axe_TreeLines';
  51.   tag_txt_in_t  = 'Txt_In_tree';
  52.   tag_axe_pack = 'Axe_Pack';
  53.   pop_handles  = findobj(active_fig,'style','popupmenu');
  54.   pus_handles  = findobj(active_fig,'style','pushbutton');
  55.   pop_nodlab   = findobj(pop_handles,'Tag',tag_nodlab);
  56.   pop_nodact   = findobj(pop_handles,'Tag',tag_nodact);
  57.   pus_full     = findobj(pus_handles,'tag',tag_pus_full(2,:));
  58.   pus_nodsel   = findobj(pus_handles,'Tag',tag_nodsel);
  59.   cba_nodlab   = get(pop_nodlab,'Callback');
  60.   cba_nodact   = get(pop_nodact,'Callback');
  61.   cba_nodsel   = get(pus_nodsel,'Callback');
  62.   cba_full     = get(pus_full,'Callback');
  63.   axe_handles  = findobj(active_fig,'type','axes');
  64.   WP_Axe_Tree  = findobj(axe_handles,'flat','Tag',tag_axe_t_lin);
  65.   WP_Axe_Pack  = findobj(axe_handles,'flat','Tag',tag_axe_pack);
  66.   figTMP        = [];
  67.   localPARAM = {active_fig,pop_nodlab,cba_nodlab,cba_full,...
  68.   pop_nodact,cba_nodact,cba_nodsel,WP_Axe_Tree,WP_Axe_Pack,tag_txt_in_t,...
  69.   figTMP};
  70.   wtbxappdata('set',figHandle,'localPARAM',localPARAM);
  71.   wshowdrv('#modify_cbClose',figHandle,active_fig,'wp1dtool');
  72.   else
  73.   [active_fig,pop_nodlab,cba_nodlab,cba_full,pop_nodact,cba_nodact,...
  74.   cba_nodsel,WP_Axe_Tree,WP_Axe_Pack,tag_txt_in_t,figTMP] = deal(localPARAM{:});
  75.   end
  76.   idxPREV = wshowdrv('#get_idxSlide',figHandle);
  77.   switch idxSlide
  78.   case 2
  79.   if idxPREV>idxSlide
  80.   set(pop_nodlab,'value',1);
  81.   eval(cba_nodlab);
  82.   end
  83.   case 3
  84.   if idxPREV<idxSlide
  85.   msg = strvcat(...
  86.   ['To change the Node Label use the corresponding popupmenu ' ...
  87.   'in the middle of the window.'], ...
  88.   'The default labelling is the depth-position labelling', ...
  89.   'We select the indices labelling.'  ...
  90.   );
  91.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  92.   set(pop_nodlab,'value',2);
  93.   eval(cba_nodlab);
  94.   else
  95.   set(pop_nodact,'value',5);
  96.   eval(cba_nodact);
  97.   delete(allchild(WP_Axe_Pack));
  98.   axes(WP_Axe_Pack);
  99.   title('Node Action Result');
  100.   end
  101.   case 4
  102.   if idxPREV<idxSlide
  103.   msg = strvcat(...
  104.   ['To change the Node Action use the corresponding popupmenu ' ...
  105.   'in the middle of the window.'], ...
  106.   'The default Node Action is Visualize.', ...
  107.   'We select the Select On node action.'  ...
  108.   );
  109.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  110.   set(pop_nodact,'value',4);
  111.   msg = 'Now we select the nodes [2 3 5].';
  112.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  113.   eval(cba_nodact);
  114.   Tree_txt = findobj(WP_Axe_Tree,'type','text','tag',tag_txt_in_t);
  115.   for num = [5 2 3]
  116.   hdl_node = findobj(Tree_txt,'userdata',num);
  117.   cba_node = get(hdl_node,'ButtonDownFcn');
  118.   set(active_fig,'CurrentObject',hdl_node);
  119.   eval(cba_node);
  120.   end
  121.   msg = 'We use the "Reconstruct" pushbutton.';
  122.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  123.   eval(cba_nodsel)
  124.   else
  125.   eval(cba_full);
  126.   end
  127.   
  128.   case 5
  129.   msg = strvcat(...
  130.   'The four pushbuttons labelled [1 2 3 4] in the middle of the window', ...
  131.   'allow to see Full Size for one of the four axes.', ...
  132.   'Let''s display the reconstructed packets (button 2) Full Size.' ...
  133.   );
  134.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  135.   eval(cba_full);
  136.   
  137.   case 6
  138.   if idxPREV<idxSlide
  139.   eval(cba_full);
  140.   else
  141.   set(pop_nodact,'value',4);
  142.   eval(cba_nodact);
  143.   Tree_txt = findobj(WP_Axe_Tree,'type','text','tag',tag_txt_in_t);
  144.   for num = [5 2 3]
  145.   hdl_node = findobj(Tree_txt,'userdata',num);
  146.   cba_node = get(hdl_node,'ButtonDownFcn');
  147.   set(active_fig,'CurrentObject',hdl_node);
  148.   eval(cba_node);
  149.   end
  150.   end
  151.   
  152.   case 7
  153.   if idxPREV<idxSlide
  154.   msg = 'We change the node action and unselect the nodes [2 3 5].';
  155.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  156.   set(pop_nodact,'value',5);
  157.   eval(cba_nodact);
  158.   else
  159.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  160.   end
  161.   case 8
  162.   if idxPREV<idxSlide
  163.   msg = 'The Compress pushbutton is used to call the compression tool.';
  164.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  165.   figTMP = wp2dmngr('comp',active_fig);
  166.   modify_localPARAM(figHandle,localPARAM,figTMP);
  167.   wenamngr('Inactive',figTMP);
  168.   msg = 'We compress the image with the default options.';
  169.   wshowdrv('#gui_wait',figHandle,figTMP,msg); 
  170.   wp2dcomp('compress',figTMP,active_fig);
  171.   else
  172.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  173.   end
  174.   case 9
  175.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  176.   wp2dmngr('return_comp',active_fig,0);
  177.   wenamngr('Inactive',active_fig);
  178.   msg = 'The De-noise pushbutton is used to call the de-noising tool.';
  179.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  180.   figTMP = wp2dmngr('deno',active_fig);
  181.   modify_localPARAM(figHandle,localPARAM,figTMP);
  182.   wenamngr('Inactive',figTMP);
  183.   msg = 'We de-noise the image with the default options.';
  184.   wshowdrv('#gui_wait',figHandle,figTMP,msg); 
  185.   wp2ddeno('denoise',figTMP,active_fig);
  186.   
  187.   case 10
  188.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  189.   wp2dmngr('return_deno',active_fig,0);
  190.   wenamngr('Inactive',active_fig);
  191.   msg = 'The Statistics information for the node 0 are displayed clicking on the node.';
  192.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  193.   set(pop_nodact,'value',6);
  194.   eval(cba_nodact);
  195.   figTMP = wp2dstat('create',active_fig,1);
  196.   modify_localPARAM(figHandle,localPARAM,figTMP);
  197.   wp2dstat('demo',figTMP);
  198.   wenamngr('Inactive',figTMP);
  199.   
  200.   case 11
  201.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  202.   pause(2)
  203.   end
  204.   end
  205.   return
  206. end
  207. if nargout<1,
  208.   wshowdrv(mfilename)
  209. else
  210.   idx = 0; slide(1).code = {}; slide(1).text = {};
  211.   
  212.   %========== Slide 1 ==========
  213.   idx = idx+1;
  214.   slide(idx).code = {
  215.   'figHandle = gcf;',
  216.   [mfilename ,'(''slidePROC_Init'',figHandle);'],
  217.   '' };
  218.   %========== Slide 2 to Slide 11 ==========
  219.   for idx = 2:11
  220.     slide(idx).code = {[mfilename ,'(''slidePROC'',figHandle,',int2str(idx),');']};
  221.   end
  222.   
  223.   varargout{1} = slide;
  224.   
  225. end
  226. %------------------------------------------------------------------------------------------%
  227. function modify_localPARAM(figHandle,localPARAM,figTMP)
  228. localPARAM{end} = figTMP;
  229. wtbxappdata('set',figHandle,'localPARAM',localPARAM);    
  230. %------------------------------------------------------------------------------------------%