📄 mfusion.m
字号:
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 + -