这个函数主要实在使用数据集跑完自己的算法之后,利用统计的结果进行画图的函数
前面会先定义一些东西,比如:
metricTypeSet = { ‘overlap’};
valTypeSet = {‘OPE’};
等等,这些参数后面都会用到。
函数的主体从这里开始:
for i=1:length(metricTypeSet)
一般metricTypeSet当中有error,overlap两个属性,是精度图和成功率图分别要用到的。
在该层for循环下面,还有一个for循环,是:
for j=1:1(因为一般只用到OPE,所以循环中之遍历一次)在这个for循环当中,有如下代码:
dataName = [perfMatPath 'aveSuccessRatePlot_' num2str(numTrk) 'alg_' plotType '.mat'];
% If the performance Mat file, dataName, does not exist, it will call
% genPerfMat to generate the file.
if ~exist(dataName)
genPerfMat(seqs, trackers, evalType, nameTrkAll, perfMatPath);
end
load(dataName);%load(filename) 从 filename 加载数据。
numTrk = size(aveSuccessRatePlot,1);
用来在tracker_benchmark_v1.0\perfMat\overall文件夹下生成.mat文件,这个.mat文件是用来画图的。
然后定义了生成的图片的名字
figName= [figPath 'quality_plot_' plotType '_' rankingType];%生成的图片的名字
然后再画图
plotDrawSave(numTrk,plotDrawStyle,aveSuccessRatePlot,idxSeqSet,rankNum,rankingType,rankIdx,nameTrkAll,thresholdSet,titleName, xLabelName,yLabelName,figName,metricType);
画了该图之后,还会根据视频的属性再进行画多幅图片:
下面这个for循环在for j=1:1当中
for attIdx=1:attNum
idxSeqSet=find(att(:,attIdx)>attTrld);%得到属于该属性的视频序列的编号
..........
..........
plotDrawSave(numTrk,plotDrawStyle,aveSuccessRatePlot,idxSeqSet,rankNum,rankingType,rankIdx,nameTrkAll,thresholdSet,titleName, xLabelName,yLabelName,figName,metricType);
attNum=11 因为视频的属性有11种,在该for循环当中,又会再画11张图片
在调试代码当中,有时提示索引超出维度,可能是因为G:\tracker_benchmark_v1.0\perfMat\overall文件夹下面已经存在一些文件,需要删除,因为每次运行perfPlot.m文件,都会生成新的.mat文件。
对于perfPlot.m当中调用的一些画图函数还没有仔细看,后续可能会研究研究。