图像分割指标及Matlab代码实现

来源:互联网 发布:数据库备注 编辑:程序博客网 时间:2024/05/19 23:03

1. 分割指标

在完成图像分割任务之后需要对分割结果进行性能评估,一般采用的指标是IOU假阳性率。例如看下面这幅分割对照图像
分割对照
上面第三幅图中红色的是分割结果,绿色的是标记图像,黄色的是重叠区域。那么具体的评判是这样的
评判标准
IOU:
IOU
假阳性率:
阳性率

2. Matlab实现代码

% 函数功能:计算两张图像的IOU% lable_img:输入的图像A,只包含0和255像素值的图像% res_img:输入的图像B,也同样只包含0和255像素值的图像% 返回值:iou两张图像的iou;yl假阳性率function [iou,yl] = Calc_IOU(lable_img, res_img)[rows, cols] = size(lable_img);% 计算总面积%total_area = rows * cols;% 统计lable_img、res_img中255像素值的个数lable_area = 0; % 标记出来的面积res_area = 0;   % 分割出来结果的面积intersection_area = 0; % 相交区域的面积combine_area = 0;      % 两个区域联合的面积% 开始计算各部分的面积for i = 1: 1: rows    for j = 1: 1: cols        if lable_img(i, j)==255 && res_img(i, j)==255            intersection_area = intersection_area + 1;            lable_area = lable_area + 1;            res_area = res_area + 1;        elseif lable_img(i, j)==255 && res_img(i, j)~=255            lable_area = lable_area + 1;        elseif lable_img(i, j)~=255 && res_img(i, j)==255            res_area = res_area + 1;        end    endendcombine_area = combine_area + lable_area + res_area - intersection_area;% 得到IOUiou = double(intersection_area) / double(combine_area);fprintf('IOU: %f\n', iou);% 得到假阳性率yl = double(res_area - intersection_area) / double(combine_area);fprintf('假阳性率为:%f\n', yl);end