hj199241 2015-09-11 11:22 采纳率: 0%
浏览 5111

图像显著性检测评价指标P-R,F值等相关问题

求~这些评价指标的matlab程序~~需要比较多种检测方法的结果,生成比较图~~求助求助

  • 写回答

1条回答 默认 最新

  • Mrfader 2016-04-28 01:12
    关注

    贴一个码,不过我还没有调试成功
    function Plot_PreRecallThousand
    %%
    clear;
    % Mapdir = 'E:\BenchMap\mapBerke\';
    % Mapdir = 'E:\BenchMap\Equp\';
    % Mapdir = 'e:\BenchMap\GbvsMapSED1\';
    % Mapdir = 'e:\OURCMRE\Wberkelmap\';
    Mapdir = 'E:\BenchMap\mapBerke\';
    %GroundDir = 'E:\pagerank\grdsed2\';bijaohao
    % GroundDir = 'E:\dataset\BSD300Masks';
    % GroundDir = 'E:\OURCMRE\BSD300Masks\';
    % GroundDir = 'E:\OURCMRE\grdsed1\';
    GroundDir = 'E:\OURCMRE\binary mask\';
    cd (GroundDir);
    ImgEnum=dir('*.bmp'); ImgNum=length(ImgEnum);%图像数量
    Pre = zeros(21,1);
    Recall = zeros(21,1);

    % FMeasure = zeros(21,1);
    jj=0; PreF = 0; RecallF = 0; FMeasureF = 0; FigAnd = 0; bigthreshold = 0; ThresholdAnd = 0;
    for i=1:ImgNum

    i

    cd(GroundDir);
    Binary = imread( ImgEnum(i).name );
    NumOne= length( find(Binary(:,:,1) >0) );
    [height,width] = size( Binary(:,:,1) );

    cd (Mapdir);
    mapImg = imread( strcat( ImgEnum(i).name(1:end-4),'_sparse.jpg' ) );    
    

    % Label2 = imread( ImgEnum(i).name );
    Label2 = mat2gray( mapImg );

    %% thou berke Pre recall

    if NumOne ~= 0
    jj=jj+1; mm = 1;

    for j = 0 : .05 : 1
    Label3 = zeros( height, width );

    Label3( Label2>=j )=1;

    NumRec = length( find( Label3==1 ) );

       LabelAnd = Label3 & Binary(:,:,1);   
       NumAnd = length( find( LabelAnd==1 ) );
       if NumAnd == 0
           FigAnd = FigAnd + 1;
           break;  
       end
       Pretem = NumAnd/NumRec;    
       Recalltem =  NumAnd/NumOne;
    
       Pre(mm) = Pre(mm) +  Pretem;  
       Recall(mm) = Recall(mm) + Recalltem;
    

    % FMeasure(mm) = FMeasure(mm) + ( (1 + .3) * Pretem * Recalltem ) / ( .3 * Pretem + Recalltem );
    mm = mm + 1;
    end

      sumLabel =  2* sum( sum(Label2) ) / (height*width) ;
      if ( sumLabel >= 1 )           
              sumLabel = .902 ;    bigthreshold = bigthreshold +1;
      end       
    
       Label3 = zeros( height, width );
       Label3( Label2>=sumLabel ) = 1;       
    
       NumRec = length( find( Label3==1 ) );
    
       LabelAnd = Label3 & Binary(:,:,1);        
       NumAnd = length( find ( LabelAnd==1 ) );
    
       if NumAnd == 0
           ThresholdAnd = ThresholdAnd +1;
           continue;
       end
    
       PreFtem = NumAnd/NumRec; 
       RecallFtem = NumAnd/NumOne;   
    
       PreF = PreF +    PreFtem;   
       RecallF = RecallF +    RecallFtem;
    
       FMeasureF = FMeasureF + ( ( ( 1 + .3) * PreFtem * RecallFtem ) / ( .3 * PreFtem + RecallFtem ) );
    

    end

    end
    %% Mean Pre Recall

    FigAnd
    ThresholdAnd
    bigthreshold
    cd 'E:\ourcmre\mapcodemap\';
    Pre = Pre ./jj ;
    Recall = Recall ./jj;

    % FMeasure = FMeasure ./ jj;

    PreF = PreF /jj
    RecallF = RecallF /jj
    FMeasureF = FMeasureF / jj

    save( Mapdir( end-13: end-1) , 'Pre', 'Recall', 'FMeasureF','PreF','RecallF'); % 'FMeasure',

    figure(1);
    hold on;
    

    plot(Recall ,Pre, 'r' );

    xlabel('Recall');
    ylabel('Precision');

    grid on;
    hold off;

    % figure(2);
    % hold on;
    % plot(Pre, 'r' );
    % xlabel('Threshold');
    % ylabel('Pre');
    % grid on;
    % hold off;
    %
    % figure(3);
    % hold on;
    % plot(Recall, 'r' );
    % xlabel('Threshold');
    % ylabel('Recall');
    % grid on;
    % hold off;
    %
    % figure(4);
    % hold on;
    % plot( FMeasure, 'r' );
    % xlabel('Threshold');
    % ylabel('FMeasure');
    % grid on;
    % hold off;

    评论

报告相同问题?

悬赏问题

  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp