0001 function [data,touch_list] = makeTrainingData (data,FLAGS)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 if ~exist('FLAGS','var') || ~isfield(FLAGS,'im_flag')
0033 FLAGS.im_flag = 1;
0034 FLAGS.S_flag = 0;
0035 FLAGS.t_flag = 0;
0036 end
0037
0038 im_flag = FLAGS.im_flag ;
0039 touch_list = []
0040 ss = size(data.phase);
0041 selectMode = true;
0042
0043
0044 while selectMode
0045 figure(2)
0046 imshow(data.phase);
0047 figure(1);
0048 showSegRule( data, FLAGS ,1)
0049
0050 disp ('Click on segment/region to modify. To exit press enter while image is selected.');
0051 x = floor(ginput(1));
0052 disp(x);
0053
0054 if ~isempty(x)
0055
0056 tmp = zeros([51,51]);
0057 tmp(26,26) = 1;
0058 tmp = 8000-double(bwdist(tmp));
0059
0060 rmin = max([1,x(2)-25]);
0061 rmax = min([ss(1),x(2)+25]);
0062
0063 cmin = max([1,x(1)-25]);
0064 cmax = min([ss(2),x(1)+25]);
0065
0066 rrind = rmin:rmax;
0067 ccind = cmin:cmax;
0068
0069 pointSize = [numel(rrind),numel(ccind)];
0070
0071
0072 if im_flag == 1
0073
0074 segs = data.segs.segs_good(rrind,ccind) + ...
0075 data.segs.segs_bad(rrind,ccind);
0076 segs = segs>0;
0077 tmp = tmp(26-x(2)+rrind,26-x(1)+ccind).*segs ;
0078
0079 [~,ind] = max( tmp(:) );
0080
0081
0082 [sub1, sub2] = ind2sub( pointSize, ind );
0083
0084
0085 ii = data.segs.segs_label(rmin+sub1-1,cmin+sub2-1);
0086
0087 if ii ~=0
0088
0089 hold on;
0090 plot( sub2-1+cmin, sub1-1+rmin, 'w.','MarkerSize', 30)
0091
0092
0093 [xx,yy] = getBB( data.segs.props(ii).BoundingBox );
0094
0095 if data.segs.score(ii)
0096 data.segs.score(ii) = 0;
0097 data.segs.segs_good(yy,xx) ...
0098 = double(~~(data.segs.segs_good(yy,xx)...
0099 - double(data.segs.segs_label(yy,xx)==ii)));
0100 data.segs.segs_bad(yy,xx) = ...
0101 double(~~(data.segs.segs_bad(yy,xx)...
0102 +double(data.segs.segs_label(yy,xx)==ii)));
0103 else
0104 data.segs.score(ii) = 1;
0105 data.segs.segs_good(yy,xx) = ...
0106 double(~~(data.segs.segs_good(yy,xx)+...
0107 double(data.segs.segs_label(yy,xx)==ii)));
0108 data.segs.segs_bad(yy,xx) = ...
0109 double(~~(data.segs.segs_bad(yy,xx)-...
0110 double(data.segs.segs_label(yy,xx)==ii)));
0111
0112 end
0113
0114
0115 data.mask_cell = double((data.mask_bg - data.segs.segs_good - data.segs.segs_3n)>0);
0116 touch_list = [touch_list, ii];
0117 end
0118 elseif im_flag == 2
0119 tmp = tmp(26-x(2)+rrind,26-x(1)+ccind).*data.mask_cell(rrind,ccind);
0120 try
0121 [~,ind] = max( tmp(:) );
0122 catch ME
0123 printError(ME);
0124 end
0125
0126 [sub1, sub2] = ind2sub( pointSize, ind );
0127 ii = data.regs.regs_label(sub1-1+rmin,sub2-1+cmin);
0128 plot( sub2-1+cmin, sub1-1+rmin, 'g.' );
0129
0130 if ii
0131 data.regs.score(ii) = ~data.regs.score(ii);
0132 end
0133 end
0134 else
0135 selectMode = 0;
0136 end
0137 end
0138
0139 end