Home > detect > WBCdetect_ADA.m

WBCdetect_ADA

PURPOSE ^

SYNOPSIS ^

function WBCdetect_ADA(iFolder)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function WBCdetect_ADA(iFolder)
0002 iPath = 'C:\Research\DataSets\';
0003 cd(strcat(iPath,iFolder));
0004 iFiles = dir('MN/*.png');
0005 
0006 nFiles = 1; %length(iFiles);
0007 mkdir('DT');
0008 frames = [];
0009 
0010 %% INIT
0011     conf_map  = [];
0012     %radial mean init
0013     k = 45;
0014     kh = floor(k/2);
0015     k2 = 2*k-1;
0016     kh2= floor(k2/2);
0017     rm_layer = 2; % number layer of radial kernel
0018     % create filter kernels
0019     [rm_k] = create_radial_mean_kernel(k,rm_layer);
0020     
0021     % ivf radial diff init
0022 %     circle = imread('../circle.png');
0023 %     mask = imread('../circle_mask.png');
0024 %     [R, C] = size (mask);
0025 %     r0 = max(1,R/2 - kh);
0026 %     c0 = max(1,C/2 - kh);
0027 %     r1 = min(R,R/2 + kh);
0028 %     c1 = min(C,C/2 + kh);
0029 %
0030 %     circle = circle ( r0:r1, c0:c1 );
0031 %     mask = mask ( r0:r1, c0:c1);
0032 %     f0 = 1 - circle;
0033 %     [u0,v0] = GVF(f0, 0.2, 80);
0034 %     mag0 = sqrt(u0.*u0 + v0.*v0);
0035 %     px0 = u0./(mag0 + 1e-10);
0036 %     py0 = v0./(mag0 + 1e-10);
0037 %     px0 = px0(mask(:)==1);
0038 %     py0 = py0(mask(:)==1);
0039     
0040 
0041 %% TRAINING
0042 disp('Training...');
0043 file_data = csvread('../fm50-2.csv');
0044 Data = file_data(:,1:end-1)';
0045 Labels = file_data(:, end)';
0046 Labels = Labels*2 - 1;
0047 
0048 MaxIter = 20; % boosting iterations
0049 
0050 % Step2: splitting data to training and control set
0051 TrainData   = Data(:,1:2:end);
0052 TrainLabels = Labels(1:2:end);
0053 
0054 ControlData   = Data(:,2:2:end);
0055 ControlLabels = Labels(2:2:end);
0056 
0057 % Step3: constructing weak learner
0058 weak_learner = tree_node_w(3); % pass the number of tree splits to the constructor
0059 
0060 % Step4: training with Gentle AdaBoost
0061 [RLearners RWeights] = RealAdaBoost(weak_learner, TrainData, TrainLabels, MaxIter);
0062 
0063 % Step6: evaluating on control set
0064 ResultR = sign(Classify(RLearners, RWeights, ControlData));
0065 
0066 % Step7: calculating error
0067 ErrorR  = sum(ControlLabels ~= ResultR) / length(ControlLabels)
0068 
0069 fid = fopen('DecisionRule.txt','w');
0070 code = TranslateToC(RLearners,RWeights,fid);
0071 fclose(fid);
0072 
0073 
0074 
0075     tic
0076 %% ITERATE EACH IMAGE FRAME
0077 for i = 1:  nFiles
0078     % read the image and create a 3 layer version of that image
0079 %     im = imread (strcat('MN\',iFiles(i).name));
0080     im = imread (strcat('MN/',iFiles(i).name));
0081     disp(['Processing im ' num2str(i) '...']); 
0082     % noise reduction technique
0083     im = medfilt2(im);
0084     imRGB = gray_to_rgb(im);    
0085     [R, C] = size ( im );
0086     
0087 %     disp('Calculating IVF...');
0088 %     f = 1 - im/255;
0089 %     [u,v] = GVF(f, 0.2, 80);
0090 %     mag = sqrt(u.*u+v.*v);
0091 %     px = u./(mag+1e-10);
0092 %     py = v./(mag+1e-10);
0093     
0094  
0095 
0096     %% FOR EACH IMAGE
0097     for r = kh2+1:(R-kh2-1)        
0098 %         if (mod(r,25)==0)
0099             disp(['Processing row ' num2str(r) '...']);  
0100 %         end
0101         % for each col
0102         for c = kh2+1:(C-kh2-1)
0103 %             if (amask(r,c)==0)
0104                 % crop the image within [sr0:sr1, sc0:sc1]
0105                 r0 = max ( 1, r-kh );
0106                 c0 = max ( 1, c-kh );
0107                 r1 = min ( R, r+kh );
0108                 c1 = min ( C, c+kh );
0109 
0110                 im_sub = im ( r0:r1, c0:c1 );
0111                 
0112 %                 px_sub = px ( r0:r1, c0:c1 );
0113 %                 py_sub = py ( r0:r1, c0:c1 );
0114                 
0115                 fv = get_feature_vector(im_sub,rm_k); %,px_sub,py_sub,px0,py0,mask);
0116                 fv_arr = [fv.i_m fv.i_std fv.rad_m]; %fv.ivf_rad_diff];
0117 
0118                 conf_score = Classify(RLearners, RWeights, fv_arr');
0119                 resultR = sign (conf_score);
0120                 if ( resultR > 0 )
0121                     imRGB(r,c,:) = [255 0 0];
0122                     conf_map = [conf_map; r c conf_score];
0123                 end                
0124 %             end
0125         end
0126     end
0127 
0128     frames = [frames; im2struct(imRGB)];
0129     imName_out = strcat('DT/',iFiles(i).name(1:end-4),'.dt.png');
0130     imwrite(imRGB,imName_out);
0131 end  
0132 
0133 % for fr =1 : length(frames)
0134 %     for ce = 1 : length(frames(fr).Cells)
0135 %        frames(fr).Cells(ce).Type = [0,0];
0136 %     end
0137 % end
0138 %     imshow(imRGB);
0139 % %% Save stuff
0140 % save _frames.mat frames;
0141 
0142 toc
0143 cd ..
0144 end

Generated on Thu 17-Mar-2011 14:45:51 by m2html © 2005