www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/dw2dimgs.m

    function out1 = dw2dimgs(option,in2,in3,in4)
%DW2DIMGS Discrete wavelet 2-D image selection.
%   OUT1 = DW2DIMGS(OPTION,IN2,IN3,IN4)

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
%   Last Revision: 10-Jun-2013.
%   Copyright 1995-2013 The MathWorks, Inc.
%   $Revision: 1.14.4.8 $

% Tag property of objects.
%-------------------------
tag_imgsel = 'Img_Select';
tag_imgdec = 'Img_Dec';

% Miscellaneous values.
%----------------------
if isequal(option,'get_img')
    win_dw2dtool = get(0,'CurrentFigure');
	SelectType = get(win_dw2dtool,'SelectionType');
	if ~isequal(SelectType,'normal') , return; end 
else
    win_dw2dtool = in2;
end
dw2d_PREFS = wtbutils('dw2d_PREFS');
Col_BoxAxeSel   = dw2d_PREFS.Col_BoxAxeSel;
Col_BoxTitleSel = dw2d_PREFS.Col_BoxTitleSel;
Wid_LineSel   = dw2d_PREFS.Wid_LineSel;

img_hdl = findobj(win_dw2dtool,'Type','image');
switch option
    case 'get_img'
        sel_obj = get(win_dw2dtool,'currentobject');
        Img_Dec = findobj(img_hdl,'Tag',tag_imgdec);
        obj_sel = findobj(img_hdl,'Tag',tag_imgsel);
        ind     = find(sel_obj==[Img_Dec;obj_sel],1);
        if ~isempty(ind)
            if ~isempty(obj_sel)
                set(obj_sel,'Tag',tag_imgdec);
                axe = get(obj_sel,'Parent');
                set(axe,'XColor',Col_BoxAxeSel, ...
                        'YColor',Col_BoxAxeSel, ...
                        'LineWidth',0.5         ...
                        );
                col_lab = get(win_dw2dtool,'DefaultAxesXColor');
                set(get(axe,'xlabel'),'Color',col_lab);
                if obj_sel==sel_obj
                    if nargout>0 , out1 = []; end
                    return; 
                end
            end
            axe = get(sel_obj,'Parent');
            set(axe,...
                    'XColor',Col_BoxTitleSel,   ...
                    'YColor',Col_BoxTitleSel,   ...
                    'LineWidth',Wid_LineSel,    ...
                    'Box','On'                  ...
                    );
            pause(0.01); axes(axe)
            set(sel_obj,'Tag',tag_imgsel);
            if nargout>0 , out1 = sel_obj; end
        end

    case 'clean'
        obj_sel = findobj(img_hdl,'Tag',tag_imgsel);
        if ~isempty(obj_sel)
            set(obj_sel,'Tag',tag_imgdec);
            axe = get(obj_sel,'Parent');
            set(axe,'XColor',Col_BoxAxeSel, ...
                    'YColor',Col_BoxAxeSel, ...
                    'LineWidth',0.5         ...
                    );
            col_lab = get(win_dw2dtool,'DefaultAxesXColor');
            set(get(axe,'xlabel'),'Color',col_lab);
            if nargout>0 , out1 = []; end
        end

    case 'cleanif'
        % for view_dec
        % in3 = new_lev_dec
        % in4 = old_lev_dec
        %----------------------------
        obj_sel = findobj(img_hdl,'Tag',tag_imgsel);
        if ~isempty(obj_sel)
            us = get(obj_sel,'UserData');
            %---------------------------%
            %- us = [0;k;m]
            %- k = level ;
            %- m = 1 : v ; m = 2 : d ;             
            %- m = 3 : h ; m = 4 : a ;     
            %----------------------------%
            if (us(2)<=in3)
                if (in4>in3) || (us(3)<4) , return; end
            end
            set(obj_sel,'Tag',tag_imgdec);
            axe = get(obj_sel,'Parent');
            set(axe,'XColor',Col_BoxAxeSel, ...
                    'YColor',Col_BoxAxeSel, ...
                    'LineWidth',0.5         ...
                    );
            col_lab = get(win_dw2dtool,'DefaultAxesXColor');
            set(get(axe,'xlabel'),'Color',col_lab);
        end

    case 'get'
        out1 = findobj(img_hdl,'Tag',tag_imgsel);

    otherwise
        errargt(mfilename,getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg');
        error(message('Wavelet:FunctionArgVal:Invalid_ArgVal'));
end