Home > SuperSegger > trainingConstants > showSegRule.m

showSegRule

PURPOSE ^

showSegRule : shows the segmentation for regions and segments

SYNOPSIS ^

function showSegRule( data, FLAGS, figNum,CONST )

DESCRIPTION ^

 showSegRule : shows the segmentation for regions and segments

 INPUT :
       data : data file with segmentation information.
       FLAGS :
           .im_flag = 1 : segment view ,
                      2 : region view,
                      3 : false color,
                      4 : phase image
           .S_flag = segments/regions' scores
           .t_flag = segments/regions' labels
           .Sj_flag = shows disagreeing segments scores (S_flag must be on
           too)

 Copyright (C) 2016 Wiggins Lab 
 Written by Paul Wiggins & Stella Stylianidou.
 University of Washington, 2016
 This file is part of SuperSegger.
 
 SuperSegger is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 
 SuperSegger is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with SuperSegger.  If not, see <http://www.gnu.org/licenses/>.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function showSegRule( data, FLAGS, figNum,CONST )
0002 % showSegRule : shows the segmentation for regions and segments
0003 %
0004 % INPUT :
0005 %       data : data file with segmentation information.
0006 %       FLAGS :
0007 %           .im_flag = 1 : segment view ,
0008 %                      2 : region view,
0009 %                      3 : false color,
0010 %                      4 : phase image
0011 %           .S_flag = segments/regions' scores
0012 %           .t_flag = segments/regions' labels
0013 %           .Sj_flag = shows disagreeing segments scores (S_flag must be on
0014 %           too)
0015 %
0016 % Copyright (C) 2016 Wiggins Lab
0017 % Written by Paul Wiggins & Stella Stylianidou.
0018 % University of Washington, 2016
0019 % This file is part of SuperSegger.
0020 %
0021 % SuperSegger is free software: you can redistribute it and/or modify
0022 % it under the terms of the GNU General Public License as published by
0023 % the Free Software Foundation, either version 3 of the License, or
0024 % (at your option) any later version.
0025 %
0026 % SuperSegger is distributed in the hope that it will be useful,
0027 % but WITHOUT ANY WARRANTY; without even the implied warranty of
0028 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0029 % GNU General Public License for more details.
0030 %
0031 % You should have received a copy of the GNU General Public License
0032 % along with SuperSegger.  If not, see <http://www.gnu.org/licenses/>.
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' ) % shows all segments scores
0041     FLAGS.S_flag = 0;
0042 end
0043 
0044 S_flag = FLAGS.S_flag;
0045 
0046 if ~isfield( FLAGS, 't_flag' ) % labels for segments
0047     FLAGS.t_flag = 1;
0048 end
0049 
0050 t_flag = FLAGS.t_flag;
0051 
0052 
0053 if ~isfield( FLAGS, 'phase' ) % labels for segments
0054     FLAGS.phase = 0 ;
0055 end
0056 
0057 % shows scores for segments/regions that computer/user disagrees
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     %segs_Include   = ismember( data.segs.segs_label, find(~data.segs.Include));
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 %     segs_good      = ismember( data.segs.segs_label, find(and( ~isnan_score, and(data.segs.score,round(data.segs.scoreRaw)))));
0099 %     segs_good_fail = ismember( data.segs.segs_label, find(and( ~isnan_score, and(data.segs.score,~round(data.segs.scoreRaw)))));
0100 %     segs_bad_fail  = ismember( data.segs.segs_label, find(and( ~isnan_score, and(~data.segs.score,round(data.segs.scoreRaw)))));
0101 %     segs_bad       = ismember( data.segs.segs_label, find(and( ~isnan_score, and(~data.segs.score,~round(data.segs.scoreRaw)))));
0102 %
0103     %segsInlcudeag  = ag(segs_Include);
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     %maskBgag = ag(~data.mask_bg);
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 % region view
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        % imshow(label2rgb(data.regs.regs_label))
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             %text( r(1), r(2), num2str( data.regs.props(ii).Orientation ), 'Color', 'w' );
0209         end
0210     end
0211     
0212 elseif im_flag == 3 % phase image in jet color
0213     
0214     imshow( data.segs.phaseMagic, [], 'InitialMagnification', 'fit' );
0215     colormap jet;
0216     
0217 elseif im_flag == 4 % phase image
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 % if ~all(axis_current == [ 0     1     0     1])
0241 %     axis(axis_current);
0242 % end
0243 
0244 end

Generated on Thu 19-Jan-2017 13:55:21 by m2html © 2005