计算交并比(IoU)-Matlab代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | % 读取图片转为矩阵,两幅图片都应该是单通道的(如果是3通道的,可以取一个有效通道),所以矩阵是2维512*512的, % 像素值范围或为(0-255)或为(0-1) % 如果是前者可以除以255来把值控制到0-1来防止计算溢出 img1 = imread('E:\..\*.png'); img1 = double(img1); img2 = imread('E:\..\*.png'); img2 = double(img2); % 两矩阵点乘得到的结果就是 I = A∩B = A*B intersection = img1 .* img2; % 两矩阵直接相加,相交的部分多加了一次,所以 U = A∪B = A+B-I union = img1 + img2 - intersection; % I矩阵元素之和(即相交部分的面积) 比上 U矩阵元素之和(即相并部分的面积),即交并比 iou = sum(sum(intersection)) / sum(sum(union)); % 结果保留小数点后4位* fprintf('IOU:%1.4f\n', iou); |