⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roi_session_ui.m

📁 国外的一个PLStoolbox,主要用于处理图象,也可以用来回归,欢迎使用
💻 M
📖 第 1 页 / 共 3 页
字号:
   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 + -