0001 function data = killRegionsGUI (data, CONST, position1, position2)
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 if ~isempty(position1) && isempty(position2)
0031     
0032     ss = size(data.phase);
0033     x = round(position1);
0034     tmp_cell_mask = zeros([51,51]);
0035     tmp_cell_mask(26,26) = 1;
0036     tmp_cell_mask = 8000-double(bwdist(tmp_cell_mask));
0037 
0038     rmin = max([1,x(2)-25]);
0039     rmax = min([ss(1),x(2)+25]);
0040 
0041     cmin = max([1,x(1)-25]);
0042     cmax = min([ss(2),x(1)+25]);
0043 
0044     rrind = rmin:rmax;
0045     ccind = cmin:cmax;
0046 
0047     pointSize = [numel(rrind),numel(ccind)];
0048     tmp_cell_mask = tmp_cell_mask(26-x(2)+rrind,26-x(1)+ccind).*data.mask_cell(rrind,ccind);
0049     try
0050         [~,ind] = max( tmp_cell_mask(:) );
0051     catch ME
0052         printError(ME);
0053     end
0054 
0055     [sub1, sub2] = ind2sub( pointSize, ind );
0056     ii = data.regs.regs_label(sub1-1+rmin,sub2-1+cmin);
0057     if ii ~=0
0058         [xx,yy] = getBB( data.regs.props(ii).BoundingBox);
0059         tmp_cell_mask = (data.regs.regs_label == ii);
0060         
0061         tmp_cell_mask = imdilate(tmp_cell_mask,strel('square',2));
0062         data.segs.segs_good(tmp_cell_mask) = 0;
0063         data.segs.segs_bad(tmp_cell_mask) = 0;
0064         data.segs.segs_3n(tmp_cell_mask) = 0;
0065         data.segs.segs_label(tmp_cell_mask) = 0;
0066         data.mask_bg(tmp_cell_mask)= 0;
0067         data.mask_cell(tmp_cell_mask) = 0;
0068         
0069         data = intMakeRegs( data, CONST);
0070     end
0071     
0072 elseif ~isempty(position1) && ~isempty(position2)
0073     xy = [position1(1:2); position2(1:2)];
0074     xy = floor(xy);
0075     xmin = min(xy(:,1));
0076     xmin = max(xmin,1);
0077     xmax = max(xy(:,1));
0078     xmax = min(xmax,size(data.phase,2));
0079     ymin = min(xy(:,2));
0080     ymin = max(ymin,1);
0081     ymax = max(xy(:,2));
0082     ymax = min(ymax,size(data.phase,1));
0083     xx = xmin:xmax;
0084     yy = ymin:ymax;
0085     hold on
0086     plot( [xmin,xmax],[ymin,ymax] ,'r.');
0087     ind_segs = unique( data.segs.segs_label(yy,xx));
0088     ind_segs = ind_segs(logical(ind_segs));
0089     ind_segs = reshape(ind_segs,1,numel(ind_segs));
0090 
0091 
0092 
0093 
0094 
0095 
0096 
0097 
0098     mask = false(size(data.phase));
0099 
0100     for ii = ind_segs
0101         data.segs.info(ii,:)   = NaN;
0102         data.segs.score(ii)    = NaN;
0103         data.segs.scoreRaw(ii) = NaN;
0104         mask = logical(mask + (data.segs.segs_label==ii));
0105     end
0106     
0107     data.segs.segs_good(yy,xx)  = 0;
0108     data.segs.segs_bad(yy,xx)   = 0;
0109     data.segs.segs_3n(yy,xx)    = 0;
0110     data.segs.segs_label(yy,xx) = 0;
0111     data.mask_cell(yy,xx)       = 0;
0112     data.mask_bg(yy,xx)         = 0;
0113 
0114     data.segs.segs_good(mask)  = 0;
0115     data.segs.segs_bad(mask)   = 0;
0116     data.segs.segs_3n(mask)    = 0;
0117     data.segs.segs_label(mask) = 0;
0118     data.mask_cell(mask)       = 0;
0119     data.mask_bg(mask)         = 0;
0120     data = intMakeRegs( data, CONST);
0121 end