```Date: Feb 26, 2013 6:50 AM
Author: Tony Kittler
Subject: Re: ROC curve of target and source images

"Carl  S." wrote in message <kggdfd\$51j\$1@newscl01ah.mathworks.com>...> "Carl  S." wrote in message <kgfk3g\$9i5\$1@newscl01ah.mathworks.com>...> > Hi,> > > > I need matlab codes to plot a roc curve of target and source images> > > > (I  have searched but the files in FileExchange are not clear (not get image files as input to give the plotted curve) for my purpose)> > Hi,> I have seen the following function;> [tpr,fpr,thresholds] = roc(Targets, Outputs)> > I think this function gives the parameters to draw ROC curves, such as true positive, false negative... But, how to obtain the input parameters from png file images ?I have performed the following process: 1) I have applied Dice similarity measurement for automatically segmented images and obtained the following similarity coefficients image1	0.8313image2	0.9157image3	0.9328image4	0.7790image5	0.8547image6	0.70262) I have chosen 0.7 as the threshold value, and wrote the following codesscores = [0.8313 0.9157 0.9328 0.7790  0.8547 0.7026] labels = [1 1 1 0 1 0]   % <= Here, ones corresponds to positive (acceptable coefficient, zero corresponds to negative (not acceptable) ROC(scores,labels); The ROC function gives the TP and FP values and also draw the ROC curve. But the result is not good, although there is only two image that have zero label.  So, the ROC curve is not correct. I still need a help, and it is urgent please :( function[Tps, Fps] = ROC(scores, labels) %% Sort Labels and Scores by Scoressl = [scores; labels];[d1 d2] = sort(sl(1,:));sorted_sl = sl(:,d2);s_scores = sorted_sl(1,:);s_labels = round(sorted_sl(2,:));%% Constantscounts = histc(s_labels, unique(s_labels));Tps = zeros(1, size(s_labels,2) + 1);Fps = zeros(1, size(s_labels,2) + 1);negCount = counts(1);posCount = counts(2);%% Shift threshold to find the ROCforthresIdx = 1:(size(s_scores,2)+1) % for each Threshold Index tpCount = 0;fpCount = 0;for i = [1:size(s_scores,2)] if (i >= thresIdx) % We think it is positive if (s_labels(i) == 1) % Right! tpCount = tpCount + 1;else % Wrong! fpCount = fpCount + 1;end end end Tps(thresIdx) = tpCount/posCount;Fps(thresIdx) = fpCount/negCount;end%% Draw the Curve% Sort [Tps;Fps]x = Tps;y = Fps;% Interplotion to draw spline linecount = 100;dist = (x(1) - x(size(x,2)))/100;xx = [x(1):-dist:x(size(x,2))];% In order to get the interpolations, we remove all the unique numbers[d1 d2] = unique(x);uni_x = x(1,d2);uni_y = y(1,d2);yy = spline(uni_x,uni_y,xx);% No value should exceed 1yy = min(yy, 1);plot(x,y,'x',xx,yy);
```