⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfusion.m

📁 该代码为图像融合的vc源程序,对学习图像融合有很重要的价值
💻 M
📖 第 1 页 / 共 2 页
字号:
function varargout = mfusion(varargin)%%mfusion.m, v 1.0 2002/04/30 17:07:40%===========================================================================%               Eduardo Fernandez Canga - University of Bath%%                        Copyright (c) 2002%===========================================================================%%                     %%===========================================================================if nargin == 0  % LAUNCH GUI	fig = openfig(mfilename,'reuse');	% Use system color scheme for figure:	set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));	% Generate a structure of handles to pass to callbacks, and store it. 	handles = guihandles(fig);    handles.reference=0;    handles.pathname='';    % Default values for all fusion algorithms    handles.opmask=1; %consistency checking set to 1 (default)    % wavelet    handles.opwavesc=4;    set(handles.wavesc,'Value',3);    handles.opwavcoef='bi97.wvf';        % CEMIF    handles.opcembac=1;        handles.opcemsiz=11;    set(handles.cemif_size,'Value',5);    % Spatial Freq    handles.opsfbs=8;        handles.opsfth=1;    set(handles.sfblock,'string',num2str(handles.opsfbs));    set(handles.sfthres,'string',num2str(handles.opsfth));           % Laplacian    handles.oplapa=6/16;                   set(handles.pop_lapa,'Value',3);          % Default distortion values    % Gauss noise    handles.opgausmean=0;                    handles.opgausvar=0.01;    set(handles.gausmean,'string',num2str(handles.opgausmean));    set(handles.gausvar,'string',num2str(handles.opgausvar));           % salt & pepper noise    handles.opsaltdens=0.05;    set(handles.saltdens,'string',num2str(handles.opsaltdens));        % speckle noise    handles.opspeckvar=0.04;    set(handles.speckvar,'string',num2str(handles.opspeckvar));    guidata(fig, handles);	if nargout > 0		varargout{1} = fig;	endelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK	try		[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard	catch		disp(lasterr);	endend% --------------------------------------------------------------------%  Fusion Method Selection : Callback% --------------------------------------------------------------------function varargout = menu_fusmet_Callback(h, eventdata, handles, varargin)val = get(h,'Value');handles.opfusmet=val;% Set interface valuesset(handles.check_mask,'value',handles.opmask);    set(handles.cemif_met,'visible','off')set(handles.text_cemif_met,'visible','off')set(handles.cemif_size,'visible','off')set(handles.text_cemif_size,'visible','off')set(handles.wavesc,'visible','off')set(handles.text_wavesc,'visible','off')set(handles.wavcoef,'visible','off')    set(handles.text_wavcoef,'visible','off')set(handles.check_mask,'visible','off')set(handles.text_sfbs,'visible','off')set(handles.sfblock,'visible','off')set(handles.text_sfthres,'visible','off')set(handles.sfthres,'visible','off')set(handles.text_lapa,'visible','off')set(handles.pop_lapa,'visible','off')set(handles.check_mask,'visible','on')    switch handles.opfusmetcase 1        set(handles.check_mask,'visible','off')        case 2    set(handles.wavesc,'visible','on')    set(handles.text_wavesc,'visible','on')    set(handles.wavcoef,'visible','on')        set(handles.text_wavcoef,'visible','on')case 3    set(handles.cemif_met,'visible','on')    set(handles.text_cemif_met,'visible','on')    set(handles.cemif_size,'visible','on')    set(handles.text_cemif_size,'visible','on')case 4    set(handles.text_sfbs,'visible','on')    set(handles.sfblock,'visible','on')    set(handles.text_sfthres,'visible','on')    set(handles.sfthres,'visible','on')case 5    set(handles.wavesc,'visible','on')    set(handles.text_wavesc,'visible','on')    set(handles.text_lapa,'visible','on')    set(handles.pop_lapa,'visible','on')endguidata(h,handles) % --------------------------------------------------------------------%  Change Spatial Frequency Values% --------------------------------------------------------------------function sfthres_Callback(h, eventdata, handles)val = get(h,'String');handles.opsfth= str2num(char(val));guidata(h,handles) function sfblock_Callback(h, eventdata, handles)val = get(h,'String');handles.opsfbs= str2num(char(val));guidata(h,handles) % --------------------------------------------------------------------%  CEMIF Background Fusion Method : Callback% --------------------------------------------------------------------function varargout = menu_cemif_Callback(h, eventdata, handles, varargin)val = get(h,'Value');handles.opcembac=val;% if 1 User selected img 1 (Default)                     % if 2 User selected img 2                     % if 3 User selected bothguidata(h,handles) % --------------------------------------------------------------------%  CEMIF Average Mask Size : Callback% --------------------------------------------------------------------function varargout = menu_cemifsize_Callback(h, eventdata, handles, varargin)val = get(h,'Value');handles.opcemsiz= 2*val+1;guidata(h,handles) % --------------------------------------------------------------------%  Wavelet Number of Scales : Callback% --------------------------------------------------------------------function varargout = menu_wavesc_Callback(h, eventdata, handles, varargin)val = get(h,'Value');handles.opwavesc=val+1;guidata(h,handles) % --------------------------------------------------------------------%  Wavelet Coeficients : Callback% --------------------------------------------------------------------function varargout = menu_wavcoef_Callback(h, eventdata, handles, varargin)val = get(h,'Value');values = get(h,'String');r=values(val,1);handles.opwavcoef=[char(r) '.wvf'];guidata(h,handles) % --------------------------------------------------------------------%  Laplacian filter election (value of 'a') : Callback% --------------------------------------------------------------------function varargout = menu_lapcoef_Callback(h, eventdata, handles, varargin)val = get(h,'Value');handles.oplapa=(val+3)/16;guidata(h,handles) % --------------------------------------------------------------------%  Use of Consistency Checking : Callback% --------------------------------------------------------------------function varargout = check_mask_Callback(h, eventdata, handles, varargin)handles.opmask = get(h,'Value');guidata(h,handles) % --------------------------------------------------------------------%  Distorsion Method Selection : Callback% --------------------------------------------------------------------function varargout = menu_distmet_Callback(h, eventdata, handles, varargin)val = get(h,'Value');set(handles.dist_but,'visible','on')handles.opdistmet=val;set(handles.gausvar,'visible','off')set(handles.gausmean,'visible','off')set(handles.text_gausvar,'visible','off')set(handles.text_gausmean,'visible','off')set(handles.saltdens,'visible','off')set(handles.text_saltdens,'visible','off')set(handles.speckvar,'visible','off')set(handles.text_speckvar,'visible','off')switch handles.opdistmetcase 1    set(handles.dist_but,'visible','off')case 2    set(handles.gausvar,'visible','on')    set(handles.gausmean,'visible','on')    set(handles.text_gausvar,'visible','on')    set(handles.text_gausmean,'visible','on')case 3    set(handles.saltdens,'visible','on')    set(handles.text_saltdens,'visible','on')case 4    set(handles.speckvar,'visible','on')    set(handles.text_speckvar,'visible','on')endguidata(h,handles) % --------------------------------------------------------------------%  Change Distortion Values : Callback% --------------------------------------------------------------------function speckvar_Callback(h, eventdata, handles)val = get(h,'String');handles.opspeckvar=str2num(char(val));guidata(h,handles) function gausvar_Callback(h, eventdata, handles)val = get(h,'String');handles.opgausvar=str2num(char(val));guidata(h,handles) function gausmean_Callback(h, eventdata, handles)val = get(h,'String');handles.opgausmean=str2num(char(val));guidata(h,handles) function saltdens_Callback(h, eventdata, handles)val = get(h,'String');handles.opsaltdens=str2num(char(val));guidata(h,handles) % --------------------------------------------------------------------%  Apply distorsion : Callback% --------------------------------------------------------------------function varargout = push_dist_Callback(h, eventdata, handles, varargin)try    switch handles.opdistmet    case 2        handles.im1=double(imnoise(uint8(handles.im1),'gaussian',...            handles.opgausmean,handles.opgausvar));           handles.im2=double(imnoise(uint8(handles.im2),'gaussian',...            handles.opgausmean,handles.opgausvar));        case 3        handles.im1=double(imnoise(uint8(handles.im1),'salt & pepper',...            handles.opsaltdens));               handles.im2=double(imnoise(uint8(handles.im2),'salt & pepper',...            handles.opsaltdens));           case 4        handles.im1=double(imnoise(uint8(handles.im1),'speckle',handles.opspeckvar));                   handles.im2=double(imnoise(uint8(handles.im2),'speckle',handles.opspeckvar));               case 5        handles.im1=handles.im1b;        handles.im2=handles.im2b;    end    guidata(h,handles)     Image1_Callback(h, eventdata, handles, varargin);    Image2_Callback(h, eventdata, handles, varargin);catch    errordlg(lasterr,'FUSION ERROR','CREATEMODE')end% --------------------------------------------------------------------%  Blur Image 1 : Callback% --------------------------------------------------------------------function varargout = Blur1_Callback(h, eventdata, handles, varargin)handles.im1=imblur(handles.im1);guidata(h,handles) Image1_Callback(h, eventdata, handles, varargin);% --------------------------------------------------------------------%  Blur Image 2 : Callback% --------------------------------------------------------------------function varargout = Blur2_Callback(h, eventdata, handles, varargin)handles.im2=imblur(handles.im2);guidata(h,handles) Image2_Callback(h, eventdata, handles, varargin);% --------------------------------------------------------------------%  Reset Image 1 : Callback% --------------------------------------------------------------------function varargout = Reset1_Callback(h, eventdata, handles, varargin)handles.im1=handles.im1b;guidata(h,handles) Image1_Callback(h, eventdata, handles, varargin);% --------------------------------------------------------------------%  Reset Image 2 : Callback% --------------------------------------------------------------------function varargout = Reset2_Callback(h, eventdata, handles, varargin)handles.im2=handles.im2b;guidata(h,handles) Image2_Callback(h, eventdata, handles, varargin);% --------------------------------------------------------------------%  Draw Fusion : Callback% --------------------------------------------------------------------function varargout = Fus_Image_Callback(h, eventdata, handles, varargin)set(gcbf,'CurrentAxes',findobj(gcbf,'Tag','Axes_fusion'))image(handles.fusion);axis imagecolormap(gray(256));set(findobj(gcbf,'Tag','Axes_fusion'),'Xticklabel',[],'Yticklabel',[])rmse_callback(h, eventdata, handles, varargin);guidata(h,handles) % --------------------------------------------------------------------%  Fusion Button : Callback% --------------------------------------------------------------------function varargout = pushbutton_Fusion_Callback(h, eventdata, handles, varargin)set(handles.text_work,'visible','on')set(handles.text_rmsef,'visible','off')set(handles.text_rmsefb,'visible','off')pause(.01)if (~isfield(handles,'im1')|~isfield(handles,'im2'))    % no enough input images error    errordlg('Please Select Images To Fusion','FUSION ERROR','CREATEMODE')else    im1=handles.im1;    im2=handles.im2;    if size(im1) ~= size(im2)        % no same size error        errordlg('Input Images must be same size','FUSION ERROR','CREATEMODE')    else        if (~isfield(handles,'opfusmet'))            % no fusion method error            errordlg('Please Select Fusion Method','FUSION ERROR','CREATEMODE')        else            try                switch handles.opfusmet                case 1                    % no fusion method error                    errordlg('Please Select Fusion Method','FUSION ERROR','CREATEMODE')                case 2 %wavelet fusion                    esc=handles.opwavesc;                    mask=handles.opmask;                    wavcoef=handles.opwavcoef;                                        handles.fusion=wavelet(im1,im2,esc,mask,wavcoef');                    handles.title=sprintf(...

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -