多目标图像分割中,每个目标分割精度计算

最近的项目中需要评价图像分割中每个目标的分割精度,如果目标分割精度大于阈值,则分割成功。每个图像中存在多个目标,分割结束后,如何评价每个目标的分割效果。本文的做法是crop出每个目标,分别计算其iou。

流程:

1、读取mask与resut。
2、对于mask使用opencv中的findcontours函数,找出每个目标。
3、用boundingRect求出目标的外接矩形,并crop出,与result对比计算。

iou计算:

def iou(mask, result):
    intersection = np.sum(np.logical_and(mask > 0, result > 0))
    union = np.sum(np.logical_or(mask > 0, result > 0))
    return np.sum(intersection)/np.sum(union)

计算每个目标的精度:

for mask in mask_list:
    img_num = 0
    result = mask.replace('mask_255', 'org')
    mask_img = cv2.imread(mask, flags=cv2.IMREAD_ANYDEPTH)
    result_img = cv2.imread(result, flags=cv2.IMREAD_ANYDEPTH)
    contours, hierarchy = cv2.findContours(mask_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    num_labels += len(contours)
    for i in range(0, len(contours)):
        x, y, w, h = cv2.boundingRect(contours[i])#取得每个目标的外接矩形的起始点坐标与举行w, h
        img_num += 1
        mask_roi = mask_img[y:y+h, x:x+w]#crop出mask目标区域
        result_img = cv2.resize(result_img, (mask_img.shape[1], mask_img.shape[0]))
        res_roi = result_img[y:y+h, x:x+w]#crop出result目标区域
        ratio = iou(mask_roi, res_roi)#计算iou
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值