0001 function showSegRule( data, FLAGS, figNum,CONST )
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
0033
0034 if (~exist('FLAGS','var') || isempty(FLAGS)) || ~isfield( FLAGS, 'im_flag' )
0035 FLAGS.im_flag=2;
0036 end
0037
0038 im_flag = FLAGS.im_flag;
0039
0040 if ~isfield( FLAGS, 'S_flag' )
0041 FLAGS.S_flag = 0;
0042 end
0043
0044 S_flag = FLAGS.S_flag;
0045
0046 if ~isfield( FLAGS, 't_flag' )
0047 FLAGS.t_flag = 1;
0048 end
0049
0050 t_flag = FLAGS.t_flag;
0051
0052
0053 if ~isfield( FLAGS, 'phase' )
0054 FLAGS.phase = 0 ;
0055 end
0056
0057
0058 if ~isfield( FLAGS, 'Sj_flag' )
0059 FLAGS.Sj_flag = 0;
0060 end
0061
0062 Sj_flag = FLAGS.Sj_flag;
0063
0064 if ~exist('figNum','var') || isempty(figNum)
0065 figNum = 4;
0066 end
0067
0068 figure(figNum);
0069 axis_current = axis;
0070 clf;
0071
0072 segs_good = zeros( size( data.phase ) );
0073 segs_good_fail = segs_good;
0074 segs_bad = segs_good;
0075 segs_bad_fail = segs_good;
0076 segs_Include = segs_good;
0077 num_segs = numel( data.segs.score(:) );
0078
0079 sz = size(segs_good);
0080 backer = 0.7*ag(data.phase);
0081
0082 if im_flag == 1
0083
0084 isnan_scoreraw = isnan(data.segs.scoreRaw);
0085 isnan_score = isnan(data.segs.score);
0086 data.segs.score(isnan_score) = 0;
0087 data.segs.scoreRaw(isnan_scoreraw) = 0;
0088
0089 if ~isfield(data.segs, 'Include' )
0090 data.segs.Include = 0*data.segs.score+1;
0091 end
0092
0093
0094
0095 segs_good = ismember( data.segs.segs_label, find((data.segs.score)));
0096 segs_bad = ismember( data.segs.segs_label, find((~data.segs.score)));
0097
0098
0099
0100
0101
0102
0103
0104 segsGoodag = ag(segs_good);
0105 segsGoodFailag = ag(segs_good_fail);
0106 segs3nag = ag(data.segs.segs_3n );
0107 segsBadag = ag(segs_bad );
0108 segsBadFailag = ag(segs_bad_fail);
0109
0110
0111 if FLAGS.phase
0112 phaseBackag = uint8(ag(data.segs.phaseMagic));
0113 else
0114 phaseBackag = uint8(ag(~data.mask_cell));
0115 end
0116
0117 imshow( uint8(cat(3,...
0118 0.1*phaseBackag + 0.3*segs3nag +0.6*(segsGoodag + segsGoodFailag), ...
0119 0.15*phaseBackag + 0.1*segs3nag + 0.4*(segsGoodFailag+segsBadFailag), ...
0120 0.2*phaseBackag + 0.4*(segsBadag + segsBadFailag))), ...
0121 'InitialMagnification', 'fit','Border','tight');
0122
0123
0124 flagger = and( data.segs.Include, ~isnan(data.segs.score) );
0125 scoreRawTmp = data.segs.scoreRaw(flagger);
0126 scoreTmp = data.segs.score(flagger);
0127 [y_good,x_good] = hist(scoreRawTmp(scoreTmp>0),[-40:2:40]);
0128 [y_bad,x_bad] = hist(scoreRawTmp(~scoreTmp),[-40:2:40]);
0129
0130 figure(figNum);
0131 props = regionprops( data.segs.segs_label, 'Centroid' );
0132 num_segs = numel(props);
0133
0134 if S_flag && (~t_flag)
0135 for ii = 1:num_segs
0136 r = props(ii).Centroid;
0137 tmp_flag = double(round(data.segs.scoreRaw(ii)))-double(data.segs.score(ii));
0138 if tmp_flag == 0
0139 if ~Sj_flag
0140 text( r(1), r(2), num2str( data.segs.scoreRaw(ii), 2), 'Color', [0.5,0.5,0.5] );
0141 end
0142 else
0143 if data.segs.Include(ii)
0144 text( r(1), r(2), num2str( data.segs.scoreRaw(ii), 2), 'Color', 'w' );
0145 elseif ~Sj_flag
0146 text( r(1), r(2), num2str( data.segs.scoreRaw(ii), 2), 'Color', 'g' );
0147 end
0148 end
0149 end
0150 end
0151
0152 if t_flag
0153 for ii = 1:num_segs
0154
0155 r = props(ii).Centroid;
0156 text( r(1), r(2), num2str( ii ), 'Color', 'w' );
0157 end
0158 end
0159
0160
0161 elseif im_flag == 2
0162
0163 if ~isfield(data,'regs')
0164 data = updateRegionFields (data,CONST)
0165 end
0166 num_regs = data.regs.num_regs;
0167
0168 if isfield(data.regs,'score')
0169 regs_good_agree = 0.3*double(ag(ismember(data.regs.regs_label,find(data.regs.score & round(data.regs.scoreRaw)))));
0170 regs_good_disagree = double(ag(ismember(data.regs.regs_label,find(data.regs.score & ~round(data.regs.scoreRaw)))));
0171
0172 regs_bad_agree = 0.3*double(ag(ismember(data.regs.regs_label,find(~data.regs.score & ~round(data.regs.scoreRaw)))));
0173 regs_bad_disagree = double(ag(ismember(data.regs.regs_label,find(~data.regs.score & round(data.regs.scoreRaw)))));
0174
0175 imshow( cat(3, 0.5*backer + 1*uint8(regs_good_agree+regs_good_disagree), ...
0176 0.5*backer, ...
0177 0.5*backer + 1*uint8(regs_bad_agree+regs_bad_disagree)) , 'InitialMagnification', 'fit');
0178 else
0179
0180
0181 imshow( cat(3, 0.8*backer + 1*ag(data.mask_cell), ...
0182 0.8*backer, ...
0183 0.8*backer) , 'InitialMagnification', 'fit');
0184
0185
0186 end
0187
0188
0189 if S_flag && (~t_flag)
0190 for ii = 1:num_regs
0191 r = data.regs.props(ii).Centroid;
0192 flagger = 1;
0193 if isfield (data.regs,'score')
0194 flagger = logical(data.regs.score(ii)) == round(data.regs.scoreRaw(ii));
0195 end
0196 if flagger
0197 text( r(1), r(2), num2str( data.regs.scoreRaw(ii), 2), 'Color', 'w' );
0198 elseif ~Sj_flag
0199 text( r(1), r(2), num2str( data.regs.scoreRaw(ii), 2), 'Color', [0.5,0.5,0.5] );
0200 end
0201 end
0202 end
0203
0204 if t_flag
0205 for ii = 1:num_regs
0206 r = data.regs.props(ii).Centroid;
0207 text( r(1), r(2), num2str( ii ), 'Color', 'w' );
0208
0209 end
0210 end
0211
0212 elseif im_flag == 3
0213
0214 imshow( data.segs.phaseMagic, [], 'InitialMagnification', 'fit' );
0215 colormap jet;
0216
0217 elseif im_flag == 4
0218
0219 backer = ag(data.phase);
0220 imshow( cat(3,backer,backer,backer), 'InitialMagnification', 'fit' );
0221 elseif im_flag == 5
0222
0223 cell_mask = data.mask_cell;
0224 segs_3n = data.segs.segs_3n ;
0225 segs_good = data.segs.segs_good;
0226 segs_bad = data.segs.segs_bad ;
0227
0228 back = double(0.7*ag( data.phase ));
0229 outline = imdilate( cell_mask, strel( 'square',3) );
0230 outline = ag(outline-cell_mask);
0231
0232 clf
0233 imshow(uint8(cat(3,back + 0.1*double(outline)+ double(ag(segs_good+segs_3n)),...
0234 back ,...
0235 back + 0.2*double(ag(segs_bad))+ 0.2*double(ag(~cell_mask)-outline))));
0236
0237 drawnow;
0238 end
0239
0240
0241
0242
0243
0244 end