%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TP_FN_ellipse Function for getting an evaluation of the quality % Input: (1) name of the file generated by your method (see the GT.bmp for how to save your result) % (2) (INT default: 12) the radius for the circle drawn on each point % (3) (BOOL default: true) save the result % Output: (1) TruePositive FalsePositive TrueNegative average_distance_if_TP FalsePositiveRate TruePositiveRate % %For Crop_colony radius 6 %For cell 17, radius 6 %For newCell, radius 12 %For Stomate, radius 7 %For Taxi, radius 8 % 25.01.13 Yannick Verdie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function[] = TP_FN_ellipse(name_image,varargin) %-----------------------------------parameters narginchk(1, 3); numvarargs = length(varargin); if numvarargs > 3 error('get_score:TooManyInputs','requires at most 2 optional inputs'); end % set defaults for optional inputs optargs = {12 true}; optargs(1:numvarargs) = varargin; [radius save_txt] = optargs{:}; %----------------------------------- im = imread(['GT.bmp']); [m n k] = size(im); [indy,indx] = find(im(:,:,1) > 128); fprintf('nb Object GT:%d\n',length(indy)); [xx yy] = meshgrid(1:n,1:m); [pathstr, name_file, ext] = fileparts(name_image); is_free = ones(1,length(indy)); imRJ = imread(name_image); [ind2y,ind2x] = find(imRJ(:,:,1) > 128); fprintf('nb Object Method:%d\n',length(ind2y)); TP = 0;FP = 0; sum_distance = 0; for i=1:length(ind2x);%for each object detected y = ind2y(i); x = ind2x(i); %Fim = Fim | (((x-xx).^2+(y-yy).^2)<=radius*radius); id = find(((x-indx).^2+(y-indy).^2)<=radius*radius); if (~isempty(id)) id2 = find(is_free(id) == 1); if (~isempty(id2)) TP = TP + 1; sum_distance = sum_distance + sqrt((x-indx(id(id2(1)))).^2+(y-indy(id(id2(1)))).^2); is_free(id(id2(1))) = 0; else FP = FP + 1; end else FP = FP + 1; end end FN = sum(is_free);%what is left is missed precision = TP/(TP+FP); recall = TP/(TP+FN); data = [TP FP FN sum_distance/TP precision recall] if (save_txt) dlmwrite([name_file '_data_object.txt'],data,'delimiter',' ','precision','%10.6g'); end