📄 roi_session_ui.m
字号:
fid = fopen(flooded_file,'w');
if fid == -1
msg = 'ERROR: Cannot save file';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
else
fclose(fid);
end
temp_image_file = get(findobj(gcf,'Tag','template_image_edit'),'user');
temp_image = double(imread(temp_image_file))+1;
if size(temp_image,3) > 1
temp_image = mean(temp_image,3);
end
% gray(16) from 241
%
temp_image = (temp_image-min(temp_image(:)))*16/(max(temp_image(:))-min(temp_image(:)))+241;
temp_loc_file = get(findobj(gcf,'Tag','template_location_edit'),'user');
[roi_name, temp_loc] = read_ixy(temp_loc_file);
flooded_image = uint8(roi_fill_map(temp_image, temp_loc) -1);
old_pointer = get(gcf,'Pointer');
set(gcf,'Pointer','watch');
imwrite(flooded_image, flooded_file);
num_roi = flooded_image(find(flooded_image<150));
num_roi = max(double(num_roi(:)))+1;
for i=1:num_roi
coord{i} = find(flooded_image==(i-1));
end
setappdata(gcf,'coord',coord);
setappdata(gcf,'num_roi',num_roi);
set(gcf,'Pointer',old_pointer);
set(findobj(gcf,'Tag','flooded_file_radio'),'Value',1);
set(findobj(gcf,'Tag','template_image_radio'),'Value',0);
set(findobj(gcf,'Tag','template_image_label'),'enable','off');
set(findobj(gcf,'Tag','template_image_edit'),'enable','off','string','');
set(findobj(gcf,'Tag','template_image_browse'),'enable','off');
set(findobj(gcf,'Tag','create_roi_flooded_file'),'enable','off');
set(findobj(gcf,'Tag','flooded_file_label'),'enable','on');
set(findobj(gcf,'Tag','flooded_file_edit'),'enable','inactive','string',fn);
set(findobj(gcf,'Tag','flooded_file_browse'),'enable','on');
set(findobj(gcf,'Tag','edit_compare'),'enable','on');
set(findobj(gcf,'Tag','template_image_edit'),'user','');
set(findobj(gcf,'Tag','flooded_file_edit'),'user',flooded_file);
return; % create_roi_flooded_file
%-------------------------------------------------------------------------------
function edit_compare
[fn, pn]=uigetfile('*.txt','Select Compare File');
if isequal(fn, 0) | isequal(pn, 0) % Cancel was clicked
return;
end;
compare_file = fullfile(pn, fn);
try
compare = load(compare_file);
catch % cannot open file
msg = ['ERROR: Could not open file'];
msgbox(msg,'ERROR','modal');
return;
end
temp_loc_file = get(findobj(gcf,'Tag','template_location_edit'),'user');
roi_name = read_ixy(temp_loc_file,1);
if size(compare,1) > size(roi_name,1)
msg = 'Too many rows in compare file';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
set(findobj(gcf,'Tag','edit_compare_edit'),'string',fn,'user',compare);
set(findobj(gcf,'Tag','select_roi_edit'),'user','','string','0');
set(findobj(gcf,'Tag','select_roi'),'enable','on');
set(findobj(gcf,'Tag','lv_index_edit'),'String','1','user',1);
max_value1 = max(compare(:,1));
set(findobj(gcf,'Tag','max_value_edit'),'String',num2str(max_value1),'user',max_value1);
min_value1 = min(compare(:,1));
set(findobj(gcf,'Tag','min_value_edit'),'String',num2str(min_value1),'user',min_value1);
set(findobj(gcf,'Tag','threshold_edit'),'String','');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
return; % edit_compare
%-------------------------------------------------------------------------------
function select_roi
set(findobj(gcf,'Tag','threshold_edit'),'String','');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
old_selected_roi = get(findobj(gcf,'Tag','select_roi_edit'),'user');
if isempty(old_selected_roi)
old_selected_roi = '';
end
temp_loc_file = get(findobj(gcf,'Tag','template_location_edit'),'user');
roi_name = read_ixy(temp_loc_file,1);
selected_roi = roi_select(roi_name, old_selected_roi, 'Select ROIs (The order of "Selected ROI" must be the same as the one in compare file)');
if isequal(selected_roi, old_selected_roi)
return;
end
compare = get(findobj(gcf,'Tag','edit_compare_edit'),'user');
if isempty(selected_roi) | size(selected_roi,1) ~= size(compare,1)
msg = 'Selected ROI does not match ROI in compare file';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
set(findobj(gcf,'Tag','select_roi_edit'),'user',selected_roi, ...
'string',num2str(size(selected_roi,1)));
return; % select_roi
%-------------------------------------------------------------------------------
function lv_index_edit
set(findobj(gcf,'Tag','threshold_edit'),'String','');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
old_lv = num2str(get(findobj(gcf,'Tag','lv_index_edit'),'user'));
if(isempty(get(findobj(gcf,'Tag','edit_compare_edit'),'String')))
msg = 'Load compare file first';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','lv_index_edit'),'string',old_lv);
return;
end
curr_lv = round(str2num(get(findobj(gcf,'Tag','lv_index_edit'),'String')));
compare = get(findobj(gcf,'Tag','edit_compare_edit'),'user');
if(size(compare,2)<curr_lv | curr_lv<1)
msg = 'LV index should be positive integer and not exceed maximum LV in compare data';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','lv_index_edit'),'string',old_lv);
return;
end
set(findobj(gcf,'Tag','lv_index_edit'),'user',curr_lv);
max_value1 = max(compare(:,curr_lv));
set(findobj(gcf,'Tag','max_value_edit'),'String',num2str(max_value1),'user',max_value1);
min_value1 = min(compare(:,curr_lv));
set(findobj(gcf,'Tag','min_value_edit'),'String',num2str(min_value1),'user',min_value1);
return; % lv_index_edit
%-------------------------------------------------------------------------------
function threshold_edit
if(isempty(get(findobj(gcf,'Tag','edit_compare_edit'),'String')))
msg = 'Load compare file first';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','threshold_edit'),'String','');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
return;
end
if(str2num(get(findobj(gcf,'Tag','threshold_edit'),'String'))<0)
set(findobj(gcf,'Tag','threshold_edit'),'String', ...
num2str(-1*str2num(get(findobj(gcf,'Tag','threshold_edit'),'String'))));
end
if 0
max_thresh = max( ...
[abs(str2num(get(findobj(gcf,'Tag','max_value_edit'),'String'))), ...
abs(str2num(get(findobj(gcf,'Tag','min_value_edit'),'String')))]);
if(str2num(get(findobj(gcf,'Tag','threshold_edit'),'String'))>=max_thresh)
msg = 'Threshold is too large';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','threshold_edit'),'String','');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
return;
end
end
selected_roi = get(findobj(gcf,'Tag','select_roi_edit'),'user');
if ~isempty(selected_roi) & ~isempty(str2num(get(findobj(gcf,'Tag','threshold_edit'),'String')))
set(findobj(gcf,'Tag','roi_plot'),'enable','on');
else
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
end
return; % threshold_edit
%-------------------------------------------------------------------------------
function saveas_fig
[fn, pn] = uiputfile('*.fig','Save information figure');
if isequal(fn, 0) | isequal(pn, 0)
return;
end;
[tmp fn] = fileparts(fn);
fn = [fn '.fig'];
fig_file = fullfile(pn, fn);
setappdata(gcf,'coord','');
try
saveas(gcf, fig_file);
catch
msg = 'ERROR: Cannot save file';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
return; % saveas_fig
%-------------------------------------------------------------------------------
function open_fig
[fn, pn] = uigetfile('*.fig','Load information figure');
if isequal(fn, 0) | isequal(pn, 0)
return;
end;
fig_file = fullfile(pn, fn);
close(gcf);
open(fig_file);
set(findobj(gcf,'Tag','max_value_edit'),'enable','on', ...
'ButtonDownFcn', '', ...
'callback','roi_session_ui(''max_value_edit'');', ...
'user',str2num(get(findobj(gcf,'Tag','max_value_edit'),'string')), ...
'background',[1 1 1]);
set(findobj(gcf,'Tag','min_value_edit'),'enable','on', ...
'ButtonDownFcn', '', ...
'callback','roi_session_ui(''min_value_edit'');', ...
'user',str2num(get(findobj(gcf,'Tag','min_value_edit'),'string')), ...
'background',[1 1 1]);
flooded_file = get(findobj(gcf,'Tag','flooded_file_edit'),'user');
old_pointer = get(gcf,'Pointer');
set(gcf,'Pointer','watch');
flooded_image = imread(flooded_file);
num_roi = flooded_image(find(flooded_image<150));
num_roi = max(double(num_roi(:)))+1;
for i=1:num_roi
coord{i} = find(flooded_image==(i-1));
end
setappdata(gcf,'coord',coord);
set(gcf,'Pointer',old_pointer);
return; % open_fig
%-------------------------------------------------------------------------------
function reset1
set(findobj(gcf,'Tag','edit_compare_edit'),'user',[],'string','');
set(findobj(gcf,'Tag','edit_compare'),'enable','off');
set(findobj(gcf,'Tag','select_roi_edit'),'user','','string','0');
set(findobj(gcf,'Tag','select_roi'),'enable','off');
set(findobj(gcf,'Tag','max_value_edit'),'user',[],'string','0');
set(findobj(gcf,'Tag','min_value_edit'),'user',[],'string','0');
set(findobj(gcf,'Tag','lv_index_edit'),'user',[],'String','0');
set(findobj(gcf,'Tag','roi_plot'),'enable','off');
return; % reset1
%-------------------------------------------------------------------------------
function roi_plot
lv = get(findobj(gcf,'Tag','lv_index_edit'),'user');
compare = get(findobj(gcf,'Tag','edit_compare_edit'),'user');
comparelv = compare(:,lv);
roi.max_val = get(findobj(gcf,'Tag','max_value_edit'),'user');
roi.min_val = get(findobj(gcf,'Tag','min_value_edit'),'user');
% too_large = find(comparelv > max_val); comparelv(too_large) = max_val;
% too_small = find(comparelv < min_val); comparelv(too_small) = min_val;
roiselect = [str2num(get(findobj(gcf,'Tag','select_roi_edit'),'user'))]';
threshold = str2num(get(findobj(gcf,'Tag','threshold_edit'),'String'));
title = get(findobj(gcf,'Tag','title_edit'),'string');
roi.comparelv = comparelv;
roi.roiselect = roiselect;
roi.threshold = threshold;
roi.lv = lv;
roi.title = deblank(title);
roi.coord = getappdata(gcf,'coord');
if isempty(roi.coord)
flooded_file = get(findobj(gcf,'Tag','flooded_file_edit'),'user');
flooded_image = imread(flooded_file);
num_roi = flooded_image(find(flooded_image<150));
num_roi = max(double(num_roi(:)))+1;
for i=1:num_roi
roi.coord{i} = find(flooded_image==(i-1));
end
setappdata(gcf,'coord',roi.coord);
end
temp_loc_file = get(findobj(gcf,'Tag','template_location_edit'),'user');
roi.roi_name = read_ixy(temp_loc_file,1);
flooded_file = get(findobj(gcf,'Tag','flooded_file_edit'),'user');
roi.flooded_image = double(imread(flooded_file))+1;
roi_plot_ui(roi);
return; % plot
%-------------------------------------------------------------------------------
function max_value_edit
if(isempty(get(findobj(gcf,'Tag','edit_compare_edit'),'String')))
msg = 'Load compare file first';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
lv = get(findobj(gcf,'Tag','lv_index_edit'),'user');
compare = get(findobj(gcf,'Tag','edit_compare_edit'),'user');
comparelv = compare(:,lv);
old_val = num2str(get(findobj(gcf,'Tag','max_value_edit'),'user'));
max_val = str2num(get(findobj(gcf,'Tag','max_value_edit'),'string'));
min_val = get(findobj(gcf,'Tag','min_value_edit'),'user');
if isempty(max_val) | max_val < min_val | max_val < max(comparelv)
msg = 'Wrong Max. Value';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','max_value_edit'),'string',old_val);
return;
else
set(findobj(gcf,'Tag','max_value_edit'),'user',max_val);
end
return; % max_value_edit
%-------------------------------------------------------------------------------
function min_value_edit
if(isempty(get(findobj(gcf,'Tag','edit_compare_edit'),'String')))
msg = 'Load compare file first';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
lv = get(findobj(gcf,'Tag','lv_index_edit'),'user');
compare = get(findobj(gcf,'Tag','edit_compare_edit'),'user');
comparelv = compare(:,lv);
old_val = num2str(get(findobj(gcf,'Tag','min_value_edit'),'user'));
max_val = get(findobj(gcf,'Tag','max_value_edit'),'user');
min_val = str2num(get(findobj(gcf,'Tag','min_value_edit'),'string'));
if isempty(min_val) | min_val > max_val | min_val > min(comparelv)
msg = 'Wrong Min. Value';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
set(findobj(gcf,'Tag','min_value_edit'),'string',old_val);
return;
else
set(findobj(gcf,'Tag','min_value_edit'),'user',min_val);
end
return; % min_value_edit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -