📄 guisaliency.m
字号:
if ~confirmParamsChange(handles) return;endnormTypes = get(handles.NormType,'String');params.normtype = normTypes{get(handles.NormType,'Value')};niter = str2num(get(handles.NumIter,'String'));if ~isempty(niter) niter = round(niter(1)); if (niter < 0) niter = 0; end params.numIter = niter;end% NormType drop-down listfunction NormType_Callback(hObject, eventdata, handles)getNormType(handles);setNormType(handles);% create NormType drop-down listfunction NormType_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% NumIter textboxfunction NumIter_Callback(hObject, eventdata, handles)getNormType(handles);setNormType(handles);% create NumIter textboxfunction NumIter_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% setting shape mode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% get the shape mode parameters form the GUI controlsfunction getShapeMode(handles)global params;if ~confirmParamsChange(handles) return;endshapeModes = {'None','shapeSM','shapeCM','shapeFM','shapePyr'};params.shapeMode = shapeModes{get(handles.ShapeMode,'Value')};newFS = str2num(get(handles.FOAsize,'String'));if ~isempty(newFS) if (newFS < 0) newFS = 0; end params.foaSize = newFS;endreturn;% set the shape mode GUI controls according to the parametersfunction setShapeMode(handles)global params;shapeModes = {'None','shapeSM','shapeCM','shapeFM','shapePyr'};mode = strmatch(params.shapeMode,shapeModes);if ~isempty(mode) set(handles.ShapeMode,'Value',mode(1));endisNone = strcmp(params.shapeMode,shapeModes{1});setEnable(isNone,[handles.FOAsize,handles.FOAsizeText]);if (params.foaSize >= 0) set(handles.FOAsize,'String',num2str(params.foaSize));else set(handles.FOAsize,'String','');endreturn;% ShapeMode drop-down listfunction ShapeMode_Callback(hObject, eventdata, handles)getShapeMode(handles);setShapeMode(handles);% create ShapeMode drop-down listfunction ShapeMode_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% FOAsize textboxfunction FOAsize_Callback(hObject, eventdata, handles)getShapeMode(handles);setShapeMode(handles);% create FOAsize textboxfunction FOAsize_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% setting visualizations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% initializes plot windowsfunction initializeVisFigures(handles)visHandles = [handles.VisImg,handles.VisSM,handles.VisCM,... handles.VisShape,handles.VisLoc];for h = visHandles visStrings = {'off','on'}; figH = figure; vis = get(h,'Value')+1; set(figH,'Name',['STB: ' get(h,'String')],... 'NumberTitle','off',... 'CloseRequestFcn',@VisFigureCloseCallback,... 'UserData',h,... 'Visible',visStrings{vis}); set(h,'UserData',figH);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% delete the visualization figures, e.g. when the 'Quit' button is pressedfunction cleanupVisFigures(handles)visHandles = [handles.VisImg,handles.VisSM,handles.VisCM,... handles.VisShape,handles.VisLoc];for h = visHandles figH = get(h,'UserData'); delete(figH);endreturn;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% callback function for closing figures - just make them invisiblefunction VisFigureCloseCallback(hSrc,event)hObject = get(hSrc,'UserData');set(hObject,'Value',0);set(hSrc,'Visible','off');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% set the GUI controls and figure visibilityfunction setVisFigure(hObject,handles)enableStrings = {'off','on'};figH = get(hObject,'UserData');val = get(hObject,'Value')+1;try set(figH,'Visible',enableStrings{val});catch figH = figure; set(figH,'Visible',enableStrings{val}); set(hObject,'UserData',figH);end% do the above for all visualization figuresfunction setAllVisFigures(handles)visHandles = [handles.VisImg,handles.VisSM,handles.VisCM,... handles.VisShape,handles.VisLoc];for h = visHandles setVisFigure(h,handles);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the 'image' visualization figurefunction updateImg(handles)global state img;figH = get(handles.VisImg,'UserData');if strcmp(get(figH,'Visible'),'on') switch state case {'ImageLoaded','MapsComputed'} figure(figH); displayImage(img); figure(handles.figure1); otherwise % do nothing endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the 'saliency map' visualization figurefunction updateSM(handles)global state salMap wta img;figH = get(handles.VisSM,'UserData');if strcmp(get(figH,'Visible'),'on') switch state case 'MapsComputed' figure(figH); wtaMap = emptyMap(img.size(1:2),'Winner Take All'); wtaMap.data = imresize(wta.sm.V,img.size(1:2),'bilinear'); displayMaps([salMap,wtaMap],1); figure(handles.figure1); otherwise % do nothing endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the 'conspicuity maps' visualization figurefunction updateCM(handles)global state salData;figH = get(handles.VisCM,'UserData');if strcmp(get(figH,'Visible'),'on') switch state case 'MapsComputed' figure(figH); displayMaps([salData(:).CM],1); figure(handles.figure1); otherwise % do nothing endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the 'shape maps' visualization figurefunction winLabel = updateShape(handles)global state shapeData;if isempty(shapeData) winLabel = '';else winLabel = [' - ' shapeData.winningMap.label]; figH = get(handles.VisShape,'UserData'); if strcmp(get(figH,'Visible'),'on') switch state case 'MapsComputed' figure(figH); displayMaps({shapeData.winningMap,shapeData.segmentedMap,... shapeData.binaryMap,shapeData.shapeMap}); figure(handles.figure1); otherwise % do nothing end endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the 'attended location' visualization figurefunction updateLoc(handles)global globalVars;eval(globalVars);figH = get(handles.VisLoc,'UserData');if strcmp(get(figH,'Visible'),'on') switch state case 'ImageLoaded' updateLocImg(handles); case 'MapsComputed' figure(figH); plotSalientLocation(winner,lastWinner,img,params,shapeData); if ~isempty(shapeData) title(['shape from: ' shapeData.winningMap.label]); end figure(handles.figure1); otherwise % do nothing endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% update the image in the 'attended location' visualization figurefunction updateLocImg(handles)global state img params;figH = get(handles.VisLoc,'UserData');if strcmp(get(figH,'Visible'),'on') switch state case {'ImageLoaded','MapsComputed'} if strcmp(params.visualizationStyle,'Contour') figure(figH); displayImage(img); setVisFigure(handles.VisLoc,handles); figure(handles.figure1); end otherwise % do nothing endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GUI controls for the visualization figures%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% visualize image checkboxfunction VisImg_Callback(hObject, eventdata, handles)setVisFigure(hObject,handles);updateImg(handles);% visualize SM checkboxfunction VisSM_Callback(hObject, eventdata, handles)setVisFigure(hObject,handles);updateSM(handles);% visualize CM checkboxfunction VisCM_Callback(hObject, eventdata, handles)setVisFigure(hObject,handles);updateCM(handles);% visualize Shape checkboxfunction VisShape_Callback(hObject, eventdata, handles)setVisFigure(hObject,handles);updateShape(handles);% visualize location checkboxfunction VisLoc_Callback(hObject, eventdata, handles)global lastWinner;lastWinner = [-1,-1];setVisFigure(hObject,handles);updateLoc(handles);% visualization style drop-down listfunction VisStyle_Callback(hObject, eventdata, handles)global globalVars;eval(globalVars);styleStrings = get(hObject,'UserData');val = get(hObject,'Value');params.visualizationStyle = styleStrings{val};lastWinner = [-1,-1];set(handles.VisLoc,'Value',1);setVisFigure(handles.VisLoc,handles);updateLocImg(handles);updateLoc(handles);function VisStyle_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% parameters management%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% reset parameters to the defaultfunction DefaultSettings_Callback(hObject, eventdata, handles)global params img;if confirmParamsChange(handles) if isempty(img) params = defaultSaliencyParams; else params = defaultSaliencyParams(img.size); end checkColorParams(handles); fillParams(handles);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% save parametersfunction SaveSettings_Callback(hObject, eventdata, handles)global params;debugMsg('Saving settings.');[filename,path] = uiputfile('*.mat','Save parameters as ...',... 'parameters.mat');if (filename ~= 0) save([path filename],'params');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% load parametersfunction LoadSettings_Callback(hObject, eventdata, handles)global params;if confirmParamsChange(handles) debugMsg('Loading settings.'); [filename,path] = uigetfile('*.mat','Loading parameters from ...',... 'parameters.mat'); if (filename ~= 0) try in = load([path filename]); catch uiwait(warndlg([filename ' is not a data file!'],... 'Not a valid data file','modal')); return; end fnames = fieldnames(in); if strmatch('params',fnames) % we have a params field - great, let's take it params = in.params; fillParams(handles); elseif (length(fnames) == 1) % just one field - let's use this one params = getfield(in,fnames{1}); fillParams(handles); else % couldn't find params in this file uiwait(warndlg(['Could not find params in ' filename],... 'Params not found','modal')); end checkColorParams(handles); endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% save mapsfunction SaveMaps_Callback(hObject, eventdata, handles)global salMap salData shapeData;debugMsg('Saving maps.');[filename,path] = uiputfile('*.mat','Save maps in ...',... 'maps.mat');if (filename ~= 0) save([path filename],'salMap','salData','shapeData');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Switch Debugging messages on/offfunction ToggleDebug_Callback(hObject, eventdata, handles)global DEBUG_FIDDEBUG_FID = get(hObject,'Value');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Reset buttonfunction Restart_Callback(hObject, eventdata, handles)setState(handles,'ImageLoaded');fprintf('---------------------------\n');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% saliency computation functions and controls%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Start / Next Location buttonfunction NextLoc_Callback(hObject, eventdata, handles)global globalVars;eval(globalVars);switch state case 'ImageLoaded' debugMsg('Computing new maps ...'); setState(handles,'Busy'); [salMap,salData] = makeSaliencyMap(img,params); wta = initializeWTA(salMap,params); state = 'MapsComputed'; winner = [-1,-1]; updateCM(handles); updateLocImg(handles); NextLoc_Callback(hObject, eventdata, handles); case 'MapsComputed' debugMsg('Going to the next location ...'); setState(handles,'Busy'); lastWinner = winner; thisWinner = [-1,-1]; while (thisWinner(1) == -1) [wta,thisWinner] = evolveWTA(wta); end shapeData = estimateShape(salMap,salData,thisWinner,params); wta = applyIOR(wta,thisWinner,params,shapeData); winner = winnerToImgCoords(thisWinner,params); state = 'MapsComputed'; updateSM(handles); winLabel = updateShape(handles); updateLoc(handles); fprintf('winner: %i,%i; t = %4.1f ms%s\n',... winner(2),winner(1),wta.exc.time*1000,winLabel); otherwise debugMsg(['Unexpected state: ' state]);endsetState(handles);return;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% About buttonfunction About_Callback(hObject, eventdata, handles)uiwait(msgbox({... 'SaliencyToolbox 2.0',... 'http://www.saliencytoolbox.net','',... 'Copyright 2006-2007 by Dirk B. Walther and',... 'the California Institutute of Technology','',... 'Type ''STBlicense'' to view the license agreement.',''},... 'About SaliencyToolbox','modal'));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Quit buttonfunction Quit_Callback(hObject, eventdata, handles)setState(handles,'Busy');uiresume(handles.figure1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -