0001 function data = updateRegionFields (data,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 if ~isempty(data)
0033
0034 data.regs.regs_label = bwlabel( data.mask_cell );
0035 num_regs = max(data.regs.regs_label(:));
0036
0037 data.regs.num_regs =num_regs;
0038 data.regs.props = regionprops( data.regs.regs_label, ...
0039 'BoundingBox','Orientation','Centroid','Area');
0040 NUM_INFO = CONST.regionScoreFun.NUM_INFO;
0041 data.regs.info = zeros( data.regs.num_regs, NUM_INFO );
0042
0043
0044
0045 data.regs.eccentricity = zeros(1,data.regs.num_regs);
0046 data.regs.L1 = zeros(1,data.regs.num_regs);
0047 data.regs.L2 = zeros(1,data.regs.num_regs);
0048 data.regs.contact = zeros(1,data.regs.num_regs);
0049 data.regs.neighbors = cell(1,data.regs.num_regs);
0050 data.regs.contactHist = zeros(1,data.regs.num_regs);
0051 data.regs.info= zeros(data.regs.num_regs,CONST.regionScoreFun.NUM_INFO);
0052 data.regs.scoreRaw = zeros(1,data.regs.num_regs);
0053 data.regs.score = zeros(1,data.regs.num_regs);
0054 data.regs.death = zeros(1,data.regs.num_regs);
0055 data.regs.deathF = zeros(1,data.regs.num_regs);
0056 data.regs.birth = zeros(1,data.regs.num_regs);
0057 data.regs.birthF = zeros(1,data.regs.num_regs);
0058 data.regs.age = zeros(1,data.regs.num_regs);
0059 data.regs.divide = zeros(1,data.regs.num_regs);
0060 data.regs.ehist = zeros(1,data.regs.num_regs);
0061 data.regs.stat0 = zeros(1,data.regs.num_regs);
0062 data.regs.sisterID = zeros(1,data.regs.num_regs);
0063 data.regs.motherID = zeros(1,data.regs.num_regs);
0064 data.regs.daughterID = cell(1,data.regs.num_regs);
0065 data.regs.ID = zeros(1,data.regs.num_regs);
0066 data.regs.error.label = cell(1,data.regs.num_regs);
0067 data.regs.ignoreError = zeros(1,data.regs.num_regs);
0068
0069
0070
0071 for ii = 1:data.regs.num_regs
0072
0073 [xx,yy] = getBB(data.regs.props(ii).BoundingBox);
0074 mask = data.regs.regs_label(yy,xx)==ii;
0075 data.regs.info(ii,:) = CONST.regionScoreFun.props(mask,data.regs.props(ii) );
0076 data.regs.L1(ii)= data.regs.info(ii,1);
0077 data.regs.L2(ii)= data.regs.info(ii,2);
0078
0079 if CONST.trackOpti.NEIGHBOR_FLAG
0080 try
0081 data.regs.neighbors{ii} = trackOptiNeighbors(data,ii);
0082 data.regs.contact(ii) = numel(data.regs.neighbors{ii});
0083 catch
0084 disp('Error in neighbor calculation in updateRegionFields.m');
0085 end
0086 end
0087 end
0088
0089
0090 data.regs.scoreRaw = CONST.regionScoreFun.fun(data.regs.info, CONST.regionScoreFun.E);
0091 data.regs.score = data.regs.scoreRaw > 0;
0092 data.regs.eccentricity = drill(data.regs.props,'.MinorAxisLength')'...
0093 ./drill(data.regs.props,'.MajorAxisLength')';
0094 end
0095
0096
0097
0098
0099
0100 end
0101
0102
0103
0104