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

波变换

开发平台:

Matlab

  1. function varargout = dcmddw2d(varargin)
  2. %DCMDDW2D Demonstrates discrete 2-D wavelet tools in the Wavelet Toolbox. 
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dcmddw2d', 
  6. %
  7. % See also APPCOEF2, DETCOEF2, DWT2, IDWT2, UPCOEF2, 
  8. %          WAVEDEC2, WAVEREC2, WRCOEF2, WCODEMAT.
  9. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  10. %   Last Revision: 18-Apr-2001.
  11. %   Copyright 1995-2002 The MathWorks, Inc.
  12. % $Revision: 1.15 $
  13. % Initialization and Local functions if necessary.
  14. if nargin>0
  15. action = varargin{1};
  16. switch action
  17.   case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  18.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  19.   case 'getFigParam'
  20. figName  = 'Orthogonal Wavelets 2-D';
  21. showType = 'mix9';
  22. varargout = {figName,showType};
  23.   case 'initShowViewer'
  24. figHandle = varargin{2};
  25. slideData = get(figHandle,'Userdata');
  26. autoHndl = slideData.autoHndl;
  27. propAuto = get(autoHndl,{'Units','Position','BackGroundColor'});
  28. txtBkColor = get(slideData.slitxtHndl,'BackGroundColor');
  29. pos  = propAuto{2};
  30. hBtn = pos(4);
  31. pos(2) = pos(2)-2*hBtn;
  32.         popstr = strvcat(...
  33.                         'woman2','sinsin','detfingr', ...
  34.                         'wbarb','detail','geometry', ...
  35.                         'tire','mandrill','woman',...
  36.                         'wifs','facets','tartan');
  37.         txtstr = 'Image';
  38. propUIC = {'Units',propAuto{1},'Position',pos,'BackGroundColor',txtBkColor};
  39. slideData.txtLocHandle = uicontrol('Parent',figHandle,...
  40. 'style','text','String',txtstr,propUIC{:});
  41. pos(2) = pos(2)-hBtn+hBtn/3;
  42. propUIC = {'Units',propAuto{1},'Position',pos,'BackGroundColor',propAuto{3}};
  43. propAuto{2} = pos;
  44. propUIC{4} = propAuto{2};
  45. slideData.popLocHandle = uicontrol('Parent',figHandle,...
  46. 'style','popupmenu','String',popstr,propUIC{:});
  47. set(figHandle,'Userdata',slideData);
  48. set(figHandle,'DefaultAxesXtick',[],'DefaultAxesYtick',[]);
  49. end
  50. return
  51. end
  52. if nargout<1,
  53.   wshowdrv(mfilename)
  54. else
  55.   idx = 0;
  56.   %========== Slide 1 ==========
  57.   idx = idx+1;
  58.   slide(idx).code = {
  59. 'figHandle = gcf;',
  60. 'ax  = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',
  61. 'popTMP = findobj(figHandle,''style'',''popupmenu'');',
  62. 'set(popTMP,''enable'',''on'');',
  63. '' };
  64.   slide(idx).text = {
  65. '',
  66. ' Press the "Start" button to see a demonstration of',
  67. ' 2-D wavelet tools in the Wavelet Toolbox.',
  68. '',
  69. ' This demo uses Wavelet Toolbox functions.',
  70. ''};
  71.   %========== Slide 2 ==========
  72.   idx = idx+1;
  73.   slide(idx).code = {
  74. 'pop = findobj(figHandle,''style'',''popupmenu'');',
  75. 'lstIMG = get(pop,''String''); idxIMG = get(pop,''Value'');',
  76. 'set(pop,''enable'',''off'');',
  77. 'imgName = deblankl(lstIMG(idxIMG,:));',
  78. 'feval(''load'',imgName)',
  79. 'newTXT = [''         load '',imgName];';
  80. 'wshowdrv(''#modify_Comment'',figHandle,2,newTXT);',
  81. '[r,c] = size(X);'
  82. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',
  83. 'if strcmp(imgName,''detail'')',
  84. ' c = r; X = X(1:2:r,1:2:c);',
  85. 'elseif strcmp(imgName,''mandrill'')',
  86. ' X = X(1:4:r,1:5:c);',
  87. 'elseif strcmp(imgName,''tire'')',
  88. ' X = X(1:204,:);',
  89. 'elseif strcmp(imgName,''detfingr'')',
  90. ' r = 296; c = 296; X = X(1:2:r,1:2:c);',
  91. 'elseif strcmp(imgName,''durer'')',
  92. ' r = 640; X = X(1:4:r,1:4:c);',
  93. 'elseif strcmp(imgName,''wifs'')',
  94. ' ',
  95. 'end',
  96. '[r,c] = size(X);',
  97. 'if rem(r,4)>0 | rem(c,4)>0',
  98. ' X = X(1:r-rem(r,4),1:c-rem(c,4));',
  99. 'end',
  100. 'sX = size(X);',
  101. 'row = sX(1); col = sX(2);',
  102. 'nbcol = size(map,1);',
  103. 'cod_X = wcodemat(X,nbcol);',     
  104. 'row_1 = 1; col_1 = 2;',
  105. 'colormap(pink(nbcol));',
  106. 'h(1) = subplot(row_1,col_1,1);',
  107. 'image(cod_X); axis(''square'');',
  108. 'title(''Original image X.'');',
  109. '' };
  110.   slide(idx).text = {
  111. ' % Load original image.',
  112. '         load  imgName',
  113. '         % X is the loaded image.',
  114. '         % and map the loaded colormap.',
  115. ' ',
  116. ' % Image coding.',
  117. '         nbcol = size(map,1);',
  118. '         cod_X = wcodemat(X,nbcol);',
  119. ''};
  120.   slide(idx).info = 'wcodemat';
  121.   %========== Slide 3 ==========
  122.   idx = idx+1;
  123.   slide(idx).code = {
  124.   '[ca1,ch1,cv1,cd1] = dwt2(X,''db1'');',
  125.   'cod_ca1 = wcodemat(ca1,nbcol);',
  126.   'cod_ch1 = wcodemat(ch1,nbcol);',
  127.   'cod_cv1 = wcodemat(cv1,nbcol);',
  128.   'cod_cd1 = wcodemat(cd1,nbcol);',
  129.   'ax = subplot(row_1,col_1,2);',
  130.   'lineCOL = ''r'';',
  131.   'image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]); axis(''square'');',
  132.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  133.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  134.   'title(''Decomposition at level 1'');',
  135.   '' };
  136.   slide(idx).text = {
  137.   ' % Perform one step decomposition.',
  138.   '        [ca1,ch1,cv1,cd1] = dwt2(X,''db1'');',
  139.   ' '
  140.   ' % Image coding.'
  141.   '        cod_ca1 = wcodemat(ca1,nbcol);',
  142.   '        cod_ch1 = wcodemat(ch1,nbcol);',
  143.   '        cod_cv1 = wcodemat(cv1,nbcol);',
  144.   '        cod_cd1 = wcodemat(cd1,nbcol);',
  145.   '        image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]);',
  146.   ''};
  147.   slide(idx).info = 'dwt2';
  148.   %========== Slide 4 ==========
  149.   idx = idx+1;
  150.   slide(idx).code = {
  151.   'nul = zeros(size(cod_ca1));',
  152.   'subplot(row_1,col_1,2);',
  153.   'image([cod_ca1,nul;nul,nul]); axis(''square'');',
  154.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  155.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  156.   'title(''Coef. of Approximation at level 1'');',
  157.   ''};
  158.   slide(idx).text = slide(idx-1).text;
  159.   slide(idx).info = 'dwt2';
  160.   %========== Slide 5 ==========
  161.   idx = idx+1;
  162.   slide(idx).code = {
  163.   'subplot(row_1,col_1,2);',
  164.   'image([nul,cod_ch1;nul,nul]); axis(''square'');',
  165.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  166.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  167.   'title(''Coef. of Horizontal Detail at level 1'');',
  168.   '' };
  169.   slide(idx).text = slide(idx-1).text;
  170.   slide(idx).info = 'dwt2';
  171.   %========== Slide 6 ==========
  172.   idx = idx+1;
  173.   slide(idx).code = {
  174.   'subplot(row_1,col_1,2);',
  175.   'image([nul,nul;cod_cv1,nul]); axis(''square'');',
  176.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  177.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  178.   'title(''Coef. of Vertical Detail at level 1'');',
  179.   '' };
  180.   slide(idx).text = slide(idx-1).text;
  181.   %========== Slide 7 ==========
  182.   idx = idx+1;
  183.   slide(idx).code = {
  184.   'subplot(row_1,col_1,2);',
  185.   'image([nul,nul;nul,cod_cd1]); axis(''square'');',
  186.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  187.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  188.   'title(''Coef. of Diagonal Detail at level 1'');',
  189.   '' };
  190.   slide(idx).text = slide(idx-1).text;
  191.   slide(idx).info = 'dwt2';
  192.   %========== Slide 8 ==========
  193.   idx = idx+1;
  194.   slide(idx).code = {
  195.   'subplot(row_1,col_1,2);',
  196.   'image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]);axis(''square'');',
  197.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  198.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  199.   'title(''Decomposition at level 1'');',
  200.   'clear nul',
  201.   '' };
  202.   slide(idx).text = slide(idx-1).text;
  203.   slide(idx).info = 'dwt2';
  204.   %========== Slide 9 ==========
  205.   idx = idx+1;
  206.   slide(idx).code = {
  207.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  208.   'if idxPREV>idxSlide',
  209.   '   subplot(row_1,col_1,1);',
  210.   '   image(cod_X); axis(''square'');',
  211.   '   title(''Original image X.'');',
  212.   'end',
  213.   '[ca2,ch2,cv2,cd2] = dwt2(ca1,''db1'');',
  214.   'cod_ca2 = wcodemat(ca2,nbcol);        clear ca2',
  215.   'cod_ch2 = wcodemat(ch2,nbcol);        clear ch2',
  216.   'cod_cv2 = wcodemat(cv2,nbcol);        clear cv2',
  217.   'cod_cd2 = wcodemat(cd2,nbcol);        clear cd2',
  218.   'cod_ca1 = [cod_ca2,cod_ch2;cod_cv2,cod_cd2];',
  219.   'clear cod_ca2 cod_ch2 cod_cv2 cod_cd2',
  220.   'subplot(row_1,col_1,2)',
  221.   'image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]); axis(''square'');',
  222.   'line(''Xdata'',[1 col/2],''Ydata'',[row/4 row/4],''Color'',lineCOL);',
  223.   'line(''Xdata'',[col/4 col/4],''Ydata'',[1 row/2],''Color'',lineCOL);',
  224.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  225.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  226.   'title(''Decomposition at level 2'');',
  227.   '' };
  228.   slide(idx).text = {
  229.   ' % Perform second step decomposition :'
  230.   ' % decompose approx. cfs of level 1.'
  231.   '        [ca2,ch2,cv2,cd2] = dwt2(ca1,''db1'');'
  232.   ' ' 
  233.   ' % Code ca2, ch2,cv2 and cd2.'
  234.   '        cod_ca2 = wcodemat(ca2,nbcol);'
  235.   '        cod_ch2 = wcodemat(ch2,nbcol);'
  236.   '        cod_cv2 = wcodemat(cv2,nbcol);'
  237.   '        cod_cd2 = wcodemat(cd2,nbcol);',
  238.   '' };
  239.   slide(idx).info = 'dwt2';
  240.   %========== Slide 10 ==========
  241.   idx = idx+1;
  242.   slide(idx).code = {
  243.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  244.   'image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]); axis(''square'');',
  245.   'line(''Xdata'',[1 col/2],''Ydata'',[row/4 row/4],''Color'',lineCOL);',
  246.   'line(''Xdata'',[col/4 col/4],''Ydata'',[1 row/2],''Color'',lineCOL);',
  247.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  248.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  249.   'title(''Decomposition at level 2'');',
  250.   '' };
  251.   slide(idx).text = {
  252.   ' % Zoom the decomposition at level 2.', 
  253.   '' };
  254.   slide(idx).info = 'dwt2';
  255.   %========== Slide 11 ==========
  256.   idx = idx+1;
  257.   slide(idx).code = {
  258.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  259.   'row_2 = 1; col_2 = 3;',
  260.   'h(1) = subplot(row_2,col_2,1); image(cod_X);',
  261.   'axis(''square'');',
  262.   'title(''Original image X.'');',
  263.   'drawnow;',
  264.   'cod_ca1  = wcodemat(ca1,nbcol);',
  265.   'h(3) = subplot(row_2,col_2,3);',
  266.   'image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]);',
  267.   'axis(''square'');',
  268.   'clear cod_ca1 cod_ch1 cod_cv1 cod_cd1',
  269.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  270.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  271.   'title(''Decomp. at level 1'');',
  272.   'a0 = idwt2(ca1,ch1,cv1,cd1,''db1'',sX);',
  273.   'h(2) = subplot(row_2,col_2,2); image(wcodemat(a0,nbcol));',
  274.   'axis(''square'');',
  275.   'title(''Recons. image : a0.'');',
  276.   '' };
  277.   slide(idx).text = {
  278.   ' % Invert directly decomposition of X' ,
  279.   ' % using coefficients at level 1.', 
  280.   ' ',
  281.   '         a0 = idwt2(ca1,ch1,cv1,cd1,''db1'',size(X));', 
  282.   ' ',
  283.   '' };
  284.   slide(idx).info = 'idwt2';
  285.   %========== Slide 12 ==========
  286.   idx = idx+1;
  287.   slide(idx).code = {
  288.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = []; drawnow;',
  289.   'h(1) = subplot(row_2,col_2,1); image(cod_X);',
  290.   'axis(''square'');',
  291.   'title(''Original image X.'');',
  292.   '[c,s] = wavedec2(X,2,''db1'');',   
  293.   '' };
  294.   slide(idx).text = {
  295.   ' % Perform decomposition at level 2',
  296.   ' % of X using db1.',
  297.   ' ',
  298.   '         [c,s] = wavedec2(X,2,''db1'');',
  299.   '' };
  300.   slide(idx).info = 'wavedec2';
  301.   %========== Slide 13 ==========
  302.   idx = idx+1;
  303.   slide(idx).code = {
  304.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  305.   'if idxPREV>idxSlide',
  306.   '   delete(subplot(row_2,col_2,3));',
  307.   'end',
  308.   'ca2 = appcoef2(c,s,''db1'',2);',
  309.   'ch2 = detcoef2(''h'',c,s,2);',
  310.   'cv2 = detcoef2(''v'',c,s,2);',
  311.   'cd2 = detcoef2(''d'',c,s,2);',
  312.   'cod_ca2 = wcodemat(ca2,nbcol); clear ca2',
  313.   'cod_ch2 = wcodemat(ch2,nbcol); clear ch2',
  314.   'cod_cv2 = wcodemat(cv2,nbcol); clear cv2',
  315.   'cod_cd2 = wcodemat(cd2,nbcol); clear cd2',
  316.   'cod_ca1 = [cod_ca2,cod_ch2;cod_cv2,cod_cd2];',
  317.   'clear cod_ca2 cod_ch2 cod_cv2 cod_cd2',
  318.   'nul = zeros(size(cod_ca1));',
  319.   'h(2) = subplot(row_2,col_2,2); image([cod_ca1,nul;nul,nul]);',
  320.   'axis(''square'');',
  321.   'clear nul',
  322.   'line(''Xdata'',[1 col/2],''Ydata'',[row/4 row/4],''Color'',lineCOL);',
  323.   'line(''Xdata'',[col/4 col/4],''Ydata'',[1 row/2],''Color'',lineCOL);',
  324.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  325.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  326.   'title(''Coef. at level 2.'');',
  327.   '' };
  328.   slide(idx).text = {
  329.   ' % Extract coefficients at level 2 from',
  330.   ' % the wavelet decomposition structure [c,s].',
  331.   ' ',
  332.   '         ca2 = appcoef2(c,s,''db1'',2);',
  333.   '         ch2 = detcoef2(''h'',c,s,2);',
  334.   '         cv2 = detcoef2(''v'',c,s,2);',
  335.   '         cd2 = detcoef2(''d'',c,s,2);',
  336.   '' };
  337.   slide(idx).info = 'appcoef2';
  338.   %========== Slide 14 ==========
  339.   idx = idx+1;
  340.   slide(idx).code = {
  341.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  342.   'if idxPREV>idxSlide',
  343.   '   subplot(row_2,col_2,1);',
  344.   '   image(cod_X); axis(''square'');',
  345.   '   title(''Original image X.'');',
  346.   'end',
  347.   'ca1 = appcoef2(c,s,''db1'',1);',
  348.   'ch1 = detcoef2(''h'',c,s,1);',
  349.   'cv1 = detcoef2(''v'',c,s,1);',
  350.   'cd1 = detcoef2(''d'',c,s,1);',
  351.   'cod_ca1 = wcodemat(ca1,nbcol);       clear ca1',
  352.   'cod_ch1 = wcodemat(ch1,nbcol);       clear ch1',
  353.   'cod_cv1 = wcodemat(cv1,nbcol);       clear cv1',
  354.   'cod_cd1 = wcodemat(cd1,nbcol);       clear cd1',
  355.   'h(3) = subplot(row_2,col_2,3); image([cod_ca1,cod_ch1;cod_cv1,cod_cd1]);',
  356.   'axis(''square'');',
  357.   'clear cod_ca1 cod_ch1 cod_cv1 cod_cd1',
  358.   'line(''Xdata'',[1 col],''Ydata'',[row/2 row/2],''Color'',lineCOL);',
  359.   'line(''Xdata'',[col/2 col/2],''Ydata'',[1 row],''Color'',lineCOL);',
  360.   'title(''Coef. at level 1.'');',
  361.   '' };
  362.   slide(idx).text = {
  363.   ' % Extract coefficients at level 1,',
  364.   ' % from wavelet decomposition structure [c,s].',
  365.   ' '
  366.   '        ca1 = appcoef2(c,s,''db1'',1);',
  367.   '        ch1 = detcoef2(''h'',c,s,1);',
  368.   '        cv1 = detcoef2(''v'',c,s,1);',
  369.   '        cd1 = detcoef2(''d'',c,s,1);',
  370.   '' };
  371.   slide(idx).info = 'detcoef2';
  372.   %========== Slide 15 ==========
  373.   idx = idx+1;
  374.   slide(idx).code = {
  375.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',
  376.   'row_3 = 3; col_3 = 4;';
  377.   'ax = subplot(row_3,col_3,1); image(cod_X); axis(''square'');',
  378.   'title(''X'');',
  379.   '' };
  380.   slide(idx).text = {
  381.   ' % Plot the original image.',
  382.   '' };
  383.   slide(idx).info = 'detcoef2';
  384.   slide(idx).idxPrev = 12;
  385.   %========== Slide 16 ==========
  386.   idx = idx+1;
  387.   slide(idx).code = {
  388.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  389.   'if idxPREV>idxSlide',
  390.   '   for j = 1:3 , tmp(j) = subplot(row_3,col_3,j+9); end;',
  391.   '   delete(tmp); clear tmp',
  392.   'end',
  393.   'a2 = wrcoef2(''a'',c,s,''db1'',2);',
  394.   'ax = subplot(row_3,col_3,9); image(wcodemat(a2,nbcol)); axis(''square'');',
  395.   'title(''a2'')',
  396.   'clear a2',
  397.   '' };
  398.   slide(idx).text = {
  399.   ' % Reconstruct approximation at level 2 from',
  400.   ' % the wavelet decomposition structure [c,s].',
  401.   ' ',
  402.   '        a2 = wrcoef2(''a'',c,s,''db1'',2);',
  403.   '' };
  404.   slide(idx).info = 'wrcoef2';
  405.   %========== Slide 17 ==========
  406.   idx = idx+1;
  407.   slide(idx).code = {
  408.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  409.   'if idxPREV<idxSlide',
  410.   '    h2 = wrcoef2(''h'',c,s,''db1'',2);',
  411.   '    v2 = wrcoef2(''v'',c,s,''db1'',2);',
  412.   '    d2 = wrcoef2(''d'',c,s,''db1'',2);',
  413.   '    ax = subplot(row_3,col_3,10); image(wcodemat(h2,nbcol)); axis(''square'');',
  414.   '    title(''h2'');',
  415.   '    clear h2',
  416.   '    ax = subplot(row_3,col_3,11); image(wcodemat(v2,nbcol)); axis(''square'');',
  417.   '    title(''v2'');',
  418.   '    clear v2',
  419.   '    ax = subplot(row_3,col_3,12); image(wcodemat(d2,nbcol)); axis(''square'');',
  420.   '    title(''d2'');',
  421.   '    clear d2',
  422.   'end',
  423.   '' };
  424.   slide(idx).text = {
  425.   ' % Reconstruct detail at level 2 from',
  426.   ' % the wavelet decomposition structure [c,s].',
  427.   '         h2 = wrcoef2(''h'',c,s,''db1'',2);',
  428.   '         v2 = wrcoef2(''v'',c,s,''db1'',2);',
  429.   '         d2 = wrcoef2(''d'',c,s,''db1'',2);',
  430.   '' };
  431.   slide(idx).info = 'wrcoef2';
  432.   %========== Slide 18 ==========
  433.   idx = idx+1;
  434.   slide(idx).code = {
  435.   'sc = size(c);',
  436.   'val_s = s;',
  437.   '[c,s] = upwlev2(c,s,''db1'');',
  438.   'sc = size(c);',
  439.   'val_s = s;',
  440.   '' };
  441.   slide(idx).text = {
  442.   ' % One step reconstruction of wavelet',
  443.   ' % decomposition structure [c,s].',
  444.   '        [c,s] = upwlev2(c,s,''db1'');',
  445.   '' };
  446.   slide(idx).info = 'upwlev2';
  447.   %========== Slide 19 ==========
  448.   idx = idx+1;
  449.   slide(idx).code = {
  450.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  451.   'if idxPREV>idxSlide',
  452.   '   for j = 1:4 , tmp(j) = subplot(row_3,col_3,j+4); end; ',
  453.   '   delete(tmp); clear tmp',
  454.   'end',   
  455.   '' };
  456.   slide(idx).text = {
  457.   ' % Reconstruct approximation and details',
  458.   ' % at level 1, from coefficients.',
  459.   ' %'
  460.   ' % step 1 : extract coefficients',
  461.   ' % decomposition structure [c,s].',
  462.   ' %',
  463.   ' % step 2 : reconstruct.',
  464.   '' };
  465.   slide(idx).info = '';
  466.   %========== Slide 20 ==========
  467.   idx = idx+1;
  468.   slide(idx).code = {
  469.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  470.   'if idxPREV>idxSlide',
  471.   '   delete(subplot(row_3,col_3,3));',
  472.   'else',
  473.   '   siz = s(size(s,1),:);',
  474.   '   ca1 = appcoef2(c,s,''db1'',1);',
  475.   '   a1  = upcoef2(''a'',ca1,''db1'',1,siz);',
  476.   '   clear ca1',
  477.   '   ch1 = detcoef2(''h'',c,s,1);',
  478.   '   hd1 = upcoef2(''h'',ch1,''db1'',1,siz);',
  479.   '   clear ch1',
  480.   '   cv1 = detcoef2(''v'',c,s,1);',
  481.   '   vd1 = upcoef2(''v'',cv1,''db1'',1,siz);',
  482.   '   clear cv1',
  483.   '   cd1 = detcoef2(''d'',c,s,1);',
  484.   '   dd1 = upcoef2(''d'',cd1,''db1'',1,siz);',
  485.   '   clear cd1',
  486.   '   ax = subplot(row_3,col_3,5); image(wcodemat(a1,nbcol)); axis(''square'');',
  487.   '   title(''a1'');',
  488.   '   clear a1',
  489.   '   ax = subplot(row_3,col_3,6); image(wcodemat(hd1,nbcol)); axis(''square'');',
  490.   '   title(''h1'');',
  491.   '   clear hd1',
  492.   '   ax = subplot(row_3,col_3,7); image(wcodemat(vd1,nbcol)); axis(''square'');',
  493.   '   title(''v1'');',
  494.   '   clear vd1',
  495.   '   ax = subplot(row_3,col_3,8); image(wcodemat(dd1,nbcol)); axis(''square'');',
  496.   '   title(''d1'');',
  497.   '   clear dd1',
  498.   'end'
  499.   '' };
  500.   slide(idx).text = {
  501.   '    siz = s(size(s,1),:);',
  502.   '    ca1 = appcoef2(c,s,''db1'',1);',
  503.   '    ch1 = detcoef2(''h'',c,s,1);',
  504.   '    cv1 = detcoef2(''v'',c,s,1);',
  505.   '    cd1 = detcoef2(''d'',c,s,1);',
  506.   '    a1  = upcoef2(''a'',ca1,''db1'',1,siz);',
  507.   '    hd1 = upcoef2(''h'',ch1,''db1'',1,siz);',
  508.   '    vd1 = upcoef2(''v'',cv1,''db1'',1,siz);',
  509.   '    dd1 = upcoef2(''d'',cd1,''db1'',1,siz);',
  510.   '' };
  511.   slide(idx).info = 'upcoef2';
  512.   %========== Slide 21 ==========
  513.   idx = idx+1;
  514.   slide(idx).code = {
  515.   'a0 = waverec2(c,s,''db1'');',
  516.   'subplot(row_3,col_3,3); image(wcodemat(a0,nbcol)); axis(''square'');',
  517.   'title(''Reconstructed image a0.'');',
  518.   '' };
  519.   slide(idx).text = {
  520.   ' % Reconstruct X from the wavelet',
  521.   ' % decomposition structure [c,s].',
  522.   ' ',
  523.   '         a0 = waverec2(c,s,''db1'');',
  524.   '' };
  525.   slide(idx).info = 'waverec2';
  526.   varargout{1} = slide;
  527. end