红外弱小目标检测:常见的评价指标 |
您所在的位置:网站首页 › 雷达虚警概率和探测概率的关系是什么意思 › 红外弱小目标检测:常见的评价指标 |
本文总结红外弱小目标检测领域论文中经常出现的算法评价指标,并对部分评价指标用MATLAB实现。 目前总结的评价指标最为常见,像检测率、ROC曲线这些都要基于大量的实验才能得到数据,进而绘制表格或曲线对算法进行客观评价。(所以,有好的idea,一定要尽快做实验呀!) 本文代码全部原创,若有不足之处,欢迎指正。 常见的评价指标(evaluation metrics) 一、检测率检测率 图1 检测率 关于检测率 关于虚警率 怎样的检测结果才可以被看作是“true detection“? 必须同时满足两个条件: 检测结果与图像中的真实目标有重叠(have overlap pixels);检测结果的中心像素位置与真实目标的中心像素位置相差不超过一定的范围,文献[1]中阈值为4 pixels。 二、信噪比(Signal-to-Clutter Ratio, SCR) 2.1 SCR定义
式中, 图2 目标及其邻域示意图,摘自[1],其中d的大小不超过20个像素 2.2 MATLAB 计算SCR 2.2.1 绘制弱小目标的三维灰度图在阅读文献时,经常可以看到目标的三维灰度图,作者通过展示目标增强前与增强后,或背景抑制前和抑制后的三维灰度图来直观地向读者呈现其算法的效果。 此外绘制目标的三维灰度图也可以直观的感受目标的SCR。所以,我们先来学习如何绘制目标的三维灰度图。 补充说明,绘制目标的三维灰度图有两种选择: (1)有些文章会选择绘制整张图的三维灰度图,然后用箭头—>标示出目标的“峰值”; (2)也可以选择绘制目标的局部区域,观察目标的局部对比度是否得到了增强。 这里给出分别给出两种方式的MATLAB代码与图例。 %% 绘制图像的三维灰度图 img1 = imread('images/1.jpg'); if (size(img1,3) > 1) img1 = rgb2gray(img1); end subplot(221) imshow(img1);title('原图'); sub_img1 = img1(68:88,99:119); % 这里需要人工选择目标区域位置及大小 subplot(222) imshow(sub_img1);title('目标局部图像 20*20'); subplot(223) [y,x] = size(img1); [X,Y] = meshgrid(1:x, 1:y); surf(X, Y, img1);title('全局三维灰度图'); shading interp; subplot(224) [sub_y, sub_x] = size(sub_img1); [sub_X, sub_Y] = meshgrid(1:sub_x, 1:sub_y); surf(sub_X, sub_Y, sub_img1);title('局部三维灰度图'); shading interp;图3 含弱小目标的红外图像的全局三维灰度图与局部三维灰度图 2.2.2 求目标的SCR 本文给出的代码只适用于灰度图;参考计算模型如图2. function scr = CalculateSCR(img, pos, t_size, d) %% 功能说明:计算弱小目标的SCR %% 参数说明: img -- 原图像 % pos -- 目标在原图像中的位置 % t_size = [a,b]-- 目标尺寸 % d -- 目标邻域半径,最终计算的目标及其局部区域的大小为(2d+a)*(2d+b) % 1. 转灰度图 if(size(img,3)>1) img = rgb2gray(img); end % 2. 目标大小为a*b a = t_size(1); b = t_size(2); T = img(ceil(pos(1)-b/2):ceil(pos(1)+b/2), ceil(pos(2)-a/2):ceil(pos(2)+a/2)); % 3. 目标与其周围邻域,大小为(a+2d)*(b+2d) B = img(ceil(pos(1)-b/2-d):ceil(pos(1)+b/2+d), ceil(pos(2)-a/2-d):ceil(pos(2)+a/2+d)); B(d:d+b,d:d+a) = 0; % 4. 分别显示目标图与背景图 figure imshow(T);title('Target'); figure imshow(B);title('Background'); % 5. 分别计算目标的灰度均值、背景的灰度均值与标准差 T_avg = mean(T(:)); B_avg = sum(B(:)) / ((a+2*d)*(b+2*d) - a*b); size(B) B_1 = B(1:d,:); B_2 = B(a+d+1:a+2*d,:); B_3 = B(d+1:d+a, 1:d); B_4 = B(d+1:d+a, d+b+1: 2*d+b); B_final = [B_1(:)',B_2(:)',B_3(:)',B_4(:)']; size(B_final); B_std = std(double(B_final)); % 6. 计算SCR scr = abs(T_avg - B_avg)/B_std; end图4 原图、目标图与局部背景图, 这里原图大小为(150,200),手动选择的目标位置为pos=(80,108),目标尺寸为t_size=(4,4),d = 10. 三、平均信噪比(Average SCR,当(1)一张图中含有多个目标;(2)图像序列中含有多个目标时,目标的平均信杂比来评估多目标检测的难度与算法的性能。 平均信杂比的定义为: 式中,N表示目标的数量; 文献[1]中,还使用 弱小目标检测中的ROC曲线与机器学习中的ROC曲线定义略微不同。 弱小目标检测中的ROC曲线,以虚警率(false-rate, FA)为横轴,以检测率(Probability of detection, PD)为纵轴(FA,PD的定义见第一部分)。 通常,虚警率相同的情况下,检测率越高,则算法的性能越好。 图5 不同算法的ROC曲线对比,摘自[1] 绘制ROC曲线并不难,难点在于需要通过实验获取数据——不同算法的在相同虚警率下的检测率。 这里给出MATLAB绘制折线图的简单示例,包含一些小技巧:设置x, y轴的间隔;设置线宽与线的样式;设置x, y坐标轴描述 x = 0:0.5:15; %% 这里需要替换为实验结果 Pd_1 = 1 - exp(-x) ; Pd_2 = 1 - exp(-1/2*x); % 设置显示样式与线宽LineWidth plot(x, Pd_1, '-ob', 'LineWidth', 2); hold on plot(x, Pd_2, '-*r', 'LineWidth', 1); % 设置坐标轴范围 axis([0,15,0,1]); % 设置坐标轴范围及间隔 set(gca, 'XTick', [0:5:15]); set(gca, 'YTick', [0:0.1:1]); % 显示图例 legend('method_1', 'method_2'); % 显示坐标轴描述与标题 xlabel('False-rate, F_a'); ylabel('Probability of detection, P_d'); title('不同算法的ROC曲线');图6 ROC示例图 参考文献[1] C. Gao et al., “Infrared Patch-Image Model for Small Target Detection in a Single Image,” vol. 22, no. 12, pp. 4996–5009, 2013. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |