1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| function PopUpMenu_Callback(hObject, eventdata, handles)
% hObject handle to PopUpMenu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global Dm M
str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val}
case 'Moore_Neighborhood'
Nn = str2double(get(handles.Nn_value, 'string'));
Dm = [1 1 1;1 0 1;1 1 1]/Nn;
case 'Uniform'
u = str2double(get(handles.u_value, 'string'));
nD = str2double(get(handles.n_value, 'string'));
[I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
Unif = ((nD+1-I).^2+(nD+1-J).^2)<u*nD;
Unif(nD+1,nD+1) = 0;
Dm = Unif./sum(sum(Unif));
case 'Exponential'
a = str2double(get(handles.sig_value, 'string'));
nD = str2double(get(handles.n_value, 'string'));
[I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
Ex = exp(-a*(abs(nD+1-I)+abs(nD+1-J)));
Ex(nD+1,nD+1) = 0;
Dm = Ex./sum(sum(Ex));
case 'Gaussian'
sig = str2double(get(handles.sig_value, 'string'));
nD = str2double(get(handles.n_value, 'string'));
[I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
Ga = exp(-((nD+1-I).^2+(nD+1-J).^2)/(2*sig.^2));
Ga(nD+1,nD+1) = 0;
Dm = Ga./sum(sum(Ga));
case 'Gamma'
theta = str2num(get(handles.theta_value, 'String'));
[n,m] = size(M);
k = 1;
nD = n;
[I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
X = [abs(nD+1-J)+abs(nD+1-I)];
Gm = gampdf(X,k,theta);
Gm(nD+1,nD+1) = 0;
Dm = Gm./sum(sum(Gm));
end |
Partager