1 简介
提出了一种基于伪维格纳分布(PWVD)的融合方法.利用一维N像素的滑动窗口在各个方向上 对各待融合图像进行伪维格纳变换,选择均方根最大的方向为各待融合图像的PWVD分解方向,分解形成待融合图像不同频段的能量谱图,然后,针对各待融合不 同频段的能量谱图,融合原则是高频段取区域能量最大,低频段取能量方差最大,形成具有不同频段的融合能量谱图,最后,对能量谱图进行PWVD逆变换,形成 融合图像.对红外与可见光图像,多聚焦图像,电子计算机X射线断层扫描(CT)图像与磁共振(MR)图像和红外与合成孔径雷达(SAR)图像进行了融合实 验,并对融合图像和待融合图像进行了信息熵对比.实验结果表明,采用本文算法的融合图像保留了待融合图像的绝大部分信息.
2 部分代码
function varargout = mapfusion(varargin)
% MAPFUSION M-file for mapfusion.fig
% MAPFUSION, by itself, creates a new MAPFUSION or raises the existing
% singleton*.
%
% H = MAPFUSION returns the handle to a new MAPFUSION or the handle to
% the existing singleton*.
%
% MAPFUSION('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAPFUSION.M with the given input arguments.
%
% MAPFUSION('Property','Value',...) creates a new MAPFUSION or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before mapfusion_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to mapfusion_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help mapfusion
% Last Modified by GUIDE v2.5 19-Oct-2010 16:12:55
% By Salvador Gabarda
% Last updated: 14OCT2015
% salvador.gabarda@gmail.com
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @mapfusion_OpeningFcn, ...
'gui_OutputFcn', @mapfusion_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before mapfusion is made visible.
function mapfusion_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to mapfusion (see VARARGIN)
% -----------------------INITIALIZING--------------------------
axes(handles.result);imagesc(zeros(256));axis off;colormap(gray);
axes(handles.map);imagesc(zeros(256));axis off;colormap(gray);
axes(handles.images);imagesc(zeros(256));axis off;colormap(gray);
NOL=0; % number of layers in input stack
handles.NOL=NOL;
X=[];
handles.X=X; % stack of input layers
MAP=[];
handles.MAP=MAP; % decision map
FUS=[];
handles.FUS=FUS; % fused image
N=8;
handles.N=N; % number of analysis directions for processing
DIR=0;
handles.DIR=DIR; % initial direction of analysis
NDIR=1;
handles.NDIR=NDIR; % number of directions used in the analysis
SP=[];
handles.SP=SP; % spare image
BS=0;
handles.BS=BS; % image bias
R=[];
handles.R=R; % reference image
MHP=1;
handles.MHP=MHP; % image matching profile: 1 for linear profile,
% 2 for cuadratic profile
selection='norm';
handles.selection=selection; % name of the process to be applied
invert_sel='no';
handles.invert_sel=invert_sel; % decision to invert image values
channel_sel='gray';
handles.channel_sel=channel_sel; % decision to use selected image channel
kind_sel='direct';
handles.kind_sel=kind_sel; % name of analysed image distortion
% Choose default command line output for mapfusion
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes mapfusion wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = mapfusion_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% -------------------------INPUT IMAGE ----------------------------------
ch=handles.channel_sel;
[filename,pathname] = uigetfile('*.*', 'Select image');
filename2=[pathname '\' filename];
X=imread(filename2);
% select channel
[Y,la]=imagechannel(X,ch);
% inversion yes/no
invert=handles.invert_sel;
switch invert
case 'yes'
Y=255-Y;
disp('inversion on');
case 'no'
% no action
end
% show selected input channel
axes(handles.images);
imshow(uint8(Y));
colormap('gray');
axis image;
axis off;
% Save the handles structure.
handles.NOL=handles.NOL+1;
handles.X(:,:,handles.NOL)=Y;
handles.SP(:,:,handles.NOL)=Y;
guidata(hObject,handles)
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --------------------------------SKIP------------------------------------
[ro co la]=size(handles.X);
if la>1
axes(handles.images);
for i=1:la
imagesc(handles.X(:,:,i));colormap(gray);
axis image;axis off;pause(1);
end
end
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --------------------------DECISION MAP-----------------------------------
X=handles.X; % stack of input images
fusion_mode=handles.selection; %('norm','entropy','cloud','anysotropy')
XBIAS=handles.BS; % bias for pseudo-Wigner distribution
R=handles.R; % worst reference image
N=handles.N; % pseudo-Wigner distribution window size (even number)
kind=handles.kind_sel; % 'direct', 'inverse'
a=handles.DIR; % first orientation in degrees
mxp=handles.NDIR; % number of PWD's directions (1, 2, 3, ...)
% fusion map
[ro co la]=size(X);
X=X+XBIAS;
R=R+XBIAS;
if isequal(fusion_mode,'cloud')
fusion_mode='norm';
R=255*ones(ro,co);
end
msg=0;
if (isequal(fusion_mode,'anisotropy') && mxp<2)
Z=ones(ro,co);
msg=1;
else
Z=mapmakerplus(X,R,N,fusion_mode,kind,a,mxp);
end
axes(handles.map);
imagesc(uint8(Gama(Z)));
colormap(gray);
axis image;
axis off;
if msg==1
msgbox('more than one direction has to be considered','note...','warn')
end
% Save the handles structure.
handles.MAP=Z;
guidata(hObject,handles)
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% ----------------------------------CLEAR ALL-----------------------------
axes(handles.result);imagesc(zeros(256));axis off;colormap(gray);
axes(handles.map);imagesc(zeros(256));axis off;colormap(gray);
axes(handles.images);imagesc(zeros(256));axis off;colormap(gray);
NOL=0;handles.NOL=NOL;
X=[];handles.X=X;
MAP=[];handles.MAP=MAP;
FUS=[];handles.FUS=FUS;
SP=[];handles.SP=SP;
R=[];handles.R=R;
guidata(hObject,handles)
% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% ----------------------------- MODE ------------------------------------
% Determine the selected mode
str = get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set.
switch str{val};
case 'norm' % User selects eucledian norm.
handles.selection = 'norm';
case 'entropy' % User selects R閚yi entropy.
handles.selection = 'entropy';
case 'anisotropy' % User selects anisotropy.
handles.selection = 'anisotropy';
case 'cloud' % User selects cloud removing.
handles.selection = 'cloud';
end
% Save the handles structure.
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --------------------------- FILTER ---------------------------------
X=handles.MAP;
if isempty(X)~=1
w=11;
mode='integer';
MAPA=StackFilter(X,w,mode);
handles.MAP=MAPA;
axes(handles.map);
imagesc(MAPA);
colormap(gray);
axis image;
axis off;
msgbox('fusion map has been filtered',' ','help')
guidata(hObject,handles)
end
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% -------------------------- FUSION ----------------------------
fusion_mode=handles.selection;
% Image recovering
[roM coM laM]=size(handles.MAP);
if roM>1
axes(handles.result);
U=handles.MAP;
V=handles.X;
[roU coU]=size(U);
[roV coV laV]=size(V);
F=zeros(roU,coU);
for q=1:laV
F=F+(U==q).*V(:,:,q);
end
invert=handles.invert_sel;
switch invert
case 'yes'
F=255-F;
disp('inversion off');
case 'no'
% no action
end
handles.FUS=F;
imagesc(F);
colormap(gray);
axis image;
axis off;
msgbox('fusion completed',fusion_mode,'help')
guidata(hObject,handles);
end
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% ---------------------- WINDOW LENGTH ---------------------------------
NA = get(hObject,'String');
NB=str2num(NA);
if (ceil(NB/2)*2==NB)&(ceil(NB/2)*2>0)
handles.N=NB;
guidata(hObject,handles);
else
msgbox('enter an even number','window performances','error');
guidata(hObject,handles);
end
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% ----------------------- FIRST DIRECTION ---------------------------
DIRX = get(hObject,'String');
DIRY=str2num(DIRX);
handles.DIR=DIRY;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double
% --------------------- NUMBER OF DIRECTIONS -------------------------
NDIRX = get(hObject,'String');
NDIRY=str2num(NDIRX);
if (NDIRY==fix(NDIRY))&(NDIRY>0)
handles.NDIR=NDIRY;
guidata(hObject,handles);
else
msgbox('enter a natural number','number of directions','error');
guidata(hObject,handles);
end
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% ------------------------- SAVE ----------------------------
ch=handles.channel_sel;
% save image
Pop1=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' ...
'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'];
Pop2=['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
seq1=randsample(Pop1,4);
seq2=randsample(Pop2,4);
rename=[seq1 seq2];
mapa=handles.MAP;
if isempty(mapa)~=1
mapa=mapa-1;
xmapa=max(mapa(:));
ymapa=fix(255/xmapa);
mapa=ymapa*mapa;
mapname=strcat(ch,rename,'MAP.tif');
imwrite(uint8(mapa),mapname);
message1=mapname;
end
fusion=handles.FUS;
if isempty(fusion)~=1
fusname=strcat(ch,rename,'FUS.tif');
imwrite(uint8(fusion),fusname);
message2=fusname;
end
if (exist('message1')==1)&(exist('message2')==0)
msgbox(message1,'image saved as:','help');
end
if (exist('message1')==0)&(exist('message2')==1)
msgbox(message2,'image saved as:','help');
end
if (exist('message1')==1)&(exist('message2')==1)
inter=' ';
message= [message1 inter message2];
msgbox(message,'images saved as:','help');
end
if (exist('message1')==0)&(exist('message2')==0)
msgbox('no images to save','images saved as:','help');
end
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
% --------------------- IMAGE SELECTOR --------------------------------
slider_value = get(hObject,'Value');
[roX coX laX]=size(handles.X);
if laX>1
sli=fix(slider_value*laX);
if sli==0
sli=1;
end
axes(handles.images);
imagesc(handles.X(:,:,sli));
colormap(gray);
axis image;
axis off;
end
% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background, change
% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor',[.9 .9 .9]);
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes on button press in pushbutton16.
function pushbutton16_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% ------------------------------ MATCH ----------------------------
prof=handles.MHP;
U=handles.X;
if isempty(U)==0
[roX coX laX]=size(U);
MR=HistoGenEx(roX,coX,prof);
wb = waitbar(0,'Please wait...');
for k=1:laX
V(:,:,k)=MatchHisto(MR,U(:,:,k),0);
waitbar(k/laX,wb)
end
close(wb)
handles.X=V;
axes(handles.images);
imagesc(V(:,:,laX));
colormap(gray);
axis image;
axis off;
guidata(hObject,handles);
end
% --- Executes on button press in pushbutton17.
function pushbutton17_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% ---------------------------- UNMATCH ----------------------------
if isempty(handles.SP)==0
handles.X=handles.SP;
handles.SP=handles.X;
[roX coX laX]=size(handles.X);
axes(handles.images);
imagesc(handles.X(:,:,laX));
colormap(gray);
axis image;
axis off
guidata(hObject,handles);
end
function edit10_Callback(hObject, eventdata, handles)
% hObject handle to edit10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit10 as text
% str2double(get(hObject,'String')) returns contents of edit10 as a double
% ---------------------------- BIAS ---------------------------------
XBIAS = get(hObject,'string');
YBIAS=str2num(XBIAS);
handles.BS=YBIAS;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit11_Callback(hObject, eventdata, handles)
% hObject handle to edit11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit11 as text
% str2double(get(hObject,'String')) returns contents of edit11 as a double
% ---------------------------- MATCH PROFILE -------------------
prof = get(hObject,'String');
MHP=str2num(prof);
if MHP>0
handles.MHP=MHP;
guidata(hObject,handles);
else
msgbox('enter a positive real number','match profile','error');
guidata(hObject,handles);
end
% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popupmenu3.
function popupmenu3_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu3 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu3
% -------------------------------- INVERT -----------------------
% Determine the selected mode
str = get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set.
switch str{val};
case 'no' % User selects direct levels
handles.invert_sel = 'no';
case 'yes' % User selects inverted levels
handles.invert_sel = 'yes';
end
% Save the handles structure.
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function popupmenu3_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popupmenu4.
function popupmenu4_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu4 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu4
% -------------------------------------CHANNEL --------------------------
% Determine the selected mode
str = get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set.
switch str{val};
case 'gray' % User selects gray image conversion
handles.channel_sel = 'gray';
case 'R' % User selects red channel
handles.channel_sel = 'R';
case 'G' % User selects green channel
handles.channel_sel = 'G';
case 'B' % User selects blue channel
handles.channel_sel = 'B';
end
% Save the handles structure.
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function popupmenu4_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popupmenu5.
function popupmenu5_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu5 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu5
% ------------------------------ KIND -------------------------
% Determine the selected kind of image problem
str = get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set.
switch str{val};
case 'direct' % User selects image deblurring
handles.kind_sel = 'direct';
case 'inverse' % User selects image denoising
handles.kind_sel = 'inverse';
end
% Save the handles structure.
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function popupmenu5_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
3 仿真结果
4 参考文献
[1]刘聪, 李言俊, 张科. 基于伪维格纳分布的图像融合[J]. 光学学报, 2009(10):5.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。